diff --git a/packages/twenty-docs/docs.json b/packages/twenty-docs/docs.json
index d8a33b0ca5..67fcfd9354 100644
--- a/packages/twenty-docs/docs.json
+++ b/packages/twenty-docs/docs.json
@@ -3151,15 +3151,15 @@
"language": "ja",
"tabs": [
{
- "tab": "User Guide",
+ "tab": "ユーザーガイド",
"groups": [
{
- "group": "Discover Twenty",
+ "group": "Twenty を知る",
"icon": "rocket",
"pages": [
"l/ja/user-guide/introduction",
{
- "group": "Capabilities",
+ "group": "機能",
"pages": [
"l/ja/user-guide/getting-started/capabilities/what-is-twenty",
"l/ja/user-guide/getting-started/capabilities/implementation-services",
@@ -3167,7 +3167,7 @@
]
},
{
- "group": "How-Tos",
+ "group": "ハウツー",
"pages": [
"l/ja/user-guide/getting-started/how-tos/create-workspace",
"l/ja/user-guide/getting-started/how-tos/navigate-around-twenty",
@@ -3177,12 +3177,12 @@
]
},
{
- "group": "Data Model",
+ "group": "データモデル",
"icon": "database",
"pages": [
"l/ja/user-guide/data-model/overview",
{
- "group": "Capabilities",
+ "group": "機能",
"pages": [
"l/ja/user-guide/data-model/capabilities/objects",
"l/ja/user-guide/data-model/capabilities/fields",
@@ -3190,7 +3190,7 @@
]
},
{
- "group": "How-Tos",
+ "group": "ハウツー",
"pages": [
"l/ja/user-guide/data-model/how-tos/create-custom-objects",
"l/ja/user-guide/data-model/how-tos/create-custom-fields",
@@ -3203,12 +3203,12 @@
]
},
{
- "group": "Data Migration",
+ "group": "データ移行",
"icon": "cloud-arrow-up",
"pages": [
"l/ja/user-guide/data-migration/overview",
{
- "group": "Capabilities",
+ "group": "機能",
"pages": [
"l/ja/user-guide/data-migration/capabilities/file-formats",
"l/ja/user-guide/data-migration/capabilities/field-mapping",
@@ -3218,7 +3218,7 @@
]
},
{
- "group": "How-Tos",
+ "group": "ハウツー",
"pages": [
"l/ja/user-guide/data-migration/how-tos/prepare-your-csv-files",
"l/ja/user-guide/data-migration/how-tos/import-companies-via-csv",
@@ -3235,19 +3235,19 @@
]
},
{
- "group": "Calendar & Emails",
+ "group": "カレンダーとメール",
"icon": "envelope",
"pages": [
"l/ja/user-guide/calendar-emails/overview",
{
- "group": "Capabilities",
+ "group": "機能",
"pages": [
"l/ja/user-guide/calendar-emails/capabilities/mailbox",
"l/ja/user-guide/calendar-emails/capabilities/calendar"
]
},
{
- "group": "How-Tos",
+ "group": "ハウツー",
"pages": [
"l/ja/user-guide/calendar-emails/how-tos/connect-several-mailboxes-per-user",
"l/ja/user-guide/calendar-emails/how-tos/limit-emails-imported",
@@ -3260,12 +3260,12 @@
]
},
{
- "group": "Workflows",
+ "group": "ワークフロー",
"icon": "bolt",
"pages": [
"l/ja/user-guide/workflows/overview",
{
- "group": "Capabilities",
+ "group": "機能",
"pages": [
"l/ja/user-guide/workflows/capabilities/workflow-triggers",
"l/ja/user-guide/workflows/capabilities/workflow-actions",
@@ -3279,10 +3279,10 @@
]
},
{
- "group": "How-Tos",
+ "group": "ハウツー",
"pages": [
{
- "group": "CRM Automations",
+ "group": "CRM の自動化",
"pages": [
"l/ja/user-guide/workflows/how-tos/crm-automations/send-email-alerts-with-tasks-due",
"l/ja/user-guide/workflows/how-tos/crm-automations/notify-teammates-of-note-to-review",
@@ -3294,7 +3294,7 @@
]
},
{
- "group": "Connect to Other Tools",
+ "group": "他のツールと連携",
"pages": [
"l/ja/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger",
"l/ja/user-guide/workflows/how-tos/connect-to-other-tools/bring-typeform-submissions-in-twenty",
@@ -3304,13 +3304,13 @@
]
},
{
- "group": "Advanced Configurations",
+ "group": "高度な設定",
"pages": [
"l/ja/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions"
]
},
{
- "group": "Need More Help",
+ "group": "さらにヘルプが必要な場合",
"pages": [
"l/ja/user-guide/workflows/how-tos/need-more-help/workflow-troubleshooting",
"l/ja/user-guide/workflows/how-tos/need-more-help/workflows-faq",
@@ -3327,7 +3327,7 @@
"pages": [
"l/ja/user-guide/ai/overview",
{
- "group": "Capabilities",
+ "group": "機能",
"pages": [
"l/ja/user-guide/ai/capabilities/ai-chatbot",
"l/ja/user-guide/ai/capabilities/ai-agents",
@@ -3335,7 +3335,7 @@
]
},
{
- "group": "How-Tos",
+ "group": "ハウツー",
"pages": [
"l/ja/user-guide/ai/how-tos/ai-faq"
]
@@ -3343,12 +3343,12 @@
]
},
{
- "group": "Views & Pipelines",
+ "group": "ビューとパイプライン",
"icon": "table",
"pages": [
"l/ja/user-guide/views-pipelines/overview",
{
- "group": "Capabilities",
+ "group": "機能",
"pages": [
"l/ja/user-guide/views-pipelines/capabilities/table-views",
"l/ja/user-guide/views-pipelines/capabilities/kanban-views",
@@ -3359,7 +3359,7 @@
]
},
{
- "group": "How-Tos",
+ "group": "ハウツー",
"pages": [
"l/ja/user-guide/views-pipelines/how-tos/create-a-table-view-with-grouping",
"l/ja/user-guide/views-pipelines/how-tos/create-a-kanban-view-for-projects",
@@ -3373,12 +3373,12 @@
]
},
{
- "group": "Dashboards",
+ "group": "ダッシュボード",
"icon": "chart-bar",
"pages": [
"l/ja/user-guide/dashboards/overview",
{
- "group": "Capabilities",
+ "group": "機能",
"pages": [
"l/ja/user-guide/dashboards/capabilities/dashboards",
"l/ja/user-guide/dashboards/capabilities/widgets",
@@ -3386,7 +3386,7 @@
]
},
{
- "group": "How-Tos",
+ "group": "ハウツー",
"pages": [
"l/ja/user-guide/dashboards/how-tos/dashboards-faq",
"l/ja/user-guide/dashboards/how-tos/widget-faq"
@@ -3395,19 +3395,19 @@
]
},
{
- "group": "Permissions & Access",
+ "group": "権限とアクセス",
"icon": "lock",
"pages": [
"l/ja/user-guide/permissions-access/overview",
{
- "group": "Capabilities",
+ "group": "機能",
"pages": [
"l/ja/user-guide/permissions-access/capabilities/permissions",
"l/ja/user-guide/permissions-access/capabilities/sso-configuration"
]
},
{
- "group": "How-Tos",
+ "group": "ハウツー",
"pages": [
"l/ja/user-guide/permissions-access/how-tos/permissions-faq"
]
@@ -3415,19 +3415,19 @@
]
},
{
- "group": "Billing",
+ "group": "請求",
"icon": "credit-card",
"pages": [
"l/ja/user-guide/billing/overview",
{
- "group": "Capabilities",
+ "group": "機能",
"pages": [
"l/ja/user-guide/billing/capabilities/pricing-plans",
"l/ja/user-guide/billing/capabilities/workflow-credits"
]
},
{
- "group": "How-Tos",
+ "group": "ハウツー",
"pages": [
"l/ja/user-guide/billing/how-tos/billing-faq"
]
@@ -3435,12 +3435,12 @@
]
},
{
- "group": "Settings",
+ "group": "設定",
"icon": "gear",
"pages": [
"l/ja/user-guide/settings/overview",
{
- "group": "Capabilities",
+ "group": "機能",
"pages": [
"l/ja/user-guide/settings/capabilities/workspace-settings",
"l/ja/user-guide/settings/capabilities/member-management",
@@ -3451,7 +3451,7 @@
]
},
{
- "group": "How-Tos",
+ "group": "ハウツー",
"pages": [
"l/ja/user-guide/settings/how-tos/settings-faq"
]
@@ -3461,21 +3461,21 @@
]
},
{
- "tab": "Developers",
+ "tab": "開発者",
"groups": [
{
- "group": "Developers",
+ "group": "開発者",
"pages": [
"l/ja/developers/introduction"
]
},
{
- "group": "Extend",
+ "group": "拡張",
"icon": "plug",
"pages": [
"l/ja/developers/extend/extend",
{
- "group": "Capabilities",
+ "group": "機能",
"pages": [
"l/ja/developers/extend/capabilities/apis",
"l/ja/developers/extend/capabilities/webhooks",
@@ -3485,12 +3485,12 @@
]
},
{
- "group": "Self-Host",
+ "group": "セルフホスト",
"icon": "desktop",
"pages": [
"l/ja/developers/self-host/self-host",
{
- "group": "Capabilities",
+ "group": "機能",
"pages": [
"l/ja/developers/self-host/capabilities/docker-compose",
"l/ja/developers/self-host/capabilities/setup",
@@ -3502,17 +3502,17 @@
]
},
{
- "group": "Contribute",
+ "group": "貢献",
"icon": "github",
"pages": [
"l/ja/developers/contribute/contribute",
{
- "group": "Capabilities",
+ "group": "機能",
"pages": [
"l/ja/developers/contribute/capabilities/local-setup",
"l/ja/developers/contribute/capabilities/bug-and-requests",
{
- "group": "Frontend Development",
+ "group": "フロントエンド開発",
"pages": [
"l/ja/developers/contribute/capabilities/frontend-development/storybook",
{
@@ -3520,7 +3520,7 @@
"pages": [
"l/ja/twenty-ui/introduction",
{
- "group": "Display",
+ "group": "表示",
"pages": [
"l/ja/twenty-ui/display/checkmark",
"l/ja/twenty-ui/display/chip",
@@ -3531,13 +3531,13 @@
]
},
{
- "group": "Feedback",
+ "group": "フィードバック",
"pages": [
"l/ja/twenty-ui/progress-bar"
]
},
{
- "group": "Input",
+ "group": "入力",
"pages": [
"l/ja/twenty-ui/input/buttons",
"l/ja/twenty-ui/input/color-scheme",
@@ -3552,7 +3552,7 @@
]
},
{
- "group": "Navigation",
+ "group": "ナビゲーション",
"pages": [
"l/ja/twenty-ui/navigation",
"l/ja/twenty-ui/navigation/breadcrumb",
@@ -3573,7 +3573,7 @@
]
},
{
- "group": "Backend Development",
+ "group": "バックエンド開発",
"pages": [
"l/ja/developers/contribute/capabilities/backend-development/server-commands",
"l/ja/developers/contribute/capabilities/backend-development/feature-flags",
@@ -3596,15 +3596,15 @@
"language": "ko",
"tabs": [
{
- "tab": "User Guide",
+ "tab": "사용자 안내서",
"groups": [
{
- "group": "Discover Twenty",
+ "group": "Twenty 알아보기",
"icon": "rocket",
"pages": [
"l/ko/user-guide/introduction",
{
- "group": "Capabilities",
+ "group": "기능",
"pages": [
"l/ko/user-guide/getting-started/capabilities/what-is-twenty",
"l/ko/user-guide/getting-started/capabilities/implementation-services",
@@ -3612,7 +3612,7 @@
]
},
{
- "group": "How-Tos",
+ "group": "사용 방법",
"pages": [
"l/ko/user-guide/getting-started/how-tos/create-workspace",
"l/ko/user-guide/getting-started/how-tos/navigate-around-twenty",
@@ -3622,12 +3622,12 @@
]
},
{
- "group": "Data Model",
+ "group": "데이터 모델",
"icon": "database",
"pages": [
"l/ko/user-guide/data-model/overview",
{
- "group": "Capabilities",
+ "group": "기능",
"pages": [
"l/ko/user-guide/data-model/capabilities/objects",
"l/ko/user-guide/data-model/capabilities/fields",
@@ -3635,7 +3635,7 @@
]
},
{
- "group": "How-Tos",
+ "group": "사용 방법",
"pages": [
"l/ko/user-guide/data-model/how-tos/create-custom-objects",
"l/ko/user-guide/data-model/how-tos/create-custom-fields",
@@ -3648,12 +3648,12 @@
]
},
{
- "group": "Data Migration",
+ "group": "데이터 마이그레이션",
"icon": "cloud-arrow-up",
"pages": [
"l/ko/user-guide/data-migration/overview",
{
- "group": "Capabilities",
+ "group": "기능",
"pages": [
"l/ko/user-guide/data-migration/capabilities/file-formats",
"l/ko/user-guide/data-migration/capabilities/field-mapping",
@@ -3663,7 +3663,7 @@
]
},
{
- "group": "How-Tos",
+ "group": "사용 방법",
"pages": [
"l/ko/user-guide/data-migration/how-tos/prepare-your-csv-files",
"l/ko/user-guide/data-migration/how-tos/import-companies-via-csv",
@@ -3680,19 +3680,19 @@
]
},
{
- "group": "Calendar & Emails",
+ "group": "캘린더 및 이메일",
"icon": "envelope",
"pages": [
"l/ko/user-guide/calendar-emails/overview",
{
- "group": "Capabilities",
+ "group": "기능",
"pages": [
"l/ko/user-guide/calendar-emails/capabilities/mailbox",
"l/ko/user-guide/calendar-emails/capabilities/calendar"
]
},
{
- "group": "How-Tos",
+ "group": "사용 방법",
"pages": [
"l/ko/user-guide/calendar-emails/how-tos/connect-several-mailboxes-per-user",
"l/ko/user-guide/calendar-emails/how-tos/limit-emails-imported",
@@ -3705,12 +3705,12 @@
]
},
{
- "group": "Workflows",
+ "group": "워크플로우",
"icon": "bolt",
"pages": [
"l/ko/user-guide/workflows/overview",
{
- "group": "Capabilities",
+ "group": "기능",
"pages": [
"l/ko/user-guide/workflows/capabilities/workflow-triggers",
"l/ko/user-guide/workflows/capabilities/workflow-actions",
@@ -3724,10 +3724,10 @@
]
},
{
- "group": "How-Tos",
+ "group": "사용 방법",
"pages": [
{
- "group": "CRM Automations",
+ "group": "CRM 자동화",
"pages": [
"l/ko/user-guide/workflows/how-tos/crm-automations/send-email-alerts-with-tasks-due",
"l/ko/user-guide/workflows/how-tos/crm-automations/notify-teammates-of-note-to-review",
@@ -3739,7 +3739,7 @@
]
},
{
- "group": "Connect to Other Tools",
+ "group": "다른 도구에 연결하기",
"pages": [
"l/ko/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger",
"l/ko/user-guide/workflows/how-tos/connect-to-other-tools/bring-typeform-submissions-in-twenty",
@@ -3749,13 +3749,13 @@
]
},
{
- "group": "Advanced Configurations",
+ "group": "고급 설정",
"pages": [
"l/ko/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions"
]
},
{
- "group": "Need More Help",
+ "group": "추가 도움이 필요하십니까",
"pages": [
"l/ko/user-guide/workflows/how-tos/need-more-help/workflow-troubleshooting",
"l/ko/user-guide/workflows/how-tos/need-more-help/workflows-faq",
@@ -3772,7 +3772,7 @@
"pages": [
"l/ko/user-guide/ai/overview",
{
- "group": "Capabilities",
+ "group": "기능",
"pages": [
"l/ko/user-guide/ai/capabilities/ai-chatbot",
"l/ko/user-guide/ai/capabilities/ai-agents",
@@ -3780,7 +3780,7 @@
]
},
{
- "group": "How-Tos",
+ "group": "사용 방법",
"pages": [
"l/ko/user-guide/ai/how-tos/ai-faq"
]
@@ -3788,12 +3788,12 @@
]
},
{
- "group": "Views & Pipelines",
+ "group": "뷰 및 파이프라인",
"icon": "table",
"pages": [
"l/ko/user-guide/views-pipelines/overview",
{
- "group": "Capabilities",
+ "group": "기능",
"pages": [
"l/ko/user-guide/views-pipelines/capabilities/table-views",
"l/ko/user-guide/views-pipelines/capabilities/kanban-views",
@@ -3804,7 +3804,7 @@
]
},
{
- "group": "How-Tos",
+ "group": "사용 방법",
"pages": [
"l/ko/user-guide/views-pipelines/how-tos/create-a-table-view-with-grouping",
"l/ko/user-guide/views-pipelines/how-tos/create-a-kanban-view-for-projects",
@@ -3818,12 +3818,12 @@
]
},
{
- "group": "Dashboards",
+ "group": "대시보드",
"icon": "chart-bar",
"pages": [
"l/ko/user-guide/dashboards/overview",
{
- "group": "Capabilities",
+ "group": "기능",
"pages": [
"l/ko/user-guide/dashboards/capabilities/dashboards",
"l/ko/user-guide/dashboards/capabilities/widgets",
@@ -3831,7 +3831,7 @@
]
},
{
- "group": "How-Tos",
+ "group": "사용 방법",
"pages": [
"l/ko/user-guide/dashboards/how-tos/dashboards-faq",
"l/ko/user-guide/dashboards/how-tos/widget-faq"
@@ -3840,19 +3840,19 @@
]
},
{
- "group": "Permissions & Access",
+ "group": "권한 및 접근",
"icon": "lock",
"pages": [
"l/ko/user-guide/permissions-access/overview",
{
- "group": "Capabilities",
+ "group": "기능",
"pages": [
"l/ko/user-guide/permissions-access/capabilities/permissions",
"l/ko/user-guide/permissions-access/capabilities/sso-configuration"
]
},
{
- "group": "How-Tos",
+ "group": "사용 방법",
"pages": [
"l/ko/user-guide/permissions-access/how-tos/permissions-faq"
]
@@ -3860,19 +3860,19 @@
]
},
{
- "group": "Billing",
+ "group": "청구",
"icon": "credit-card",
"pages": [
"l/ko/user-guide/billing/overview",
{
- "group": "Capabilities",
+ "group": "기능",
"pages": [
"l/ko/user-guide/billing/capabilities/pricing-plans",
"l/ko/user-guide/billing/capabilities/workflow-credits"
]
},
{
- "group": "How-Tos",
+ "group": "사용 방법",
"pages": [
"l/ko/user-guide/billing/how-tos/billing-faq"
]
@@ -3880,12 +3880,12 @@
]
},
{
- "group": "Settings",
+ "group": "설정",
"icon": "gear",
"pages": [
"l/ko/user-guide/settings/overview",
{
- "group": "Capabilities",
+ "group": "기능",
"pages": [
"l/ko/user-guide/settings/capabilities/workspace-settings",
"l/ko/user-guide/settings/capabilities/member-management",
@@ -3896,7 +3896,7 @@
]
},
{
- "group": "How-Tos",
+ "group": "사용 방법",
"pages": [
"l/ko/user-guide/settings/how-tos/settings-faq"
]
@@ -3906,21 +3906,21 @@
]
},
{
- "tab": "Developers",
+ "tab": "개발자",
"groups": [
{
- "group": "Developers",
+ "group": "개발자",
"pages": [
"l/ko/developers/introduction"
]
},
{
- "group": "Extend",
+ "group": "확장",
"icon": "plug",
"pages": [
"l/ko/developers/extend/extend",
{
- "group": "Capabilities",
+ "group": "기능",
"pages": [
"l/ko/developers/extend/capabilities/apis",
"l/ko/developers/extend/capabilities/webhooks",
@@ -3930,12 +3930,12 @@
]
},
{
- "group": "Self-Host",
+ "group": "셀프 호스팅",
"icon": "desktop",
"pages": [
"l/ko/developers/self-host/self-host",
{
- "group": "Capabilities",
+ "group": "기능",
"pages": [
"l/ko/developers/self-host/capabilities/docker-compose",
"l/ko/developers/self-host/capabilities/setup",
@@ -3947,17 +3947,17 @@
]
},
{
- "group": "Contribute",
+ "group": "기여",
"icon": "github",
"pages": [
"l/ko/developers/contribute/contribute",
{
- "group": "Capabilities",
+ "group": "기능",
"pages": [
"l/ko/developers/contribute/capabilities/local-setup",
"l/ko/developers/contribute/capabilities/bug-and-requests",
{
- "group": "Frontend Development",
+ "group": "프론트엔드 개발",
"pages": [
"l/ko/developers/contribute/capabilities/frontend-development/storybook",
{
@@ -3965,7 +3965,7 @@
"pages": [
"l/ko/twenty-ui/introduction",
{
- "group": "Display",
+ "group": "표시",
"pages": [
"l/ko/twenty-ui/display/checkmark",
"l/ko/twenty-ui/display/chip",
@@ -3976,13 +3976,13 @@
]
},
{
- "group": "Feedback",
+ "group": "피드백",
"pages": [
"l/ko/twenty-ui/progress-bar"
]
},
{
- "group": "Input",
+ "group": "입력",
"pages": [
"l/ko/twenty-ui/input/buttons",
"l/ko/twenty-ui/input/color-scheme",
@@ -3997,7 +3997,7 @@
]
},
{
- "group": "Navigation",
+ "group": "네비게이션",
"pages": [
"l/ko/twenty-ui/navigation",
"l/ko/twenty-ui/navigation/breadcrumb",
@@ -4018,7 +4018,7 @@
]
},
{
- "group": "Backend Development",
+ "group": "백엔드 개발",
"pages": [
"l/ko/developers/contribute/capabilities/backend-development/server-commands",
"l/ko/developers/contribute/capabilities/backend-development/feature-flags",
@@ -4067,7 +4067,7 @@
]
},
{
- "group": "Data Model",
+ "group": "Modelo de dados",
"icon": "database",
"pages": [
"l/pt/user-guide/data-model/overview",
@@ -4150,7 +4150,7 @@
]
},
{
- "group": "Workflows",
+ "group": "Fluxos de trabalho",
"icon": "bolt",
"pages": [
"l/pt/user-guide/workflows/overview",
@@ -4200,7 +4200,7 @@
]
},
{
- "group": "Need More Help",
+ "group": "Precisa de mais ajuda",
"pages": [
"l/pt/user-guide/workflows/how-tos/need-more-help/workflow-troubleshooting",
"l/pt/user-guide/workflows/how-tos/need-more-help/workflows-faq",
@@ -4212,7 +4212,7 @@
]
},
{
- "group": "AI",
+ "group": "IA",
"icon": "robot",
"pages": [
"l/pt/user-guide/ai/overview",
@@ -4233,7 +4233,7 @@
]
},
{
- "group": "Views & Pipelines",
+ "group": "Visualizações e pipelines",
"icon": "table",
"pages": [
"l/pt/user-guide/views-pipelines/overview",
@@ -4263,7 +4263,7 @@
]
},
{
- "group": "Dashboards",
+ "group": "Painéis",
"icon": "chart-bar",
"pages": [
"l/pt/user-guide/dashboards/overview",
@@ -4305,7 +4305,7 @@
]
},
{
- "group": "Billing",
+ "group": "Faturação",
"icon": "credit-card",
"pages": [
"l/pt/user-guide/billing/overview",
@@ -4325,7 +4325,7 @@
]
},
{
- "group": "Settings",
+ "group": "Configurações",
"icon": "gear",
"pages": [
"l/pt/user-guide/settings/overview",
@@ -4351,10 +4351,10 @@
]
},
{
- "tab": "Developers",
+ "tab": "Programadores",
"groups": [
{
- "group": "Developers",
+ "group": "Programadores",
"pages": [
"l/pt/developers/introduction"
]
@@ -4402,7 +4402,7 @@
"l/pt/developers/contribute/capabilities/local-setup",
"l/pt/developers/contribute/capabilities/bug-and-requests",
{
- "group": "Frontend Development",
+ "group": "Desenvolvimento Frontend",
"pages": [
"l/pt/developers/contribute/capabilities/frontend-development/storybook",
{
@@ -4410,7 +4410,7 @@
"pages": [
"l/pt/twenty-ui/introduction",
{
- "group": "Display",
+ "group": "Exibir",
"pages": [
"l/pt/twenty-ui/display/checkmark",
"l/pt/twenty-ui/display/chip",
@@ -4427,7 +4427,7 @@
]
},
{
- "group": "Input",
+ "group": "Entrada",
"pages": [
"l/pt/twenty-ui/input/buttons",
"l/pt/twenty-ui/input/color-scheme",
@@ -4442,7 +4442,7 @@
]
},
{
- "group": "Navigation",
+ "group": "Navegação",
"pages": [
"l/pt/twenty-ui/navigation",
"l/pt/twenty-ui/navigation/breadcrumb",
@@ -4463,7 +4463,7 @@
]
},
{
- "group": "Backend Development",
+ "group": "Desenvolvimento Backend",
"pages": [
"l/pt/developers/contribute/capabilities/backend-development/server-commands",
"l/pt/developers/contribute/capabilities/backend-development/feature-flags",
@@ -5821,15 +5821,15 @@
"language": "zh",
"tabs": [
{
- "tab": "User Guide",
+ "tab": "用户指南",
"groups": [
{
- "group": "Discover Twenty",
+ "group": "发现 Twenty",
"icon": "rocket",
"pages": [
"l/zh/user-guide/introduction",
{
- "group": "Capabilities",
+ "group": "功能",
"pages": [
"l/zh/user-guide/getting-started/capabilities/what-is-twenty",
"l/zh/user-guide/getting-started/capabilities/implementation-services",
@@ -5837,7 +5837,7 @@
]
},
{
- "group": "How-Tos",
+ "group": "操作指南",
"pages": [
"l/zh/user-guide/getting-started/how-tos/create-workspace",
"l/zh/user-guide/getting-started/how-tos/navigate-around-twenty",
@@ -5847,12 +5847,12 @@
]
},
{
- "group": "Data Model",
+ "group": "数据模型",
"icon": "database",
"pages": [
"l/zh/user-guide/data-model/overview",
{
- "group": "Capabilities",
+ "group": "功能",
"pages": [
"l/zh/user-guide/data-model/capabilities/objects",
"l/zh/user-guide/data-model/capabilities/fields",
@@ -5860,7 +5860,7 @@
]
},
{
- "group": "How-Tos",
+ "group": "操作指南",
"pages": [
"l/zh/user-guide/data-model/how-tos/create-custom-objects",
"l/zh/user-guide/data-model/how-tos/create-custom-fields",
@@ -5873,12 +5873,12 @@
]
},
{
- "group": "Data Migration",
+ "group": "数据迁移",
"icon": "cloud-arrow-up",
"pages": [
"l/zh/user-guide/data-migration/overview",
{
- "group": "Capabilities",
+ "group": "功能",
"pages": [
"l/zh/user-guide/data-migration/capabilities/file-formats",
"l/zh/user-guide/data-migration/capabilities/field-mapping",
@@ -5888,7 +5888,7 @@
]
},
{
- "group": "How-Tos",
+ "group": "操作指南",
"pages": [
"l/zh/user-guide/data-migration/how-tos/prepare-your-csv-files",
"l/zh/user-guide/data-migration/how-tos/import-companies-via-csv",
@@ -5905,19 +5905,19 @@
]
},
{
- "group": "Calendar & Emails",
+ "group": "日历与电子邮件",
"icon": "envelope",
"pages": [
"l/zh/user-guide/calendar-emails/overview",
{
- "group": "Capabilities",
+ "group": "功能",
"pages": [
"l/zh/user-guide/calendar-emails/capabilities/mailbox",
"l/zh/user-guide/calendar-emails/capabilities/calendar"
]
},
{
- "group": "How-Tos",
+ "group": "操作指南",
"pages": [
"l/zh/user-guide/calendar-emails/how-tos/connect-several-mailboxes-per-user",
"l/zh/user-guide/calendar-emails/how-tos/limit-emails-imported",
@@ -5930,12 +5930,12 @@
]
},
{
- "group": "Workflows",
+ "group": "工作流",
"icon": "bolt",
"pages": [
"l/zh/user-guide/workflows/overview",
{
- "group": "Capabilities",
+ "group": "功能",
"pages": [
"l/zh/user-guide/workflows/capabilities/workflow-triggers",
"l/zh/user-guide/workflows/capabilities/workflow-actions",
@@ -5949,10 +5949,10 @@
]
},
{
- "group": "How-Tos",
+ "group": "操作指南",
"pages": [
{
- "group": "CRM Automations",
+ "group": "CRM 自动化",
"pages": [
"l/zh/user-guide/workflows/how-tos/crm-automations/send-email-alerts-with-tasks-due",
"l/zh/user-guide/workflows/how-tos/crm-automations/notify-teammates-of-note-to-review",
@@ -5964,7 +5964,7 @@
]
},
{
- "group": "Connect to Other Tools",
+ "group": "连接到其他工具",
"pages": [
"l/zh/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger",
"l/zh/user-guide/workflows/how-tos/connect-to-other-tools/bring-typeform-submissions-in-twenty",
@@ -5974,13 +5974,13 @@
]
},
{
- "group": "Advanced Configurations",
+ "group": "高级配置",
"pages": [
"l/zh/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions"
]
},
{
- "group": "Need More Help",
+ "group": "需要更多帮助",
"pages": [
"l/zh/user-guide/workflows/how-tos/need-more-help/workflow-troubleshooting",
"l/zh/user-guide/workflows/how-tos/need-more-help/workflows-faq",
@@ -5997,7 +5997,7 @@
"pages": [
"l/zh/user-guide/ai/overview",
{
- "group": "Capabilities",
+ "group": "功能",
"pages": [
"l/zh/user-guide/ai/capabilities/ai-chatbot",
"l/zh/user-guide/ai/capabilities/ai-agents",
@@ -6005,7 +6005,7 @@
]
},
{
- "group": "How-Tos",
+ "group": "操作指南",
"pages": [
"l/zh/user-guide/ai/how-tos/ai-faq"
]
@@ -6013,12 +6013,12 @@
]
},
{
- "group": "Views & Pipelines",
+ "group": "视图与管道",
"icon": "table",
"pages": [
"l/zh/user-guide/views-pipelines/overview",
{
- "group": "Capabilities",
+ "group": "功能",
"pages": [
"l/zh/user-guide/views-pipelines/capabilities/table-views",
"l/zh/user-guide/views-pipelines/capabilities/kanban-views",
@@ -6029,7 +6029,7 @@
]
},
{
- "group": "How-Tos",
+ "group": "操作指南",
"pages": [
"l/zh/user-guide/views-pipelines/how-tos/create-a-table-view-with-grouping",
"l/zh/user-guide/views-pipelines/how-tos/create-a-kanban-view-for-projects",
@@ -6043,12 +6043,12 @@
]
},
{
- "group": "Dashboards",
+ "group": "仪表板",
"icon": "chart-bar",
"pages": [
"l/zh/user-guide/dashboards/overview",
{
- "group": "Capabilities",
+ "group": "功能",
"pages": [
"l/zh/user-guide/dashboards/capabilities/dashboards",
"l/zh/user-guide/dashboards/capabilities/widgets",
@@ -6056,7 +6056,7 @@
]
},
{
- "group": "How-Tos",
+ "group": "操作指南",
"pages": [
"l/zh/user-guide/dashboards/how-tos/dashboards-faq",
"l/zh/user-guide/dashboards/how-tos/widget-faq"
@@ -6065,19 +6065,19 @@
]
},
{
- "group": "Permissions & Access",
+ "group": "权限与访问",
"icon": "lock",
"pages": [
"l/zh/user-guide/permissions-access/overview",
{
- "group": "Capabilities",
+ "group": "功能",
"pages": [
"l/zh/user-guide/permissions-access/capabilities/permissions",
"l/zh/user-guide/permissions-access/capabilities/sso-configuration"
]
},
{
- "group": "How-Tos",
+ "group": "操作指南",
"pages": [
"l/zh/user-guide/permissions-access/how-tos/permissions-faq"
]
@@ -6085,19 +6085,19 @@
]
},
{
- "group": "Billing",
+ "group": "账单",
"icon": "credit-card",
"pages": [
"l/zh/user-guide/billing/overview",
{
- "group": "Capabilities",
+ "group": "功能",
"pages": [
"l/zh/user-guide/billing/capabilities/pricing-plans",
"l/zh/user-guide/billing/capabilities/workflow-credits"
]
},
{
- "group": "How-Tos",
+ "group": "操作指南",
"pages": [
"l/zh/user-guide/billing/how-tos/billing-faq"
]
@@ -6105,12 +6105,12 @@
]
},
{
- "group": "Settings",
+ "group": "设置",
"icon": "gear",
"pages": [
"l/zh/user-guide/settings/overview",
{
- "group": "Capabilities",
+ "group": "功能",
"pages": [
"l/zh/user-guide/settings/capabilities/workspace-settings",
"l/zh/user-guide/settings/capabilities/member-management",
@@ -6121,7 +6121,7 @@
]
},
{
- "group": "How-Tos",
+ "group": "操作指南",
"pages": [
"l/zh/user-guide/settings/how-tos/settings-faq"
]
@@ -6131,21 +6131,21 @@
]
},
{
- "tab": "Developers",
+ "tab": "开发者",
"groups": [
{
- "group": "Developers",
+ "group": "开发者",
"pages": [
"l/zh/developers/introduction"
]
},
{
- "group": "Extend",
+ "group": "扩展",
"icon": "plug",
"pages": [
"l/zh/developers/extend/extend",
{
- "group": "Capabilities",
+ "group": "功能",
"pages": [
"l/zh/developers/extend/capabilities/apis",
"l/zh/developers/extend/capabilities/webhooks",
@@ -6155,12 +6155,12 @@
]
},
{
- "group": "Self-Host",
+ "group": "自托管",
"icon": "desktop",
"pages": [
"l/zh/developers/self-host/self-host",
{
- "group": "Capabilities",
+ "group": "功能",
"pages": [
"l/zh/developers/self-host/capabilities/docker-compose",
"l/zh/developers/self-host/capabilities/setup",
@@ -6172,17 +6172,17 @@
]
},
{
- "group": "Contribute",
+ "group": "贡献",
"icon": "github",
"pages": [
"l/zh/developers/contribute/contribute",
{
- "group": "Capabilities",
+ "group": "功能",
"pages": [
"l/zh/developers/contribute/capabilities/local-setup",
"l/zh/developers/contribute/capabilities/bug-and-requests",
{
- "group": "Frontend Development",
+ "group": "前端开发",
"pages": [
"l/zh/developers/contribute/capabilities/frontend-development/storybook",
{
@@ -6190,7 +6190,7 @@
"pages": [
"l/zh/twenty-ui/introduction",
{
- "group": "Display",
+ "group": "展示",
"pages": [
"l/zh/twenty-ui/display/checkmark",
"l/zh/twenty-ui/display/chip",
@@ -6201,13 +6201,13 @@
]
},
{
- "group": "Feedback",
+ "group": "反馈",
"pages": [
"l/zh/twenty-ui/progress-bar"
]
},
{
- "group": "Input",
+ "group": "输入",
"pages": [
"l/zh/twenty-ui/input/buttons",
"l/zh/twenty-ui/input/color-scheme",
@@ -6222,7 +6222,7 @@
]
},
{
- "group": "Navigation",
+ "group": "导航",
"pages": [
"l/zh/twenty-ui/navigation",
"l/zh/twenty-ui/navigation/breadcrumb",
@@ -6243,7 +6243,7 @@
]
},
{
- "group": "Backend Development",
+ "group": "后端开发",
"pages": [
"l/zh/developers/contribute/capabilities/backend-development/server-commands",
"l/zh/developers/contribute/capabilities/backend-development/feature-flags",
diff --git a/packages/twenty-docs/l/ja/developers/contribute/capabilities/backend-development/best-practices-server.mdx b/packages/twenty-docs/l/ja/developers/contribute/capabilities/backend-development/best-practices-server.mdx
index d8f5c5ea7c..9a199fd6c1 100644
--- a/packages/twenty-docs/l/ja/developers/contribute/capabilities/backend-development/best-practices-server.mdx
+++ b/packages/twenty-docs/l/ja/developers/contribute/capabilities/backend-development/best-practices-server.mdx
@@ -1,22 +1,22 @@
---
-title: Best Practices
+title: ベストプラクティス',
---
-This document outlines the best practices you should follow when working on the backend.
+この文書は、バックエンドで作業する際に従うべきベストプラクティスを概説しています。
-## Follow a modular approach
+## モジュール化アプローチを採用する
-The backend follows a modular approach, which is a fundamental principle when working with NestJS. Make sure you break down your code into reusable modules to maintain a clean and organized codebase.
-Each module should encapsulate a particular feature or functionality and have a well-defined scope. This modular approach enables clear separation of concerns and removes unnecessary complexities.
+バックエンドは、NestJSを使用する際の基本原則であるモジュラーアプローチを採用しています。 コードを再利用可能なモジュールに分割し、クリーンで整理されたコードベースを維持してください。
+各モジュールは特定の機能や機能性をカプセル化し、明確なスコープを持つべきです。 このモジュラーアプローチにより、関心事を明確に分離し、不要な複雑さを排除します。
-## Expose services to use in modules
+## モジュールで使用するサービスを公開する
-Always create services that have a clear and single responsibility, which enhances code readability and maintainability. Name the services descriptively and consistently.
+常に、明確で単一の責務を持つサービスを作成してください。これにより、コードの可読性と保守性が向上します。 サービスには意味のある一貫した名前を付けてください。
-You should also expose services that you want to use in other modules. Exposing services to other modules is possible through NestJS's powerful dependency injection system, and promotes loose coupling between components.
+他のモジュールで使用したいサービスを公開する必要があります。 サービスを他のモジュールへ公開することは、NestJS の強力な依存性注入システムによって可能であり、コンポーネント間の疎結合を促進します。
-## Avoid using `any` type
+## `any` 型の使用を避ける
-When you declare a variable as `any`, TypeScript's type checker doesn't perform any type checking, making it possible to assign any type of values to the variable. TypeScript uses type inference to determine the type of variable based on the value. By declaring it as `any`, TypeScript can no longer infer the type. This makes it hard to catch type-related errors during development, leading to runtime errors and makes the code less maintainable, less reliable, and harder to understand for others.
+変数を `any` として宣言すると、TypeScript の型チェッカーは型チェックを行わなくなり、その変数にはあらゆる型の値を割り当てられるようになります。 TypeScript は、値に基づいて変数の型を決定するために型推論を使用します。 `any` として宣言すると、TypeScript は型を推論できなくなります。 これにより、開発中に型に関連したエラーを捕捉しにくくなり、実行時エラーを引き起こし、コードのメンテナンス性、信頼性が低下し、他の人が理解しづらくなります。
-This is why everything should have a type. So if you create a new object with a first name and last name, you should create an interface or type that contains a first name and last name that defines the shape of the object you are manipulating.
+これがすべてに型を持たせるべき理由です。 したがって、名と姓を持つ新しいオブジェクトを作成する場合は、操作しているオブジェクトの構造を定義する、名と姓を含むインターフェースまたは型を作成する必要があります。
diff --git a/packages/twenty-docs/l/ja/developers/contribute/capabilities/backend-development/custom-objects.mdx b/packages/twenty-docs/l/ja/developers/contribute/capabilities/backend-development/custom-objects.mdx
index 7feec7a639..62e7786a36 100644
--- a/packages/twenty-docs/l/ja/developers/contribute/capabilities/backend-development/custom-objects.mdx
+++ b/packages/twenty-docs/l/ja/developers/contribute/capabilities/backend-development/custom-objects.mdx
@@ -1,39 +1,39 @@
---
-title: Custom Objects
+title: カスタムオブジェクト
---
-Objects are structures that allow you to store data (records, attributes, and values) specific to an organization. Twenty provides both standard and custom objects.
+オブジェクトは、組織独自のデータ(記録、属性、値)を保存するための構造です。 Twenty provides both standard and custom objects. Twenty は標準オブジェクトとカスタムオブジェクトの両方を提供します。
-Standard objects are in-built objects with a set of attributes available for all users. Examples of standard objects in Twenty include Company and Person. Standard objects have standard fields that are also available for all Twenty users, like Company.displayName.
+標準オブジェクトは、すべてのユーザーが利用可能な一連の属性を備えた組み込みのオブジェクトです。 標準オブジェクトは、すべてのユーザーが利用可能な一連の属性を備えた組み込みのオブジェクトです。 Examples of standard objects in Twenty include Company and Person. 標準オブジェクトは、すべてのユーザーが利用可能な一連の属性を備えた組み込みのオブジェクトです。 Examples of standard objects in Twenty include Company and Person. 標準オブジェクトには、Twenty のすべてのユーザーが利用できる標準フィールドがあり、例えば Company.displayName があります。
-Custom objects are objects that you can create to store information that is unique to your organization. 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.
+カスタムオブジェクトは、組織に固有の情報を保存するために作成できるオブジェクトです。 カスタムオブジェクトは、組織に固有の情報を保存するために作成できるオブジェクトです。 カスタムオブジェクトは、組織に固有の情報を保存するために作成できるオブジェクトです。 組み込みではないため、ワークスペースメンバーは、標準オブジェクトに適さない情報を保持するためにカスタムオブジェクトを作成およびカスタマイズできます。
-## High-level schema
+## 上位スキーマ
-
+
-## How it works
+## 仕組み
-Custom objects come from metadata tables that determine the shape, name, and type of the objects. All this information is present in the metadata schema database, consisting of tables:
+カスタムオブジェクトは、オブジェクトの形状、名前、およびタイプを決定するメタデータテーブルから来ます。 このすべての情報は、テーブルで構成されるメタデータスキーマデータベースに存在します: このすべての情報は、テーブルで構成されるメタデータスキーマデータベースに存在します: このすべての情報は、テーブルで構成されるメタデータスキーマデータベースに存在します:
-* **DataSource**: Details where the data is present.
-* **Object**: Describes the object and links to a DataSource.
-* **Field**: Outlines an Object's fields and connects to the Object.
+* **DataSource**: データの存在場所を示します。
+* **オブジェクト**: オブジェクトを説明し、DataSourceにリンクします。
+* **フィールド**: オブジェクトのフィールドを概説し、オブジェクトに接続します。
-To add a custom object, the workspaceMember will query the /metadata API. This updates the metadata accordingly and computes a GraphQL schema based on the metadata, storing it in a GQL cache for later use.
+カスタムオブジェクトを追加するには、workspaceMemberが/metadata APIをクエリします。 これにより、メタデータが適切に更新され、メタデータに基づいてGraphQLスキーマが計算され、後で使用するためにGQLキャッシュに保存されます。 これにより、メタデータが適切に更新され、メタデータに基づいてGraphQLスキーマが計算され、後で使用するためにGQLキャッシュに保存されます。 これにより、メタデータが適切に更新され、メタデータに基づいてGraphQLスキーマが計算され、後で使用するためにGQLキャッシュに保存されます。
-
+
-To fetch data, the process involves making queries through the /graphql endpoint and passing them through the Query Resolver.
+データを取得するには、/graphqlエンドポイントを介してクエリを行い、Query Resolverを通過させるプロセスが必要です。
-
+
diff --git a/packages/twenty-docs/l/ja/developers/contribute/capabilities/backend-development/feature-flags.mdx b/packages/twenty-docs/l/ja/developers/contribute/capabilities/backend-development/feature-flags.mdx
index a261cfec3c..9cf53d125f 100644
--- a/packages/twenty-docs/l/ja/developers/contribute/capabilities/backend-development/feature-flags.mdx
+++ b/packages/twenty-docs/l/ja/developers/contribute/capabilities/backend-development/feature-flags.mdx
@@ -1,12 +1,12 @@
---
-title: Feature Flags
+title: 機能フラグ
---
-Feature flags are used to hide experimental features. For Twenty, they are set on workspace level and not on a user level.
+機能フラグは試験的な機能を隠すために使用されます。 機能フラグは試験的な機能を隠すために使用されます。 Twentyでは、それらはワークスペースレベルで設定されており、ユーザーレベルではありません。 機能フラグは試験的な機能を隠すために使用されます。 Twentyでは、それらはワークスペースレベルで設定されており、ユーザーレベルではありません。
-## Adding a new feature flag
+## 新しい機能フラグの追加
-In `FeatureFlagKey.ts` add the feature flag:
+`FeatureFlagKey.ts`に機能フラグを追加します:
```ts
type FeatureFlagKey =
@@ -14,7 +14,7 @@ type FeatureFlagKey =
| ...;
```
-Also add it to the enum in `feature-flag.entity.ts`:
+また、`feature-flag.entity.ts`の列挙型にも追加します:
```ts
enum FeatureFlagKeys {
@@ -23,7 +23,7 @@ enum FeatureFlagKeys {
}
```
-To apply a feature flag on a **backend** feature use:
+**バックエンド**機能に機能フラグを適用するには、次を使用します:
```ts
@Gate({
@@ -31,16 +31,16 @@ 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
+## デプロイメント用の機能フラグを設定する
-Change the corresponding record in the Table `core.featureFlag`:
+Table `core.featureFlag` 内の対応するレコードを変更します:
-| id | key | workspaceId | value |
-| ------ | ------------------------ | ----------- | ------ |
-| Random | `IS_FEATURENAME_ENABLED` | WorkspaceID | `true` |
+| id | キー | workspaceId | 値 |
+| ---- | ------------------------ | ----------- | --- |
+| ランダム | `IS_FEATURENAME_ENABLED` | WorkspaceID | `真` |
diff --git a/packages/twenty-docs/l/ja/developers/contribute/capabilities/backend-development/folder-architecture-server.mdx b/packages/twenty-docs/l/ja/developers/contribute/capabilities/backend-development/folder-architecture-server.mdx
index 233d92ac8a..e9491e8fe1 100644
--- a/packages/twenty-docs/l/ja/developers/contribute/capabilities/backend-development/folder-architecture-server.mdx
+++ b/packages/twenty-docs/l/ja/developers/contribute/capabilities/backend-development/folder-architecture-server.mdx
@@ -1,9 +1,9 @@
---
-title: Folder Architecture
-info: A detailed look into our server folder architecture
+title: フォルダ構成
+info: 当社のサーバーフォルダ構造の詳細な観察
---
-The backend directory structure is as follows:
+バックエンドのディレクトリ構造は以下の通りです:
```
server
@@ -21,37 +21,37 @@ server
└───utils
```
-## Ability
+## 能力
-Defines permissions and includes handlers for each entity.
+各エンティティの権限を定義し、ハンドラーを含みます。
-## Decorators
+## デコレータ
-Defines custom decorators in NestJS for added functionality.
+NestJS で機能を拡張するためのカスタムデコレーターを定義します。
-See [custom decorators](https://docs.nestjs.com/custom-decorators) for more details.
+詳細については、[カスタムデコレータ](https://docs.nestjs.com/custom-decorators) を参照してください。
-## Filters
+## フィルター
-Includes exception filters to handle exceptions that might occur in GraphQL endpoints.
+GraphQLエンドポイントで発生する可能性のある例外を処理するための例外フィルターを含みます。
-## Guards
+## ガード
-See [guards](https://docs.nestjs.com/guards) for more details.
+詳細については、[ガード](https://docs.nestjs.com/guards) を参照してください。
-## Health
+## ヘルス
-Includes a publicly available REST API (healthz) that returns a JSON to confirm whether the database is working as expected.
+データベースが期待通りに動作しているかを確認するためのJSONを返す公開されたREST API (healthz) を含みます。
-## Metadata
+## メタデータ
-Defines custom objects and makes available a GraphQL API (graphql/metadata).
+カスタムオブジェクトを定義し、GraphQL API (graphql/metadata) を利用可能にします。
-## Workspace
+## ワークスペース
-Generates and serves custom GraphQL schema based on the metadata.
+メタデータに基づいてカスタムGraphQLスキーマを生成し、提供します。
-### Workspace Directory Structure
+### ワークスペースディレクトリ構造
```
workspace
@@ -83,43 +83,43 @@ workspace
└───workspace.factory.ts
```
-The root of the workspace directory includes the `workspace.factory.ts`, a file containing the `createGraphQLSchema` function. This function generates workspace-specific schema by using the metadata to tailor a schema for individual workspaces. By separating the schema and resolver construction, we use the `makeExecutableSchema` function, which combines these discrete elements.
+ワークスペースディレクトリのルートには、`workspace.factory.ts` が含まれ、`createGraphQLSchema` 関数が含まれています。 この関数は、メタデータを使用して、個々のワークスペース用のスキーマを調整し、ワークスペース固有のスキーマを生成します。 スキーマとリゾルバーの構築を分離することで、`makeExecutableSchema` 関数を使用し、これらの個別要素を組み合わせます。 この関数は、メタデータを使用して、個々のワークスペース用のスキーマを調整し、ワークスペース固有のスキーマを生成します。 スキーマとリゾルバーの構築を分離することで、`makeExecutableSchema` 関数を使用し、これらの個別要素を組み合わせます。 この関数は、メタデータを使用して、個々のワークスペース用のスキーマを調整し、ワークスペース固有のスキーマを生成します。 スキーマとリゾルバーの構築を分離することで、`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
+### ワークスペーススキーマビルダー
-Generates the GraphQL schema, and includes:
+GraphQLスキーマを生成し、含まれるもの:
-#### Factories:
+#### ファクトリー:
-Specialised constructors to generate GraphQL-related constructs.
+GraphQL関連の構造を生成するための専門的なコンストラクター。
-* The type.factory translates field metadata into GraphQL types using `TypeMapperService`.
-* The type-definition.factory creates GraphQL input or output objects derived from `objectMetadata`.
+* type.factoryは、フィールドメタデータを`TypeMapperService`を使用してGraphQLタイプに変換します。
+* type-definition.factoryは、`objectMetadata`から導出されるGraphQLの入力または出力オブジェクトを作成します。
-#### GraphQL Types
+#### GraphQLタイプ
-Includes enumerations, inputs, objects, and scalars, and serves as the building blocks for the schema construction.
+列挙型、入力、オブジェクト、スカラーを含み、スキーマ構築の基礎となります。
-#### Interfaces and Object Definitions
+#### インターフェースとオブジェクト定義
-Contains the blueprints for GraphQL entities, and includes both predefined and custom types like `MONEY` or `URL`.
+GraphQLエンティティの設計図を含み、`MONEY`や`URL`のような定義済みおよびカスタムタイプが含まれます。
-#### Services
+#### サービス
-Contains the service responsible for associating FieldMetadataType with its appropriate GraphQL scalar or query modifiers.
+FieldMetadataTypeに対応するGraphQLスカラーまたはクエリ修飾子を関連付けるためのサービスを含みます。
-#### Storage
+#### ストレージ
-Includes the `TypeDefinitionsStorage` class that contains reusable type definitions, preventing duplication of GraphQL types.
+GraphQLタイプの重複を防ぐための再利用可能な型定義を含む`TypeDefinitionsStorage`クラスを含みます。
-### Workspace Resolver Builder
+### ワークスペースリゾルバービルダー
-Creates resolver functions for querying and mutating the GraphQL schema.
+GraphQLスキーマのクエリおよび変更を行うリゾルバー関数を作成します。
-Each factory in this directory is responsible for producing a distinct resolver type, such as the `FindManyResolverFactory`, designed for adaptable application across various tables.
+このディレクトリ内の各ファクトリーは、様々なテーブルに適用可能な`FindManyResolverFactory`のように、異なるリゾルバータイプを生成する役割を果たします。
-### Workspace Query Runner
+### ワークスペースクエリランナー
-Runs the generated queries on the database and parses the result.
+データベースで生成されたクエリを実行し、その結果を解析します。
diff --git a/packages/twenty-docs/l/ja/developers/contribute/capabilities/backend-development/queue.mdx b/packages/twenty-docs/l/ja/developers/contribute/capabilities/backend-development/queue.mdx
index 6148c0fbf0..44e1cb419d 100644
--- a/packages/twenty-docs/l/ja/developers/contribute/capabilities/backend-development/queue.mdx
+++ b/packages/twenty-docs/l/ja/developers/contribute/capabilities/backend-development/queue.mdx
@@ -1,20 +1,20 @@
---
-title: Message Queue
+title: メッセージキュー
---
-Queues facilitate async operations to be performed. They can be used for performing background tasks such as sending a welcome email on register.
-Each use case will have its own queue class extended from `MessageQueueServiceBase`.
+キューは非同期処理を実行するための手段を提供します。 それらは、登録時にウェルカムメールを送信するなどのバックグラウンドタスクを実行するために使用できます。
+各ユースケースには `MessageQueueServiceBase` から拡張された独自のキュークラスが必要です。
-Currently, we only support `bull-mq`[bull-mq](https://bullmq.io/) as the queue driver.
+現在のところ、キュードライバとして `bull-mq`[bull-mq](https://bullmq.io/) のみをサポートしています。
-## Steps to create and use a new queue
+## 新しいキューを作成して使用する手順
-1. Add a queue name for your new queue under enum `MESSAGE_QUEUES`.
-2. Provide the factory implementation of the queue with the queue name as the dependency token.
-3. Inject the queue that you created in the required module/service with the queue name as the dependency token.
-4. Add worker class with token based injection just like producer.
+1. enum `MESSAGE_QUEUES` に、新しいキュー用のキュー名を追加します。
+2. 依存トークンとしてキュー名を持つキューのファクトリ実装を提供します。
+3. 依存性トークンとしてキュー名を使用して、作成したキューを必要なモジュール/サービスにインジェクトします。
+4. トークンベースのインジェクションを用いたワーカークラスをプロデューサーと同様に追加します。
-### Example usage
+### 使用例
```ts
class Resolver {
diff --git a/packages/twenty-docs/l/ja/developers/contribute/capabilities/backend-development/server-commands.mdx b/packages/twenty-docs/l/ja/developers/contribute/capabilities/backend-development/server-commands.mdx
index 6951909788..dc5fca3658 100644
--- a/packages/twenty-docs/l/ja/developers/contribute/capabilities/backend-development/server-commands.mdx
+++ b/packages/twenty-docs/l/ja/developers/contribute/capabilities/backend-development/server-commands.mdx
@@ -1,19 +1,24 @@
---
-title: Backend Commands
+title: バックエンドコマンド
---
-## Useful commands
+## 便利なコマンド
-These commands should be executed from packages/twenty-server folder.
+これらのコマンドは packages/twenty-server フォルダから実行してください。
+これらのコマンドは packages/twenty-server フォルダから実行してください。
+これらのコマンドは packages/twenty-server フォルダから実行してください。
+これらのコマンドは packages/twenty-server フォルダから実行してください。
+これらのコマンドは packages/twenty-server フォルダから実行してください。
+これらのコマンドは packages/twenty-server フォルダから実行してください。
From any other folder you can run `npx nx {command} twenty-server` (or `npx nx run twenty-server:{command}`).
-### First time setup
+### 初期設定
```
npx nx database:reset twenty-server # setup the database with dev seeds
```
-### Starting the server
+### サーバーの起動
```
npx nx run twenty-server:start
@@ -25,77 +30,77 @@ npx nx run twenty-server:start
npx nx run twenty-server:lint # pass --fix to fix lint errors
```
-### Test
+### テスト
```
npx nx run twenty-server:test:unit # run unit tests
npx nx run twenty-server:test:integration # run integration tests
```
-Note: you can run `npx nx run twenty-server:test:integration:with-db-reset` in case you need to reset the database before running the integration tests.
+注: 統合テストを実行する前にデータベースをリセットする必要がある場合、 `npx nx run twenty-server:test:integration:with-db-reset` を実行できます。
-### Resetting the database
+### データベースのリセット
-If you want to reset and seed the database, you can run the following command:
+データベースをリセットおよびシードしたい場合は、次のコマンドを実行してください:
```bash
npx nx run twenty-server:database:reset
```
-### Migrations
+### マイグレーション
-#### For objects in Core/Metadata schemas (TypeORM)
+#### Core/Metadata スキーマ (TypeORM) のオブジェクトに対して
```bash
npx nx run twenty-server:typeorm migration:generate src/database/typeorm/core/migrations/nameOfYourMigration -d src/database/typeorm/core/core.datasource.ts
```
-#### For Workspace objects
+#### ワークスペースオブジェクトに対して
-There are no migrations files, migration are generated automatically for each workspace,
-stored in the database, and applied with this command
+マイグレーションファイルはなく、それぞれのワークスペースに対して自動的に生成され、
+データベースに保存され、このコマンドで適用されます。
```bash
npx nx run twenty-server:command workspace:sync-metadata -f
```
- This will drop the database and re-run the migrations and seed.
+ これによりデータベースが削除され、マイグレーションとシードが再実行されます。
- Make sure to back up any data you want to keep before running this command.
+ このコマンドを実行する前に、保持したいデータをバックアップしてください。
-## Tech Stack
+## 技術スタック
-Twenty primarily uses NestJS for the backend.
+Twenty は主にバックエンドに NestJS を使用しています。
-Prisma was the first ORM we used. But in order to allow users to create custom fields and custom objects, a lower-level made more sense as we need to have fine-grained control. The project now uses TypeORM.
+最初に使用した ORM は Prisma でした。 最初に使用した ORM は Prisma でした。 But in order to allow users to create custom fields and custom objects, a lower-level made more sense as we need to have fine-grained control. 最初に使用した ORM は Prisma でした。 But in order to allow users to create custom fields and custom objects, a lower-level made more sense as we need to have fine-grained control. 現在のプロジェクトでは TypeORM を使用しています。
-Here's what the tech stack now looks like.
+現在の技術スタックは次のようになっています。
-**Core**
+**コア**
* [NestJS](https://nestjs.com/)
* [TypeORM](https://typeorm.io/)
* [GraphQL Yoga](https://the-guild.dev/graphql/yoga-server)
-**Database**
+**データベース**
* [Postgres](https://www.postgresql.org/)
-**Third-party integrations**
+**サードパーティ統合**
-* [Sentry](https://sentry.io/welcome/) for tracking bugs
+* [Sentry](https://sentry.io/welcome/) バグトラッキング用
-**Testing**
+**テスト**
* [Jest](https://jestjs.io/)
-**Tooling**
+**ツール**
* [Yarn](https://yarnpkg.com/)
* [ESLint](https://eslint.org/)
-**Development**
+**開発**
* [AWS EKS](https://aws.amazon.com/eks/)
diff --git a/packages/twenty-docs/l/ja/developers/contribute/capabilities/backend-development/zapier.mdx b/packages/twenty-docs/l/ja/developers/contribute/capabilities/backend-development/zapier.mdx
index 46bcd563fc..021dda05a3 100644
--- a/packages/twenty-docs/l/ja/developers/contribute/capabilities/backend-development/zapier.mdx
+++ b/packages/twenty-docs/l/ja/developers/contribute/capabilities/backend-development/zapier.mdx
@@ -1,18 +1,18 @@
---
-title: Zapier App
+title: Zapierアプリ
---
-Effortlessly sync Twenty with 3000+ apps using [Zapier](https://zapier.com/). Automate tasks, boost productivity, and supercharge your customer relationships!
+[Zapier](https://zapier.com/) を使って、3000以上のアプリと Twenty を簡単に同期できます。 タスクを自動化し、生産性を高め、顧客関係を強化しよう!
-## About Zapier
+## Zapierについて
-Zapier is a tool that allows you to automate workflows by connecting the apps that your team uses every day. The fundamental concept of Zapier is automation workflows, called Zaps, and include triggers and actions.
+Zapierは、チームが毎日使用するアプリを連携させてワークフローを自動化するツールです。 Zapierの基本的な概念は、Zapsと呼ばれる自動化ワークフローであり、トリガーとアクションを含みます。 Zapierは、チームが毎日使用するアプリを連携させてワークフローを自動化するツールです。 Zapierの基本的な概念は、Zapsと呼ばれる自動化ワークフローであり、トリガーとアクションを含みます。 Zapierの基本的な概念は、Zapsと呼ばれる自動化ワークフローであり、トリガーとアクションを含みます。
-You can learn more about how Zapier works [here](https://zapier.com/how-it-works).
+Zapierの仕組みについてもっと知りたい方は[こちら](https://zapier.com/how-it-works)をご覧ください。
-## Setup
+## セットアップ
-### Step 1: Install Zapier packages
+### ステップ 1: Zapier パッケージをインストール
```bash
cd packages/twenty-zapier
@@ -20,33 +20,33 @@ cd packages/twenty-zapier
yarn
```
-### Step 2: Login with the CLI
+### ステップ 2: CLI でログイン
-Use your Zapier credentials to log in using the CLI:
+Zapierの資格情報を使用してCLIでログインしてください。
```bash
zapier login
```
-### Step 3: Set environment variables
+### ステップ3:環境変数をセットアップします
-From the `packages/twenty-zapier` folder, run:
+`packages/twenty-zapier`フォルダーから実行します。
```bash
cp .env.example .env
```
-Run the application locally, go to [http://localhost:3000/settings/api-webhooks](http://localhost:3000/settings/api-webhooks), and generate an API key.
+アプリケーションをローカルで実行し、[http://localhost:3000/settings/api-webhooks](http://localhost:3000/settings/api-webhooks)にアクセスしてAPIキーを生成してください。
-Replace the **YOUR_API_KEY** value in the `.env` file with the API key you just generated.
+.envファイルの**YOUR_API_KEY**値を生成したAPIキーで置き換えてください。
-## Development
+## 開発
- Make sure to run `yarn build` before any `zapier` command.
+ `zapier`コマンドを実行する前に`yarn build`を実行してください。
-### Test
+### テスト
```bash
yarn test
@@ -58,25 +58,25 @@ yarn test
yarn format
```
-### Watch and compile as you edit code
+### コードを編集しながら監視&コンパイル
```bash
yarn watch
```
-### Validate your Zapier app
+### Zapierアプリを検証
```bash
yarn validate
```
-### Deploy your Zapier app
+### Zapierアプリをデプロイ
```bash
yarn deploy
```
-### List all Zapier CLI commands
+### すべてのZapier CLIコマンドを列挙
```bash
zapier
diff --git a/packages/twenty-docs/l/ja/developers/contribute/capabilities/bug-and-requests.mdx b/packages/twenty-docs/l/ja/developers/contribute/capabilities/bug-and-requests.mdx
index 4db64b703d..3ba6756b1d 100644
--- a/packages/twenty-docs/l/ja/developers/contribute/capabilities/bug-and-requests.mdx
+++ b/packages/twenty-docs/l/ja/developers/contribute/capabilities/bug-and-requests.mdx
@@ -1,78 +1,78 @@
---
-title: Bugs, Requests & Pull Requests
-info: Report issues, request features, and contribute code
+title: バグ報告、要望、プルリクエスト
+info: Issue を報告し、機能を要望し、コードで貢献する
---
-## Reporting Bugs
+## バグの報告
-To report a bug, please [create an issue on GitHub](https://github.com/twentyhq/twenty/issues/new).
+バグを報告するには、[GitHubで問題を作成](https://github.com/twentyhq/twenty/issues/new)してください。
-You can also ask for help on [Discord](https://discord.gg/cx5n4Jzs57).
+[Discord](https://discord.gg/cx5n4Jzs57)でヘルプを求めることもできます。
-## Feature Requests
+## 機能リクエスト
-If you're not sure if it's a bug, and you feel it's closer to a feature request, then you should probably [open a discussion instead](https://github.com/twentyhq/twenty/discussions/new).
+バグかどうか不明で、機能リクエストに近いと感じる場合は、代わりに[ディスカッションを開く](https://github.com/twentyhq/twenty/discussions/new)べきです。
-## Submit a Pull Request
+## プルリクエストを提出する
-Contributing code to Twenty starts with a pull request (PR).
+Twentyへのコード貢献は、プルリクエスト(PR)から始まります。
-### Before You Start
+### 始める前に
-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. 関連する作業がないか[既存の Issue](https://github.com/twentyhq/twenty/issues)を確認してください
+2. 新機能については、まず Issue を作成して議論してください
+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
+### プルリクエストを提出する
-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. GitHubでプルリクエストを作成する
+3. PR テンプレートに記入する
+4. 関連する Issue をリンクする
-### 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/ja/developers/contribute/capabilities/frontend-development/best-practices-front.mdx b/packages/twenty-docs/l/ja/developers/contribute/capabilities/frontend-development/best-practices-front.mdx
index 187c2d848c..08c33d8b37 100644
--- a/packages/twenty-docs/l/ja/developers/contribute/capabilities/frontend-development/best-practices-front.mdx
+++ b/packages/twenty-docs/l/ja/developers/contribute/capabilities/frontend-development/best-practices-front.mdx
@@ -1,19 +1,19 @@
---
-title: Best Practices
+title: ベストプラクティス',
---
-This document outlines the best practices you should follow when working on the frontend.
+このドキュメントでは、フロントエンド作業におけるベストプラクティスを概要化しています。
-## State management
+## 状態管理
-React and Recoil handle state management in the codebase.
+React と Recoil はコードベース内の状態管理を行います。
-### Use `useRecoilState` to store state
+### 状態を保存するために `useRecoilState` を使用する
-It's good practice to create as many atoms as you need to store your state.
+状態を保存するために必要なだけ多くのアトムを作成するのがよいです。
- It's better to use extra atoms than trying to be too concise with props drilling.
+ プロップドリリングを必要以上に控えるより、追加のアトムを使用する方が良いです。
```tsx
@@ -36,29 +36,29 @@ export const MyComponent = () => {
}
```
-### Do not use `useRef` to store state
+### 状態を保存するために `useRef` を使用しないでください
-Avoid using `useRef` to store state.
+状態の保存に `useRef` を使用するのは避けてください。
If you want to store state, you should use `useState` or `useRecoilState`.
-See [how to manage re-renders](#managing-re-renders) if you feel like you need `useRef` to prevent some re-renders from happening.
+いくつかの再レンダリングを防ぐために `useRef` が必要だと感じた場合は、[再レンダリングの管理方法](#managing-re-renders)を参照してください。
-## Managing re-renders
+## 再レンダリングの管理
-Re-renders can be hard to manage in React.
+React で再レンダリングを管理するのは難しいことがあります。
-Here are some rules to follow to avoid unnecessary re-renders.
+不必要な再レンダリングを避けるためのいくつかのルールをご紹介します。
-Keep in mind that you can **always** avoid re-renders by understanding their cause.
+再レンダリングの原因を理解することで、常に再レンダリングを避けることができることを念頭に置いてください。
-### Work at the root level
+### ルートレベルで作業する
-Avoiding re-renders in new features is now made easy by eliminating them at the root level.
+新機能での再レンダリングをルートレベルで排除することで、簡単に避けることができるようになりました。
The `PageChangeEffect` sidecar component contains just one `useEffect` that holds all the logic to execute on a page change.
-That way you know that there's just one place that can trigger a re-render.
+その方法で、再レンダリングを引き起こす場所が 1 つだけあることを認識できます。
### Always think twice before adding `useEffect` in your codebase
@@ -68,17 +68,17 @@ You should think whether you need `useEffect`, or if you can move the logic in a
You'll find it generally easy to move the logic in a `handleClick` or `handleChange` function.
-You can also find them in libraries like Apollo: `onCompleted`, `onError`, etc.
+Apollo などのライブラリで `onCompleted`、`onError` などとしても見つかることがあります。
### Use a sibling component to extract `useEffect` or data fetching logic
If you feel like you need to add a `useEffect` in your root component, you should consider extracting it in a sidecar component.
-You can apply the same for data fetching logic, with Apollo hooks.
+Apollo フックを使用してデータ取得ロジックにも同じことを適用できます。
```tsx
-// ❌ Bad, will cause re-renders even if data is not changing,
-// because useEffect needs to be re-evaluated
+// ❌ 悪い例: データが変化していなくても再レンダーを引き起こす
+// useEffect を再評価する必要があるため
export const PageComponent = () => {
const [data, setData] = useRecoilState(dataState);
const [someDependency] = useRecoilState(someDependencyState);
@@ -100,8 +100,8 @@ export const App = () => (
```
```tsx
-// ✅ Good, will not cause re-renders if data is not changing,
-// because useEffect is re-evaluated in another sibling component
+// ✅ 良い例: データが変化していなければ再レンダーは発生しない
+// useEffect が別の兄弟コンポーネントで再評価されるため
export const PageComponent = () => {
const [data, setData] = useRecoilState(dataState);
@@ -129,84 +129,84 @@ export const App = () => (
);
```
-### Use recoil family states and recoil family selectors
+### Recoilファミリー状態とファミリーセレクターを使用する
-Recoil family states and selectors are a great way to avoid re-renders.
+Recoil ファミリー状態とセレクターは、再レンダリングを回避するための優れた方法です。
-They are useful when you need to store a list of items.
+アイテムのリストを保存する必要があるときに有用です。
-### You shouldn't use `React.memo(MyComponent)`
+### `React.memo(MyComponent)` を使用してはいけません
-Avoid using `React.memo()` because it does not solve the cause of the re-render, but instead breaks the re-render chain, which can lead to unexpected behavior and make the code very hard to refactor.
+`React.memo()` の使用を避けてください。それは再レンダリングの原因を解決するのではなく、再レンダリングの連鎖を破り、予期しない動作を引き起こす可能性があり、コードのリファクタリングが非常に困難になります。
-### Limit `useCallback` or `useMemo` usage
+### `useCallback` または `useMemo` の使用を制限する
-They are often not necessary and will make the code harder to read and maintain for a gain of performance that is unnoticeable.
+それらは通常必要ではなく、気付かない程度のパフォーマンス向上のためにコードの可読性と保守性を低下させます。
-## Console.logs
+## コンソールログ
-`console.log` statements are valuable during development, offering real-time insights into variable values and code flow. But, leaving them in production code can lead to several issues:
+`console.log` は開発中において、変数の値やコードの流れについてリアルタイムの洞察を提供するために有効です。 しかし、これをプロダクションコードに残すと、いくつかの問題を引き起こす可能性があります。 しかし、これをプロダクションコードに残すと、いくつかの問題を引き起こす可能性があります。
-1. **Performance**: Excessive logging can affect the runtime performance, especially on client-side applications.
+1. **パフォーマンス**: 過剰なログはクライアントサイドアプリケーションのランタイムパフォーマンスに影響を与える可能性があります。
-2. **Security**: Logging sensitive data can expose critical information to anyone who inspects the browser's console.
+2. **セキュリティ**: センシティブなデータをログに記録すると、ブラウザのコンソールを確認するだけで重要な情報が露見する恐れがあります。
-3. **Cleanliness**: Filling up the console with logs can obscure important warnings or errors that developers or tools need to see.
+3. **清潔性**: コンソールにログが溢れると、開発者やツールが見るべき重要な警告やエラーが不明瞭になる可能性があります。
-4. **Professionalism**: End users or clients checking the console and seeing a myriad of log statements might question the code's quality and polish.
+4. **プロフェッショナリズム**: エンドユーザーやクライアントがコンソールを確認したときに、多くのログが表示されると、そのコードの品質や仕上がりを疑問視されることがあります。
-Make sure you remove all `console.logs` before pushing the code to production.
+`console.logs` はすべて削除してからコードをプロダクションにプッシュしてください。
-## Naming
+## 命名について
-### Variable Naming
+### 変数の命名
-Variable names ought to precisely depict the purpose or function of the variable.
+変数名は、その変数の目的や機能を正確に描写する必要があります。
-#### The issue with generic names
+#### 汎用的な名前の問題
-Generic names in programming are not ideal because they lack specificity, leading to ambiguity and reduced code readability. Such names fail to convey the variable or function's purpose, making it challenging for developers to understand the code's intent without deeper investigation. This can result in increased debugging time, higher susceptibility to errors, and difficulties in maintenance and collaboration. Meanwhile, descriptive naming makes the code self-explanatory and easier to navigate, enhancing code quality and developer productivity.
+プログラミングにおいて汎用的な名前は理想的ではありません。なぜなら、それらは特異性に欠け、曖昧さをもたらし、コードの可読性を低下させるからです。 そのような名前は変数や関数の目的を伝えず、開発者がコードの意図を深く探らない限り理解を困難にします。 これにより、デバッグ時間が増加し、エラーの発生率が高まり、メンテナンスやコラボレーションが難しくなります。 一方で、説明的な命名はコードを自己説明的にし、ナビゲートしやすくし、コードの品質と開発者の生産性を向上させます。
```tsx
-// ❌ Bad, uses a generic name that doesn't communicate its
-// purpose or content clearly
+// ❌ 悪い例: 目的や内容が
+// 明確に伝わらない汎用的な名前を使用している
const [value, setValue] = useState('');
```
```tsx
-// ✅ Good, uses a descriptive name
+// ✅ 良い例: 説明的な名前を使用している
const [email, setEmail] = useState('');
```
-#### Some words to avoid in variable names
+#### 変数名で避けるべき言葉のいくつか
-* dummy
+* ダミー
-### Event handlers
+### イベントハンドラー
-Event handler names should start with `handle`, while `on` is a prefix used to name events in components props.
+イベントハンドラの名前は `handle` で始めるべきであり、`on` はコンポーネントのプロップ内のイベントを命名するためのプレフィックスとして使用されます。
```tsx
-// ❌ Bad
+// ❌ 悪い例
const onEmailChange = (val: string) => {
// ...
};
```
```tsx
-// ✅ Good
+// ✅ 良い例
const handleEmailChange = (val: string) => {
// ...
};
```
-## Optional Props
+## オプショナルプロップ
-Avoid passing the default value for an optional prop.
+オプショナルプロップにデフォルト値を渡すことは避けてください。
-**EXAMPLE**
+**例**
-Take the`EmailField` component defined below:
+以下に定義された `EmailField` コンポーネントを取る:
```tsx
type EmailFieldProps = {
@@ -219,28 +219,28 @@ const EmailField = ({ value, disabled = false }: EmailFieldProps) => (
);
```
-**Usage**
+**使用方法**
```tsx
-// ❌ Bad, passing in the same value as the default value adds no value
+// ❌ 悪い例: デフォルト値と同じ値を渡しても意味がない
const Form = () => ;
```
```tsx
-// ✅ Good, assumes the default value
+// ✅ 良い例: デフォルト値に任せる
const Form = () => ;
```
-## Component as props
+## プロップとしてのコンポーネント
-Try as much as possible to pass uninstantiated components as props, so children can decide on their own of what props they need to pass.
+可能な限り、未初期化のコンポーネントをプロップとして渡してください。子コンポーネントが必要なプロップを自分で決定できるようにします。
-The most common example for that is icon components:
+そのための最も一般的な例はアイコンコンポーネントです。
```tsx
const SomeParentComponent = () => ;
-// In MyComponent
+// MyComponent 内
const MyComponent = ({ MyIcon }: { MyIcon: IconComponent }) => {
const theme = useTheme();
@@ -252,25 +252,25 @@ const MyComponent = ({ MyIcon }: { MyIcon: IconComponent }) => {
};
```
-For React to understand that the component is a component, you need to use PascalCase, to later instantiate it with ``
+Reactがコンポーネントを認識するためには、PascalCaseを使用し、その後に``でインスタンス化する必要があります。
-## Prop Drilling: Keep It Minimal
+## プロップのドリリングを最小限に抑える
-Prop drilling, in the React context, refers to the practice of passing state variables and their setters through many component layers, even if intermediary components don't use them. While sometimes necessary, excessive prop drilling can lead to:
+Reactのコンテキストでのプロップドリリングとは、多くのコンポーネントレイヤーを通じて状態変数やそのセットを渡すことを意味します。中間のコンポーネントがそれを使用していない場合であってもです。 時には必要ですが、過度のプロップドリリングは次の結果を導きかねません。 時には必要ですが、過度のプロップドリリングは次の結果を導きかねません。 時には必要ですが、過度のプロップドリリングは次の結果を導きかねません。
-1. **Decreased Readability**: Tracing where a prop originates or where it's utilized can become convoluted in a deeply nested component structure.
+1. **可読性の低下**:プロップがどこから始まり、どこで使われているかを追跡するのが、深くネストされたコンポーネント構造では複雑になり得ます。
-2. **Maintenance Challenges**: Changes in one component's prop structure might require adjustments in several components, even if they don't directly use the prop.
+2. **メンテナンスの難しさ**:あるコンポーネントのプロップ構造に変更があると、他のコンポーネントに変更が必要になる場合があります。それが直接プロップを使用していなくても。
-3. **Reduced Component Reusability**: A component receiving a lot of props solely for passing them down becomes less general-purpose and harder to reuse in different contexts.
+3. **コンポーネントの再利用性の低下**:多くのプロップを単に下位に渡すコンポーネントは、汎用性が低くなり、異なるコンテキストでの再利用が難しくなります。
-If you feel that you are using excessive prop drilling, see [state management best practices](#state-management).
+もし過度のプロップドリリングをしていると感じた場合は、[状態管理のベストプラクティス](#state-management)を参照してください。
-## Imports
+## インポート
-When importing, opt for the designated aliases rather than specifying complete or relative paths.
+インポート時は、完全なパスや相対パスを指定するのではなく、指定されたエイリアスを選択してください。
-**The Aliases**
+**ハンドルの別名**
```js
{
@@ -282,10 +282,10 @@ When importing, opt for the designated aliases rather than specifying complete o
}
```
-**Usage**
+**使用方法**
```tsx
-// ❌ Bad, specifies the entire relative path
+// ❌ 悪い例: 相対パス全体を指定している
import {
CatalogDecorator
} from '../../../../../testing/decorators/CatalogDecorator';
@@ -295,14 +295,14 @@ import {
```
```tsx
-// ✅ Good, utilises the designated aliases
+// ✅ 良い例: 指定したエイリアスを利用している
import { CatalogDecorator } from '~/testing/decorators/CatalogDecorator';
import { ComponentDecorator } from 'twenty-ui/testing';
```
-## Schema Validation
+## スキーマ検証
-[Zod](https://github.com/colinhacks/zod) is the schema validator for untyped objects:
+[Zod](https://github.com/colinhacks/zod)は型未定義オブジェクトのスキーマバリデーターです。
```js
const validationSchema = z
@@ -310,16 +310,16 @@ const validationSchema = z
exist: z.boolean(),
email: z
.string()
- .email('Email must be a valid email'),
+ .email('メールアドレスは有効な形式である必要があります'),
password: z
.string()
- .regex(PASSWORD_REGEX, 'Password must contain at least 8 characters'),
+ .regex(PASSWORD_REGEX, 'パスワードは8文字以上である必要があります'),
})
.required();
type Form = z.infer;
```
-## Breaking Changes
+## 重大な変更
-Always perform thorough manual testing before proceeding to guarantee that modifications haven’t caused disruptions elsewhere, given that tests have not yet been extensively integrated.
+変更が他の部分に影響を及ぼしていないことを確実にするために、進む前に徹底的な手動テストを行ってください。テストがまだ広範囲に統合されていないためです。
diff --git a/packages/twenty-docs/l/ja/developers/contribute/capabilities/frontend-development/folder-architecture-front.mdx b/packages/twenty-docs/l/ja/developers/contribute/capabilities/frontend-development/folder-architecture-front.mdx
index 064ac5c256..14278b16aa 100644
--- a/packages/twenty-docs/l/ja/developers/contribute/capabilities/frontend-development/folder-architecture-front.mdx
+++ b/packages/twenty-docs/l/ja/developers/contribute/capabilities/frontend-development/folder-architecture-front.mdx
@@ -1,11 +1,11 @@
---
-title: Folder Architecture
-info: A detailed look into our folder architecture
+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 の整理と保守性にどのように寄与するかを解説します。
-By following this folder architecture convention, it's easier to find the files related to specific features and ensure that the application is scalable and maintainable.
+このフォルダ構成の規約に従うことで、特定の機能に関連するファイルを見つけやすくなり、アプリケーションのスケーラビリティと保守性を確保できます。
```
front
@@ -22,14 +22,14 @@ front
└───...
```
-## Pages
+## ページ
-Includes the top-level components defined by the application routes. They import more low-level components from the modules folder (more details below).
+アプリケーションのルートで定義されたトップレベルのコンポーネントを含みます。 それらは、modules フォルダからより低レベルのコンポーネントをインポートします(詳細は下記を参照)。
-## Modules
+## モジュール
-Each module represents a feature or a group of feature, comprising its specific components, states, and operational logic.
-They should all follow the structure below. You can nest modules within modules (referred to as submodules) and the same rules will apply.
+各モジュールは、単一の機能または機能のグループを表し、それぞれ固有のコンポーネント、状態、動作ロジックで構成されています。
+以下の構造に従う必要があります。 モジュール内にモジュール(サブモジュール)をネストでき、同じルールが適用されます。
```
module1
@@ -50,60 +50,60 @@ module1
└───utils
```
-### Contexts
+### コンテキスト
-A context is a way to pass data through the component tree without having to pass props down manually at every level.
+コンテキストは、各レベルでプロップスを手動で渡すことなく、コンポーネントツリーを通じてデータを渡す方法です。
-See [React Context](https://react.dev/reference/react#context-hooks) for more details.
+詳細は[Reactコンテキスト](https://react.dev/reference/react#context-hooks)を参照してください。
### GraphQL
-Includes fragments, queries, and mutations.
+フラグメント、クエリ、ミューテーションを含みます。
-See [GraphQL](https://graphql.org/learn/) for more details.
+詳細は[GraphQL](https://graphql.org/learn/)を参照してください。
-* Fragments
+* フラグメント
-A fragment is a reusable piece of a query, which you can use in different places. By using fragments, it's easier to avoid duplicating code.
+フラグメントはクエリの再利用可能な一部分で、さまざまな箇所で使用できます。 フラグメントを使用することで、コードを重複させることを避けやすくなります。
-See [GraphQL Fragments](https://graphql.org/learn/queries/#fragments) for more details.
+詳細は[GraphQLフラグメント](https://graphql.org/learn/queries/#fragments)を参照してください。
-* Queries
+* クエリ
-See [GraphQL Queries](https://graphql.org/learn/queries/) for more details.
+詳細は[GraphQLクエリ](https://graphql.org/learn/queries/)を参照してください。
-* Mutations
+* ミューテーション
-See [GraphQL Mutations](https://graphql.org/learn/queries/#mutations) for more details.
+詳細は[GraphQLミューテーション](https://graphql.org/learn/queries/#mutations)を参照してください。
-### Hooks
+### フック
-See [Hooks](https://react.dev/learn/reusing-logic-with-custom-hooks) for more details.
+詳細は[フック](https://react.dev/learn/reusing-logic-with-custom-hooks)を参照してください。
-### States
+### ステート
-Contains the state management logic. [RecoilJS](https://recoiljs.org) handles this.
+ステート管理のロジックを含みます。 [RecoilJS](https://recoiljs.org) がこれを管理します。
-* Selectors: See [RecoilJS Selectors](https://recoiljs.org/docs/basic-tutorial/selectors) for more details.
+* セレクター: 詳細は[RecoilJSセレクター](https://recoiljs.org/docs/basic-tutorial/selectors)を参照してください。
-React's built-in state management still handles state within a component.
+Reactの組み込みステート管理は依然としてコンポーネント内のステートを処理します。
-### Utils
+### ユーティリティ
-Should just contain reusable pure functions. Otherwise, create custom hooks in the `hooks` folder.
+再利用可能な純粋関数のみを含むべきです。 それ以外の場合は、`hooks`フォルダにカスタムフックを作成します。
## UI
-Contains all the reusable UI components used in the application.
+アプリケーションで使用される再利用可能なUIコンポーネントをすべて含みます。
-This folder can contain sub-folders, like `data`, `display`, `feedback`, and `input` for specific types of components. Each component should be self-contained and reusable, so that you can use it in different parts of the application.
+このフォルダには、特定の種類のコンポーネント用に `data`、`display`、`feedback`、`input` といったサブフォルダを含めることができます。 各コンポーネントは自己完結型で再利用可能でなければならず、アプリケーションのさまざまな部分で使用できます。
-By separating the UI components from the other components in the `modules` folder, it's easier to maintain a consistent design and to make changes to the UI without affecting other parts (business logic) of the codebase.
+UIコンポーネントを`modules`フォルダ内の他のコンポーネントから分離することで、一貫したデザインを維持し、UIの変更がコードベースの他の部分(ビジネスロジック)に影響を与えないようにするのが容易になります。
-## Interface and dependencies
+## インターフェースと依存関係
-You can import other module code from any module except for the `ui` folder. This will keep its code easy to test.
+`ui` フォルダを除く任意のモジュールから、他のモジュールのコードをインポートできます。 これにより、そのコードは簡単にテストできます。
-### Internal
+### 内部
-Each part (hooks, states, ...) of a module can have an `internal` folder, which contains parts that are just used within the module.
+各部分(フック、ステート、...) は、モジュール内でのみ使用される部分を含む `internal` フォルダを持つことができます。
diff --git a/packages/twenty-docs/l/ja/developers/contribute/capabilities/frontend-development/frontend-commands.mdx b/packages/twenty-docs/l/ja/developers/contribute/capabilities/frontend-development/frontend-commands.mdx
index 48051bddd2..21b5138517 100644
--- a/packages/twenty-docs/l/ja/developers/contribute/capabilities/frontend-development/frontend-commands.mdx
+++ b/packages/twenty-docs/l/ja/developers/contribute/capabilities/frontend-development/frontend-commands.mdx
@@ -1,41 +1,41 @@
---
-title: Frontend Commands
+title: フロントエンドコマンド
---
-## Useful commands
+## 便利なコマンド
-### Starting the app
+### アプリの開始
```bash
npx nx start twenty-front
```
-### Regenerate graphql schema based on API graphql schema
+### APIのGraphQLスキーマに基づいてGraphQLスキーマを再生成する
```bash
npx nx run twenty-front:graphql:generate --configuration=metadata
```
-OR
+または
```bash
npx nx run twenty-front:graphql:generate
```
-### Lint
+### リント
```bash
npx nx run twenty-front:lint # pass --fix to fix lint errors
```
-## Translations
+## 翻訳
```bash
npx nx run twenty-front:lingui:extract
npx nx run twenty-front:lingui:compile
```
-### Test
+### テスト
```bash
npx nx run twenty-front:test # run jest tests
@@ -44,11 +44,11 @@ npx nx run twenty-front:storybook:test # run tests # (needs yarn storybook:serve
npx nx run twenty-front:storybook:coverage # (needs yarn storybook:serve:dev to be running)
```
-## Tech Stack
+## 技術スタック
-The project has a clean and simple stack, with minimal boilerplate code.
+プロジェクトは、最小限のボイラープレートコードを持つシンプルでクリーンなスタックを持っています。
-**App**
+**アプリ**
* [React](https://react.dev/)
* [Apollo](https://www.apollographql.com/docs/)
@@ -56,35 +56,35 @@ The project has a clean and simple stack, with minimal boilerplate code.
* [Recoil](https://recoiljs.org/docs/introduction/core-concepts)
* [TypeScript](https://www.typescriptlang.org/)
-**Testing**
+**テスト**
* [Jest](https://jestjs.io/)
* [Storybook](https://storybook.js.org/)
-**Tooling**
+**ツール**
* [Yarn](https://yarnpkg.com/)
* [Craco](https://craco.js.org/docs/)
* [ESLint](https://eslint.org/)
-## Architecture
+## アーキテクチャ
-### Routing
+### ルーティング
-[React Router](https://reactrouter.com/) handles the routing.
+[React Router](https://reactrouter.com/)はルーティングを処理します。
To avoid unnecessary [re-renders](/l/ja/developers/contribute/capabilities/frontend-development/best-practices-front#managing-re-renders) all the routing logic is in a `useEffect` in `PageChangeEffect`.
-### State Management
+### 状態管理
-[Recoil](https://recoiljs.org/docs/introduction/core-concepts) handles state management.
+[Recoil](https://recoiljs.org/docs/introduction/core-concepts)は状態管理を処理します。
-See [best practices](/l/ja/developers/contribute/capabilities/frontend-development/best-practices-front#state-management) for more information on state management.
+状態管理に関する詳細な情報は[ベストプラクティス](/l/ja/developers/contribute/capabilities/frontend-development/best-practices-front#state-management)を参照してください。
-## Testing
+## テスト
-[Jest](https://jestjs.io/) serves as the tool for unit testing while [Storybook](https://storybook.js.org/) is for component testing.
+[Jest](https://jestjs.io/)はユニットテストのツールであり、[Storybook](https://storybook.js.org/)はコンポーネントテスト用です。
-Jest is mainly for testing utility functions, and not components themselves.
+Jestは主にユーティリティ関数のテスト用で、コンポーネントのテスト自体ではありません。
-Storybook is for testing the behavior of isolated components, as well as displaying the design system.
+Storybookは、独立したコンポーネントの挙動をテストし、デザインシステムを表示するためのものです。
diff --git a/packages/twenty-docs/l/ja/developers/contribute/capabilities/frontend-development/hotkeys.mdx b/packages/twenty-docs/l/ja/developers/contribute/capabilities/frontend-development/hotkeys.mdx
index 43cde50e63..99fb134511 100644
--- a/packages/twenty-docs/l/ja/developers/contribute/capabilities/frontend-development/hotkeys.mdx
+++ b/packages/twenty-docs/l/ja/developers/contribute/capabilities/frontend-development/hotkeys.mdx
@@ -1,42 +1,42 @@
---
-title: Hotkeys
+title: ホットキー
---
-## Introduction
+## イントロダクション
-When you need to listen to a hotkey, you would normally use the `onKeyDown` event listener.
+ホットキーをリッスンする必要がある場合、通常は `onKeyDown` イベントリスナーを使用します。
-In `twenty-front` however, you might have conflicts between same hotkeys that are used in different components, mounted at the same time.
+しかし、`twenty-front` では、同時にマウントされている異なるコンポーネントで使用される同じホットキーの間で競合が生じることがあります。
-For example, if you have a page that listens for the Enter key, and a modal that listens for the Enter key, with a Select component inside that modal that listens for the Enter key, you might have a conflict when all are mounted at the same time.
+例えば、Enterキーをリッスンするページと、Enterキーをリッスンするモーダル、さらにそのモーダル内のSelectコンポーネントもEnterキーをリッスンしている場合、全てが同時にマウントされると競合が生じる可能性があります。
-## The `useScopedHotkeys` hook
+## `useScopedHotkeys` フック
-To handle this problem, we have a custom hook that makes it possible to listen to hotkeys without any conflict.
+この問題を解決するために、どのような競合もなくホットキーをリッスンすることを可能にするカスタムフックがあります。
-You place it in a component, and it will listen to the hotkeys only when the component is mounted AND when the specified **hotkey scope** is active.
+コンポーネント内に配置すると、コンポーネントがマウントされ、指定された**ホットキースコープ**がアクティブなときだけホットキーをリッスンします。
-## How to listen for hotkeys in practice?
+## 実際にホットキーをリッスンする方法は?
-There are two steps involved in setting up hotkey listening :
+ホットキーをリッスンするための設定には2つのステップがあります:
-1. Set the [hotkey scope](#what-is-a-hotkey-scope-) that will listen to hotkeys
-2. Use the `useScopedHotkeys` hook to listen to hotkeys
+1. ホットキーをリッスンする[ホットキースコープ](#what-is-a-hotkey-scope-)を設定します
+2. ホットキーをリッスンするために `useScopedHotkeys` フックを使用します
-Setting up hotkey scopes is required even in simple pages, because other UI elements like left menu or command menu might also listen to hotkeys.
+他のUI要素(例:左側のメニューやコマンドメニュー)もホットキーをリッスンする可能性があるため、ホットキースコープの設定は単純なページでも必要です。
-## Use cases for hotkeys
+## ホットキーのユースケース
-In general, you'll have two use cases that require hotkeys :
+一般的に、ホットキーが必要となる動作は2つあります:
-1. In a page or a component mounted in a page
-2. In a modal-type component that takes the focus due to a user action
+1. ページにマウントされたコンポーネントで
+2. ユーザーのアクションでフォーカスをとるモーダルタイプのコンポーネントで
-The second use case can happen recursively : a dropdown in a modal for example.
+2番目のユースケースは再帰的に発生します:例えばモーダル内のドロップダウン。
-### Listening to hotkeys in a page
+### ページ内でホットキーをリッスン
-Example :
+例:
```tsx
const PageListeningEnter = () => {
@@ -71,11 +71,11 @@ const PageListeningEnter = () => {
};
```
-### Listening to hotkeys in a modal-type component
+### モーダルタイプのコンポーネントでホットキーをリッスン
-For this example we'll use a modal component that listens for the Escape key to tell its parent to close it.
+この例では、親にモーダルを閉じるように指示するためにEscapeキーをリッスンするモーダルコンポーネントを使用します。
-Here the user interaction is changing the scope.
+ここで、ユーザーの操作がスコープを変更します。
```tsx
const ExamplePageWithModal = () => {
@@ -108,7 +108,7 @@ const ExamplePageWithModal = () => {
};
```
-Then in the modal component :
+その後、モーダルコンポーネント内で:
```tsx
const MyDropdownComponent = ({ onClose }: { onClose: () => void }) => {
@@ -131,15 +131,15 @@ It's important to use this pattern when you're not sure that just using a useEff
Those conflicts can be hard to debug, and it might happen more often than not with useEffects.
-## What is a hotkey scope?
+## ホットキースコープとは?
-A hotkey scope is a string that represents a context in which the hotkeys are active. It is generally encoded as an enum.
+ホットキースコープは、ホットキーがアクティブなコンテキストを表す文字列です。 通常、enumとしてエンコードされます。 通常、enumとしてエンコードされます。 通常、enumとしてエンコードされます。
-When you change the hotkey scope, the hotkeys that are listening to this scope will be enabled and the hotkeys that are listening to other scopes will be disabled.
+ホットキースコープを変更すると、このスコープをリッスンしているホットキーが有効になり、他のスコープをリッスンしているホットキーが無効になります。
-You can set only one scope at a time.
+一度に1つのスコープしか設定できません。
-As an example, the hotkey scopes for each page are defined in the `PageHotkeyScope` enum:
+例として、各ページのホットキースコープは`PageHotkeyScope` enumで定義されています:
```tsx
export enum PageHotkeyScope {
@@ -160,7 +160,7 @@ export enum PageHotkeyScope {
}
```
-Internally, the currently selected scope is stored in a Recoil state that is shared across the application :
+内部的には、現在選択されているスコープはアプリケーション全体で共有されるRecoilステートに格納されています:
```tsx
export const currentHotkeyScopeState = createState({
@@ -169,10 +169,10 @@ export const currentHotkeyScopeState = createState({
});
```
-But this Recoil state should never be handled manually ! We'll see how to use it in the next section.
+しかし、このRecoilステートは手動で処理しないでください! 次のセクションでその使用方法を見ていきます。 次のセクションでその使用方法を見ていきます。 次のセクションでその使用方法を見ていきます。
-## How is it working internally?
+## 内部的にはどう機能しているのか?
-We made a thin wrapper on top of [react-hotkeys-hook](https://react-hotkeys-hook.vercel.app/docs/intro) that makes it more performant and avoids unnecessary re-renders.
+[react-hotkeys-hook](https://react-hotkeys-hook.vercel.app/docs/intro)の上に薄いラッパーを作成し、より効率的にし、不必要な再レンダリングを避けます。
-We also create a Recoil state to handle the hotkey scope state and make it available everywhere in the application.
+また、ホットキースコープの状態を処理し、アプリケーション全体で利用できるRecoilステートを作成しました。
diff --git a/packages/twenty-docs/l/ja/developers/contribute/capabilities/frontend-development/storybook.mdx b/packages/twenty-docs/l/ja/developers/contribute/capabilities/frontend-development/storybook.mdx
index 5c7f5fa52a..baff4a6c9a 100644
--- a/packages/twenty-docs/l/ja/developers/contribute/capabilities/frontend-development/storybook.mdx
+++ b/packages/twenty-docs/l/ja/developers/contribute/capabilities/frontend-development/storybook.mdx
@@ -1,8 +1,8 @@
---
-title: Storybook
-description: Browse Twenty's UI component library
+title: ストーリーブック
+description: TwentyのUIコンポーネントライブラリを閲覧
---
-View our complete component library and documentation in Storybook.
+ストーリーブックで私たちの完全なコンポーネントライブラリおよびドキュメントを参照してください。
-[Open Storybook →](https://storybook.twenty.com)
+[ストーリーブックを開く →](https://storybook.twenty.com)
diff --git a/packages/twenty-docs/l/ja/developers/contribute/capabilities/frontend-development/style-guide.mdx b/packages/twenty-docs/l/ja/developers/contribute/capabilities/frontend-development/style-guide.mdx
index e3ba4a44f0..39daabcda2 100644
--- a/packages/twenty-docs/l/ja/developers/contribute/capabilities/frontend-development/style-guide.mdx
+++ b/packages/twenty-docs/l/ja/developers/contribute/capabilities/frontend-development/style-guide.mdx
@@ -1,24 +1,24 @@
---
-title: Style Guide
+title: スタイルガイド
---
-This document includes the rules to follow when writing code.
+このドキュメントには、コードを書く際に従うべきルールが含まれています。
-The goal here is to have a consistent codebase, which is easy to read and easy to maintain.
+ここでの目標は、一貫性があり、読みやすく、メンテナンスしやすいコードベースにすることです。
-For this, it's better to be a bit more verbose than to be too concise.
+そのためには、簡潔すぎるよりも少し冗長な方が良いです。
-Always keep in mind that people read code more often than they write it, specially on an open source project, where anyone can contribute.
+常に念頭に置いておくべきは、コードは書くより読む方が多いということ、特にオープンソースプロジェクトでは、誰でも貢献できるためです。
-There are a lot of rules that are not defined here, but that are automatically checked by linters.
+ここでは定義されていない、多くの規則がありますが、リンターにより自動的にチェックされます。
## React
-### Use functional components
+### 関数コンポーネントを使用する
-Always use TSX functional components.
+常にTSXの関数コンポーネントを使用してください。
-Do not use default `import` with `const`, because it's harder to read and harder to import with code completion.
+`const`を使ったデフォルトの`import`は避けてください。読むことや、コード補完でのインポートが難しくなるからです。
```tsx
// ❌ Bad, harder to read, harder to import with code completion
@@ -34,11 +34,11 @@ export function MyComponent() {
};
```
-### Props
+### プロパティ
-Create the type of the props and call it `(ComponentName)Props` if there's no need to export it.
+プロップスの型を作成し、エクスポートの必要がない場合にはそれを`(ComponentName)Props`と呼んでください。
-Use props destructuring.
+プロップスの分割代入を使用する。
```tsx
// ❌ Bad, no type
@@ -52,7 +52,7 @@ type MyComponentProps = {
export const MyComponent = ({ name }: MyComponentProps) => Hello {name}
;
```
-#### Refrain from using `React.FC` or `React.FunctionComponent` to define prop types
+#### プロップス型の定義に`React.FC`または`React.FunctionComponent`を使用しない
```tsx
/* ❌ - Bad, defines the component type annotations with `FC`
@@ -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;
@@ -81,9 +81,9 @@ const EmailField = ({ value }: EmailFieldProps) => (
);
```
-#### No Single Variable Prop Spreading in JSX Elements
+#### JSX要素内で単一の変数プロップスプレーディングを使用しない
-Avoid using single variable prop spreading in JSX elements, like `{...props}`. This practice often results in code that is less readable and harder to maintain because it's unclear which props the component is receiving.
+`{...props}`のようにJSX要素内で単一の変数プロップスプレーディングを避けてください。 この方法は、コンポーネントが受け取るプロップスを不明確にするため、コードの可読性が低下し、メンテナンスが困難になります。 この方法は、コンポーネントが受け取るプロップスを不明確にするため、コードの可読性が低下し、メンテナンスが困難になります。 この方法は、コンポーネントが受け取るプロップスを不明確にするため、コードの可読性が低下し、メンテナンスが困難になります。
```tsx
/* ❌ - Bad, spreads a single variable prop into the underlying component
@@ -94,23 +94,23 @@ const MyComponent = (props: OwnProps) => {
```
```tsx
-/* ✅ - Good, Explicitly lists all props
- * - Enhances readability and maintainability
+/* ✅ - 良い例: すべてのプロップスを明示的にリストする
+ * - 可読性と維持性を高める
*/
const MyComponent = ({ prop1, prop2, prop3 }: MyComponentProps) => {
return ;
};
```
-Rationale:
+根拠:
-* At a glance, it's clearer which props the code passes down, making it easier to understand and maintain.
-* It helps to prevent tight coupling between components via their props.
-* Linting tools make it easier to identify misspelled or unused props when you list props explicitly.
+* ひと目で、コードがどのプロップスを渡しているかが明確になり、理解とメンテナンスが容易になります。
+* これにより、コンポーネント間のプロップスによる密結合を防ぐのに役立ちます。
+* プロップスを明示的にリストすれば、lintingツールが綴り間違いや未使用のプロップスを特定しやすくなります。
## JavaScript
-### Use nullish-coalescing operator `??`
+### `??`(ヌリッシュ合体演算子)を使う
```tsx
// ❌ Bad, can return 'default' even if value is 0 or ''
@@ -120,21 +120,21 @@ const value = process.env.MY_VALUE || 'default';
const value = process.env.MY_VALUE ?? 'default';
```
-### Use optional chaining `?.`
+### `?.`(オプショナルチェイニング)を使う
```tsx
-// ❌ Bad
+// ❌ 悪い例
onClick && onClick();
-// ✅ Good
+// ✅ 良い例
onClick?.();
```
## TypeScript
-### Use `type` instead of `interface`
+### `type`を使い、常に`interface`の代わりにする
-Always use `type` instead of `interface`, because they almost always overlap, and `type` is more flexible.
+`type`は多くの場合、`interface`と重複し、`type`の方が柔軟性が高いため、常に`type`を使用してください。
```tsx
// ❌ Bad
@@ -148,11 +148,11 @@ type MyType = {
};
```
-### Use string literals instead of enums
+### 列挙型の代わりに文字列リテラルを使う
-[String literals](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#literal-types) are the go-to way to handle enum-like values in TypeScript. They are easier to extend with Pick and Omit, and offer a better developer experience, specially with code completion.
+[文字列リテラル](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#literal-types) は、TypeScriptで列挙型のような値を扱うための推奨方法です。 それらはPickやOmitで拡張するのが簡単で、特にコード補完を伴う開発者の体験を向上させます。 それらはPickやOmitで拡張するのが簡単で、特にコード補完を伴う開発者の体験を向上させます。 それらはPickやOmitで拡張するのが簡単で、特にコード補完を伴う開発者の体験を向上させます。
-You can see why TypeScript recommends avoiding enums [here](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#enums).
+なぜTypeScriptが列挙型を避けることを推奨しているかは[ここ](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#enums)をご覧ください。
```tsx
// ❌ Bad, utilizes an enum
@@ -171,13 +171,13 @@ let color = Color.Red;
let color: "red" | "green" | "blue" = "red";
```
-#### GraphQL and internal libraries
+#### GraphQLと内部ライブラリ
-You should use enums that GraphQL codegen generates.
+GraphQLのcodegenが生成する列挙型を使用する必要があります。
-It's also better to use an enum when using an internal library, so the internal library doesn't have to expose a string literal type that is not related to the internal API.
+内部ライブラリを使用する際にも列挙型を使用する方が良いので、内部ライブラリが内部APIに関連しない文字列リテラル型を公開する必要がなくなります。
-Example:
+例:
```TSX
const {
@@ -190,11 +190,11 @@ setHotkeyScopeAndMemorizePreviousScope(
);
```
-## Styling
+## スタイリング
-### Use StyledComponents
+### StyledComponentsを使用する
-Style the components with [styled-components](https://emotion.sh/docs/styled).
+コンポーネントを[styled-components](https://emotion.sh/docs/styled)でスタイル設定する。
```tsx
// ❌ Bad
@@ -208,7 +208,7 @@ const StyledTitle = styled.div`
`;
```
-Prefix styled components with "Styled" to differentiate them from "real" components.
+スタイル付きコンポーネントを"Styled"で接頭辞にして、"本物の"コンポーネントと区別する。
```tsx
// ❌ Bad
@@ -224,17 +224,17 @@ const StyledTitle = styled.div`
`;
```
-### Theming
+### テーマ
-Utilizing the theme for the majority of component styling is the preferred approach.
+大部分のコンポーネントのスタイルをテーマに基づかせるのが推奨される手法です。
-#### Units of measurement
+#### 測定の単位
-Avoid using `px` or `rem` values directly within the styled components. The necessary values are generally already defined in the theme, so it’s recommended to make use of the theme for these purposes.
+Styledコンポーネント内で`px`または`rem`値を直接使用しない 必要な値は一般的にテーマに既に定義されているため、これらの目的でテーマを利用することが推奨されます。 必要な値は一般的にテーマに既に定義されているため、これらの目的でテーマを利用することが推奨されます。 必要な値は一般的にテーマに既に定義されているため、これらの目的でテーマを利用することが推奨されます。
-#### Colors
+#### カラー
-Refrain from introducing new colors; instead, use the existing palette from the theme. Should there be a situation where the palette does not align, please leave a comment so that the team can rectify it.
+新しい色を追加するのではなく、テーマから既存のパレットを使用してください。 パレットが適合しない場合には、コメントを残してチームがそれを修正できるようにしてください。 パレットが適合しない場合には、コメントを残してチームがそれを修正できるようにしてください。 パレットが適合しない場合には、コメントを残してチームがそれを修正できるようにしてください。
```tsx
// ❌ Bad, directly specifies style values without utilizing the theme
@@ -258,9 +258,9 @@ const StyledButton = styled.button`
`;
```
-## Enforcing No-Type Imports
+## タイプ無しのインポートの強制
-Avoid type imports. To enforce this standard, an ESLint rule checks for and reports any type imports. This helps maintain consistency and readability in the TypeScript code.
+タイプインポートを避けてください。 タイプインポートを避けてください。 この標準を強制するために、ESLintルールがどのタイプのインポートもチェックして報告します。 これにより、TypeScriptコードの一貫性と可読性が維持されます。 これにより、TypeScriptコードの一貫性と可読性が維持されます。
```tsx
// ❌ Bad
@@ -273,18 +273,18 @@ import type { Meta, StoryObj } from '@storybook/react';
import { Meta, StoryObj } from '@storybook/react';
```
-### Why No-Type Imports
+### なぜタイプなしインポートなのか
-* **Consistency**: By avoiding type imports and using a single approach for both type and value imports, the codebase remains consistent in its module import style.
+* **一貫性**: 型インポートを避け、型と値の両方に単一のアプローチを使用することで、モジュールインポートスタイルの一貫性が保たれます。
-* **Readability**: No-type imports improve code readability by making it clear when you're importing values or types. This reduces ambiguity and makes it easier to understand the purpose of imported symbols.
+* **可読性**: 型専用インポートは、値をインポートしているのか型をインポートしているのかを明確にすることで、コードの可読性を高めます。 これにより曖昧さが減り、インポートされたシンボルの目的を理解しやすくなります。
-* **Maintainability**: It enhances codebase maintainability because developers can identify and locate type-only imports when reviewing or modifying code.
+* **維持性**: コードベースの維持性を向上させます。開発者がコードを確認/変更する際に、タイプのみのインポートを特定して見つけることができるからです。
-### ESLint Rule
+### ESLintルール
-An ESLint rule, `@typescript-eslint/consistent-type-imports`, enforces the no-type import standard. This rule will generate errors or warnings for any type import violations.
+ESLint のルール `@typescript-eslint/consistent-type-imports` は、型専用インポートの標準を強制します。 このルールは、タイプインポート違反のエラーや警告を生成します。
-Please note that this rule specifically addresses rare edge cases where unintentional type imports occur. 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). In most situations, you should not need to use type-only imports.
+このルールは、意図せず型をインポートしてしまう稀なエッジケースに特化して対処することに留意してください。 TypeScript自体、[TypeScript 3.8 リリースノート](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-8.html)でこのプラクティスを避けています。 ほとんどの状況で、タイプのみのインポートを使用する必要はありません。 ほとんどの状況で、タイプのみのインポートを使用する必要はありません。 ほとんどの状況で、タイプのみのインポートを使用する必要はありません。
-To ensure your code complies with this rule, make sure to run ESLint as part of your development workflow.
+コードがこのルールに準拠していることを確実にするため、開発ワークフローの一環として ESLint を実行してください。
diff --git a/packages/twenty-docs/l/ja/developers/contribute/capabilities/frontend-development/work-with-figma.mdx b/packages/twenty-docs/l/ja/developers/contribute/capabilities/frontend-development/work-with-figma.mdx
index 6cffcc405e..a91dc197c4 100644
--- a/packages/twenty-docs/l/ja/developers/contribute/capabilities/frontend-development/work-with-figma.mdx
+++ b/packages/twenty-docs/l/ja/developers/contribute/capabilities/frontend-development/work-with-figma.mdx
@@ -1,59 +1,136 @@
---
-title: Work with Figma
-info: Learn how you can collaborate with Twenty's Figma
+title: Figma で作業する
+info: Twenty の Figma を使用した共同作業方法を学ぶ
---
-Figma is a collaborative interface design tool that aids in bridging the communication barrier between designers and developers.
-This guide explains how you can collaborate with Figma.
+Figma は、デザイナーと開発者の間のコミュニケーションの壁を埋めるのを助ける協働インターフェース設計ツールです。
+このガイドは、Figma を使って共同作業する方法を説明します。
+このガイドは、Figma を使って共同作業する方法を説明します。
+このガイドは、Figma を使って共同作業する方法を説明します。
+このガイドは、Figma を使って共同作業する方法を説明します。
+このガイドは、Figma を使って共同作業する方法を説明します。
+このガイドは、Figma を使って共同作業する方法を説明します。
+このガイドは、Figma を使って共同作業する方法を説明します。
+このガイドは、Figma を使って共同作業する方法を説明します。
+このガイドは、Figma を使って共同作業する方法を説明します。
+このガイドは、Figma を使って共同作業する方法を説明します。
+このガイドは、Figma を使って共同作業する方法を説明します。
+このガイドは、Figma を使って共同作業する方法を説明します。
+このガイドは、Figma を使って共同作業する方法を説明します。
+このガイドは、Figma を使って共同作業する方法を説明します。
+このガイドは、Figma を使って共同作業する方法を説明します。
+このガイドは、Figma を使って共同作業する方法を説明します。
+このガイドは、Figma を使って共同作業する方法を説明します。
+このガイドは、Figma を使って共同作業する方法を説明します。
+このガイドは、Figma を使って共同作業する方法を説明します。
+このガイドは、Figma を使って共同作業する方法を説明します。
+このガイドは、Figma を使って共同作業する方法を説明します。
+このガイドは、Figma を使って共同作業する方法を説明します。
-## Access
+## アクセス
-1. **Access the shared link:** You can access the project's Figma file [here](https://www.figma.com/file/xt8O9mFeLl46C5InWwoMrN/Twenty).
-2. **Sign in:** If you're not already signed in, Figma will prompt you to do so.
- Key features are only available to logged-in users, such as the developer mode and the ability to select a dedicated frame.
+1. **共有リンクにアクセスする:** プロジェクトの Figma ファイルは [ここ](https://www.figma.com/file/xt8O9mFeLl46C5InWwoMrN/Twenty) からアクセスできます。
+2. **サインイン:** まだサインインしていない場合、Figma はサインインを促します。
+ 開発者モードや専用のフレーム選択など、キー機能はサインインしたユーザーのみが利用できます。
- You will not be able to collaborate effectively without an account.
+ アカウントがないと効果的に協力することはできません。
-## Figma structure
+## Figma 構造
-On the left sidebar, you can access the different pages of Twenty's Figma. This is how they're organized:
+左側のサイドバーで、Twenty の Figma の異なるページにアクセスできます。 それらは次のように整理されています: それらは次のように整理されています: それらは次のように整理されています: それらは次のように整理されています: それらは次のように整理されています:
-* **Components page:** This is the first page. The designer uses it to create and organize the reusable design elements used throughout the design file. For example, buttons, icons, symbols, or any other reusable components. It serves to maintain consistency across the design.
-* **Main page:** The second page is the main page, which shows the complete user interface of the project. You can press ***Play*** to use the full app prototype.
-* **Features pages:** The other pages are typically dedicated to features in progress. They contain the design of specific features or modules of the application or website. They are typically still in progress.
+* **コンポーネントページ:** これは最初のページです。 デザイナーはこれを使用して、デザインファイル全体で使用される再利用可能なデザイン要素を作成および整理します。 例えば、ボタン、アイコン、シンボル、またはその他の再利用可能なコンポーネントとして使用されます。 これにより、デザイン全体で一貫性を保つことができます。
+* **メインページ:** 2 番目のページはメインページで、プロジェクトの完全なユーザーインターフェースを示しています。 ***再生*** を押すことで、アプリプロトタイプを完全に使用できます。 **メインページ:** 2 番目のページはメインページで、プロジェクトの完全なユーザーインターフェースを示しています。 ***再生*** を押すことで、アプリプロトタイプを完全に使用できます。 ***再生*** を押すことで、アプリプロトタイプを完全に使用できます。
+* **特徴ページ:** その他のページは、通常、進行中の機能に専念しています。 それらはアプリケーションまたはウェブサイトの特定の機能またはモジュールのデザインを含みます。 通常、まだ進行中です。 それらはアプリケーションまたはウェブサイトの特定の機能またはモジュールのデザインを含みます。 通常、まだ進行中です。 それらはアプリケーションまたはウェブサイトの特定の機能またはモジュールのデザインを含みます。 通常、まだ進行中です。 それらはアプリケーションまたはウェブサイトの特定の機能またはモジュールのデザインを含みます。 通常、まだ進行中です。
-## Useful Tips
+## 役立つヒント
-With read-only access, you can't edit the design, but you can access all features that will be useful to convert the designs into code.
+閲覧専用アクセスでは、デザインの編集はできませんが、デザインをコードに変換する際に役立つすべての機能にアクセスできます。
-### Use the Dev mode
+### 開発者モードを使用する
-Figma's Dev Mode enhances developers' productivity by providing easy design navigation, effective asset management, efficient communication tools, toolbox integrations, quick code snippets, and key layer information, bridging the gap between design and development. You can learn more about Dev Mode [here](https://www.figma.com/dev-mode/).
+Figma の Dev モードは、デザインナビゲーションの容易化、効果的なアセット管理、効率的な通信ツール、ツールボックス統合、迅速なコードスニペット、主要レイヤー情報の提供により、開発者の生産性を向上させ、デザインと開発の間のギャップを埋めます。 Dev Mode についての詳細は [こちら](https://www.figma.com/dev-mode/) で確認できます。
-Switch to the "Developer" mode in the right part of the toolbar to see design specs, copy CSS, and access assets.
+ツールバーの右部分で「開発者」モードに切り替えることで、デザインスペックの確認、CSS のコピー、アセットへのアクセスが可能です。
-### Use the Prototype
+### プロトタイプを使用する
-Click on any element on the canvas and press the “Play” button at the top right edge of the interface to access the prototype view. Prototype mode allows you to interact with the design as if it were the final product. It demonstrates the flow between screens and how interface elements like buttons, links, or menus behave when interacted with.
+キャンバス上の任意の要素をクリックし、インターフェースの右上隅にある「再生」ボタンを押してプロトタイプビューにアクセスします。 プロトタイプモードでは、あたかも最終製品であるかのようにデザインに触れることができます。 画面間のフローや、ボタン、リンク、メニューなどのインターフェース要素が操作時にどのように動作するかを示します。
-1. **Understanding transitions and animations:** In the Prototype mode, you can view any transitions or animations added by a designer between screens or UI elements, providing clear visual instructions to developers on the intended behavior and style.
-2. **Implementation clarification:** A prototype can also help reduce ambiguities. Developers can interact with it to gain a better understanding of the functionality or appearance of particular elements.
+1. **トランジションとアニメーションの理解:** プロトタイプモードでは、デザイナーによって画面や UI 要素間に追加されたトランジションやアニメーションを表示でき、開発者に意図された動作やスタイルを視覚的に明確に指示します。
+2. **実装の明確化:** プロトタイプは曖昧さを減らすのにも役立ちます。 開発者はそれを操作することで、特定の要素の機能や外観をより良く理解することができます。
-For more comprehensive details and guidance on learning the Figma platform, you can visit the official [Figma Documentation](https://help.figma.com/hc/en-us).
+Figma プラットフォームの学習に関するより包括的な詳細とガイダンスについては、公式の [Figma ドキュメント](https://help.figma.com/hc/en-us) を訪れることができます。
-### Measure distances
+### 距離を測定する
-Select an element, hold `Option` key (Mac) or `Alt` key (Windows), then hover over another element to see the distance between them.
+要素を選択し、`Option` キー(Mac)または `Alt` キー(Windows)を押したまま、別の要素の上にカーソルを合わせると、それらの間の距離が表示されます。
-### Figma extension for VSCode (Recommended)
+### VSCode 用 Figma 拡張機能(推奨)
-[Figma for VS Code](https://marketplace.visualstudio.com/items?itemName=figma.figma-vscode-extension)
-lets you navigate and inspect design files, collaborate with designers, track changes, and speed up implementation - all without leaving your text editor.
-It's part of our recommended extensions.
+[Figma for VS Code](https://marketplace.visualstudio.com/items?itemName=figma.figma-vscode-extension) を使用すると、デザインファイルのナビゲート、検査、デザイナーとのコラボレーション、変更の追跡、実装の促進ができます - すべてをテキストエディターから離れることなく行えます。
+これは推奨拡張機能の一部です。
+これは推奨拡張機能の一部です。
+これは推奨拡張機能の一部です。
+これは推奨拡張機能の一部です。
+これは推奨拡張機能の一部です。
+これは推奨拡張機能の一部です。
+これは推奨拡張機能の一部です。
+これは推奨拡張機能の一部です。
+これは推奨拡張機能の一部です。
+これは推奨拡張機能の一部です。
+これは推奨拡張機能の一部です。
+これは推奨拡張機能の一部です。
+これは推奨拡張機能の一部です。
+これは推奨拡張機能の一部です。
+これは推奨拡張機能の一部です。
+これは推奨拡張機能の一部です。
+これは推奨拡張機能の一部です。
+これは推奨拡張機能の一部です。
+これは推奨拡張機能の一部です。
+これは推奨拡張機能の一部です。
+これは推奨拡張機能の一部です。
+これは推奨拡張機能の一部です。
+これは推奨拡張機能の一部です。
+これは推奨拡張機能の一部です。
+これは推奨拡張機能の一部です。
+これは推奨拡張機能の一部です。
+これは推奨拡張機能の一部です。
+これは推奨拡張機能の一部です。
+これは推奨拡張機能の一部です。
+これは推奨拡張機能の一部です。
+これは推奨拡張機能の一部です。
+これは推奨拡張機能の一部です。
+これは推奨拡張機能の一部です。
+これは推奨拡張機能の一部です。
+これは推奨拡張機能の一部です。
+これは推奨拡張機能の一部です。
+これは推奨拡張機能の一部です。
+これは推奨拡張機能の一部です。
+これは推奨拡張機能の一部です。
+これは推奨拡張機能の一部です。
+これは推奨拡張機能の一部です。
+これは推奨拡張機能の一部です。
+これは推奨拡張機能の一部です。
+これは推奨拡張機能の一部です。
+これは推奨拡張機能の一部です。
+これは推奨拡張機能の一部です。
+これは推奨拡張機能の一部です。
+これは推奨拡張機能の一部です。
+これは推奨拡張機能の一部です。
+これは推奨拡張機能の一部です。
+これは推奨拡張機能の一部です。
+これは推奨拡張機能の一部です。
+これは推奨拡張機能の一部です。
+これは推奨拡張機能の一部です。
+これは推奨拡張機能の一部です。
+これは推奨拡張機能の一部です。
+これは推奨拡張機能の一部です。
+これは推奨拡張機能の一部です。
-## Collaboration
+## コラボレーション
-1. **Using Comments:** You are welcome to use the comment feature by clicking on the bubble icon in the left part of the toolbar.
-2. **Cursor chat:** A nice feature of Figma is the Cursor chat. Just press `;` on Mac and `/` on Windows to send a message if you see someone else using Figma as the same time as you.
+1. **コメントの使用:** ツールバーの左側にあるバブルアイコンをクリックしてコメント機能を使用できます。
+2. **カーソルチャット:** Figma の魅力的な機能のひとつにカーソルチャットがあります。 他の Figma を同時に使用している誰かを見た場合、`/` キー(Windows)または `;` キー(Mac)を押してメッセージを送信します。 **カーソルチャット:** Figma の魅力的な機能のひとつにカーソルチャットがあります。 他の Figma を同時に使用している誰かを見た場合、`/` キー(Windows)または `;` キー(Mac)を押してメッセージを送信します。 他の Figma を同時に使用している誰かを見た場合、`/` キー(Windows)または `;` キー(Mac)を押してメッセージを送信します。 **カーソルチャット:** Figma の魅力的な機能のひとつにカーソルチャットがあります。 他の Figma を同時に使用している誰かを見た場合、`/` キー(Windows)または `;` キー(Mac)を押してメッセージを送信します。 **カーソルチャット:** Figma の魅力的な機能のひとつにカーソルチャットがあります。 他の Figma を同時に使用している誰かを見た場合、`/` キー(Windows)または `;` キー(Mac)を押してメッセージを送信します。 他の Figma を同時に使用している誰かを見た場合、`/` キー(Windows)または `;` キー(Mac)を押してメッセージを送信します。 **カーソルチャット:** Figma の魅力的な機能のひとつにカーソルチャットがあります。 他の Figma を同時に使用している誰かを見た場合、`/` キー(Windows)または `;` キー(Mac)を押してメッセージを送信します。 **カーソルチャット:** Figma の魅力的な機能のひとつにカーソルチャットがあります。 他の Figma を同時に使用している誰かを見た場合、`/` キー(Windows)または `;` キー(Mac)を押してメッセージを送信します。 他の Figma を同時に使用している誰かを見た場合、`/` キー(Windows)または `;` キー(Mac)を押してメッセージを送信します。 **カーソルチャット:** Figma の魅力的な機能のひとつにカーソルチャットがあります。 他の Figma を同時に使用している誰かを見た場合、`/` キー(Windows)または `;` キー(Mac)を押してメッセージを送信します。 他の Figma を同時に使用している誰かを見た場合、`/` キー(Windows)または `;` キー(Mac)を押してメッセージを送信します。
diff --git a/packages/twenty-docs/l/ja/developers/contribute/capabilities/local-setup.mdx b/packages/twenty-docs/l/ja/developers/contribute/capabilities/local-setup.mdx
index c5c2f04ceb..53240e2fd1 100644
--- a/packages/twenty-docs/l/ja/developers/contribute/capabilities/local-setup.mdx
+++ b/packages/twenty-docs/l/ja/developers/contribute/capabilities/local-setup.mdx
@@ -1,13 +1,13 @@
---
-title: Local Setup
-description: The guide for contributors (or curious developers) who want to run Twenty locally.
+title: ローカルセットアップ
+description: 寄稿者(または好奇心旺盛な開発者)のためのガイドで、ローカルにTwentyを実行したい人向けです。
---
-## Prerequisites
+## 前提条件
-
- Before you can install and use Twenty, make sure you install the following on your computer:
+
+ Twentyをインストールして使用する前に、以下をコンピュータにインストールしてください。
* [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)
* [Node v24.5.0](https://nodejs.org/en/download)
@@ -15,25 +15,31 @@ description: The guide for contributors (or curious developers) who want to run
* [nvm](https://github.com/nvm-sh/nvm/blob/master/README.md)
- `npm` won't work, you should use `yarn` instead. Yarn is now shipped with Node.js, so you don't need to install it separately.
- You only have to run `corepack enable` to enable Yarn if you haven't done it yet.
+ `npm`は使えません。代わりに`yarn`を使用してください。
+ `npm`は使えません。代わりに`yarn`を使用してください。 Yarnは今Node.jsに同梱されているので、別途インストールする必要はありません。
+ Yarnを有効にするには、まだしていない場合は`corepack enable`を実行するだけです。
+ `npm`は使えません。代わりに`yarn`を使用してください。 Yarnは今Node.jsに同梱されているので、別途インストールする必要はありません。
+ Yarnを有効にするには、まだしていない場合は`corepack enable`を実行するだけです。Yarnを有効にするには、まだしていない場合は`corepack enable`を実行するだけです。
-
- 1. Install WSL
- Open PowerShell as Administrator and run:
+
+ 1. WSLをインストール
+ 管理者としてPowerShellを開き、次のコマンドを実行します。
```powershell
wsl --install
```
- You should now see a prompt to restart your computer. If not, restart it manually.
+ コンピュータを再起動するプロンプトが表示されるはずです。 表示されなければ、手動で再起動してください。 表示されなければ、手動で再起動してください。 表示されなければ、手動で再起動してください。
- Upon restart, a powershell window will open and install Ubuntu. This may take up some time.
- You'll see a prompt to create a username and password for your Ubuntu installation.
+ 再起動後、PowerShellウィンドウが開き、Ubuntuをインストールします。 これには少し時間がかかるかもしれません。
+ 再起動後、PowerShellウィンドウが開き、Ubuntuをインストールします。 これには少し時間がかかるかもしれません。
+ Ubuntuインストールのためにユーザー名とパスワードを設定するプロンプトが表示されます。 これには少し時間がかかるかもしれません。
+ 再起動後、PowerShellウィンドウが開き、Ubuntuをインストールします。 これには少し時間がかかるかもしれません。
+ Ubuntuインストールのためにユーザー名とパスワードを設定するプロンプトが表示されます。
- 2. Install and configure git
+ 2. gitをインストールして設定する
```bash
sudo apt-get install git
@@ -43,10 +49,11 @@ description: The guide for contributors (or curious developers) who want to run
git config --global user.email "youremail@domain.com"
```
- 3. Install nvm, node.js and yarn
+ 3. nvm、node.js、yarnをインストールする
- Use `nvm` to install the correct `node` version. The `.nvmrc` ensures all contributors use the same version.
+ `nvm`を使用して正しい`node`バージョンをインストールします。 `.nvmrc`は、すべての寄稿者が同じバージョンを使用することを保証します。
+ `.nvmrc`は、すべての寄稿者が同じバージョンを使用することを保証します。
```bash
@@ -55,7 +62,7 @@ description: The guide for contributors (or curious developers) who want to run
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | bash
```
- Close and reopen your terminal to use nvm. Then run the following commands.
+ nvmを使用できるようにするには、ターミナルを閉じて再度開いてください。 次のコマンドを実行します。 次のコマンドを実行します。 次のコマンドを実行します。
```bash
@@ -70,13 +77,15 @@ description: The guide for contributors (or curious developers) who want to run
---
-## Step 1: Git Clone
+## ステップ1:Gitクローン
-In your terminal, run the following command.
+ターミナルで次のコマンドを実行します。
-
- If you haven't already set up SSH keys, you can learn how to do so [here](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/about-ssh).
+
+ SSHキーの設定をまだ行っていない場合は、[こちら](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/about-ssh)で学べます。```bash
+ git clone git@github.com:twentyhq/twenty.git
+ ```
```bash
git clone git@github.com:twentyhq/twenty.git
@@ -90,36 +99,36 @@ In your terminal, run the following command.
-## Step 2: Position yourself at the root
+## ステップ 2: ルートディレクトリに移動する
```bash
cd twenty
```
-You should run all commands in the following steps from the root of the project.
+プロジェクトのルートで次のステップのすべてのコマンドを実行する必要があります。
-## Step 3: Set up a PostgreSQL Database
+## ステップ3:PostgreSQLデータベースをセットアップします
- **Option 1 (preferred):** To provision your database locally:
- Use the following link to install Postgresql on your Linux machine: [Postgresql Installation](https://www.postgresql.org/download/linux/)
+ **オプション1(推奨):** データベースをローカルにプロビジョニングするには:
+ LinuxマシンにPostgresqlをインストールするには、次のリンクを使用してください:[Postgresqlインストール](https://www.postgresql.org/download/linux/)
```bash
psql postgres -c "CREATE DATABASE \"default\";" -c "CREATE DATABASE test;"
```
- Note: You might need to add `sudo -u postgres` to the command before `psql` to avoid permission errors.
+ 注意:`psql`の前に`sudo -u postgres`を追加して、パーミッションエラーを避ける必要があるかもしれません。
- **Option 2:** If you have docker installed:
+ **オプション2:** dockerをインストールしている場合:
```bash
- make postgres-on-docker
+ make -C packages/twenty-docker postgres-on-docker
```
- **Option 1 (preferred):** To provision your database locally with `brew`:
+ **オプション1(推奨):** `brew`でローカルにデータベースをプロビジョニングするには:
```bash
brew install postgresql@16
@@ -128,16 +137,14 @@ You should run all commands in the following steps from the root of the project.
psql postgres -c "CREATE DATABASE \"default\";" -c "CREATE DATABASE test;"
```
- You can verify if the PostgreSQL server is running by executing:
+ PostgreSQLサーバーが稼働しているかどうかを確認するには、以下を実行してください。
```bash
brew services list
```
- The installer might not create the `postgres` user by default when installing
- via Homebrew on MacOS. Instead, it creates a PostgreSQL role that matches your macOS
- username (e.g., "john").
- To check and create the `postgres` user if necessary, follow these steps:
+ インストーラーは、デフォルトでHomebrew経由でMacOSにインストールする際に`postgres`ユーザーを作成しないかもしれません。 代わりに、macOSのユーザー名(例:「john」)と一致するPostgreSQLロールを作成します。
+ 必要に応じて、`postgres`ユーザーを確認して作成するには、次の手順を実行してください。
```bash
# Connect to PostgreSQL
@@ -146,14 +153,14 @@ You should run all commands in the following steps from the root of the project.
psql -U $(whoami) -d postgres
```
- Once at the psql prompt (postgres=#), run:
+ psqlプロンプト(postgres=#)で次を実行します。
```bash
# List existing PostgreSQL roles
\du
```
- You'll see output similar to:
+ 以下のような出力が表示されます。
```bash
Role name | Attributes | Member of
@@ -161,98 +168,98 @@ You should run all commands in the following steps from the root of the project.
john | Superuser | {}
```
- If you do not see a `postgres` role listed, proceed to the next step.
- Create the `postgres` role manually:
+ `postgres`ロールがリストに表示されない場合は、次のステップに進んでください。
+ `postgres`ロールを手動で作成します。
```bash
CREATE ROLE postgres WITH SUPERUSER LOGIN;
```
- This creates a superuser role named `postgres` with login access.
+ これにより、ログイン権限を持つ `postgres` というスーパーユーザーロールが作成されます。
- **Option 2:** If you have docker installed:
+ **オプション2:** dockerをインストールしている場合:
```bash
- make postgres-on-docker
+ make -C packages/twenty-docker postgres-on-docker
```
-
- All the following steps are to be run in the WSL terminal (within your virtual machine)
+
+ 以下のすべてのステップは、WSLターミナル(仮想マシン内)で実行されます。
- **Option 1:** To provision your Postgresql locally:
- Use the following link to install Postgresql on your Linux virtual machine: [Postgresql Installation](https://www.postgresql.org/download/linux/)
+ **オプション1:** PostgreSQLをローカルでプロビジョニングするには:
+ Linux仮想マシンにPostgresqlをインストールするには、次のリンクを使用してください:[Postgresqlインストール](https://www.postgresql.org/download/linux/)
```bash
psql postgres -c "CREATE DATABASE \"default\";" -c "CREATE DATABASE test;"
```
- Note: You might need to add `sudo -u postgres` to the command before `psql` to avoid permission errors.
+ 注意:`psql`の前に`sudo -u postgres`を追加して、パーミッションエラーを避ける必要があるかもしれません。
- **Option 2:** If you have docker installed:
- Running Docker on WSL adds an extra layer of complexity.
- Only use this option if you are comfortable with the extra steps involved, including turning on [Docker Desktop WSL2](https://docs.docker.com/desktop/wsl).
+ **オプション2:** dockerをインストールしている場合:
+ WSLでDockerを実行すると、手順が少し複雑になります。
+ 追加の手順を含む[Docker Desktop WSL2](https://docs.docker.com/desktop/wsl)の有効化などの追加の手順に精通している場合にのみこのオプションを使用してください。
```bash
- make postgres-on-docker
+ make -C packages/twenty-docker postgres-on-docker
```
-You can now access the database at [localhost:5432](localhost:5432), with user `postgres` and password `postgres` .
+データベースに[localhost:5432](localhost:5432)でアクセスできるようになりました。ユーザーは`postgres`、パスワードは`postgres`です。
-## Step 4: Set up a Redis Database (cache)
+## ステップ4:Redisデータベース(キャッシュ)をセットアップ
-Twenty requires a redis cache to provide the best performance
+Twentyは、最良のパフォーマンスを提供するためにredisキャッシュを必要とします。
- **Option 1:** To provision your Redis locally:
- Use the following link to install Redis on your Linux machine: [Redis Installation](https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/install-redis-on-linux/)
+ **オプション1:** Redisをローカルでプロビジョニングするには:
+ LinuxマシンにRedisをインストールするには、次のリンクを使用してください:[Redisインストール](https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/install-redis-on-linux/)
- **Option 2:** If you have docker installed:
+ **オプション2:** dockerをインストールしている場合:
```bash
- make redis-on-docker
+ make -C packages/twenty-docker redis-on-docker
```
- **Option 1 (preferred):** To provision your Redis locally with `brew`:
+ **オプション1(推奨):** `brew`でredisをローカルプロビジョニングするには:
```bash
brew install redis
```
- Start your redis server:
+ Redisサーバーを開始します:
`brew services start redis`
- **Option 2:** If you have docker installed:
+ **オプション2:** dockerをインストールしている場合:
```bash
- make redis-on-docker
+ make -C packages/twenty-docker redis-on-docker
```
-
- **Option 1:** To provision your Redis locally:
- Use the following link to install Redis on your Linux virtual machine: [Redis Installation](https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/install-redis-on-linux/)
+
+ **オプション1:** Redisをローカルでプロビジョニングするには:
+ Linux仮想マシンにRedisをインストールするには、次のリンクを使用してください:[Redisインストール](https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/install-redis-on-linux/)
- **Option 2:** If you have docker installed:
+ **オプション2:** dockerをインストールしている場合:
```bash
- make redis-on-docker
+ make -C packages/twenty-docker redis-on-docker
```
-If you need a Client GUI, we recommend [redis insight](https://redis.io/insight/) (free version available)
+クライアントGUIが必要な場合は、[redis insight](https://redis.io/insight/)(無料版利用可能)をお勧めします。
-## Step 5: Setup environment variables
+## ステップ5:環境変数をセットアップします
-Use environment variables or `.env` files to configure your project. More info [here](/l/ja/developers/self-host/capabilities/setup)
+環境変数や`.env`ファイルを使ってプロジェクトを設定します。 詳細は[こちら](https://docs.twenty.com/l/ja/developers/self-hosting/setup)。 詳細は[こちら](/l/ja/developers/self-host/capabilities/setup)。
-Copy the `.env.example` files in `/front` and `/server`:
+`/front`と`/server`内の`.env.example`ファイルをコピーします:
```bash
cp ./packages/twenty-front/.env.example ./packages/twenty-front/.env
@@ -260,48 +267,48 @@ 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/ja/developers/self-host/capabilities/setup#multi-workspace-mode) for details.
+ **マルチワークスペースモード:** デフォルトでは、Twenty は単一ワークスペースモードで動作し、ワークスペースは 1 つだけ作成できます。 マルチワークスペース対応を有効にするには(サブドメインベースの機能のテストに有用)、サーバーの `.env` ファイルで `IS_MULTIWORKSPACE_ENABLED=true` を設定してください。 詳細は[マルチワークスペースモード](/l/ja/developers/self-host/capabilities/setup#multi-workspace-mode)を参照してください。
-## Step 6: Installing dependencies
+## ステップ6:依存関係をインストールします
-To build Twenty server and seed some data into your database, run the following command:
+Twentyサーバーを構築し、データベースにデータをシードするには、以下のコマンドを実行します:
```bash
yarn
```
-Note that `npm` or `pnpm` won't work
+`npm`または`pnpm`は使えません
-## Step 7: Running the project
+## ステップ7:プロジェクトを実行する
- Depending on your Linux distribution, Redis server might be started automatically.
- If not, check the [Redis installation guide](https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/) for your distro.
+ Linuxディストリビューションによっては、Redisサーバーが自動的に開始されるかもしれません。
+ そうでない場合は、[Redisインストールガイド](https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/)を参照し、お使いのディストリビューションに合わせて確認してください。
- Redis should already be running. If not, run:
+ Redisはすでに稼働しているはずです。 稼働していなかった場合は、以下を実行してください:
```bash
brew services start redis
```
-
- Depending on your Linux distribution, Redis server might be started automatically.
- If not, check the [Redis installation guide](https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/) for your distro.
+
+ Linuxディストリビューションによっては、Redisサーバーが自動的に開始されるかもしれません。
+ そうでない場合は、[Redisインストールガイド](https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/)を参照し、お使いのディストリビューションに合わせて確認してください。
-Set up your database with the following command:
+次のコマンドでデータベースをセットアップします:
```bash
npx nx database:reset twenty-server
```
-Start the server, the worker and the frontend services:
+サーバー、ワーカー、フロントエンドサービスを開始します:
```bash
npx nx start twenty-server
@@ -309,25 +316,25 @@ npx nx worker twenty-server
npx nx start twenty-front
```
-Alternatively, you can start all services at once:
+または、すべてのサービスを一度に開始することができます:
```bash
npx nx start
```
-## Step 8: Use Twenty
+## ステップ 8: Twentyを使用する
-**Frontend**
+**フロントエンド**
-Twenty's frontend will be running at [http://localhost:3001](http://localhost:3001).
-You can log in using the default demo account: `tim@apple.dev` (password: `tim@apple.dev`)
+Twentyのフロントエンドは[http://localhost:3001](http://localhost:3001)で稼働しています。
+デフォルトのデモアカウントを使用してログインできます: `tim@apple.dev` (パスワード: `tim@apple.dev`)
-**Backend**
+**バックエンド**
-* Twenty's server will be up and running at [http://localhost:3000](http://localhost:3000)
-* The GraphQL API can be accessed at [http://localhost:3000/graphql](http://localhost:3000/graphql)
-* The REST API can be reached at [http://localhost:3000/rest](http://localhost:3000/rest)
+* Twentyのサーバーは[http://localhost:3000](http://localhost:3000)で稼働しています
+* GraphQL API は [http://localhost:3000/graphql](http://localhost:3000/graphql) でアクセスできます
+* REST API は [http://localhost:3000/rest](http://localhost:3000/rest) でアクセスできます
-## Troubleshooting
+## トラブルシューティング
-If you encounter any problem, check [Troubleshooting](/l/ja/developers/self-host/capabilities/troubleshooting) for solutions.
+問題が発生した場合は、[トラブルシューティング](/l/ja/developers/self-host/capabilities/troubleshooting)を確認して解決策を見つけてください。
diff --git a/packages/twenty-docs/l/ja/developers/contribute/contribute.mdx b/packages/twenty-docs/l/ja/developers/contribute/contribute.mdx
index dbeb7d1517..9b70356d08 100644
--- a/packages/twenty-docs/l/ja/developers/contribute/contribute.mdx
+++ b/packages/twenty-docs/l/ja/developers/contribute/contribute.mdx
@@ -1,32 +1,32 @@
---
-title: Contribute
-description: Contribute to Twenty's open-source development.
+title: 貢献
+description: Twentyのオープンソース開発に貢献しましょう。
---
-## Overview
+## 概要
-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ベースのUIに取り組む
+* **バックエンド開発**: NestJSサーバーに貢献する
-## Getting Started
+## 始めに
-
- Report issues or request features
+
+ 問題を報告する、または機能を要望する
-
- Contribute to the UI
+
+ UIに貢献する
diff --git a/packages/twenty-docs/l/ja/developers/extend/capabilities/apis.mdx b/packages/twenty-docs/l/ja/developers/extend/capabilities/apis.mdx
index 0b2c8b826e..3c6a989ae5 100644
--- a/packages/twenty-docs/l/ja/developers/extend/capabilities/apis.mdx
+++ b/packages/twenty-docs/l/ja/developers/extend/capabilities/apis.mdx
@@ -1,147 +1,147 @@
---
-title: APIs
-description: Query and modify your CRM data programmatically using REST or GraphQL.
+title: API
+description: REST または GraphQL を使用して、プログラムから CRM データをクエリおよび変更します。
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-Twenty was built to be developer-friendly, offering powerful APIs that adapt to your custom data model. We provide four distinct API types to meet different integration needs.
+Twentyは開発者に優しい設計で、強力なAPIを提供し、カスタムデータモデルに適応します。 異なる統合ニーズに対応する4つの異なるAPIタイプを提供します。 異なる統合ニーズに対応する4つの異なるAPIタイプを提供します。 異なる統合ニーズに対応する4つの異なるAPIタイプを提供します。
-## Developer-First Approach
+## 開発者優先アプローチ
-Twenty generates APIs specifically for your data model:
+Twenty は、お使いのデータモデルに特化した API を生成します:
-* **No long IDs required**: Use your object and field names directly in endpoints
-* **Standard and custom objects treated equally**: Your custom objects get the same API treatment as built-in ones
-* **Dedicated endpoints**: Each object and field gets its own API endpoint
-* **Custom documentation**: Generated specifically for your workspace's data model
+* **長いIDが不要**:オブジェクトとフィールド名をエンドポイントに直接使用
+* **標準とカスタムオブジェクトを同等に扱う**:カスタムオブジェクトも組み込みのものと同じ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 キー作成後、**Settings → API & Webhooks** でパーソナライズされた API ドキュメントを利用できます。 Twenty はカスタムデータモデルに合致する API を生成するため、ドキュメントはお使いのワークスペース専用です。
-## The Two API Types
+## 2 つの API タイプ
-### Core API
+### コアAPI
-Accessed on `/rest/` or `/graphql/`
+`/rest/` または `/graphql/` でアクセスできます。
-Work with your actual **records** (the data):
+実際の **レコード**(データ)を扱います:
-* Create, read, update, delete People, Companies, Opportunities, etc.
-* Query and filter data
-* Manage record relationships
+* People、Companies、Opportunities などを作成・読み取り・更新・削除。
+* データのクエリとフィルター
+* レコードの関係管理
-### Metadata API
+### メタデータAPI
-Accessed on `/rest/metadata/` or `/metadata/`
+`/rest/metadata/` または `/metadata/` でアクセスできます。
-Manage your **workspace and data model**:
+**ワークスペースとデータモデル**を管理:
-* Create, modify, or delete objects and fields
-* Configure workspace settings
-* 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 の形式で利用可能です:
-| Format | Available Operations |
-| ----------- | ---------------------------------------------------------- |
-| **REST** | CRUD, batch operations, upserts |
-| **GraphQL** | Same + **batch upserts**, relationship queries in one call |
+| 形式 | 利用可能な操作 |
+| ----------- | ---------------------------------------- |
+| **REST** | CRUD、バッチ操作、アップサート |
+| **GraphQL** | 同様に、**バッチアップサート**、1 回の呼び出しでのリレーションシップクエリ |
-Choose based on your needs — both formats access the same data.
+ニーズに合わせて選択してください—どちらの形式でも同じデータにアクセスできます。
-## API Endpoints
+## APIエンドポイント
-| Environment | Base URL |
-| --------------- | ------------------------- |
-| **Cloud** | `https://api.twenty.com/` |
-| **Self-Hosted** | `https://{your-domain}/` |
+| 環境 | ベース URL |
+| ---------- | ------------------------- |
+| **クラウド** | `https://api.twenty.com/` |
+| **セルフホスト** | `https://{your-domain}/` |
-## Authentication
+## 認証
-Every API request requires an API key in the header:
+すべての API リクエストにはヘッダーに API キーが必要です:
```
Authorization: Bearer YOUR_API_KEY
```
-### Create an API Key
+### APIキーを作成
-1. Go to **Settings → APIs & Webhooks**
-2. Click **+ Create key**
-3. Configure:
- * **Name**: Descriptive name for the key
- * **Expiration Date**: When the key expires
-4. Click **Save**
-5. **Copy immediately** — the key is only shown once
+1. **Settings → APIs & Webhooks**に移動
+2. **+ Create key** をクリック
+3. 設定:
+ * **Name**: キーのわかりやすい名前
+ * **Expiration Date**: キーの有効期限
+4. **保存**をクリック
+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. Go to **Settings → Roles**
-2. Click on the role to assign
-3. Open the **Assignment** tab
-4. Under **API Keys**, click **+ Assign to API key**
-5. Select the API key
+1. **設定 → 役割** に移動
+2. 割り当てるロールをクリック
+3. **割り当て** タブを開く
+4. **API Keys** の下で、**+ Assign to API key** をクリック
+5. API キーを選択
-The key will inherit that role's permissions. See [Permissions](/l/ja/user-guide/permissions-access/capabilities/permissions) for details.
+キーはそのロールの権限を継承します。 詳細は[権限](/l/ja/user-guide/permissions-access/capabilities/permissions)を参照してください。
-### Manage API Keys
+### APIキーの管理
-**Regenerate**: Settings → APIs & Webhooks → Click key → **Regenerate**
+**Regenerate**: Settings → APIs & Webhooks → キーをクリック → **Regenerate**
-**Delete**: Settings → APIs & Webhooks → Click key → **Delete**
+**Delete**: Settings → APIs & Webhooks → キーをクリック → **Delete**
-## 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. Go to **Settings → APIs & Webhooks**
-2. Create an API key (required)
-3. Click on **REST API** or **GraphQL API** to open the playground
+1. **Settings → APIs & Webhooks**に移動
+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.
+プレイグラウンドはカスタムのオブジェクトとフィールドを反映するため、ドキュメントは常にお使いのワークスペースに対して正確です。
-## Batch Operations
+## バッチ操作
-Both REST and GraphQL support batch operations:
+REST と GraphQL の両方がバッチ操作をサポートしています:
-* **Batch size**: Up to 60 records per request
-* **Operations**: Create, update, delete multiple records
+* **バッチサイズ**:リクエストあたり最大60記録
+* **操作**: 複数のレコードの作成、更新、削除
-**GraphQL-only features:**
+**GraphQL のみの機能:**
-* **Batch Upsert**: Create or update in one call
-* Use plural object names (e.g., `CreateCompanies` instead of `CreateCompany`)
+* **バッチアップサート**: 1 回の呼び出しで作成または更新
+* 複数形のオブジェクト名を使用(例:`CreateCompany` ではなく `CreateCompanies`)
-## Rate Limits
+## API レートリミット
-API requests are throttled to ensure platform stability:
+プラットフォームの安定性を確保するため、API リクエストはレート制限されています:
-| Limit | Value |
-| -------------- | -------------------- |
-| **Requests** | 100 calls per minute |
-| **Batch size** | 60 records per call |
+| 制限 | 値 |
+| ---------- | ------------------- |
+| **リクエスト** | 1 分あたり 100 回の呼び出し |
+| **バッチサイズ** | 1 回の呼び出しあたり 60 レコード |
- Use batch operations to maximize throughput — process up to 60 records in a single API call instead of making individual requests.
+ バッチ操作を使用してスループットを最大化しましょう—個別のリクエストではなく、1 回の API 呼び出しで最大 60 レコードを処理できます。
diff --git a/packages/twenty-docs/l/ja/developers/extend/capabilities/apps.mdx b/packages/twenty-docs/l/ja/developers/extend/capabilities/apps.mdx
index dc528fa780..7cfdddba3a 100644
--- a/packages/twenty-docs/l/ja/developers/extend/capabilities/apps.mdx
+++ b/packages/twenty-docs/l/ja/developers/extend/capabilities/apps.mdx
@@ -1,81 +1,88 @@
---
-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 とは?
-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.
+Apps を使うと、Twenty のカスタマイズを**コードとして**構築・管理できます。 すべてを UI から設定する代わりに、データモデルやサーバーレス関数をコードで定義できます。これにより、構築と保守が高速になり、複数のワークスペースへの展開も容易になります。
-**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
+* カスタム UI レイアウトとコンポーネント
-## Prerequisites
+## 前提条件
-* 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
+# 新しいアプリのひな型を作成
npx create-twenty-app@latest my-twenty-app
cd my-twenty-app
-# Authenticate using your API key (you'll be prompted)
-yarn auth
+# yarn@4 を使用していない場合
+corepack enable
+yarn install
-# Start dev mode: automatically syncs local changes to your workspace
-yarn dev
+# API キーで認証(プロンプトが表示されます)
+yarn auth:login
+
+# 開発モードを開始:ローカルの変更がワークスペースに自動同期されます
+yarn app:dev
```
-From here you can:
+そこで次のことができます:
```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
+# 型付きの Twenty クライアントとワークスペースのエンティティ型を生成
+yarn app:generate
-# Run a one‑time sync (instead of watch mode)
-yarn sync
+# 1回限りの同期を実行(ウォッチモードの代わり)
+yarn app:sync
-# Watch your application's functions logs
-yarn logs
+# アプリケーションの関数のログを監視
+yarn function:logs
-# Uninstall the application from the current workspace
-yarn uninstall
+# 名前で関数を実行
+yarn function:execute -n my-function -p '{\"name\": \"test\"}'
-# Display commands' help
-yarn help
+# 現在のワークスペースからアプリケーションをアンインストール
+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).
+参考: [create-twenty-app](https://www.npmjs.com/package/create-twenty-app) および [twenty-sdk CLI](https://www.npmjs.com/package/twenty-sdk) の CLI リファレンスページをご覧ください。
-## 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 の設定を追加します
+* `twenty` CLI と連携する設定ファイルとスクリプトを作成します
+* デフォルトのアプリケーション設定とデフォルトの関数ロールを生成します
-A freshly scaffolded app looks like this:
+スキャフォルド直後のアプリは次のようになります:
```text filename="my-twenty-app/"
my-twenty-app/
@@ -85,79 +92,144 @@ my-twenty-app/
.nvmrc
.yarnrc.yml
.yarn/
- releases/
- yarn-4.9.2.cjs
install-state.gz
eslint.config.mjs
tsconfig.json
README.md
src/
- application.config.ts
- role.config.ts
- // your entities, actions, and other app files
+ app/
+ application.config.ts # Required - main application configuration
+ default-function.role.ts # Default role for serverless functions
+ // your entities (*.object.ts, *.function.ts, *.role.ts)
+ utils/ # Optional - handler implementations & utilities
```
-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/**: 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.config.ts`: Default function role used by your serverless functions. See “Default function role” below.
- * Future entities, actions/functions, and any supporting code you add.
+アプリケーションは **コンベンション優先(設定より規約)** のアプローチを採用し、エンティティはファイルのサフィックスで検出されます。 これにより、`src/app/` フォルダー内を柔軟に構成できます:
-Later commands will add more files and folders:
+| ファイルサフィックス | エンティティタイプ |
+| --------------- | ------------- |
+| `*.object.ts` | カスタムオブジェクトの定義 |
+| `*.function.ts` | サーバーレス関数の定義 |
+| `*.role.ts` | ロールの定義 |
-* `yarn generate` will create a `generated/` folder (typed Twenty client + workspace types).
-* `yarn create-entity` will add entity definition files under `src/` for your custom objects.
+### サポートされるフォルダー構成
-## Authentication
+エンティティは次のいずれのパターンでも構成できます:
-The first time you run `yarn auth`, you'll be prompted for:
+**従来型(タイプ別):**
-* API URL (defaults to http://localhost:3000 or your current workspace profile)
-* API key
+```text
+src/app/
+├── application.config.ts
+├── objects/
+│ └── postCard.object.ts
+├── functions/
+│ └── createPostCard.function.ts
+└── roles/
+ └── admin.role.ts
+```
-Your credentials are stored per-user in `~/.twenty/config.json`. You can maintain multiple profiles and switch using `--workspace `.
+**機能単位:**
-Examples:
+```text
+src/app/
+├── application.config.ts
+└── post-card/
+ ├── postCard.object.ts
+ ├── createPostCard.function.ts
+ └── postCardAdmin.role.ts
+```
+
+**フラット:**
+
+```text
+src/app/
+├── application.config.ts
+├── postCard.object.ts
+├── createPostCard.function.ts
+└── admin.role.ts
+```
+
+概要:
+
+* **package.json**: アプリ名、バージョン、エンジン(Node 24+、Yarn 4)を宣言し、`twenty-sdk` と、`dev`、`sync`、`generate`、`create-entity`、`logs`、`uninstall`、`auth` などのスクリプトを追加します。これらはローカルの `twenty` CLI に委譲されます。
+* **.gitignore**: `node_modules`、`.yarn`、`generated/`(型付きクライアント)、`dist/`、`build/`、カバレッジ用フォルダー、ログファイル、`.env*` ファイルなどの一般的な生成物を無視します。
+* **yarn.lock**、**.yarnrc.yml**、**.yarn/**: プロジェクトで使用する Yarn 4 ツールチェーンをロックおよび構成します。
+* **.nvmrc**: プロジェクトで想定する Node.js バージョンを固定します。
+* **eslint.config.mjs** と **tsconfig.json**: アプリの TypeScript ソース向けの Lint と TypeScript 設定を提供します。
+* **README.md**: アプリのルートにある、基本的な手順を記した短い README。
+* **src/app/**: アプリケーションをコードとして定義する主な場所:
+ * `application.config.ts`: アプリのグローバル設定(メタデータとランタイムの接続)。 「アプリケーション設定」を参照してください。
+ * `*.role.ts`: サーバーレス関数で使用するロール定義。 「デフォルトの関数ロール」を参照してください。
+ * `*.object.ts`: カスタムオブジェクトの定義。
+ * `*.function.ts`: サーバーレス関数の定義。
+* **src/utils/**: ハンドラーの実装やユーティリティ用の任意フォルダー。
+
+後続のコマンドにより、さらにファイルやフォルダーが追加されます:
+
+* `yarn app:generate` は `generated/` フォルダー(型付きの Twenty クライアント + ワークスペースの型)を作成します。
+* `yarn app:create-entity` は、カスタムオブジェクト、関数、ロール用のエンティティ定義ファイルを `src/app/` 配下に追加します。
+ l
+
+## 認証
+
+初めて `yarn auth:login` を実行すると、次が求められます:
+
+* API URL(デフォルトは http://localhost:3000 または現在のワークスペースプロファイル)
+* API キー
+
+認証情報はユーザーごとに `~/.twenty/config.json` に保存されます。 複数のプロファイルを管理し、相互に切り替えることができます。
+
+### ワークスペースの管理
```bash filename="Terminal"
-# Login interactively (recommended)
-yarn auth
+# 対話的にログイン(推奨)
+yarn auth:login
-# Use a specific workspace profile
-yarn auth --workspace my-custom-workspace
+# 特定のワークスペースプロファイルにログイン
+yarn auth:login --workspace my-custom-workspace
+
+# 設定済みのワークスペースをすべて一覧表示
+yarn auth:list
+
+# デフォルトのワークスペースを切り替え(対話的)
+yarn auth:switch
+
+# 特定のワークスペースに切り替え
+yarn auth:switch production
+
+# 現在の認証状態を確認
+yarn auth:status
```
-## Use the SDK resources (types & config)
+一度 `auth:switch` でワークスペースを切り替えると、その後のすべてのコマンドはデフォルトでそのワークスペースを使用します。 一時的に `--workspace ` で上書きできます。
-The twenty-sdk provides typed building blocks you use inside your app. Below are the key pieces you'll touch most often.
+## SDK リソース(型と設定)を使う
-### Defining objects
+twenty-sdk は、アプリ内で使用する型付きのビルディングブロックとヘルパー関数を提供します。 以下は、最も頻繁に扱う主要な構成要素です。
-Custom objects are regular TypeScript classes annotated with decorators from `twenty-sdk`. They live under `src/objects/` in your app and describe both schema and behavior for records in your workspace.
+### ヘルパー関数
-Here is an example `postCard` object from the Hello World app:
+この SDK は、アプリのエンティティを定義するための組み込み検証付きヘルパー関数を 4 つ提供します:
+
+| 関数 | 目的 |
+| ------------------ | --------------------- |
+| `defineApp()` | アプリケーションのメタデータを構成 |
+| `defineObject()` | フィールド付きのカスタムオブジェクトを定義 |
+| `defineFunction()` | ハンドラー付きのサーバーレス関数を定義 |
+| `defineRole()` | ロールの権限とオブジェクトアクセスを構成 |
+
+これらの関数は実行時に設定を検証し、IDE の補完と型安全性を向上させます。
+
+### オブジェクトの定義
+
+カスタムオブジェクトは、ワークスペース内のレコードのスキーマと挙動の両方を表します。 組み込み検証付きでオブジェクトを定義するには `defineObject()` を使用します:
```typescript
-import { type Note } from '../../generated';
-
-import {
- type AddressField,
- Field,
- FieldType,
- type FullNameField,
- Object,
- OnDeleteAction,
- Relation,
- RelationType,
- STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS,
-} from 'twenty-sdk';
+// src/app/postCard.object.ts
+import { defineObject, FieldType } from 'twenty-sdk';
enum PostCardStatus {
DRAFT = 'DRAFT',
@@ -166,176 +238,186 @@ enum PostCardStatus {
RETURNED = 'RETURNED',
}
-@Object({
+export default defineObject({
universalIdentifier: '54b589ca-eeed-4950-a176-358418b85c05',
nameSingular: 'postCard',
namePlural: 'postCards',
- labelSingular: 'Post card',
- labelPlural: 'Post cards',
- description: ' A post card object',
+ labelSingular: 'Post Card',
+ labelPlural: 'Post Cards',
+ description: 'A post card object',
icon: 'IconMail',
-})
-export class PostCard {
- @Field({
- universalIdentifier: '58a0a314-d7ea-4865-9850-7fb84e72f30b',
- type: FieldType.TEXT,
- label: 'Content',
- description: "Postcard's content",
- icon: 'IconAbc',
- })
- content: string;
-
- @Field({
- universalIdentifier: 'c6aa31f3-da76-4ac6-889f-475e226009ac',
- type: FieldType.FULL_NAME,
- label: 'Recipient name',
- icon: 'IconUser',
- })
- recipientName: FullNameField;
-
- @Field({
- universalIdentifier: '95045777-a0ad-49ec-98f9-22f9fc0c8266',
- type: FieldType.ADDRESS,
- label: 'Recipient address',
- icon: 'IconHome',
- })
- recipientAddress: AddressField;
-
- @Field({
- universalIdentifier: '87b675b8-dd8c-4448-b4ca-20e5a2234a1e',
- type: FieldType.SELECT,
- label: 'Status',
- icon: 'IconSend',
- defaultValue: `'${PostCardStatus.DRAFT}'`,
- options: [
- { value: PostCardStatus.DRAFT, label: 'Draft', position: 0, color: 'gray' },
- { value: PostCardStatus.SENT, label: 'Sent', position: 1, color: 'orange' },
- { value: PostCardStatus.DELIVERED, label: 'Delivered', position: 2, color: 'green' },
- { value: PostCardStatus.RETURNED, label: 'Returned', position: 3, color: 'orange' },
- ],
- })
- status: PostCardStatus;
-
- @Relation({
- universalIdentifier: 'c9e2b4f4-b9ad-4427-9b42-9971b785edfe',
- type: RelationType.ONE_TO_MANY,
- label: 'Notes',
- icon: 'IconComment',
- inverseSideTargetUniversalIdentifier: STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS.note,
- onDelete: OnDeleteAction.CASCADE,
- })
- notes: Note[];
-
- @Field({
- universalIdentifier: 'e06abe72-5b44-4e7f-93be-afc185a3c433',
- type: FieldType.DATE_TIME,
- label: 'Delivered at',
- icon: 'IconCheck',
- isNullable: true,
- defaultValue: null,
- })
- deliveredAt?: Date;
-}
+ fields: [
+ {
+ universalIdentifier: '58a0a314-d7ea-4865-9850-7fb84e72f30b',
+ name: 'content',
+ type: FieldType.TEXT,
+ label: 'Content',
+ description: "Postcard's content",
+ icon: 'IconAbc',
+ },
+ {
+ universalIdentifier: 'c6aa31f3-da76-4ac6-889f-475e226009ac',
+ name: 'recipientName',
+ type: FieldType.FULL_NAME,
+ label: 'Recipient name',
+ icon: 'IconUser',
+ },
+ {
+ universalIdentifier: '95045777-a0ad-49ec-98f9-22f9fc0c8266',
+ name: 'recipientAddress',
+ type: FieldType.ADDRESS,
+ label: 'Recipient address',
+ icon: 'IconHome',
+ },
+ {
+ universalIdentifier: '87b675b8-dd8c-4448-b4ca-20e5a2234a1e',
+ name: 'status',
+ type: FieldType.SELECT,
+ label: 'Status',
+ icon: 'IconSend',
+ defaultValue: `'${PostCardStatus.DRAFT}'`,
+ options: [
+ { value: PostCardStatus.DRAFT, label: 'Draft', position: 0, color: 'gray' },
+ { value: PostCardStatus.SENT, label: 'Sent', position: 1, color: 'orange' },
+ { value: PostCardStatus.DELIVERED, label: 'Delivered', position: 2, color: 'green' },
+ { value: PostCardStatus.RETURNED, label: 'Returned', position: 3, color: 'orange' },
+ ],
+ },
+ {
+ universalIdentifier: 'e06abe72-5b44-4e7f-93be-afc185a3c433',
+ name: 'deliveredAt',
+ type: FieldType.DATE_TIME,
+ label: 'Delivered at',
+ icon: 'IconCheck',
+ isNullable: true,
+ defaultValue: null,
+ },
+ ],
+});
```
-Key points:
+主要ポイント:
-* The `@Object` decorator defines the object identity and labels used across the workspace; its `universalIdentifier` must be unique and stable across deployments.
-* Each `@Field` decorator defines a field on the object with a type, label, and its own stable `universalIdentifier`.
-* `@Relation` wires this object to other objects (standard or custom) and controls cascade behavior with `onDelete`.
-* You can scaffold new objects using `yarn create-entity`, which guides you through naming, fields, and relationships, then generates object files similar to the `postCard` example.
+* 組み込み検証と優れた IDE サポートのために `defineObject()` を使用します。
+* `universalIdentifier` は、デプロイをまたいで一意かつ安定している必要があります。
+* 各フィールドには、`name`、`type`、`label`、および自身の安定した `universalIdentifier` が必要です。
+* `fields` 配列は任意です。カスタムフィールドなしでオブジェクトを定義できます。
+* `yarn app:create-entity` を使用すれば、新しいオブジェクトをスキャフォルドできます。名前、フィールド、リレーションシップの設定がガイドされます。
-### Application config (application.config.ts)
+
+ **ベースフィールドは自動作成されます。** カスタムオブジェクトを定義すると、Twenty は `name`、`createdAt`、`updatedAt`、`createdBy`、`position`、`deletedAt` などの標準フィールドを自動的に追加します。 これらを `fields` 配列で定義する必要はありません。カスタムフィールドのみを追加してください。
+
-Every app has a single `application.config.ts` file that describes:
+
+ TypeScript のデコレーターを使ってオブジェクトを定義することもできます。 この方法では、`@Object`、`@Field`、`@Relation` デコレーターを用いたクラスベースの構文を使用します:
-* **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.
+ ```typescript
+ import {
+ type AddressField,
+ Field,
+ FieldType,
+ type FullNameField,
+ Object,
+ OnDeleteAction,
+ Relation,
+ RelationType,
+ STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS,
+ } from 'twenty-sdk';
+ import { type Note } from '../../generated';
-When you scaffold a new app, you start with a minimal config:
+ @Object({
+ universalIdentifier: '54b589ca-eeed-4950-a176-358418b85c05',
+ nameSingular: 'postCard',
+ namePlural: 'postCards',
+ labelSingular: 'Post card',
+ labelPlural: 'Post cards',
+ description: 'A post card object',
+ icon: 'IconMail',
+ })
+ export class PostCard {
+ @Field({
+ universalIdentifier: '58a0a314-d7ea-4865-9850-7fb84e72f30b',
+ type: FieldType.TEXT,
+ label: 'Content',
+ description: "Postcard's content",
+ icon: 'IconAbc',
+ })
+ content: string;
+
+ @Relation({
+ universalIdentifier: 'c9e2b4f4-b9ad-4427-9b42-9971b785edfe',
+ type: RelationType.ONE_TO_MANY,
+ label: 'Notes',
+ icon: 'IconComment',
+ inverseSideTargetUniversalIdentifier: STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS.note,
+ onDelete: OnDeleteAction.CASCADE,
+ })
+ notes: Note[];
+ }
+ ```
+
+ 注記: デコレーター方式では、TypeScript 設定で `experimentalDecorators` が必要です。
+
+
+### アプリケーション設定(application.config.ts)
+
+すべてのアプリには、次の内容を記述する単一の `application.config.ts` ファイルがあります:
+
+* **アプリの概要**: 識別子、表示名、説明。
+* **関数の実行方法**: 権限に使用するロール。
+* **(任意)変数**: 関数に環境変数として公開されるキーと値のペア。
+
+アプリケーション設定を定義するには `defineApp()` を使用します:
```typescript
-import { type ApplicationConfig } from 'twenty-sdk';
+// src/app/application.config.ts
+import { defineApp } from 'twenty-sdk';
+import { DEFAULT_FUNCTION_ROLE_UNIVERSAL_IDENTIFIER } from './default-function.role';
-const config: ApplicationConfig = {
- universalIdentifier: '',
+export default defineApp({
+ universalIdentifier: '4ec0391d-18d5-411c-b2f3-266ddc1c3ef7',
displayName: 'My Twenty App',
description: 'My first Twenty app',
- functionRoleUniversalIdentifier: '',
-};
-
-export default config;
-```
-
-You can gradually extend this file as your app grows. For example, you can add an icon and application-scoped variables:
-
-```typescript
-import { type ApplicationConfig } from 'twenty-sdk';
-
-const config: ApplicationConfig = {
- universalIdentifier: '',
- displayName: 'My App',
- description: 'What your app does',
- icon: 'IconWorld', // Choose an icon by name
+ icon: 'IconWorld',
applicationVariables: {
DEFAULT_RECIPIENT_NAME: {
- universalIdentifier: '',
- description: 'Default recipient used by functions',
+ universalIdentifier: '19e94e59-d4fe-4251-8981-b96d0a9f74de',
+ description: 'Default recipient name for postcards',
value: 'Jane Doe',
isSecret: false,
},
},
- functionRoleUniversalIdentifier: '',
-};
-
-export default config;
+ functionRoleUniversalIdentifier: DEFAULT_FUNCTION_ROLE_UNIVERSAL_IDENTIFIER,
+});
```
-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 `role.config.ts` (see below).
+* `universalIdentifier` フィールドは、あなたが管理する決定的な ID です。一度生成し、同期をまたいで安定したままにしてください。
+* `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.
+アプリケーションは、ワークスペース内のオブジェクトやアクションに対する権限をカプセル化するロールを定義できます。 `application.config.ts` の `functionRoleUniversalIdentifier` フィールドは、アプリのサーバーレス関数で使用されるデフォルトのロールを指定します。
-* 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.
+* `TWENTY_API_KEY` として注入される実行時の API キーは、このデフォルトの関数ロールから派生します。
+* 型付きクライアントの権限は、そのロールに付与された権限に制限されます。
+* 最小権限の原則に従い、関数に必要な権限のみに限定した専用ロールを作成し、そのユニバーサル識別子を参照してください。
-##### Default function role (role.config.ts)
+##### デフォルトの関数ロール(\*.role.ts)
-When you scaffold a new app, the CLI also creates `src/role.config.ts`. This file exports the default role your serverless functions will use at runtime:
+新しいアプリをスキャフォルドすると、CLI はデフォルトのロールファイルも作成します。 組み込み検証付きでロールを定義するには `defineRole()` を使用します:
```typescript
-import { PermissionFlag, type RoleConfig } from 'twenty-sdk';
+// src/app/default-function.role.ts
+import { defineRole, PermissionFlag } from 'twenty-sdk';
-export const functionRole: RoleConfig = {
- universalIdentifier: '',
- label: 'My Twenty App default function role',
- description: 'My Twenty App default function role',
- canReadAllObjectRecords: true,
- canUpdateAllObjectRecords: true,
- canSoftDeleteAllObjectRecords: true,
- canDestroyAllObjectRecords: false,
-};
-```
+export const DEFAULT_FUNCTION_ROLE_UNIVERSAL_IDENTIFIER =
+ 'b648f87b-1d26-4961-b974-0908fd991061';
-The `universalIdentifier` of this role is automatically wired into `application.config.ts` as `functionRoleUniversalIdentifier`. In other words:
-
-* **role.config.ts** defines what the default function role can do.
-* **application.config.ts** points to that role so your functions inherit its permissions.
-
-As you move beyond the initial scaffold, you should tighten this role and make it explicit about what it can access. A more production-ready role might look closer to:
-
-```typescript
-import { PermissionFlag, type RoleConfig } from 'twenty-sdk';
-
-export const functionRole: RoleConfig = {
- universalIdentifier: '',
+export default defineRole({
+ universalIdentifier: DEFAULT_FUNCTION_ROLE_UNIVERSAL_IDENTIFIER,
label: 'Default function role',
description: 'Default role for function Twenty client',
canReadAllObjectRecords: false,
@@ -363,41 +445,41 @@ export const functionRole: RoleConfig = {
canUpdateFieldValue: false,
},
],
- permissionFlags: ['APPLICATIONS'],
-};
+ permissionFlags: [PermissionFlag.APPLICATIONS],
+});
```
-Notes:
+このロールの `universalIdentifier` は、`application.config.ts` で `functionRoleUniversalIdentifier` として参照されます。 言い換えると:
-* 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).
+* **\*.role.ts** は、デフォルトの関数ロールで可能な操作を定義します。
+* **application.config.ts** でそのロールを指定することで、関数はその権限を継承します。
-### Serverless function config and entrypoint
+注記:
-Each function exports a main handler and a config describing its triggers. You can mix multiple trigger types.
+* スキャフォルドされたロールから開始し、最小権限の原則に従って段階的に制限してください。
+* `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)。
+
+### サーバーレス関数の設定とエントリポイント
+
+各関数ファイルは、ハンドラーと任意のトリガーを含む設定を `defineFunction()` でエクスポートします。 自動検出のために `*.function.ts` のファイルサフィックスを使用します。
```typescript
-// src/actions/create-new-post-card.ts
-import type {
- FunctionConfig,
- DatabaseEventPayload,
- ObjectRecordCreateEvent,
- CronPayload,
-} from 'twenty-sdk';
-import Twenty, { type Person } from '../generated';
+// src/app/createPostCard.function.ts
+import { defineFunction } from 'twenty-sdk';
+import type { DatabaseEventPayload, ObjectRecordCreateEvent, CronPayload, RoutePayload } from 'twenty-sdk';
+import Twenty, { type Person } from '../../generated';
-// main handler can accept parameters from route, cron, or database events
-export const main = async (
+const handler = async (
params:
- | { name?: string }
+ | RoutePayload
| DatabaseEventPayload>
| CronPayload,
) => {
const client = new Twenty(); // generated typed client
- const name = 'name' in params
- ? params.name ?? process.env.DEFAULT_RECIPIENT_NAME ?? 'Hello world'
+ const name = 'name' in params.queryStringParameters
+ ? params.queryStringParameters.name ?? process.env.DEFAULT_RECIPIENT_NAME ?? 'Hello world'
: 'Hello world';
const result = await client.mutation({
@@ -410,14 +492,15 @@ export const main = async (
return result;
};
-export const config: FunctionConfig = {
- universalIdentifier: '',
+export default defineFunction({
+ universalIdentifier: 'e56d363b-0bdc-4d8a-a393-6f0d1c75bdcf',
name: 'create-new-post-card',
timeoutSeconds: 2,
+ handler,
triggers: [
// Public HTTP route trigger '/s/post-card/create'
{
- universalIdentifier: '',
+ universalIdentifier: 'c9f84c8d-b26d-40d1-95dd-4f834ae5a2c6',
type: 'route',
path: '/post-card/create',
httpMethod: 'GET',
@@ -425,39 +508,137 @@ export const config: FunctionConfig = {
},
// Cron trigger (CRON pattern)
{
- universalIdentifier: '',
+ universalIdentifier: 'dd802808-0695-49e1-98c9-d5c9e2704ce2',
type: 'cron',
pattern: '0 0 1 1 *',
},
// Database event trigger
{
- universalIdentifier: '',
+ universalIdentifier: '203f1df3-4a82-4d06-a001-b8cf22a31156',
type: 'databaseEvent',
- eventName: 'person.created',
+ eventName: 'person.updated',
+ updatedFields: ['name'],
},
],
+});
+```
+
+一般的なトリガーの種類:
+
+* **route**: `/s/` エンドポイント配下で、HTTP パスとメソッドで関数を公開します:
+
+> 例: `path: '/post-card/create',` -> `/s/post-card/create` で呼び出し
+
+* **cron**: CRON 式を使用してスケジュールで関数を実行します。
+* **databaseEvent**: ワークスペースのオブジェクトのライフサイクルイベントで実行されます。 イベント操作が `updated` の場合、監視する特定のフィールドを `updatedFields` 配列で指定できます。 未定義または空のままにすると、任意の更新でも関数がトリガーされます。
+
+> 例: `person.updated`
+
+注記:
+
+* `triggers` 配列は任意です。 トリガーのない関数は、他の関数から呼び出されるユーティリティ関数として使用できます。
+* 1 つの関数で複数のトリガータイプを組み合わせることができます。
+
+### ルートトリガーのペイロード
+
+
+ **破壊的変更(v1.16、2026年1月):** ルートトリガーのペイロード形式が変更されました。 v1.16 以前は、クエリパラメーター、パスパラメーター、および body がペイロードとして直接送信されていました。 v1.16 以降は、それらは構造化された `RoutePayload` オブジェクト内にネストされます。
+
+ **v1.16 以前:**
+
+ ```typescript
+ const handler = async (params) => {
+ const { param1, param2 } = params; // Direct access
+ };
+ ```
+
+ **v1.16 以降:**
+
+ ```typescript
+ const handler = async (event: RoutePayload) => {
+ const { param1, param2 } = event.body; // Access via .body
+ const { queryParam } = event.queryStringParameters;
+ const { id } = event.pathParameters;
+ };
+ ```
+
+ **既存の関数を移行するには:** ハンドラーで、params オブジェクトから直接ではなく、`event.body`、`event.queryStringParameters`、または `event.pathParameters` から分割代入するように更新してください。
+
+
+ルートトリガーが関数を呼び出すと、AWS HTTP API v2 形式に準拠した `RoutePayload` オブジェクトを受け取ります。 型を `twenty-sdk` からインポートします:
+
+```typescript
+import { defineFunction, type RoutePayload } from 'twenty-sdk';
+
+const handler = async (event: RoutePayload) => {
+ // Access request data
+ const { headers, queryStringParameters, pathParameters, body } = event;
+
+ // HTTP method and path are available in requestContext
+ const { method, path } = event.requestContext.http;
+
+ return { message: 'Success' };
};
```
-Common trigger types:
+`RoutePayload` 型は次の構造になっています:
-* route: Exposes your function on an HTTP path and method **under the `/s/` endpoint**:
+| プロパティ | タイプ | 説明 |
+| ---------------------------- | ------------------------------------- | ---------------------------------------------------------- |
+| `headers` | `Record` | HTTP ヘッダー (`forwardedRequestHeaders` に列挙されたもののみ) |
+| `queryStringParameters` | `Record` | クエリ文字列パラメーター (複数の値はカンマで連結) |
+| `pathParameters` | `Record` | ルートパターンから抽出されたパスパラメーター (例: `/users/:id` → `{ id: '123' }`) |
+| `本文` | `object \| null` | 解析済みのリクエストボディ (JSON) |
+| `isBase64Encoded` | `ブール型` | body が base64 エンコードされているかどうか |
+| `requestContext.http.method` | `string` | HTTP メソッド (GET, POST, PUT, PATCH, DELETE) |
+| `requestContext.http.path` | `string` | 生のリクエストパス |
-> e.g. `path: '/post-card/create',` -> call on `/s/post-card/create`
+### HTTP ヘッダーの転送
-* cron: Runs your function on a schedule using a CRON expression.
-* databaseEvent: Runs on workspace object lifecycle events
+デフォルトでは、セキュリティ上の理由から、受信リクエストの HTTP ヘッダーはサーバーレス関数に**渡されません**。 特定のヘッダーにアクセスするには、`forwardedRequestHeaders` 配列に明示的に列挙してください:
-> e.g. `person.created`
+```typescript
+export default defineFunction({
+ universalIdentifier: 'e56d363b-0bdc-4d8a-a393-6f0d1c75bdcf',
+ name: 'webhook-handler',
+ handler,
+ triggers: [
+ {
+ universalIdentifier: 'c9f84c8d-b26d-40d1-95dd-4f834ae5a2c6',
+ type: 'route',
+ path: '/webhook',
+ httpMethod: 'POST',
+ isAuthRequired: false,
+ forwardedRequestHeaders: ['x-webhook-signature', 'content-type'],
+ },
+ ],
+});
+```
-You can create new functions in two ways:
+ハンドラー内で、これらのヘッダーにアクセスできます:
-* **Scaffolded**: Run `yarn create-entity --path ` and choose the option to add a new function. This generates a starter file under `` with a `main` handler and a `config` block similar to the example above.
-* **Manual**: Create a new file and export `main` and `config` yourself, following the same pattern.
+```typescript
+const handler = async (event: RoutePayload) => {
+ const signature = event.headers['x-webhook-signature'];
+ const contentType = event.headers['content-type'];
-### Generated typed client
+ // Validate webhook signature...
+ return { received: true };
+};
+```
-Run yarn generate to create a local typed client in generated/ based on your workspace schema. Use it in your functions:
+
+ ヘッダー名は小文字に正規化されます。 小文字のキーを使用してアクセスしてください (例: `event.headers['content-type']`)。
+
+
+新しい関数は次の 2 通りで作成できます:
+
+* **スキャフォルド**: `yarn app:create-entity` を実行し、新しい関数を追加するオプションを選択します。 これにより、ハンドラーと設定を備えたスターターファイルが生成されます。
+* **手動**: 新しい `*.function.ts` ファイルを作成し、同じパターンで `defineFunction()` を使用します。
+
+### 生成された型付きクライアント
+
+ワークスペースのスキーマに基づき、generated/ にローカルの型付きクライアントを作成するには yarn app:generate を実行します。 関数内で使用します:
```typescript
import Twenty from './generated';
@@ -466,34 +647,34 @@ const client = new Twenty();
const { me } = await client.query({ me: { id: true, displayName: true } });
```
-The client is re-generated by `yarn generate`. Re-run after changing your objects and `yarn 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`: アプリが対象とする Twenty API のベース URL。
+* `TWENTY_API_KEY`: アプリケーションのデフォルト関数ロールにスコープされた短命のキー。
-Notes:
+ノート:
-* 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 キーを渡す必要はありません。 実行時に process.env から `TWENTY_API_URL` と `TWENTY_API_KEY` を読み取ります。
+* 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"
{
@@ -510,13 +691,13 @@ Then add scripts like these:
}
```
-Now you can run the same commands via Yarn, e.g. `yarn dev`, `yarn sync`, etc.
+これで Yarn 経由で同じコマンド(例:`yarn app:dev`、`yarn app:sync` など)を実行できます。
-## Troubleshooting
+## トラブルシューティング
-* Authentication errors: run `yarn auth` 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 generate` and then `yarn dev`.
-* Dev mode not syncing: ensure `yarn dev` is running and that changes are not ignored by your environment.
+* 認証エラー: `yarn auth:login` を実行し、API キーに必要な権限があることを確認してください。
+* サーバーに接続できません: API URL と、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/ja/developers/extend/capabilities/webhooks.mdx b/packages/twenty-docs/l/ja/developers/extend/capabilities/webhooks.mdx
index 6c2180e07c..6929d0c156 100644
--- a/packages/twenty-docs/l/ja/developers/extend/capabilities/webhooks.mdx
+++ b/packages/twenty-docs/l/ja/developers/extend/capabilities/webhooks.mdx
@@ -1,44 +1,44 @@
---
title: Webhooks
-description: Receive real-time notifications when events occur in your CRM.
+description: CRM でイベントが発生したときにリアルタイム通知を受信します。
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-Webhooks push data to your systems in real-time when events occur in Twenty — no polling required. Use them to keep external systems in sync, trigger automations, or send alerts.
+ウェブフックは、Twenty でイベントが発生したときに、ポーリング不要でリアルタイムにお使いのシステムへデータをプッシュします。 外部システムとの同期を保ち、オートメーションをトリガーしたり、アラートを送信したりするために使用できます。
-## Create a Webhook
+## Webhookを作成
-1. Go to **Settings → APIs & Webhooks → Webhooks**
-2. Click **+ Create webhook**
-3. Enter your webhook URL (must be publicly accessible)
-4. Click **Save**
+1. **Settings → APIs & Webhooks → Webhooks**に移動
+2. **+ Webhookを作成**をクリック
+3. ウェブフックの URL を入力(外部からアクセス可能である必要があります)
+4. **保存**をクリック
-The webhook activates immediately and starts sending notifications.
+ウェブフックは直ちに有効化され、通知の送信を開始します。
-
+
-### Manage Webhooks
+### Webhookを管理
-**Edit**: Click the webhook → Update URL → **Save**
+**編集**: ウェブフックをクリック → URL を更新 → **保存**
-**Delete**: Click the webhook → **Delete** → Confirm
+**削除**: ウェブフックをクリック → **削除** → 確認
-## Events
+## イベント
-Twenty sends webhooks for these event types:
+Twenty は次のイベントタイプに対してウェブフックを送信します。
-| Event | Example |
-| ------------------ | ---------------------------------------------------------- |
-| **Record Created** | `person.created`, `company.created`, `note.created` |
-| **Record Updated** | `person.updated`, `company.updated`, `opportunity.updated` |
-| **Record Deleted** | `person.deleted`, `company.deleted` |
+| イベント | 例 |
+| ----------- | ---------------------------------------------------------- |
+| **レコードの作成** | `person.created`, `company.created`, `note.created` |
+| **レコードの更新** | `person.updated`, `company.updated`, `opportunity.updated` |
+| **レコードの削除** | `person.deleted`, `company.deleted` |
-All event types are sent to your webhook URL. Event filtering may be added in future releases.
+すべてのイベントタイプはウェブフックの URL に送信されます。 イベントのフィルタリングは将来のリリースで追加される可能性があります。
-## Payload Format
+## ペイロード形式
-Each webhook sends an HTTP POST with a JSON body:
+各ウェブフックは JSON ボディを含む HTTP POST を送信します。
```json
{
@@ -55,35 +55,35 @@ Each webhook sends an HTTP POST with a JSON body:
}
```
-| Field | Description |
-| ----------- | ------------------------------------------------ |
-| `event` | What happened (e.g., `person.created`) |
-| `data` | The full record that was created/updated/deleted |
-| `timestamp` | When the event occurred (UTC) |
+| フィールド | 説明 |
+| --------- | --------------------------- |
+| `イベント` | 何が起きたか(例: `person.created`) |
+| `データ` | 作成/更新/削除された完全なレコード |
+| `タイムスタンプ` | イベントが発生した時刻(UTC) |
- Respond with a **2xx HTTP status** (200-299) to acknowledge receipt. Non-2xx responses are logged as delivery failures.
+ 受信を確認するために、**2xx HTTP ステータス**(200~299)で応答してください。 2xx 以外の応答は配信失敗として記録されます。
-## Webhook Validation
+## ウェブフックの検証
-Twenty signs each webhook request for security. Validate signatures to ensure requests are authentic.
+Twenty はセキュリティのために各ウェブフックリクエストに署名します。 リクエストが正当であることを確認するために署名を検証してください。
-### Headers
+### ヘッダー
-| Header | Description |
-| ---------------------------- | --------------------- |
-| `X-Twenty-Webhook-Signature` | HMAC SHA256 signature |
-| `X-Twenty-Webhook-Timestamp` | Request timestamp |
+| ヘッダー | 説明 |
+| ---------------------------- | -------------- |
+| `X-Twenty-Webhook-Signature` | HMAC SHA256 署名 |
+| `X-Twenty-Webhook-Timestamp` | リクエストのタイムスタンプ |
-### Validation Steps
+### 検証手順
-1. Get the timestamp from `X-Twenty-Webhook-Timestamp`
-2. Create the string: `{timestamp}:{JSON payload}`
-3. Compute HMAC SHA256 using your webhook secret
-4. Compare with `X-Twenty-Webhook-Signature`
+1. `X-Twenty-Webhook-Timestamp` からタイムスタンプを取得
+2. 次の文字列を作成: `{timestamp}:{JSON payload}`
+3. ウェブフックシークレットを使用して HMAC SHA256 を計算
+4. `X-Twenty-Webhook-Signature` と比較
-### Example (Node.js)
+### 例(Node.js)
```javascript
const crypto = require("crypto");
@@ -101,12 +101,12 @@ const expectedSignature = crypto
const isValid = expectedSignature === req.headers["x-twenty-webhook-signature"];
```
-## Webhooks vs Workflows
+## ウェブフック vs ワークフロー
-| Method | Direction | Use Case |
-| ---------------------------- | --------- | ---------------------------------------------------------- |
-| **Webhooks** | OUT | Automatically notify external systems of any record change |
-| **Workflow + HTTP Request** | OUT | Send data out with custom logic (filters, transformations) |
-| **Workflow Webhook Trigger** | IN | Receive data into Twenty from external systems |
+| メソッド | 方向 | ユースケース |
+| ----------------------- | --- | --------------------------- |
+| **ウェブフック** | OUT | あらゆるレコード変更を外部システムへ自動通知 |
+| **ワークフロー + HTTP リクエスト** | OUT | カスタムロジック(フィルター、変換)でデータを外部送信 |
+| **ワークフローのウェブフックトリガー** | IN | 外部システムから Twenty にデータを受信 |
-For receiving external data, see [Set Up a Webhook Trigger](/l/ja/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger).
+外部データの受信については、[Webhook トリガーを設定](/l/ja/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger)を参照してください。
diff --git a/packages/twenty-docs/l/ja/developers/extend/extend.mdx b/packages/twenty-docs/l/ja/developers/extend/extend.mdx
index 2f973d8002..c9f7a840c1 100644
--- a/packages/twenty-docs/l/ja/developers/extend/extend.mdx
+++ b/packages/twenty-docs/l/ja/developers/extend/extend.mdx
@@ -1,34 +1,34 @@
---
-title: Extend
-description: Extend Twenty's functionality with APIs, webhooks, and custom apps.
+title: 拡張
+description: API、Webhook、カスタムアプリで Twenty の機能を拡張できます。
---
-## Overview
+## 概要
-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、Webhook、アプリフレームワークを使用して既存のツールと統合し、カスタム機能を構築できます。
-## 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!
+* **API**: REST または GraphQL を使用して、プログラムから CRM データをクエリおよび変更します。
+* **ウェブフック**: Twenty でイベントが発生したときにリアルタイム通知を受信します。
+* **アプリ**: Twenty の機能を拡張するカスタムアプリケーションを構築 - 近日公開!
-## Getting Started
+## 始めに
-
- Connect to Twenty programmatically
+
+ プログラムから Twenty に接続
-
- Get notified of events in real-time
+
+ イベントの通知をリアルタイムで受け取る
-
- Build customizations as code (Alpha)
+
+ カスタマイズをコードとして構築(アルファ版)
diff --git a/packages/twenty-docs/l/ja/developers/introduction.mdx b/packages/twenty-docs/l/ja/developers/introduction.mdx
index 7bc187d2d1..3f257bc250 100644
--- a/packages/twenty-docs/l/ja/developers/introduction.mdx
+++ b/packages/twenty-docs/l/ja/developers/introduction.mdx
@@ -1,5 +1,5 @@
---
-title: Getting Started
+title: 始めに
description: Welcome to Twenty Developer Documentation, your resources for extending, self-hosting, and contributing to Twenty.
---
diff --git a/packages/twenty-docs/l/ja/developers/self-host/capabilities/cloud-providers.mdx b/packages/twenty-docs/l/ja/developers/self-host/capabilities/cloud-providers.mdx
index 809388612a..d5e2db0b91 100644
--- a/packages/twenty-docs/l/ja/developers/self-host/capabilities/cloud-providers.mdx
+++ b/packages/twenty-docs/l/ja/developers/self-host/capabilities/cloud-providers.mdx
@@ -1,45 +1,46 @@
---
-title: Other methods
+title: その他の方法
---
- This document is maintained by the community. It might contain issues.
+ このドキュメントはコミュニティによって管理されています。 問題を含む可能性があります。
+ 問題を含む可能性があります。
-## Kubernetes via Terraform and Manifests
+## Terraformとマニフェストを通したKubernetes
-Community-led documentation for Kubernetes deployment is available [here](https://github.com/twentyhq/twenty/tree/main/packages/twenty-docker/k8s)
+Kubernetesデプロイメントに関するコミュニティ主導のドキュメントは[こちら](https://github.com/twentyhq/twenty/tree/main/packages/twenty-docker/k8s)です。
### Coolify
-Deploy Twenty on servers using Coolify. (official image on Coolify will be available soon)
+Coolifyを使用してサーバーにTwentyをデプロイします。 (Coolify上の公式イメージは近日公開予定です) (Coolify上の公式イメージは近日公開予定です)
-[Coolify documentation](https://coolify.io/docs/get-started/introduction)
+[Coolifyのドキュメント](https://coolify.io/docs/get-started/introduction)
### EasyPanel
-Deploy Twenty on EasyPanel with the community maintained template below.
+以下のコミュニティ維持テンプレートを使用して、EasyPanelにTwentyをデプロイします。
-[Deploy on EasyPanel](https://easypanel.io/docs/templates/twenty)
+以下のコミュニティ維持テンプレートを使用して、EasyPanelにTwentyをデプロイします。
### Elest.io
-Deploy Twenty on servers with Elest.io using link below.
+以下のリンクを使用して、Elest.ioにTwentyをサーバー上にデプロイします。
-[Deploy on Elest.io](https://elest.io/open-source/twenty)
+[Elest.ioにデプロイする](https://elest.io/open-source/twenty)
-### Twenty on Railway
+### Railway上のTwenty
-Deploy Twenty on Railway with the community maintained template below.
+以下のコミュニティ維持テンプレートを使用して、RailwayにTwentyをデプロイします。
-[](https://railway.com/deploy/nAL3hA)
+[](https://railway.com/deploy/nAL3hA)
-### Twenty on Sealos
+### Sealos上のTwenty
-Deploy Twenty on Sealos with the community maintained template below.
+以下のコミュニティがメンテナンスしているテンプレートを使用して、SealosにTwentyをデプロイします。
-[](https://sealos.io/products/app-store/twenty)
+[](https://sealos.io/products/app-store/twenty)
-## Others
+## その他
-Please feel free to Open a PR to add more Cloud Provider options.
+もっと多くのクラウドプロバイダーオプションを追加するために、PRを自由に作成してください。
diff --git a/packages/twenty-docs/l/ja/developers/self-host/capabilities/docker-compose.mdx b/packages/twenty-docs/l/ja/developers/self-host/capabilities/docker-compose.mdx
index 1c59a9b1f0..44b1de451b 100644
--- a/packages/twenty-docs/l/ja/developers/self-host/capabilities/docker-compose.mdx
+++ b/packages/twenty-docs/l/ja/developers/self-host/capabilities/docker-compose.mdx
@@ -1,253 +1,253 @@
---
-title: 1-Click w/ Docker Compose
+title: 1-クリック w/ Docker Compose
---
- Docker containers are for production hosting or self-hosting, for the contribution please check the [Local Setup](/l/ja/developers/contribute/capabilities/local-setup).
+ Dockerコンテナは本番ホスティングまたはセルフホスティング用です。貢献するには、[ローカルセットアップ](/l/ja/developers/contribute/capabilities/local-setup)を確認してください。
-## Overview
+## 概要
-This guide provides step-by-step instructions to install and configure the Twenty application using Docker Compose. The aim is to make the process straightforward and prevent common pitfalls that could break your setup.
+このガイドは、Docker Composeを使用してTwentyアプリケーションをインストールおよび構成するためのステップバイステップの手順を提供します。 プロセスを簡単にし、設定を破壊する可能性のある一般的な落とし穴を防止することが目的です。 プロセスを簡単にし、設定を破壊する可能性のある一般的な落とし穴を防止することが目的です。 プロセスを簡単にし、設定を破壊する可能性のある一般的な落とし穴を防止することが目的です。 プロセスを簡単にし、設定を破壊する可能性のある一般的な落とし穴を防止することが目的です。
-**Important:** Only modify settings explicitly mentioned in this guide. Altering other configurations may lead to issues.
+**重要:** このガイドで明示的に言及されている設定のみを変更してください。 他の構成を変更すると、問題が発生する可能性があります。 他の構成を変更すると、問題が発生する可能性があります。 他の構成を変更すると、問題が発生する可能性があります。
-See docs [Setup Environment Variables](/l/ja/developers/self-host/capabilities/setup) for advanced configuration. All environment variables must be declared in the docker-compose.yml file at the server and / or worker level depending on the variable.
+高度な構成については、[環境変数の設定](/l/ja/developers/self-host/capabilities/setup)を参照してください。 高度な構成については、[環境変数の設定](https://docs.twenty.com/l/ja/developers/self-hosting/setup)を参照してください。 高度な構成については、[環境変数の設定](https://docs.twenty.com/l/ja/developers/self-hosting/setup)を参照してください。 すべての環境変数は、サーバーレベルまたはワーカーレベルでdocker-compose.ymlファイルに宣言する必要があります。
-## System Requirements
+## システム要件
-* RAM: Ensure your environment has at least 2GB of RAM. Insufficient memory can cause processes to crash.
-* Docker & Docker Compose: Make sure both are installed and up-to-date.
+* RAM: 環境に最低2GBのRAMがあることを確認してください。 メモリが不足するとプロセスがクラッシュすることがあります。 メモリが不足するとプロセスがクラッシュすることがあります。 メモリが不足するとプロセスがクラッシュすることがあります。 メモリが不足するとプロセスがクラッシュすることがあります。 メモリが不足するとプロセスがクラッシュすることがあります。 メモリが不足するとプロセスがクラッシュすることがあります。 メモリが不足するとプロセスがクラッシュすることがあります。
+* Docker & Docker Compose: 両方がインストールされ、最新であることを確認してください。
-## Option 1: One-line script
+## オプション 1: ワンラインスクリプト
-Install the latest stable version of Twenty with a single command:
+単一のコマンドで最新版のTwentyをインストールします:
```bash
bash <(curl -sL https://raw.githubusercontent.com/twentyhq/twenty/main/packages/twenty-docker/scripts/install.sh)
```
-To install a specific version or branch:
+特定のバージョンまたはブランチをインストールするには:
```bash
VERSION=vx.y.z BRANCH=branch-name bash <(curl -sL https://raw.githubusercontent.com/twentyhq/twenty/main/packages/twenty-docker/scripts/install.sh)
```
-* Replace x.y.z with the desired version number.
-* Replace branch-name with the name of the branch you want to install.
+* x.y.zを希望するバージョン番号に置き換えます。
+* branch-nameをインストールしたいブランチの名前に置き換えます。
-## Option 2: Manual steps
+## オプション 2: 手動の手順
-Follow these steps for a manual setup.
+マニュアルセットアップには、これらの手順に従ってください。
-### Step 1: Set Up the Environment File
+### ステップ 1: 環境ファイルを設定
-1. **Create the .env File**
+1. **.env ファイルを作成**
- Copy the example environment file to a new .env file in your working directory:
+ 例の環境ファイルを作業ディレクトリに新しい.envファイルとしてコピーします:
```bash
curl -o .env https://raw.githubusercontent.com/twentyhq/twenty/refs/heads/main/packages/twenty-docker/.env.example
```
-2. **Generate Secret Tokens**
+2. **シークレットトークンを生成**
- Run the following command to generate a unique random string:
+ ユニークなランダム文字列を生成するには、次のコマンドを実行します:
```bash
openssl rand -base64 32
```
- **Important:** Keep this value secret / do not share it.
+ **重要:** この値を秘密にしてください/共有しないでください。
-3. **Update the `.env`**
+3. **`.env`を更新**
- Replace the placeholder value in your .env file with the generated token:
+ 生成したトークンで.envファイルのプレースホルダー値を置き換えます:
```ini
APP_SECRET=first_random_string
```
-4. **Set the Postgres Password**
+4. **Postgres パスワードを設定**
- Update the `PG_DATABASE_PASSWORD` value in the .env file with a strong password without special characters.
+ 特殊文字を含まない強力なパスワードで、.envファイルの`PG_DATABASE_PASSWORD`値を更新します。
```ini
PG_DATABASE_PASSWORD=my_strong_password
```
-### Step 2: Obtain the Docker Compose File
+### ステップ 2: Docker Compose ファイルを取得
-Download the `docker-compose.yml` file to your working directory:
+作業ディレクトリに`docker-compose.yml`ファイルをダウンロードします:
```bash
curl -o docker-compose.yml https://raw.githubusercontent.com/twentyhq/twenty/refs/heads/main/packages/twenty-docker/docker-compose.yml
```
-### Step 3: Launch the Application
+### ステップ 3: アプリケーションを起動
-Start the Docker containers:
+Dockerコンテナを開始します:
```bash
docker compose up -d
```
-### Step 4: Access the Application
+### ステップ 4: アプリケーションにアクセス
-If you host twentyCRM on your own computer, open your browser and navigate to [http://localhost:3000](http://localhost:3000).
+自分のコンピュータで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
```
-## Configuration
+## 構成
-### Expose Twenty to External Access
+### Twentyを外部アクセスに公開
-By default, Twenty runs on `localhost` at port `3000`. To access it via an external domain or IP address, you need to configure the `SERVER_URL` in your `.env` file.
+デフォルトでは、Twentyはポート`3000`で`localhost`上で動作します。 外部ドメインまたはIPアドレス経由でアクセスするには、`.env`ファイルで`SERVER_URL`を構成する必要があります。 外部ドメインまたはIPアドレス経由でアクセスするには、`.env`ファイルで`SERVER_URL`を構成する必要があります。
-#### Understanding `SERVER_URL`
+#### `SERVER_URL`の理解
-* **Protocol:** Use `http` or `https` depending on your setup.
- * Use `http` if you haven't set up SSL.
- * Use `https` if you have SSL configured.
-* **Domain/IP:** This is the domain name or IP address where your application is accessible.
-* **Port:** Include the port number if you're not using the default ports (`80` for `http`, `443` for `https`).
+* **プロトコル:** 設定に応じて`http`または`https`を使用します。
+ * SSLを設定していない場合は`http`を使用します。
+ * SSLを構成済みの場合は`https`を使用します。
+* **ドメイン/IP:** これは、アプリケーションがアクセス可能なドメイン名またはIPアドレスです。
+* **ポート:** デフォルトのポート(`http`は`80`、`https`は`443`)以外を使用している場合、ポート番号を含めます。
-### SSL Requirements
+### SSL 要件
-SSL (HTTPS) is required for certain browser features to work properly. While these features might work during local development (as browsers treat localhost differently), a proper SSL setup is needed when hosting Twenty on a regular domain.
+SSL(HTTPS)は、特定のブラウザ機能が正しく動作するために必要です。 SSL(HTTPS)は、特定のブラウザ機能が正しく動作するために必要です。 SSL(HTTPS)は、特定のブラウザ機能が正しく動作するために必要です。 これらの機能は、ローカル開発中に動作するかもしれませんが(ブラウザがlocalhostを異なる扱い方をするため)、Twentyを通常のドメインでホスティングする場合、適切なSSLの設定が必要です。
-For example, the clipboard API might require a secure context - some features like copy buttons throughout the application might not work without HTTPS enabled.
+たとえば、クリップボードAPIは安全なコンテキストが必要かもしれません - アプリケーション全体でのコピー ボタンのような機能は、HTTPSが有効でないと動作しないかもしれません。
-We strongly recommend setting up Twenty behind a reverse proxy with SSL termination for optimal security and functionality.
+最適なセキュリティと機能のために、SSL終了を備えたリバースプロキシの背後にTwentyを設定することを強くお勧めします。
-#### Configuring `SERVER_URL`
+#### `SERVER_URL`の構成
-1. **Determine Your Access URL**
- * **Without Reverse Proxy (Direct Access):**
+1. **アクセスURLを特定する**
+ * **リバースプロキシがない場合(直接アクセス):**
- If you're accessing the application directly without a reverse proxy:
+ リバースプロキシなしでアプリケーションに直接アクセスする場合:
```ini
SERVER_URL=http://your-domain-or-ip:3000
```
- * **With Reverse Proxy (Standard Ports):**
+ * **リバースプロキシを使用する場合(標準ポート):**
- If you're using a reverse proxy like Nginx or Traefik and have SSL configured:
+ NginxやTraefikのようなリバースプロキシを使用し、SSLを構成している場合:
```ini
SERVER_URL=https://your-domain-or-ip
```
- * **With Reverse Proxy (Custom Ports):**
+ * **リバースプロキシを使用する場合(カスタムポート):**
- If you're using non-standard ports:
+ 標準以外のポートを使用している場合:
```ini
SERVER_URL=https://your-domain-or-ip:custom-port
```
-2. **Update the `.env` File**
+2. **.env ファイルを更新**
- Open your `.env` file and update the `SERVER_URL`:
+ .env`ファイルを開き、`SERVER_URL\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\`を更新します:
```ini
SERVER_URL=http(s)://your-domain-or-ip:your-port
```
- **Examples:**
+ **例:**
- * Direct access without SSL:
+ * SSLなしの直接アクセス:
```ini
SERVER_URL=http://123.45.67.89:3000
```
- * Access via domain with SSL:
+ * ドメイン経由でSSLを使用してアクセス:
```ini
SERVER_URL=https://mytwentyapp.com
```
-3. **Restart the Application**
+3. **アプリケーションを再起動**
- For changes to take effect, restart the Docker containers:
+ 変更を反映するために、Dockerコンテナを再起動します:
```bash
docker compose down
docker compose up -d
```
-#### Considerations
+#### 考慮事項
-* **Reverse Proxy Configuration:**
+* **リバースプロキシ構成:**
- Ensure your reverse proxy forwards requests to the correct internal port (`3000` by default). Configure SSL termination and any necessary headers.
+ リバースプロキシが正しい内部ポート(デフォルトでは`3000`)にリクエストを転送することを確認してください。 SSL終端と必要なヘッダーを設定します。 SSL終端と必要なヘッダーを設定します。 SSL終端と必要なヘッダーを設定します。
-* **Firewall Settings:**
+* **ファイアウォール設定:**
- Open necessary ports in your firewall to allow external access.
+ 外部アクセスを許可するためにファイアウォールで必要なポートを開けます。
-* **Consistency:**
+* **一貫性:**
- The `SERVER_URL` must match how users access your application in their browsers.
+ `SERVER_URL`は、ユーザーがブラウザでアプリケーションにアクセスする方法と一致する必要があります。
-#### Persistence
+#### 永続性
-* **Data Volumes:**
+* **データボリューム:**
- The Docker Compose configuration uses volumes to persist data for the database and server storage.
+ Docker Compose 構成では、データベースとサーバーストレージのデータを永続化するためにボリュームを使用します。
-* **Stateless Environments:**
+* **ステートレス環境:**
- If deploying to a stateless environment (e.g., certain cloud services), configure external storage to persist data.
+ ステートレス環境(例: 一部のクラウドサービス)に展開する場合、データを永続化するために外部ストレージを設定します。
-## 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 など) を使用
+* **機密データを暗号化** — バックアップを暗号化で保護
+* **複数のコピーを保持** — 日次・週次・月次のバックアップを保持
-## Troubleshooting
+## トラブルシューティング
-If you encounter any problem, check [Troubleshooting](/l/ja/developers/self-host/capabilities/troubleshooting) for solutions.
+問題が発生した場合は、[トラブルシューティング](/l/ja/developers/self-host/capabilities/troubleshooting)を確認して解決策を見つけてください。
diff --git a/packages/twenty-docs/l/ja/developers/self-host/capabilities/setup.mdx b/packages/twenty-docs/l/ja/developers/self-host/capabilities/setup.mdx
index adfd285e70..972b7903a4 100644
--- a/packages/twenty-docs/l/ja/developers/self-host/capabilities/setup.mdx
+++ b/packages/twenty-docs/l/ja/developers/self-host/capabilities/setup.mdx
@@ -1,146 +1,148 @@
---
-title: Setup
+title: セットアップ
---
-# Configuration Management
+# 構成管理
- **First time installing?** Follow the [Docker Compose installation guide](/l/ja/developers/self-host/capabilities/docker-compose) to get Twenty running, then return here for configuration.
+ **初めてインストールしますか?** [Docker Compose インストールガイド](/l/ja/developers/self-host/capabilities/docker-compose)に従ってTwentyを起動し、その後はここに戻り構成してください。
-Twenty offers **two configuration modes** to suit different deployment needs:
+Twentyは、異なる展開ニーズに合わせて**2つの構成モード**を提供します:
-**Admin panel access:** Only users with admin privileges (`canAccessFullAdminPanel: true`) can access the configuration interface.
+**管理パネルアクセス:** 管理者権限を持つユーザーだけが (`canAccessFullAdminPanel: true`) 構成インターフェースにアクセスできます。
-## 1. Admin Panel Configuration (Default)
+## 1. 管理パネル構成(デフォルト)
```bash
IS_CONFIG_VARIABLES_IN_DB_ENABLED=true # default
```
-**Most configuration happens through the UI** after installation:
+**ほとんどの構成は、インストール後にUIを通じて行われます。**
-1. Access your Twenty instance (usually `http://localhost:3000`)
-2. Go to **Settings / Admin Panel / Configuration Variables**
-3. Configure integrations, email, storage, and more
-4. Changes take effect immediately (within 15 seconds for multi-container deployments)
+1. Twentyインスタンスにアクセスしてください (通常は `http://localhost:3000`)
+2. **設定 / 管理パネル / 構成変数**に移動
+3. 統合、メール、ストレージなどを構成します
+4. 変更はすぐに(マルチコンテナ展開の場合、15秒以内に)効果が出ます。
- **Multi-Container Deployments:** When using database configuration (`IS_CONFIG_VARIABLES_IN_DB_ENABLED=true`), both server and worker containers read from the same database. Admin panel changes affect both automatically, eliminating the need to duplicate environment variables between containers (except for infrastructure variables).
+ **マルチコンテナ展開:** データベース構成を使用する場合 (`IS_CONFIG_VARIABLES_IN_DB_ENABLED=true`)、サーバーとワーカーコンテナの両方が同じデータベースから読み込みます。 管理パネルの変更は両方に自動的に影響し、コンテナ間で環境変数を重複させる必要がなくなります(インフラストラクチャの変数を除く)。
+ 管理パネルの変更は両方に自動的に影響し、コンテナ間で環境変数を重複させる必要がなくなります(インフラストラクチャの変数を除く)。
-**What you can configure through the admin panel:**
+**管理パネルを通じて構成できること:**
-* **Authentication** - Google/Microsoft OAuth, password settings
-* **Email** - SMTP settings, templates, verification
-* **Storage** - S3 configuration, local storage paths
-* **Integrations** - Gmail, Google Calendar, Microsoft services
-* **Workflow & Rate Limiting** - Execution limits, API throttling
-* **And much more...**
+* **認証** - Google/Microsoft OAuth、パスワード設定
+* **メール** - SMTP設定、テンプレート、検証
+* **ストレージ** - S3構成、ローカルストレージパス
+* **統合** - Gmail、Googleカレンダー、Microsoftサービス
+* **ワークフローとレート制限** - 実行制限、APIスロットリング
+* **さらに多くのこと...**
-
+
- Each variable is documented with descriptions in your admin panel at **Settings → Admin Panel → Configuration Variables**.
- Some infrastructure settings like database connections (`PG_DATABASE_URL`), server URLs (`SERVER_URL`), and app secrets (`APP_SECRET`) can only be configured via `.env` file.
+ 各変数は、**設定 → 管理パネル → 構成変数** で説明付きでドキュメント化されています。
+ 各変数は、**設定 → 管理パネル → 構成変数** で説明付きでドキュメント化されています。
+ データベース接続 (`PG_DATABASE_URL`)、サーバーURL (`SERVER_URL`)、アプリの秘密キー (`APP_SECRET`) など、一部のインフラ設定は `.env` ファイルを介してのみ構成可能です。
- [Complete technical reference →](https://github.com/twentyhq/twenty/blob/main/packages/twenty-server/src/engine/core-modules/twenty-config/config-variables.ts)
+ [ 完全な技術リファレンス →](https://github.com/twentyhq/twenty/blob/main/packages/twenty-server/src/engine/core-modules/twenty-config/config-variables.ts)
-## 2. Environment-Only Configuration
+## 2. 環境のみの構成
```bash
IS_CONFIG_VARIABLES_IN_DB_ENABLED=false
```
-**All configuration managed through `.env` files:**
+**すべての構成が `.env` ファイルで管理されます:**
-1. Set `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false` in your `.env` file
-2. Add all configuration variables to your `.env` file
-3. Restart containers for changes to take effect
-4. Admin panel will show current values but cannot modify them
+1. `.env` ファイル内で `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false` を設定
+2. すべての構成変数を `.env` ファイルに追加
+3. 変更を有効にするためにコンテナを再起動してください
+4. 管理パネルは現在の値を表示しますが、修正はできません
-## Multi-Workspace Mode
+## マルチワークスペースモード
-By default, Twenty runs in **single-workspace mode** — ideal for most self-hosted deployments where you need one CRM instance for your organization.
+デフォルトでは、Twenty は**シングルワークスペースモード**で動作します—組織向けに 1 つの CRM インスタンスが必要な多くのセルフホスト型デプロイメントに最適です。
-### Single-Workspace Mode (Default)
+### シングルワークスペースモード(デフォルト)
```bash
IS_MULTIWORKSPACE_ENABLED=false # default
```
-* One workspace per Twenty instance
-* First user automatically becomes admin with full privileges (`canImpersonate` and `canAccessFullAdminPanel`)
-* New signups are disabled after the first workspace is created
-* Simple URL structure: `https://your-domain.com`
+* Twenty の各インスタンスにつき 1 つのワークスペース
+* 最初のユーザーは自動的にフル権限の管理者になります(`canImpersonate` と `canAccessFullAdminPanel`)
+* 最初のワークスペース作成後は新規サインアップが無効になります
+* シンプルな URL 構造: `https://your-domain.com`
-### Enabling Multi-Workspace Mode
+### マルチワークスペースモードの有効化
```bash
IS_MULTIWORKSPACE_ENABLED=true
DEFAULT_SUBDOMAIN=app # default value
```
-Enable multi-workspace mode for SaaS-like deployments where multiple independent teams need their own workspaces on the same Twenty instance.
+同一の Twenty インスタンス上で複数の独立したチームがそれぞれのワークスペースを必要とする、SaaS のようなデプロイメント向けにマルチワークスペースモードを有効にします。
-**Key differences from single-workspace mode:**
+**シングルワークスペースモードとの主な違い:**
-* Multiple workspaces can be created on the same instance
-* Each workspace gets its own subdomain (e.g., `sales.your-domain.com`, `marketing.your-domain.com`)
-* Users sign up and log in at `{DEFAULT_SUBDOMAIN}.your-domain.com` (e.g., `app.your-domain.com`)
-* No automatic admin privileges — first user in each workspace is a regular user
-* Workspace-specific settings like subdomain and custom domain become available in workspace settings
+* 同一インスタンス上に複数のワークスペースを作成できます
+* 各ワークスペースに専用のサブドメインが割り当てられます(例: `sales.your-domain.com`、`marketing.your-domain.com`)
+* ユーザーは `{DEFAULT_SUBDOMAIN}.your-domain.com` でサインアップおよびログインします(例: `app.your-domain.com`)
+* 管理者権限は自動付与されません—各ワークスペースの最初のユーザーは一般ユーザーです
+* サブドメインやカスタムドメインなどのワークスペース固有の設定がワークスペース設定で利用可能になります
- **Environment-only setting:** `IS_MULTIWORKSPACE_ENABLED` can only be configured via `.env` file and requires a restart. It cannot be changed through the admin panel.
+ **環境専用の設定:** `IS_MULTIWORKSPACE_ENABLED` は `.env` ファイルでのみ設定でき、再起動が必要です。 管理パネルからは変更できません。
-### DNS Configuration for Multi-Workspace
+### マルチワークスペース向けの DNS 構成
-When using multi-workspace mode, configure your DNS with a wildcard record to allow dynamic subdomain creation:
+マルチワークスペースモードを使用する場合、動的なサブドメイン作成を可能にするために、ワイルドカードレコードで DNS を構成してください:
```
*.your-domain.com -> your-server-ip
```
-This enables automatic subdomain routing for new workspaces without manual DNS configuration.
+これにより、手動の DNS 構成なしで新規ワークスペースへのサブドメインルーティングが自動化されます。
-### Restricting Workspace Creation
+### ワークスペース作成の制限
-In multi-workspace mode, you may want to limit who can create new workspaces:
+マルチワークスペースモードでは、新しいワークスペースを作成できるユーザーを制限したい場合があります:
```bash
IS_WORKSPACE_CREATION_LIMITED_TO_SERVER_ADMINS=true
```
-When enabled, only users with `canAccessFullAdminPanel` can create additional workspaces. Users can still create their first workspace during initial signup.
+有効にすると、`canAccessFullAdminPanel` を持つユーザーのみが追加のワークスペースを作成できます。 初回サインアップ時には、ユーザーは引き続き最初のワークスペースを作成できます。
-## Gmail & Google Calendar Integration
+## Gmail & Googleカレンダー統合
-### Create Google Cloud Project
+### Google Cloudプロジェクトを作成
-1. Go to [Google Cloud Console](https://console.cloud.google.com/)
-2. Create a new project or select existing one
-3. Enable these APIs:
+1. [Google Cloud Console](https://console.cloud.google.com/) にアクセス
+2. 新しいプロジェクトを作成するか既存のプロジェクトを選択
+3. 以下のAPIを有効にします:
* [Gmail API](https://console.cloud.google.com/apis/library/gmail.googleapis.com)
-* [Google Calendar API](https://console.cloud.google.com/apis/library/calendar-json.googleapis.com)
+* [GoogleカレンダーAPI](https://console.cloud.google.com/apis/library/calendar-json.googleapis.com)
* [People API](https://console.cloud.google.com/apis/library/people.googleapis.com)
-### Configure OAuth
+### OAuthの構成
-1. Go to [Credentials](https://console.cloud.google.com/apis/credentials)
-2. Create OAuth 2.0 Client ID
-3. Add these redirect URIs:
- * `https://{your-domain}/auth/google/redirect` (for SSO)
- * `https://{your-domain}/auth/google-apis/get-access-token` (for integrations)
+1. [資格情報](https://console.cloud.google.com/apis/credentials)にアクセス
+2. OAuth 2.0 クライアントIDを作成
+3. 次のリダイレクトURIを追加:
+ * `https://{your-domain}/auth/google/redirect` (SSO用)
+ * `https://{your-domain}/auth/google-apis/get-access-token` (統合用)
-### Configure in Twenty
+### Twentyで構成
-1. Go to **Settings → Admin Panel → Configuration Variables**
-2. Find the **Google Auth** section
-3. Set these variables:
+1. **設定 → 管理パネル → 構成変数** に移動
+2. **Google Auth** セクションを見つけます
+3. 次の変数を設定:
* `MESSAGING_PROVIDER_GMAIL_ENABLED=true`
* `CALENDAR_PROVIDER_GOOGLE_ENABLED=true`
* `AUTH_GOOGLE_CLIENT_ID={client-id}`
@@ -149,35 +151,35 @@ When enabled, only users with `canAccessFullAdminPanel` can create additional wo
* `AUTH_GOOGLE_APIS_CALLBACK_URL=https://{your-domain}/auth/google-apis/get-access-token`
- **Environment-only mode:** If you set `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false`, add these variables to your `.env` file instead.
+ **環境専用モード:** `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false` を設定した場合、これらの変数を `.env` ファイルに追加してください。
-**Required scopes** (automatically configured):
-[See relevant source code](https://github.com/twentyhq/twenty/blob/main/packages/twenty-server/src/engine/core-modules/auth/utils/get-google-apis-oauth-scopes.ts#L4-L10)
+**必要なスコープ** (自動的に構成される):
+[関連ソースコードを見る](https://github.com/twentyhq/twenty/blob/main/packages/twenty-server/src/engine/core-modules/auth/utils/get-google-apis-oauth-scopes.ts#L4-L10)
* `https://www.googleapis.com/auth/calendar.events`
* `https://www.googleapis.com/auth/gmail.readonly`
* `https://www.googleapis.com/auth/profile.emails.read`
-### If your app is in test mode
+### アプリがテストモードの場合
-If your app is in test mode, you will need to add test users to your project.
+アプリがテストモードの場合、プロジェクトにテストユーザーを追加する必要があります。
-Under [OAuth consent screen](https://console.cloud.google.com/apis/credentials/consent), add your test users to the "Test users" section.
+[OAuth 同意画面](https://console.cloud.google.com/apis/credentials/consent)で、「テストユーザー」セクションにテストユーザーを追加してください。
-## Microsoft 365 Integration
+## Microsoft 365 統合
- Users must have a [Microsoft 365 Licence](https://admin.microsoft.com/Adminportal/Home) to be able to use the Calendar and Messaging API. They will not be able to sync their account on Twenty without one.
+ カレンダーおよびメッセージングAPIを使用するためには、[Microsoft 365 ライセンス](https://admin.microsoft.com/Adminportal/Home)が必要です。 They will not be able to sync their account on Twenty without one. それがない場合、Twenty でアカウントを同期できません。
-### Create a project in Microsoft Azure
+### Microsoft Azureでプロジェクトを作成
-You will need to create a project in [Microsoft Azure](https://portal.azure.com/#view/Microsoft_AAD_IAM/AppGalleryBladeV2) and get the credentials.
+[Microsoft Azure](https://portal.azure.com/#view/Microsoft_AAD_IAM/AppGalleryBladeV2)でプロジェクトを作成し、資格情報を取得してください。
-### Enable APIs
+### APIを有効にする
-On Microsoft Azure Console enable the following APIs in "Permissions":
+Microsoft Azureコンソールで"権限"の欄で以下のAPIを有効にします:
* Microsoft Graph: Mail.ReadWrite
* Microsoft Graph: Mail.Send
@@ -188,20 +190,20 @@ On Microsoft Azure Console enable the following APIs in "Permissions":
* Microsoft Graph: profile
* Microsoft Graph: offline_access
-Note: "Mail.ReadWrite" and "Mail.Send" are only mandatory if you want to send emails using our workflow actions. You can use "Mail.Read" instead if you only want to receive emails.
+注: "Mail.ReadWrite" と "Mail.Send" は、ワークフローアクションを使用してメールを送信する場合に必須です。 メールを受信するだけの場合は、"Mail.Read"を使用できます。 メールを受信するだけの場合は、"Mail.Read"を使用できます。 メールを受信するだけの場合は、"Mail.Read"を使用できます。
-### Authorized redirect URIs
+### 認証されたリダイレクトURI
-You need to add the following redirect URIs to your project:
+プロジェクトに次のリダイレクトURIを追加する必要があります:
-* `https://{your-domain}/auth/microsoft/redirect` if you want to use Microsoft SSO
+* `https://{your-domain}/auth/microsoft/redirect` マイクロソフトSSO を使用する場合
* `https://{your-domain}/auth/microsoft-apis/get-access-token`
-### Configure in Twenty
+### Twentyで構成
-1. Go to **Settings → Admin Panel → Configuration Variables**
-2. Find the **Microsoft Auth** section
-3. Set these variables:
+1. **設定 → 管理パネル → 構成変数** に移動
+2. **Microsoft Auth** セクションを見つけます
+3. 次の変数を設定:
* `MESSAGING_PROVIDER_MICROSOFT_ENABLED=true`
* `CALENDAR_PROVIDER_MICROSOFT_ENABLED=true`
* `AUTH_MICROSOFT_ENABLED=true`
@@ -211,32 +213,32 @@ You need to add the following redirect URIs to your project:
* `AUTH_MICROSOFT_APIS_CALLBACK_URL=https://{your-domain}/auth/microsoft-apis/get-access-token`
- **Environment-only mode:** If you set `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false`, add these variables to your `.env` file instead.
+ **環境専用モード:** `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false` を設定した場合、これらの変数を `.env` ファイルに追加してください。
-### Configure scopes
+### スコープを構成
-[See relevant source code](https://github.com/twentyhq/twenty/blob/main/packages/twenty-server/src/engine/core-modules/auth/utils/get-microsoft-apis-oauth-scopes.ts#L2-L9)
+[関連ソースコードを見る](https://github.com/twentyhq/twenty/blob/main/packages/twenty-server/src/engine/core-modules/auth/utils/get-microsoft-apis-oauth-scopes.ts#L2-L9)
* 'openid'
-* 'email'
-* 'profile'
+* 'メール'
+* 'プロフィール'
* 'offline_access'
* 'Mail.ReadWrite'
* 'Mail.Send'
* 'Calendars.Read'
-### If your app is in test mode
+### アプリがテストモードの場合
-If your app is in test mode, you will need to add test users to your project.
+アプリがテストモードの場合、プロジェクトにテストユーザーを追加する必要があります。
-Add your test users to the "Users and groups" section.
+「ユーザーとグループ」セクションにテストユーザーを追加してください。
-## Background Jobs for Calendar & Messaging
+## カレンダーとメッセージングのバックグラウンドジョブ
-After configuring Gmail, Google Calendar, or Microsoft 365 integrations, you need to start the background jobs that sync data.
+Gmail、Googleカレンダー、またはMicrosoft 365統合を構成した後、データを同期するバックグラウンドジョブを開始する必要があります。
-Register the following recurring jobs in your worker container:
+次の定期ジョブをワーカーコンテナに登録してください:
```bash
# from your worker container
@@ -249,15 +251,15 @@ yarn command:prod cron:calendar:ongoing-stale
yarn command:prod cron:workflow:automated-cron-trigger
```
-## Email Configuration
+## メール設定
-1. Go to **Settings → Admin Panel → Configuration Variables**
-2. Find the **Email** section
-3. Configure your SMTP settings:
+1. **設定 → 管理パネル → 構成変数** に移動
+2. **メール** セクションを見つけます
+3. SMTP設定を構成:
- You will need to provision an [App Password](https://support.google.com/accounts/answer/185833).
+ [アプリパスワード](https://support.google.com/accounts/answer/185833)を準備する必要があります。
* EMAIL_DRIVER=smtp
* EMAIL_SMTP_HOST=smtp.gmail.com
@@ -267,7 +269,7 @@ yarn command:prod cron:workflow:automated-cron-trigger
- Keep in mind that if you have 2FA enabled, you will need to provision an [App Password](https://support.microsoft.com/en-us/account-billing/manage-app-passwords-for-two-step-verification-d6dc8c6d-4bf7-4851-ad95-6d07799387e9).
+ 2FAを有効にしている場合、[アプリパスワード](https://support.microsoft.com/en-us/account-billing/manage-app-passwords-for-two-step-verification-d6dc8c6d-4bf7-4851-ad95-6d07799387e9)を準備する必要があります。
* EMAIL_DRIVER=smtp
* EMAIL_SMTP_HOST=smtp.office365.com
@@ -277,11 +279,11 @@ yarn command:prod cron:workflow:automated-cron-trigger
- **smtp4dev** is a fake SMTP email server for development and testing.
+ **smtp4dev** は開発とテストのためのフェイクSMTPメールサーバーです。
- * Run the smtp4dev image: `docker run --rm -it -p 8090:80 -p 2525:25 rnwood/smtp4dev`
- * Access the smtp4dev ui here: [http://localhost:8090](http://localhost:8090)
- * Set the following variables:
+ * smtp4devイメージを実行: `docker run --rm -it -p 8090:80 -p 2525:25 rnwood/smtp4dev`
+ * smtp4dev UIにアクセス: [http://localhost:8090](http://localhost:8090)
+ * 次の変数を設定:
* EMAIL_DRIVER=smtp
* EMAIL_SMTP_HOST=localhost
* EMAIL_SMTP_PORT=2525
@@ -289,5 +291,49 @@ yarn command:prod cron:workflow:automated-cron-trigger
- **Environment-only mode:** If you set `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false`, add these variables to your `.env` file instead.
+ **環境専用モード:** `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false` を設定した場合、これらの変数を `.env` ファイルに追加してください。
+
+## サーバーレス関数
+
+Twenty は、ワークフローやカスタムロジックのためのサーバーレス関数をサポートします。 実行環境は、`SERVERLESS_TYPE` 環境変数で設定されます。
+
+
+ **セキュリティに関する注意:** ローカルのサーバーレスドライバー(`SERVERLESS_TYPE=LOCAL`)は、ホスト上の Node.js プロセス内でサンドボックスなしにコードを直接実行します。 開発では、信頼できるコードにのみ使用してください。 信頼できないコードを扱う本番デプロイでは、`SERVERLESS_TYPE=LAMBDA` または `SERVERLESS_TYPE=DISABLED` の使用を強く推奨します。
+
+
+### 利用可能なドライバー
+
+| ドライバー | 環境変数 | ユースケース | セキュリティレベル |
+| ------ | -------------------------- | ----------------- | --------------- |
+| 無効 | `SERVERLESS_TYPE=DISABLED` | サーバーレス関数を完全に無効化する | 該当なし |
+| ローカル | `SERVERLESS_TYPE=LOCAL` | 開発および信頼できる環境 | 低(サンドボックスなし) |
+| Lambda | `SERVERLESS_TYPE=LAMBDA` | 信頼できないコードを扱う本番環境 | 高(ハードウェアレベルの分離) |
+
+### 推奨構成
+
+**開発向け:**
+
+```bash
+SERVERLESS_TYPE=LOCAL # default
+```
+
+**本番向け(AWS):**
+
+```bash
+SERVERLESS_TYPE=LAMBDA
+SERVERLESS_LAMBDA_REGION=us-east-1
+SERVERLESS_LAMBDA_ROLE=arn:aws:iam::123456789:role/your-lambda-role
+SERVERLESS_LAMBDA_ACCESS_KEY_ID=your-access-key
+SERVERLESS_LAMBDA_SECRET_ACCESS_KEY=your-secret-key
+```
+
+**サーバーレス関数を無効化するには:**
+
+```bash
+SERVERLESS_TYPE=DISABLED
+```
+
+
+ `SERVERLESS_TYPE=DISABLED` を使用している場合、サーバーレス関数を実行しようとするとエラーが返されます。 これは、サーバーレス関数の機能なしで Twenty を実行したい場合に便利です。
+
diff --git a/packages/twenty-docs/l/ja/developers/self-host/capabilities/troubleshooting.mdx b/packages/twenty-docs/l/ja/developers/self-host/capabilities/troubleshooting.mdx
index d2187aedac..0e2a94959f 100644
--- a/packages/twenty-docs/l/ja/developers/self-host/capabilities/troubleshooting.mdx
+++ b/packages/twenty-docs/l/ja/developers/self-host/capabilities/troubleshooting.mdx
@@ -1,26 +1,27 @@
---
-title: Troubleshooting
+title: トラブルシューティング
---
-## Troubleshooting
+## トラブルシューティング
-If you encounter any problem while setting up environment for development, upgrading your instance or self-hosting,
-here are some solutions for common problems.
+開発環境のセットアップ、バージョンアップまたはセルフホスティング中に問題が発生した場合、こちらによくある問題の解決策を示しています。
-### Self-hosting
+### セルフホスティング
-#### First install results in `password authentication failed for user "postgres"`
+#### 初回インストールに`ユーザー "postgres" のパスワード認証失敗`と表示される
-🚨 **IMPORTANT: This solution is ONLY for fresh installations** 🚨
-If you have an existing Twenty instance with production data, **DO NOT** follow these steps as they will permanently delete your database!
+🚨 **重要: この解決策は新規インストールの場合のみ適用されます** 🚨
+すでに稼働中のTwentyインスタンスに本番データがある場合、これらの手順に従うとデータベースが完全に削除されますので、絶対に従わないでください。
-While installing Twenty for the first time, you might want to change the default database password.
-The password you set during the first installation becomes permanently stored in the database volume. If you later try to change this password in your configuration without removing the old volume, you'll get authentication errors because the database is still using the original password.
+Twentyを初めてインストールする際には、デフォルトのデータベースパスワードを変更する必要があるかもしれません。
+初回インストール時に設定されたパスワードはデータベースボリュームに永久に保存されます。 後になってこのパスワードを構成で変更しようとしても、古いボリュームを削除しない限り認証エラーが発生します。データベースが元のパスワードを使用しているためです。
+初回インストール時に設定されたパスワードはデータベースボリュームに永久に保存されます。 後になってこのパスワードを構成で変更しようとしても、古いボリュームを削除しない限り認証エラーが発生します。データベースが元のパスワードを使用しているためです。
+初回インストール時に設定されたパスワードはデータベースボリュームに永久に保存されます。 後になってこのパスワードを構成で変更しようとしても、古いボリュームを削除しない限り認証エラーが発生します。データベースが元のパスワードを使用しているためです。
-⚠️ WARNING: Following steps will PERMANENTLY DELETE all database data! ⚠️
-Only proceed if this is a fresh installation with no important data.
+⚠️ 警告: 以下のステップを実行すると、データベース内のすべてのデータが完全に削除されます! ⚠️
+これは重要なデータのない新規インストールの場合のみ進めてください。
-In order to update the `PG_DATABASE_PASSWORD` you need to:
+`PG_DATABASE_PASSWORD`を更新するには、以下が必要です:
```sh
# Update the PG_DATABASE_PASSWORD in .env
@@ -28,33 +29,35 @@ docker compose down --volumes
docker compose up -d
```
-#### CR line breaks found [Windows]
+#### CR行区切り[Windows]が見つかる
-This is due to the line break characters of Windows and the git configuration. Try running:
+これはWindowsの改行文字とgit構成のためです。 次を実行してみてください: 次を実行してみてください: 次を実行してみてください:
```
git config --global core.autocrlf false
```
-Then delete the repository and clone it again.
+その後、リポジトリを削除して再クローンします。
-#### Missing metadata schema
+#### メタデータスキーマが見つかりません
-During Twenty installation, you need to provision your postgres database with the right schemas, extensions, and users.
-If you're successful in running this provisioning, you should have `default` and `metadata` schemas in your database.
-If you don't, make sure you don't have more than one postgres instance running on your computer.
+Twentyのインストール中に、postgresデータベースを適切なスキーマ、拡張、およびユーザーで準備する必要があります。
+この準備がうまくいけば、あなたのデータベースに`default`と`metadata`スキーマがあるはずです。
+そうでない場合は、同じコンピュータ上で複数のpostgresインスタンスを実行していないことを確認してください。
+この準備がうまくいけば、あなたのデータベースに`default`と`metadata`スキーマがあるはずです。
+そうでない場合は、同じコンピュータ上で複数のpostgresインスタンスを実行していないことを確認してください。
-#### Cannot find module 'twenty-emails' or its corresponding type declarations.
+#### モジュール'twenty-emails' またはその対応する型宣言が見つかりません。
-You have to build the package `twenty-emails` before running the initialization of the database with `npx nx run twenty-emails:build`
+データベースの初期化を実行する前に`npx nx run twenty-emails:build`でtwenty-emailsパッケージをビルドする必要があります。
-#### Missing twenty-x package
+#### twenty-xパッケージが見つかりません
-Make sure to run yarn in the root directory and then run `npx nx server:dev twenty-server`. If this still doesn't work try building the missing package manually.
+ルートディレクトリでyarnを実行し、その後 `npx nx server:dev twenty-server`を実行してください。 それでも動作しない場合は、足りないパッケージを手動でビルドしてみてください。 それでも動作しない場合は、足りないパッケージを手動でビルドしてみてください。 それでも動作しない場合は、足りないパッケージを手動でビルドしてみてください。
-#### Lint on Save not working
+#### 保存時のLintが機能しない
-This should work out of the box with the eslint extension installed. If this doesn't work try adding this to your vscode setting (on the dev container scope):
+eslint拡張子がインストールされている場合、これは標準設定で動作するはずです。 eslint拡張子がインストールされている場合、これは標準設定で動作するはずです。 もしこれが機能しない場合、vscode設定で以下を追加してみてください(開発コンテナ範囲内で)。
```
"editor.codeActionsOnSave": {
@@ -64,85 +67,88 @@ This should work out of the box with the eslint extension installed. If this doe
}
```
-#### While running `npx nx start` or `npx nx start twenty-front`, Out of memory error is thrown
+#### `npx nx start` または `npx nx start twenty-front` 実行中にメモリエラーが発生
-In `packages/twenty-front/.env` uncomment `VITE_DISABLE_TYPESCRIPT_CHECKER=true` to disable background checks thus reducing amount of needed RAM.
+`packages/twenty-front/.env`で`VITE_DISABLE_TYPESCRIPT_CHECKER=true` と `VITE_DISABLE_ESLINT_CHECKER=true` をコメント解除して、バックグラウンドチェックを無効化し、必要なRAMの量を減らします。
-**If it does not work:**
-Run only the services you need, instead of `npx nx start`. For instance, if you work on the server, run only `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:
+**うまくいかない場合:**
+WSL 上で `npx nx run twenty-server:start` だけを実行しようとして、以下のメモリエラーで失敗する場合:
`FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory`
-Workaround is to execute below command in terminal or add it in .bashrc profile to get setup automatically:
+以下のコマンドをターミナルで実行するか、.bashrcプロファイルに追加して自動セットアップします:
`export NODE_OPTIONS="--max-old-space-size=8192"`
-The --max-old-space-size=8192 flag sets an upper limit of 8GB for the Node.js heap; usage scales with application demand.
-Reference: https://stackoverflow.com/questions/56982005/where-do-i-set-node-options-max-old-space-size-2048
+\--max-old-space-size=8192 フラグはNode.jsヒープの上限を8GBに設定します; 使用量はアプリケーションの要求に応じてスケールします。
+参考: https://stackoverflow.com/questions/56982005/where-do-i-set-node-options-max-old-space-size-2048
+参考: https://stackoverflow.com/questions/56982005/where-do-i-set-node-options-max-old-space-size-2048
+参考: 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. At Twenty, we noticed that some VScode extensions were taking a lot of RAM so we temporarily disable them.
+**うまくいかない場合:**
+マシンの RAM を最も消費しているプロセスを調査してください。 **これが機能しない場合:**\
+あなたのマシンのRAMを最も使用しているプロセスを調査してください。 Twentyでは、一部のVScode拡張機能が多くのRAMを使用していることに気付き、一時的に無効化しました。
-**If it does not work:**
-Restart your machine helps to clean up ghost processes.
+**うまくいかない場合:**
+マシンを再起動すると、ゴーストプロセスのクリーンアップに役立ちます。
-#### While running `npx nx start` there are weird [0] and [1] in logs
+#### `npx nx start`を実行中にログに謎の[0]や[1]が表示される
-That's expected as command `npx nx start` is running more commands under the hood
+`npx nx start`コマンドが複数のコマンドを裏で実行しているため、これは予想された挙動です。
-#### No emails are sent
+#### メールが送信されない
-Most of the time, it's because the `worker` is not running in the background. Try to run
+ほとんどの場合、バックグラウンドで`worker`が動作していないのが原因です。 実行してみてください 実行してみてください 実行してみてください
```
npx nx worker twenty-server
```
-#### Cannot connect my Microsoft 365 account
+#### Microsoft 365アカウントに接続できない
-Most of the time, it's because your admin has not enabled the Microsoft 365 Licence for your account. Check [https://admin.microsoft.com/](https://admin.microsoft.com/Adminportal/Home).
+ほとんどの場合、管理者があなたのアカウントのMicrosoft 365ライセンスを有効化していないことが原因です。 [https://admin.microsoft.com/](https://admin.microsoft.com/Adminportal/Home)を確認してください。 [https://admin.microsoft.com/](https://admin.microsoft.com/Adminportal/Home)を確認してください。 [https://admin.microsoft.com/](https://admin.microsoft.com/Adminportal/Home)を確認してください。
-If you have an error code `AADSTS50020`, it probably means that you are using a personal Microsoft account. This is not supported yet. More info [here](https://learn.microsoft.com/fr-fr/troubleshoot/entra/entra-id/app-integration/error-code-aadsts50020-user-account-identity-provider-does-not-exist)
+エラーコード`AADSTS50020`を受け取った場合、おそらく個人のMicrosoftアカウントを使用しています。 これはまだサポートされていません。 エラーコード`AADSTS50020`を受け取った場合、おそらく個人のMicrosoftアカウントを使用しています。 これはまだサポートされていません。 エラーコード`AADSTS50020`を受け取った場合、おそらく個人のMicrosoftアカウントを使用しています。 これはまだサポートされていません。 詳細は[こちら](https://learn.microsoft.com/fr-fr/troubleshoot/entra/entra-id/app-integration/error-code-aadsts50020-user-account-identity-provider-does-not-exist)
-#### While running `yarn` warnings appear in console
+#### `yarn`実行中の警告がコンソールに表示される
-Warnings are informing about pulling additional dependencies which aren't explicitly stated in `package.json`, so as long as no breaking error appears, everything should work as expected.
+警告は、`package.json`に明示的に記載されていない追加依存関係の取得を伝えており、破損するエラーがない限り、すべてが期待通りに動作するはずです。
-#### When user accesses login page, error about unauthorized user trying to access workspace appears in logs
+#### ログインページにアクセスした際、未認証ユーザーの作業スペースへのアクセスに関するエラーがログに表示される
-That's expected as user is unauthorized when logged out since its identity is not verified.
+これは予想された挙動で、ログアウト中のユーザーはアイデンティティが確認されていないため未認証です。
-#### How to check if your worker is running?
+#### ワーカーが稼働しているかどうかを確認するには?
-* Go to [webhook-test.com](https://webhook-test.com/) and copy **Your Unique Webhook URL**.
+* [webhook-test.com](https://webhook-test.com/)にアクセスし、**Your Unique Webhook URL**をコピーします。
-
+
-* Open your Twenty app, navigate to `/settings`, and enable the **Advanced** toggle at the bottom left of the screen.
-* Create a new webhook.
-* Paste **Your Unique Webhook URL** in the **Endpoint Url** field in Twenty. Set the **Filters** to `Companies` and `Created`.
+* Twentyアプリを開き、`/settings`に移動し、画面左下の**Advanced**トグルを有効にします。
+* 新しいWebhookを作成します。
+* **Your Unique Webhook URL**をTwentyの**Endpoint Url**フィールドに貼り付けます。 **Filters**を`Companies`と`Created`に設定します。
-
+
-* Go to `/objects/companies` and create a new company record.
-* Return to [webhook-test.com](https://webhook-test.com/) and check if a new **POST request** has been received.
+* `/objects/companies`にアクセスし、新しい企業レコードを作成します。
+* [webhook-test.com](https://webhook-test.com/)に戻り、新しい**POSTリクエスト**が受信されたか確認します。
-
+
-* If a **POST request** is received, your worker is running successfully. Otherwise, you need to troubleshoot your worker.
+* **POSTリクエスト**が受信された場合、あなたのワーカーは正常に稼働しています。 そうでない場合は、ワーカーのトラブルシューティングが必要です。
-#### Front-end fails to start and returns error TS5042: Option 'project' cannot be mixed with source files on a command line
+#### フロントエンドが起動に失敗し、エラーTS5042: オプション'プロジェクト'はコマンドライン上でソースファイルと一緒に使用できません
-Comment out checker plugin in `packages/twenty-ui/vite-config.ts` like in example below
+例のように`packages/twenty-ui/vite-config.ts`内のチェッカープラグインをコメントアウトします
```
plugins: [
@@ -166,62 +172,62 @@ plugins: [
],
```
-#### Admin panel not accessible
+#### 管理パネルにアクセスできない
-Run `UPDATE core."user" SET "canAccessFullAdminPanel" = TRUE WHERE email = 'you@yourdomain.com';` in database container to get access to admin panel.
+adminパネルにアクセスするには、データベースコンテナで`UPDATE core."user" SET "canAccessFullAdminPanel" = TRUE WHERE email = 'you@yourdomain.com';`を実行します。
-### 1-click Docker compose
+### 1クリックでDocker構成
-#### Unable to Log In
+#### ログインできない
-If you can't log in after setup:
+セットアップ後にログインできない場合:
-1. Run the following commands:
+1. 次のコマンドを実行してください:
```bash
docker exec -it twenty-server-1 yarn
docker exec -it twenty-server-1 npx nx database:reset --configuration=no-seed
```
-2. Restart the Docker containers:
+2. Dockerコンテナを再起動してください:
```bash
docker compose down
docker compose up -d
```
-Note the database:reset command will completely erase your database and recreate it from scratch.
+database:resetコマンドはデータベースを完全に消去し、最初から再構築します。
-#### Connection Issues Behind a Reverse Proxy
+#### リバースプロキシの背後での接続問題
-If you're running Twenty behind a reverse proxy and experiencing connection issues:
+リバースプロキシの背後でTwentyを実行し、接続問題が発生している場合:
-1. **Verify SERVER_URL:**
+1. **SERVER_URLの確認:**
- Ensure `SERVER_URL` in your `.env` file matches your external access URL, including `https` if SSL is enabled.
+ `.env`ファイルの`SERVER_URL`が外部アクセスURLと一致するようにし、SSLが有効なら`https`を含めます。
-2. **Check Reverse Proxy Settings:**
+2. **リバースプロキシ設定の確認:**
- * Confirm that your reverse proxy is correctly forwarding requests to the Twenty server.
- * Ensure headers like `X-Forwarded-For` and `X-Forwarded-Proto` are properly set.
+ * リバースプロキシがTwentyサーバーへのリクエストを正しく転送していることを確認してください。
+ * `X-Forwarded-For`や`X-Forwarded-Proto`といったヘッダーが正しく設定されていることを確認してください。
-3. **Restart Services:**
+3. **サービスの再起動:**
- After making changes, restart both the reverse proxy and Twenty containers.
+ 変更を行った後に、リバースプロキシとTwentyコンテナの両方を再起動します。
-#### Error when uploading an image - permission denied
+#### 画像のアップロード時にエラー - アクセス許可が拒否されました
-Switching the data folder ownership on the host from root to another user and group resolves this problem.
+ホストでのデータフォルダの所有権をrootから他のユーザーとグループに切り替えると、この問題が解決されます。
-## Getting Help
+## サポートを受ける
-If you encounter issues not covered in this guide:
+このガイドにカバーされていない問題がある場合:
-* Check Logs:
+* ログを確認:
- View container logs for error messages:
+ コンテナログを表示してエラーメッセージを確認します:
```bash
docker compose logs
```
-* Community Support:
+* コミュニティサポート:
- Reach out to the [Twenty community](https://github.com/twentyhq/twenty/issues) or [support channels](https://discord.gg/cx5n4Jzs57) for assistance.
+ [Twentyコミュニティ](https://github.com/twentyhq/twenty/issues)または[サポートチャンネル](https://discord.gg/cx5n4Jzs57)に連絡してサポートを受けてください。
diff --git a/packages/twenty-docs/l/ja/developers/self-host/capabilities/upgrade-guide.mdx b/packages/twenty-docs/l/ja/developers/self-host/capabilities/upgrade-guide.mdx
index 03a53f5685..7907875c96 100644
--- a/packages/twenty-docs/l/ja/developers/self-host/capabilities/upgrade-guide.mdx
+++ b/packages/twenty-docs/l/ja/developers/self-host/capabilities/upgrade-guide.mdx
@@ -1,40 +1,40 @@
---
-title: Upgrade guide
+title: アップグレードガイド
---
-## General guidelines
+## 一般ガイドライン
-**Always make sure to back up your database before starting the upgrade process** by running `docker exec -it {db_container_name_or_id} pg_dumpall -U {postgres_user} > databases_backup.sql`.
+**アップグレードプロセスを開始する前に、必ずデータベースのバックアップを作成してください**。以下のコマンドを実行します:`docker exec -it {db_container_name_or_id} pg_dumpall -U {postgres_user} > databases_backup.sql`.
-To restore backup, run `cat databases_backup.sql | docker exec -i {db_container_name_or_id} psql -U {postgres_user}`.
+バックアップを復元するには、次のコマンドを実行します:`cat databases_backup.sql | docker exec -i {db_container_name_or_id} psql -U {postgres_user}`.
-If you used Docker Compose, follow these steps:
+Docker Composeを使用している場合、次の手順に従います:
-1. In a terminal, on the host where Twenty is running, turn off Twenty: `docker compose down`
+1. Twentyを実行しているホスト上のターミナルで、Twentyを停止します:`docker compose down`
-2. Upgrade the version by changing the `TAG` value in the .env file near your docker-compose. ( We recommend consuming `major.minor` version such as `v0.53` )
+2. docker-compose近くにある.envファイルの`TAG`値を変更してバージョンをアップグレードします。 ( `v0.53` のように `major.minor` バージョンを使用することをお勧めします ) ( `v0.53` のように `major.minor` バージョンを使用することをお勧めします ) ( `v0.53` のように `major.minor` バージョンを使用することをお勧めします )
-3. Bring Twenty back online with `docker compose up -d`
+3. `docker compose up -d` でTwentyを再起動します。
-If you want to upgrade your instance by few versions, e.g. from v0.33.0 to v0.35.0, you have to upgrade your instance sequentially, in this example from v0.33.0 to v0.34.0, then from v0.34.0 to v0.35.0.
+例えば、v0.33.0 から v0.35.0 に数バージョンアップグレードしたい場合は、インスタンスを順次アップグレードする必要があります。この例では、まず v0.33.0 から v0.34.0 、次に v0.34.0から v0.35.0 にアップグレードします。
-**Make sure that after each upgraded version you have non-corrupted backup.**
+**各アップグレードしたバージョンの後に壊れていないバックアップを必ず確認してください。**
-## Version-specific upgrade steps
+## バージョン固有のアップグレード手順
## v1.0
-Hello Twenty v1.0! 🎉
+こんにちは、Twenty v1.0! 🎉
## v0.60
-### Performance Enhancements
+### パフォーマンス向上
-All interactions with the metadata API have been optimized for better performance, particularly for object metadata manipulation and workspace creation operations.
+メタデータ API とのすべてのやり取りは、特にオブジェクトのメタデータ操作およびワークスペース作成の処理において、パフォーマンス向上のために最適化されました。
-We've refactored our caching strategy to prioritize cache hits over database queries when possible, significantly improving the performance of metadata API operations.
+キャッシング戦略を見直し、可能な場合はデータベースクエリよりもキャッシュヒットを優先するようにしました。これにより、メタデータAPIオペレーションのパフォーマンスが大幅に向上しました。
-If you encounter any runtime issues after upgrading, you may need to flush your cache to ensure it's synchronized with the latest changes. Run this command in your twenty-server container:
+アップグレード後にランタイムの問題が発生した場合は、キャッシュをフラッシュして最新の変更と同期させる必要があるかもしれません。 twenty-serverコンテナ内で次のコマンドを実行します: twenty-serverコンテナ内で次のコマンドを実行します:
```bash
yarn command:prod cache:flush
@@ -42,113 +42,118 @@ yarn command:prod cache:flush
### v0.55
-Upgrade your Twenty instance to use v0.55 image
+Twentyインスタンスをv0.55イメージにアップグレードします。
-You don't need to run any command anymore, the new image will automatically care about running all required migrations.
+もうコマンドを実行する必要はありません。新しいイメージがすべての必要な移行を自動的に行います。
-### `User does not have permission` error
+### `User does not have permission` エラー
-If you encounter authorization errors on most requests after upgrading, you may need to flush your cache to recompute the latest permissions.
+アップグレード後にほとんどの要求で承認エラーが発生した場合は、キャッシュをフラッシュして最新の権限を再計算する必要があるかもしれません。
-In your `twenty-server` container, run:
+あなたの `twenty-server` コンテナ内で次のコマンドを実行します:
```bash
yarn command:prod cache:flush
```
-This issue is specific to this Twenty version and should not be required for future upgrades.
+この問題は特定のTwentyバージョンに固有であり、今後のアップグレードでは不要なはずです。
### v0.54
-Since version `0.53`, no manual actions needed.
+バージョン `0.53` 以降、手動の操作は必要ありません。
-#### Metadata schema deprecation
+#### メタデータスキーマ廃止
-We've merged the `metadata` schema into the `core` one to simplify data retrieval from `TypeORM`.
-We have merged the `migrate` command step within the `upgrade` command. We do not recommend running `migrate` manually within any of your server/worker containers.
+データの取得を簡素化するために、`metadata` スキーマを `core` スキーマにマージしました。
+`upgrade` コマンド内の `migrate` コマンドステップを統合しました。 サーバーまたはワーカーコンテナ内で `migrate` を手動で実行することはお勧めしません。
-### Since v0.53
+### v0.53以降
-Starting from `0.53`, upgrade is programmatically done within the `DockerFile`, this means from now on, you shouldn't have to run any command manually anymore.
+`0.53` 以降、アップグレードは `DockerFile` 内でプログラム的に行われます。これはつまり、これ以降は手動でコマンドを実行する必要がないことを意味します。
-Make sure to keep upgrading your instance sequentially, without skipping any major version (e.g. `0.43.3` to `0.44.0` is allowed, but `0.43.1` to `0.45.0` isn't), else could lead to workspace version desynchronization that could result in runtime error and missing functionality.
+メジャーバージョンを飛ばさずに順次インスタンスをアップグレードし続けることを確認してください(e.g. `0.43.3`から`0.44.0`へのアップグレードは許可されていますが、`0.43.1`から`0.45.0`へのアップグレードはできません)。そうしないと、ワークスペースのバージョンが同期しないことが原因でランタイムエラーや機能の欠如が発生する可能性があります。
-To check if a workspace has been correctly migrated you can review its version in database in `core.workspace` table.
+ワークスペースが正しく移行されたかを確認するには、データベース内の `core.workspace` テーブル内でそのバージョンを確認できます。
-It should always be in the range of your current Twenty's instance `major.minor` version, you can view your instance version in the admin panel (at `/settings/admin-panel`, accessible if your user has `canAccessFullAdminPanel` property set to true in the database) or by running `echo $APP_VERSION` in your `twenty-server` container.
+それは常にあなたの現在のTwentyのインスタンスの `major.minor` バージョンの範囲内である必要があります。あなたのインスタンスバージョンは、管理パネル( `/settings/admin-panel` にあり、データベース内でユーザーが `canAccessFullAdminPanel` プロパティを持っている場合にアクセス可能)にまたは `twenty-server` コンテナ内で `echo $APP_VERSION` を実行することで確認できます。
-To fix a desynchronized workspace version, you will have to upgrade from the corresponding twenty's version following related upgrade guide sequentially and so on until it reaches desired version.
+非同期化されたワークスペースバージョンを修正するには、対応するTwentyのバージョンから関連するアップグレードガイドに従って順次アップグレードし、それが目的のバージョンに到達するまで続ける必要があります。
-#### `auditLog` removal
+#### `auditLog` の削除
-We've removed the auditLog standard object, which means your backup size might be significantly reduced after this migration.
+監査ログ標準オブジェクトを削除しました。これにより、この移行後のバックアップサイズが大幅に縮小する可能性があります。
-### v0.51 to v0.52
+### v0.51からv0.52
-Upgrade your Twenty instance to use v0.52 image
+Twentyインスタンスをv0.52イメージにアップグレードします。
```
yarn database:migrate:prod
yarn command:prod upgrade
```
-#### I have a workspace blocked in version between `0.52.0` and `0.52.6`
+#### 私は `0.52.0` と `0.52.6` の間のバージョンでブロックされたワークスペースを持っています。
-Unfortunately `0.52.0` and `0.52.6` have been completely removed from dockerHub.
-You will have to manually update your workspace version to `0.51.0` in database and upgrade using twenty version `0.52.11` following its just above upgrade guide.
+残念ながら、`0.52.0` と `0.52.6` はdockerHubから完全に削除されました。
+残念ながら、`0.52.0` と `0.52.6` はdockerHubから完全に削除されました。
+データベースでワークスペースバージョンを手動で `0.51.0` に更新し、twentyバージョン `0.52.11` を使用して、その直上のアップグレードガイドに従ってアップグレードする必要があります。
+残念ながら、`0.52.0` と `0.52.6` はdockerHubから完全に削除されました。
+データベースでワークスペースバージョンを手動で `0.51.0` に更新し、twentyバージョン `0.52.11` を使用して、その直上のアップグレードガイドに従ってアップグレードする必要があります。
-### v0.50 to v0.51
+### v0.50からv0.51
-Upgrade your Twenty instance to use v0.51 image
+Twentyインスタンスをv0.51イメージにアップグレードします。
```
yarn database:migrate:prod
yarn command:prod upgrade
```
-### v0.44.0 to v0.50.0
+### v0.44.0からv0.50.0
-Upgrade your Twenty instance to use v0.50.0 image
+Twentyインスタンスをv0.50.0イメージにアップグレードします。
```
yarn database:migrate:prod
yarn command:prod upgrade
```
-#### Docker-compose.yml mutation
+#### Docker-compose.ymlの変更
-This version includes a `docker-compose.yml` mutation to give `worker` service access to the `server-local-data` volume.
-Please update your local `docker-compose.yml` with [v0.50.0 docker-compose.yml](https://github.com/twentyhq/twenty/blob/v0.50.0/packages/twenty-docker/docker-compose.yml)
+このバージョンには、`worker` サービスが `server-local-data` ボリュームにアクセスできるようにするための `docker-compose.yml` の変更が含まれています。
+ローカルの `docker-compose.yml` を[v0.50.0 docker-compose.yml](https://github.com/twentyhq/twenty/blob/v0.50.0/packages/twenty-docker/docker-compose.yml)に更新してください。
+ローカルの `docker-compose.yml` を[v0.50.0 docker-compose.yml](https://github.com/twentyhq/twenty/blob/v0.50.0/packages/twenty-docker/docker-compose.yml)に更新してください。
+ローカルの `docker-compose.yml` を[v0.50.0 docker-compose.yml](https://github.com/twentyhq/twenty/blob/v0.50.0/packages/twenty-docker/docker-compose.yml)に更新してください。
-### v0.43.0 to v0.44.0
+### v0.43.0からv0.44.0
-Upgrade your Twenty instance to use v0.44.0 image
+Twentyインスタンスをv0.44.0イメージにアップグレードします。
```
yarn database:migrate:prod
yarn command:prod upgrade
```
-### v0.42.0 to v0.43.0
+### v0.42.0からv0.43.0
-Upgrade your Twenty instance to use v0.43.0 image
+Twentyインスタンスをv0.43.0イメージにアップグレードします。
```
yarn database:migrate:prod
yarn command:prod upgrade
```
-In this version, we have also switched to postgres:16 image in docker-compose.yml.
+本バージョンでは、`docker-compose.yml`において`postgres:16`イメージへの切り替えも行いました。
-#### (Option 1) Database migration
+#### ( オプション 1 ) データベース移行
-Keeping the existing postgres-spilo image is fine, but you will have to freeze the version in your docker-compose.yml to be 0.43.0.
+既存のpostgres-spiloイメージを保持するのは問題ありませんが、docker-compose.ymlでバージョンを0.43.0に固定する必要があります。
-#### (Option 2) Database migration
+#### ( オプション 2 ) データベース移行
-If you want to migrate your database to the new postgres:16 image, please follow these steps:
+データベースを新しいpostgres:16イメージに移行したい場合は、次の手順に従ってください:
-1. Dump your database from the old postgres-spilo container
+1. 古いpostgres-spiloコンテナからデータベースをダンプします。
```
docker exec -it twenty-db-1 sh
@@ -157,11 +162,11 @@ exit
docker cp twenty-db-1:/home/postgres/databases_backup.sql .
```
-Make sure your dump file is not empty.
+ダンプファイルが空でないことを確認してください。
-2. Upgrade your docker-compose.yml to use postgres:16 image as in the [docker-compose.yml](https://raw.githubusercontent.com/twentyhq/twenty/main/packages/twenty-docker/docker-compose.yml) file.
+2. docker-compose.ymlを、新しいpostgres:16イメージを使用するようにアップグレードします。[docker-compose.yml](https://raw.githubusercontent.com/twentyhq/twenty/main/packages/twenty-docker/docker-compose.yml)を参照してください。
-3. Restore the database to the new postgres:16 container
+3. データベースを新しいpostgres:16コンテナへ復元します。
```
docker cp databases_backup.sql twenty-db-1:/databases_backup.sql
@@ -170,86 +175,90 @@ psql -U {YOUR_POSTGRES_USER} -d {YOUR_POSTGRES_DB} -f databases_backup.sql
exit
```
-### v0.41.0 to v0.42.0
+### v0.41.0からv0.42.0
-Upgrade your Twenty instance to use v0.42.0 image
+Twentyインスタンスをv0.42.0イメージにアップグレードします。
```
yarn database:migrate:prod
yarn command:prod upgrade-0.42
```
-**Environment Variables**
+**環境変数**
-* Removed: `FRONT_PORT`, `FRONT_PROTOCOL`, `FRONT_DOMAIN`, `PORT`
-* Added: `FRONTEND_URL`, `NODE_PORT`, `MAX_NUMBER_OF_WORKSPACES_DELETED_PER_EXECUTION`, `MESSAGING_PROVIDER_MICROSOFT_ENABLED`, `CALENDAR_PROVIDER_MICROSOFT_ENABLED`, `IS_MICROSOFT_SYNC_ENABLED`
+* 削除: `FRONT_PORT`, `FRONT_PROTOCOL`, `FRONT_DOMAIN`, `PORT`
+* 追加: `FRONTEND_URL`, `NODE_PORT`, `MAX_NUMBER_OF_WORKSPACES_DELETED_PER_EXECUTION`, `MESSAGING_PROVIDER_MICROSOFT_ENABLED`, `CALENDAR_PROVIDER_MICROSOFT_ENABLED`, `IS_MICROSOFT_SYNC_ENABLED`
-### v0.40.0 to v0.41.0
+### v0.40.0からv0.41.0
-Upgrade your Twenty instance to use v0.41.0 image
+Twentyインスタンスをv0.41.0イメージにアップグレードします。
```
yarn database:migrate:prod
yarn command:prod upgrade-0.41
```
-**Environment Variables**
+**環境変数**
-* Removed: `AUTH_MICROSOFT_TENANT_ID`
+* 削除: `AUTH_MICROSOFT_TENANT_ID`
-### v0.35.0 to v0.40.0
+### v0.35.0からv0.40.0
-Upgrade your Twenty instance to use v0.40.0 image
+Twentyインスタンスをv0.40.0イメージにアップグレードします。
```
yarn database:migrate:prod
yarn command:prod upgrade-0.40
```
-**Environment Variables**
+**環境変数**
-* Added: `IS_EMAIL_VERIFICATION_REQUIRED`, `EMAIL_VERIFICATION_TOKEN_EXPIRES_IN`, `WORKFLOW_EXEC_THROTTLE_LIMIT`, `WORKFLOW_EXEC_THROTTLE_TTL`
+* 追加: `IS_EMAIL_VERIFICATION_REQUIRED`, `EMAIL_VERIFICATION_TOKEN_EXPIRES_IN`, `WORKFLOW_EXEC_THROTTLE_LIMIT`, `WORKFLOW_EXEC_THROTTLE_TTL`
-### v0.34.0 to v0.35.0
+### v0.34.0からv0.35.0
-Upgrade your Twenty instance to use v0.35.0 image
+Twentyインスタンスをv0.35.0イメージにアップグレードします。
```
yarn database:migrate:prod
yarn command:prod upgrade-0.35
```
-The `yarn database:migrate:prod` command will apply the migrations to the database structure (core and metadata schemas)
-The `yarn command:prod upgrade-0.35` takes care of the data migration of all workspaces.
+`yarn database:migrate:prod` コマンドはデータベース構造(コアおよびメタデータスキーマ)の移行を適用します
+`yarn command:prod upgrade-0.35` はすべてのワークスペースのデータ移行を行います。
-**Environment Variables**
+**環境変数**
-* We replaced `ENABLE_DB_MIGRATIONS` with `DISABLE_DB_MIGRATIONS` (default value is now `false`, you probably don't have to set anything)
+* `ENABLE_DB_MIGRATIONS` を `DISABLE_DB_MIGRATIONS` に置き換えました(デフォルト値は`false`で、設定する必要はないと思われます)
-### v0.33.0 to v0.34.0
+### v0.33.0からv0.34.0
-Upgrade your Twenty instance to use v0.34.0 image
+Twentyインスタンスをv0.34.0イメージにアップグレードします。
```
yarn database:migrate:prod
yarn command:prod upgrade-0.34
```
-The `yarn database:migrate:prod` command will apply the migrations to the database structure (core and metadata schemas)
-The `yarn command:prod upgrade-0.34` takes care of the data migration of all workspaces.
+`yarn database:migrate:prod` コマンドはデータベース構造(コアおよびメタデータスキーマ)の移行を適用します
+`yarn command:prod upgrade-0.34` はすべてのワークスペースのデータ移行を行います。
-**Environment Variables**
+**環境変数**
-* Removed: `FRONT_BASE_URL`
-* Added: `FRONT_DOMAIN`, `FRONT_PROTOCOL`, `FRONT_PORT`
+* 削除: `FRONT_BASE_URL`
+* 追加: `FRONT_DOMAIN`, `FRONT_PROTOCOL`, `FRONT_PORT`
-We have updated the way we handle the frontend URL.
-You can now set the frontend URL using the `FRONT_DOMAIN`, `FRONT_PROTOCOL` and `FRONT_PORT` variables.
-If FRONT_DOMAIN is not set, the frontend URL will fall back to `SERVER_URL`.
+フロントエンドURLの取り扱いを更新しました。
+フロントエンドURLの取り扱いを更新しました。
+フロントエンドURLの取り扱いを更新しました。
+フロントエンドURLは、`FRONT_DOMAIN`、`FRONT_PROTOCOL`、`FRONT_PORT` 変数を使用して設定できます。
+FRONT_DOMAIN が設定されていない場合、フロントエンドURLは `SERVER_URL` に戻されます。
+FRONT_DOMAIN が設定されていない場合、フロントエンドURLは `SERVER_URL` に戻されます。
+FRONT_DOMAIN が設定されていない場合、フロントエンドURLは `SERVER_URL` に戻されます。
-### v0.32.0 to v0.33.0
+### v0.32.0からv0.33.0
-Upgrade your Twenty instance to use v0.33.0 image
+Twentyインスタンスをv0.33.0イメージにアップグレードします。
```
yarn command:prod cache:flush
@@ -257,68 +266,75 @@ yarn database:migrate:prod
yarn command:prod upgrade-0.33
```
-The `yarn command:prod cache:flush` command will flush the Redis cache.
-The `yarn database:migrate:prod` command will apply the migrations to the database structure (core and metadata schemas)
-The `yarn command:prod upgrade-0.33` takes care of the data migration of all workspaces.
+`yarn command:prod cache:flush` コマンドはRedisキャッシュをフラッシュします。
+`yarn database:migrate:prod` コマンドはデータベース構造(コアおよびメタデータスキーマ)の移行を適用します
+`yarn command:prod upgrade-0.33` はすべてのワークスペースのデータ移行を行います。
+`yarn database:migrate:prod` コマンドはデータベースへの移行を適用します。
+"`yarn command:prod workspace:sync-metadata -f` コマンドは、標準オブジェクトの定義をメタデータテーブルに同期し、既存のワークスペースに必要な移行を適用します。"
+The `yarn command:prod upgrade-0.22` command will apply specific data transformations to adapt to the new object defaultRequestInstrumentationOptions.
-Starting from this version, twenty-postgres image for DB became deprecated and twenty-postgres-spilo is used instead.
-If you want to keep using twenty-postgres image, simply replace `twentycrm/twenty-postgres:${TAG}` with `twentycrm/twenty-postgres` in docker-compose.yml.
+このバージョンから、DB用のtwenty-postgresイメージは廃止され、twenty-postgres-spiloが代わりに使用されるようになりました。
+このバージョンから、DB用のtwenty-postgresイメージは廃止され、twenty-postgres-spiloが代わりに使用されるようになりました。
+このバージョンから、DB用のtwenty-postgresイメージは廃止され、twenty-postgres-spiloが代わりに使用されるようになりました。
+twenty-postgresイメージを使い続けたい場合は、docker-compose.yml内の`twentycrm/twenty-postgres:${TAG}`を`twentycrm/twenty-postgres`に置き換えるだけで済みます。
-### v0.31.0 to v0.32.0
+### v0.31.0からv0.32.0
-Upgrade your Twenty instance to use v0.32.0 image
+Twentyインスタンスをv0.32.0イメージにアップグレードします。
-**Schema and data migration**
+**スキーマとデータ移行**
```
yarn database:migrate:prod
yarn command:prod upgrade-0.32
```
-The `yarn database:migrate:prod` command will apply the migrations to the database structure (core and metadata schemas)
-The `yarn command:prod upgrade-0.32` takes care of the data migration of all workspaces.
+`yarn database:migrate:prod` コマンドはデータベース構造(コアおよびメタデータスキーマ)の移行を適用します
+`yarn command:prod upgrade-0.32` はすべてのワークスペースのデータ移行を行います。
-**Environment Variables**
+**環境変数**
-We have updated the way we handle the Redis connection.
+Redis接続の取り扱いを更新しました。
-* Removed: `REDIS_HOST`, `REDIS_PORT`, `REDIS_USERNAME`, `REDIS_PASSWORD`
-* Added: `REDIS_URL`
+* 削除: `REDIS_HOST`, `REDIS_PORT`, `REDIS_USERNAME`, `REDIS_PASSWORD`
+* 追加: `REDIS_URL`
-Update your `.env` file to use the new `REDIS_URL` variable instead of the individual Redis connection parameters.
+個々のRedis接続パラメーターの代わりに、新しい `REDIS_URL` 変数を使用するように `.env` ファイルを更新してください。
-We have also simplified the way we handle the JWT tokens.
+JWTトークンの取り扱いも簡素化しました。
-* Removed: `ACCESS_TOKEN_SECRET`, `LOGIN_TOKEN_SECRET`, `REFRESH_TOKEN_SECRET`, `FILE_TOKEN_SECRET`
-* Added: `APP_SECRET`
+* 削除: `ACCESS_TOKEN_SECRET`, `LOGIN_TOKEN_SECRET`, `REFRESH_TOKEN_SECRET`, `FILE_TOKEN_SECRET`
+* 追加: `APP_SECRET`
-Update your `.env` file to use the new `APP_SECRET` variable instead of the individual tokens secrets (you can use the same secret as before or generate a new random string)
+個々のトークンシークレットの代わりに、新しい `APP_SECRET` 変数を使用するように `.env` ファイルを更新してください(以前と同じシークレットを使用するか、新しいランダム文字列を生成して使用することができます)
-**Connected Account**
+**接続アカウント**
-If you are using connected account to synchronize your Google emails and calendars, you will need to activate the [People API](https://developers.google.com/people) on your Google Admin console.
+Googleメールとカレンダーを同期するために接続されたアカウントを使用する場合は、Google管理コンソールで[People API](https://developers.google.com/people)をアクティブにする必要があります。
-### v0.30.0 to v0.31.0
+### v0.30.0からv0.31.0
-Upgrade your Twenty instance to use v0.31.0 image
+Twentyインスタンスをv0.31.0イメージにアップグレードします。
-**Schema and data migration**:
+**スキーマとデータ移行**:
```
yarn database:migrate:prod
yarn command:prod upgrade-0.31
```
-The `yarn database:migrate:prod` command will apply the migrations to the database structure (core and metadata schemas)
-The `yarn command:prod upgrade-0.31` takes care of the data migration of all workspaces.
+`yarn database:migrate:prod` コマンドはデータベース構造(コアおよびメタデータスキーマ)の移行を適用します
+`yarn command:prod upgrade-0.31` はすべてのワークスペースのデータ移行を行います。
-### v0.24.0 to v0.30.0
+### v0.24.0からv0.30.0
-Upgrade your Twenty instance to use v0.30.0 image
+Twentyインスタンスをv0.30.0イメージにアップグレードします。
-**Breaking change**:
-To enhance performances, Twenty now requires redis cache to be configured. We have updated our [docker-compose.yml](https://raw.githubusercontent.com/twentyhq/twenty/main/packages/twenty-docker/docker-compose.yml) to reflect this.
-Make sure to update your configuration and to update your environment variables accordingly:
+**破壊的な変更**:
+パフォーマンスを向上させるために、TwentyはRedisキャッシュの設定を必要とするようになりました。 これを反映した[docker-compose.yml](https://raw.githubusercontent.com/twentyhq/twenty/main/packages/twenty-docker/docker-compose.yml)を更新しました。
+構成を更新し、環境変数を適切に更新してください:
+構成を更新し、環境変数を適切に更新してください:
+構成を更新し、環境変数を適切に更新してください:
```
REDIS_HOST={your-redis-host}
@@ -326,49 +342,50 @@ REDIS_PORT={your-redis-port}
CACHE_STORAGE_TYPE=redis
```
-**Schema and data migration**:
+**スキーマとデータ移行**:
```
yarn database:migrate:prod
yarn command:prod upgrade-0.30
```
-The `yarn database:migrate:prod` command will apply the migrations to the database structure (core and metadata schemas)
-The `yarn command:prod upgrade-0.30` takes care of the data migration of all workspaces.
+`yarn database:migrate:prod` コマンドはデータベース構造(コアおよびメタデータスキーマ)の移行を適用します
+`yarn command:prod upgrade-0.30` はすべてのワークスペースのデータ移行を行います。
-### v0.23.0 to v0.24.0
+### v0.23.0からv0.24.0
-Upgrade your Twenty instance to use v0.24.0 image
+Twentyインスタンスをv0.24.0イメージにアップグレードします。
-Run the following commands:
+次のコマンドを実行してください:
```
yarn database:migrate:prod
yarn command:prod upgrade-0.24
```
-The `yarn database:migrate:prod` command will apply the migrations to the database structure (core and metadata schemas)
-The `yarn command:prod upgrade-0.24` takes care of the data migration of all workspaces.
+`yarn database:migrate:prod` コマンドはデータベース構造(コアおよびメタデータスキーマ)の移行を適用します
+`yarn command:prod upgrade-0.24` はすべてのワークスペースのデータ移行を行います。
-### v0.22.0 to v0.23.0
+### v0.22.0からv0.23.0
-Upgrade your Twenty instance to use v0.23.0 image
+Twentyインスタンスをv0.23.0イメージにアップグレードします。
-Run the following commands:
+次のコマンドを実行してください:
```
yarn database:migrate:prod
yarn command:prod upgrade-0.23
```
-The `yarn database:migrate:prod` command will apply the migrations to the Database.
-The `yarn command:prod upgrade-0.23` takes care of the data migration, including transferring activities to tasks/notes.
+`yarn database:migrate:prod` コマンドはデータベースへの移行を適用します。
+`yarn command:prod upgrade-0.23` は、アクティビティをタスク/ノートに移行するなど、データ移行を担当します。
+`yarn command:prod upgrade-0.23` は、アクティビティをタスク/ノートに移行するなど、データ移行を担当します。
-### v0.21.0 to v0.22.0
+### v0.21.0からv0.22.0
-Upgrade your Twenty instance to use v0.22.0 image
+Twentyインスタンスをv0.22.0イメージにアップグレードします。
-Run the following commands:
+次のコマンドを実行してください:
```
yarn database:migrate:prod
@@ -376,6 +393,7 @@ yarn command:prod workspace:sync-metadata -f
yarn command:prod upgrade-0.22
```
-The `yarn database:migrate:prod` command will apply the migrations to the Database.
-The `yarn command:prod workspace:sync-metadata -f` command will sync the definition of standard objects to the metadata tables and apply to required migrations to existing workspaces.
-The `yarn command:prod upgrade-0.22` command will apply specific data transformations to adapt to the new object defaultRequestInstrumentationOptions.
+`yarn database:migrate:prod` コマンドはデータベースへの移行を適用します。
+`yarn command:prod upgrade-0.23` は、アクティビティをタスク/ノートに移行するなど、データ移行を担当します。
+"`yarn command:prod workspace:sync-metadata -f` コマンドは、標準オブジェクトの定義をメタデータテーブルに同期し、既存のワークスペースに必要な移行を適用します。"
+`yarn command:prod upgrade-0.22` コマンドは、新しいオブジェクトの defaultRequestInstrumentationOptions に適合させるため、特定のデータ変換を適用します。
diff --git a/packages/twenty-docs/l/ja/developers/self-host/self-host.mdx b/packages/twenty-docs/l/ja/developers/self-host/self-host.mdx
index 79b6d060df..6e0fb43fa5 100644
--- a/packages/twenty-docs/l/ja/developers/self-host/self-host.mdx
+++ b/packages/twenty-docs/l/ja/developers/self-host/self-host.mdx
@@ -1,30 +1,30 @@
---
-title: Self-Host
-description: Deploy and manage Twenty on your own infrastructure.
+title: セルフホスト
+description: 独自のインフラで Twenty をデプロイして管理できます。
---
-## Overview
+## 概要
-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/ja/navigation.json b/packages/twenty-docs/l/ja/navigation.json
index 8096fbf4ac..7070d9ffc4 100644
--- a/packages/twenty-docs/l/ja/navigation.json
+++ b/packages/twenty-docs/l/ja/navigation.json
@@ -1,72 +1,72 @@
{
"tabs": {
"userGuide": {
- "label": "User Guide",
+ "label": "ユーザーガイド",
"groups": {
"discoverTwenty": {
- "label": "Discover Twenty",
+ "label": "Twenty を知る",
"groups": {
"gettingStartedCapabilities": {
- "label": "Capabilities"
+ "label": "機能"
},
"gettingStartedHowTos": {
- "label": "How-Tos"
+ "label": "ハウツー"
}
}
},
"dataModel": {
- "label": "Data Model",
+ "label": "データモデル",
"groups": {
"dataModelCapabilities": {
- "label": "Capabilities"
+ "label": "機能"
},
"dataModelHowTos": {
- "label": "How-Tos"
+ "label": "ハウツー"
}
}
},
"dataMigration": {
- "label": "Data Migration",
+ "label": "データ移行",
"groups": {
"dataMigrationCapabilities": {
- "label": "Capabilities"
+ "label": "機能"
},
"dataMigrationHowTos": {
- "label": "How-Tos"
+ "label": "ハウツー"
}
}
},
"calendarEmails": {
- "label": "Calendar & Emails",
+ "label": "カレンダーとメール",
"groups": {
"calendarEmailsCapabilities": {
- "label": "Capabilities"
+ "label": "機能"
},
"calendarEmailsHowTos": {
- "label": "How-Tos"
+ "label": "ハウツー"
}
}
},
"workflows": {
- "label": "Workflows",
+ "label": "ワークフロー",
"groups": {
"workflowsCapabilities": {
- "label": "Capabilities"
+ "label": "機能"
},
"workflowsHowTos": {
- "label": "How-Tos",
+ "label": "ハウツー",
"groups": {
"crmAutomations": {
- "label": "CRM Automations"
+ "label": "CRM の自動化"
},
"connectToOtherTools": {
- "label": "Connect to Other Tools"
+ "label": "他のツールと連携"
},
"advancedConfigurations": {
- "label": "Advanced Configurations"
+ "label": "高度な設定"
},
"needMoreHelp": {
- "label": "Need More Help"
+ "label": "さらにヘルプが必要な場合"
}
}
}
@@ -76,122 +76,122 @@
"label": "AI",
"groups": {
"aiCapabilities": {
- "label": "Capabilities"
+ "label": "機能"
},
"aiHowTos": {
- "label": "How-Tos"
+ "label": "ハウツー"
}
}
},
"viewsPipelines": {
- "label": "Views & Pipelines",
+ "label": "ビューとパイプライン",
"groups": {
"viewsPipelinesCapabilities": {
- "label": "Capabilities"
+ "label": "機能"
},
"viewsPipelinesHowTos": {
- "label": "How-Tos"
+ "label": "ハウツー"
}
}
},
"dashboards": {
- "label": "Dashboards",
+ "label": "ダッシュボード",
"groups": {
"dashboardsCapabilities": {
- "label": "Capabilities"
+ "label": "機能"
},
"dashboardsHowTos": {
- "label": "How-Tos"
+ "label": "ハウツー"
}
}
},
"permissionsAccess": {
- "label": "Permissions & Access",
+ "label": "権限とアクセス",
"groups": {
"permissionsAccessCapabilities": {
- "label": "Capabilities"
+ "label": "機能"
},
"permissionsAccessHowTos": {
- "label": "How-Tos"
+ "label": "ハウツー"
}
}
},
"billing": {
- "label": "Billing",
+ "label": "請求",
"groups": {
"billingCapabilities": {
- "label": "Capabilities"
+ "label": "機能"
},
"billingHowTos": {
- "label": "How-Tos"
+ "label": "ハウツー"
}
}
},
"settings": {
- "label": "Settings",
+ "label": "設定",
"groups": {
"settingsCapabilities": {
- "label": "Capabilities"
+ "label": "機能"
},
"settingsHowTos": {
- "label": "How-Tos"
+ "label": "ハウツー"
}
}
}
}
},
"developers": {
- "label": "Developers",
+ "label": "開発者",
"groups": {
"developersGroup": {
- "label": "Developers"
+ "label": "開発者"
},
"extend": {
- "label": "Extend",
+ "label": "拡張",
"groups": {
"extendCapabilities": {
- "label": "Capabilities"
+ "label": "機能"
}
}
},
"selfHost": {
- "label": "Self-Host",
+ "label": "セルフホスト",
"groups": {
"selfHostCapabilities": {
- "label": "Capabilities"
+ "label": "機能"
}
}
},
"contribute": {
- "label": "Contribute",
+ "label": "貢献",
"groups": {
"contributeCapabilities": {
- "label": "Capabilities",
+ "label": "機能",
"groups": {
"frontendDevelopment": {
- "label": "Frontend Development",
+ "label": "フロントエンド開発",
"groups": {
"twentyUi": {
"label": "Twenty UI",
"groups": {
"display": {
- "label": "Display"
+ "label": "表示"
},
"feedback": {
- "label": "Feedback"
+ "label": "フィードバック"
},
"input": {
- "label": "Input"
+ "label": "入力"
},
"navigation": {
- "label": "Navigation"
+ "label": "ナビゲーション"
}
}
}
}
},
"backendDevelopment": {
- "label": "Backend Development"
+ "label": "バックエンド開発"
}
}
}
diff --git a/packages/twenty-docs/l/ja/twenty-ui/display/app-tooltip.mdx b/packages/twenty-docs/l/ja/twenty-ui/display/app-tooltip.mdx
index 4e620eedc7..5520b12b8d 100644
--- a/packages/twenty-docs/l/ja/twenty-ui/display/app-tooltip.mdx
+++ b/packages/twenty-docs/l/ja/twenty-ui/display/app-tooltip.mdx
@@ -1,16 +1,16 @@
---
-title: App Tooltip
+title: アプリツールチップ
image: /images/user-guide/tips/light-bulb.png
---
-
+
-A brief message that displays additional information when a user interacts with an element.
+ユーザーが要素とやり取りするときに追加情報を表示する短いメッセージ。
-
+
```jsx
import { AppTooltip } from "@/ui/display/tooltip/AppTooltip";
@@ -37,27 +37,27 @@ A brief message that displays additional information when a user interacts with
```
-
- | Props | Type | Description |
- | ---------------- | ---------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
- | className | string | Optional CSS class for additional styling |
- | anchorSelect | CSS selector | Selector for the tooltip anchor (the element that triggers the tooltip) |
- | content | string | The content you want to display within the tooltip |
- | delayHide | number | The delay in seconds before hiding the tooltip after the cursor leaves the anchor |
- | offset | number | The offset in pixels for positioning the tooltip |
- | noArrow | boolean | If `true`, hides the arrow on the tooltip |
- | isOpen | boolean | If `true`, the tooltip is open by default |
- | place | `PlacesType` string from `react-tooltip` | Specifies the placement of the tooltip. Values include `bottom`, `left`, `right`, `top`, `top-start`, `top-end`, `right-start`, `right-end`, `bottom-start`, `bottom-end`, `left-start`, and `left-end` |
- | positionStrategy | `PositionStrategy` string from `react-tooltip` | Position strategy for the tooltip. Has two values: `absolute` and `fixed` |
+
+ | プロパティ | タイプ | 説明 |
+ | ---------------- | --------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
+ | className | string | 追加のスタイリング用のオプションのCSSクラス |
+ | anchorSelect | CSSセレクタ | ツールチップのアンカー(ツールチップをトリガーする要素)のセレクタ |
+ | content | string | ツールチップ内に表示したいコンテンツ |
+ | delayHide | 数 | アンカーからカーソルが離れた後、ツールチップを非表示にする前の遅延(秒) |
+ | offset | 数 | ツールチップの位置を決めるためのオフセット(ピクセル) |
+ | noArrow | ブール型 | `true`の場合、ツールチップの矢印を非表示にします |
+ | isOpen | ブール型 | `true`の場合、ツールチップはデフォルトで開かれています |
+ | place | `react-tooltip`からの`PlacesType`文字列 | ツールチップの配置を指定します。 値は`bottom`、`left`、`right`、`top`、`top-start`、`top-end`、`right-start`、`right-end`、`bottom-start`、`bottom-end`、`left-start`、`left-end`などがあります |
+ | positionStrategy | `react-tooltip`からの`PositionStrategy`文字列 | ツールチップの位置戦略。 2つの値があります: `absolute` と `fixed` |
-## Overflowing Text with Tooltip
+## ツールチップを伴うオーバーフローテキスト
-Handles overflowing text and displays a tooltip when the text overflows.
+オーバーフローテキストを処理し、テキストがオーバーフローしたときにツールチップを表示します。
-
+
```jsx
import { OverflowingTextWithTooltip } from 'twenty-ui/display';
@@ -70,9 +70,9 @@ Handles overflowing text and displays a tooltip when the text overflows.
```
-
- | Props | Type | Description |
- | ----- | ------ | ------------------------------------------------------------ |
- | text | string | The content you want to display in the overflowing text area |
+
+ | プロパティ | タイプ | 説明 |
+ | ----- | ------ | -------------------------- |
+ | テキスト | string | オーバーフローテキストエリア内に表示したいコンテンツ |
diff --git a/packages/twenty-docs/l/ja/twenty-ui/display/checkmark.mdx b/packages/twenty-docs/l/ja/twenty-ui/display/checkmark.mdx
index ef84d5c2d5..2dfeb29077 100644
--- a/packages/twenty-docs/l/ja/twenty-ui/display/checkmark.mdx
+++ b/packages/twenty-docs/l/ja/twenty-ui/display/checkmark.mdx
@@ -1,16 +1,16 @@
---
-title: Checkmark
-image: /images/user-guide/tasks/tasks_header.png
+title: チェックマーク
+image: '""'
---
-
+
-Represents a successful or completed action.
+成功したまたは完了したアクションを示します。
-
+
```jsx
import { Checkmark } from 'twenty-ui/display';
@@ -20,17 +20,17 @@ Represents a successful or completed action.
```
-
- Extends `React.ComponentPropsWithoutRef<'div'>` and accepts all the props of a regular `div` element.
+
+ `div` 要素の全てのプロパティを受け取る他、`React.ComponentPropsWithoutRef<'div'>`を拡張します。
-## Animated Checkmark
+## アニメーション付きチェックマーク
-Represents a checkmark icon with the added feature of animation.
+アニメーション機能を追加したチェックマークアイコンを示します。
-
+
```jsx
import { AnimatedCheckmark } from 'twenty-ui/display';
@@ -47,12 +47,12 @@ Represents a checkmark icon with the added feature of animation.
```
-
- | Props | Type | Description | Default |
- | ----------- | ------- | ------------------------------------------- | ----------- |
- | isAnimating | boolean | Controls whether the checkmark is animating | false |
- | color | string | Color of the checkmark | |
- | duration | number | The duration of the animation in seconds | 0.5 seconds |
- | size | number | The size of the checkmark | 28 pixels |
+
+ | プロパティ | タイプ | 説明 | デフォルト |
+ | ---------- | ------ | --------------------- | ------ |
+ | アニメーションの有無 | ブール型 | チェックマークのアニメーションを制御します | 偽 |
+ | カラー | string | チェックマークの色 | |
+ | 継続時間 | 数 | アニメーションの持続時間(秒) | 0.5秒 |
+ | サイズ | 数 | チェックマークのサイズ | 28ピクセル |
diff --git a/packages/twenty-docs/l/ja/twenty-ui/display/chip.mdx b/packages/twenty-docs/l/ja/twenty-ui/display/chip.mdx
index ded2fd1c77..0796f8fe54 100644
--- a/packages/twenty-docs/l/ja/twenty-ui/display/chip.mdx
+++ b/packages/twenty-docs/l/ja/twenty-ui/display/chip.mdx
@@ -1,16 +1,16 @@
---
-title: Chip
+title: チップ
image: /images/user-guide/github/github-header.png
---
-
+
-A visual element that you can use as a clickable or non-clickable container with a label, optional left and right components, and various styling options to display labels and tags.
+ラベル、オプションの左および右コンポーネント、さまざまなスタイルオプションを使用してラベルやタグを表示するクリック可能または非クリック可能なコンテナとして使用できるビジュアル要素。
-
+
```jsx
import { Chip } from 'twenty-ui/components';
@@ -33,22 +33,22 @@ A visual element that you can use as a clickable or non-clickable container with
```
-
- | Props | Type | Description |
- | ------------ | ------------------------ | -------------------------------------------------------------------------------------------- |
- | linkToEntity | string | The link to the entity |
- | entityId | string | The unique identifier for the entity |
- | name | string | The name of the entity |
- | pictureUrl | string | s picture", |
- | avatarType | Avatar Type | The type of avatar you want to display. Has two options: `rounded` and `squared` |
- | variant | `EntityChipVariant` enum | Variant of the entity chip you want to display. Has two options: `regular` and `transparent` |
- | LeftIcon | IconComponent | A React component representing an icon. Displayed on the left side of the chip |
+
+ | プロパティ | タイプ | 説明 |
+ | ------------ | ----------------------- | -------------------------------------------------------- |
+ | linkToEntity | string | エンティティへのリンク |
+ | entityId | string | エンティティの一意識別子 |
+ | 名前 | string | エンティティの名前 |
+ | pictureUrl | string | 写真", |
+ | avatarType | アバタータイプ | 表示したいアバターのタイプ。 オプションは2つ:`rounded` と `squared` |
+ | バリアント | `EntityChipVariant` 列挙型 | 表示したいエンティティチップのバリアント。 オプションは2つ:`regular` と `transparent` |
+ | 左アイコン | アイコンコンポーネント | アイコンを表す React コンポーネント。 チップの左側に表示されます |
-## Examples
+## 例
-### Transparent Disabled Chip
+### 透明無効チップ
```jsx
import { Chip } from 'twenty-ui/components';
@@ -73,7 +73,7 @@ export const MyComponent = () => {
-### Disabled Chip with Tooltip
+### ツールチップ付き無効チップ
```jsx
import { Chip } from "twenty-ui/components";
@@ -95,12 +95,12 @@ export const MyComponent = () => {
};
```
-## Entity Chip
+## エンティティチップ
-A Chip-like element to display information about an entity.
+エンティティに関する情報を表示するチップ風の要素。
-
+
```jsx
import { BrowserRouter as Router } from 'react-router-dom';
import { IconTwentyStar } from 'twenty-ui/display';
@@ -124,15 +124,15 @@ A Chip-like element to display information about an entity.
```
-
- | Props | Type | Description |
- | ------------ | ------------------------ | -------------------------------------------------------------------------------------------- |
- | linkToEntity | string | The link to the entity |
- | entityId | string | The unique identifier for the entity |
- | name | string | The name of the entity |
- | pictureUrl | string | s picture", |
- | avatarType | Avatar Type | The type of avatar you want to display. Has two options: `rounded` and `squared` |
- | variant | `EntityChipVariant` enum | Variant of the entity chip you want to display. Has two options: `regular` and `transparent` |
- | LeftIcon | IconComponent | A React component representing an icon. Displayed on the left side of the chip |
+
+ | プロパティ | タイプ | 説明 |
+ | ------------ | ----------------------- | -------------------------------------------------------- |
+ | linkToEntity | string | エンティティへのリンク |
+ | entityId | string | エンティティの一意識別子 |
+ | 名前 | string | エンティティの名前 |
+ | pictureUrl | string | 写真", |
+ | avatarType | アバタータイプ | 表示したいアバターのタイプ。 オプションは2つ:`rounded` と `squared` |
+ | バリアント | `EntityChipVariant` 列挙型 | 表示したいエンティティチップのバリアント。 オプションは2つ:`regular` と `transparent` |
+ | 左アイコン | アイコンコンポーネント | アイコンを表す React コンポーネント。 チップの左側に表示されます |
diff --git a/packages/twenty-docs/l/ja/twenty-ui/display/icons.mdx b/packages/twenty-docs/l/ja/twenty-ui/display/icons.mdx
index 2d73154c8d..db9dafe5b7 100644
--- a/packages/twenty-docs/l/ja/twenty-ui/display/icons.mdx
+++ b/packages/twenty-docs/l/ja/twenty-ui/display/icons.mdx
@@ -1,20 +1,20 @@
---
-title: Icons
+title: アイコン
image: /images/user-guide/objects/objects.png
---
-
+
-A list of icons used throughout our app.
+アプリ全体で使用されるアイコンの一覧。
## Tabler Icons
-We use Tabler icons for React throughout the app.
+アプリ全体で React 向けの Tabler Icons を使用しています。
-
+
```
@@ -22,8 +22,8 @@ We use Tabler icons for React throughout the app.
```
-
- You can import each icon as a component. Here's an example:
+
+ 各アイコンをコンポーネントとしてインポートできます。 例はこちら:
@@ -36,25 +36,25 @@ We use Tabler icons for React throughout the app.
```
-
- | Props | Type | Description | Default |
- | ------ | ------ | ------------------------------------------ | ------------ |
- | size | number | The height and width of the icon in pixels | 24 |
- | color | string | The color of the icons | currentColor |
- | stroke | number | The stroke width of the icon in pixels | 2 |
+
+ | プロパティ | タイプ | 説明 | デフォルト |
+ | ----- | ------ | ------------------- | ------------ |
+ | サイズ | 数 | アイコンの高さと幅(ピクセル単位) | 24 |
+ | カラー | string | アイコンの色 | currentColor |
+ | ストローク | 数 | アイコンのストローク幅(ピクセル単位) | 2 |
-## Custom Icons
+## カスタムアイコン
-In addition to Tabler icons, the app also uses some custom icons.
+Tablerアイコンに加えて、アプリにはいくつかのカスタムアイコンも使用されています。
-### Icon Address Book
+### アイコンアドレス帳
-Displays an address book icon.
+アドレス帳のアイコンを表示します。
-
+
```jsx
import { IconAddressBook } from 'twenty-ui/display';
@@ -64,10 +64,10 @@ Displays an address book icon.
```
-
- | Props | Type | Description | Default |
- | ------ | ------ | ------------------------------------------ | ------- |
- | size | number | The height and width of the icon in pixels | 24 |
- | stroke | number | The stroke width of the icon in pixels | 2 |
+
+ | プロパティ | タイプ | 説明 | デフォルト |
+ | ----- | --- | ------------------- | ----- |
+ | サイズ | 数 | アイコンの高さと幅(ピクセル単位) | 24 |
+ | ストローク | 数 | アイコンのストローク幅(ピクセル単位) | 2 |
diff --git a/packages/twenty-docs/l/ja/twenty-ui/display/soon-pill.mdx b/packages/twenty-docs/l/ja/twenty-ui/display/soon-pill.mdx
index 56ace0bae7..6a1095d876 100644
--- a/packages/twenty-docs/l/ja/twenty-ui/display/soon-pill.mdx
+++ b/packages/twenty-docs/l/ja/twenty-ui/display/soon-pill.mdx
@@ -4,10 +4,10 @@ image: /images/user-guide/kanban-views/kanban.png
---
-
+
-A small badge or "pill" to indicate something is coming soon.
+近日公開を示す小さなバッジ(ピル)です。
```jsx
import { SoonPill } from "@/ui/display/pill/components/SoonPill";
diff --git a/packages/twenty-docs/l/ja/twenty-ui/display/tag.mdx b/packages/twenty-docs/l/ja/twenty-ui/display/tag.mdx
index a2226c88d4..76dd8c1e7a 100644
--- a/packages/twenty-docs/l/ja/twenty-ui/display/tag.mdx
+++ b/packages/twenty-docs/l/ja/twenty-ui/display/tag.mdx
@@ -1,16 +1,16 @@
---
-title: Tag
+title: タグ
image: /images/user-guide/table-views/table.png
---
-
+
-Component to visually categorize or label content.
+コンテンツを視覚的に分類またはラベル付けするためのコンポーネント。
-
+
```jsx
import { Tag } from "@/ui/display/tag/components/Tag";
@@ -19,20 +19,20 @@ Component to visually categorize or label content.
console.log("click")}
+ text="緊急"
+ onClick={() => console.log("クリック")}
/>
);
};
```
-
- | Props | Type | Description |
- | --------- | -------- | --------------------------------------------------------------------------------------------------------------------------- |
- | className | string | Optional name for additional styling |
- | color | string | Color of the tag. Options include: `green`, `turquoise`, `sky`, `blue`, `purple`, `pink`, `red`, `orange`, `yellow`, `gray` |
- | text | string | The content of the tag |
- | onClick | function | Optional function called when a user clicks on the tag |
+
+ | プロパティ | タイプ | 説明 |
+ | --------- | ------ | ------------------------------------------------------------------------------ |
+ | className | string | 追加のスタイリングのための任意の名前 |
+ | カラー | string | タグの色。 オプションは次のとおりです: `緑`, `トルコ石`, `空`, `青`, `紫`, `ピンク`, `赤`, `オレンジ`, `黄`, `灰色` |
+ | テキスト | string | タグの内容 |
+ | onClick | 関数 | ユーザーがタグをクリックすると呼び出される任意の関数 |
diff --git a/packages/twenty-docs/l/ja/twenty-ui/input.mdx b/packages/twenty-docs/l/ja/twenty-ui/input.mdx
index 2da701caf5..2283178d8b 100644
--- a/packages/twenty-docs/l/ja/twenty-ui/input.mdx
+++ b/packages/twenty-docs/l/ja/twenty-ui/input.mdx
@@ -1,8 +1,8 @@
---
-title: Input
+title: 入力
image: /images/user-guide/tips/light-bulb.png
---
-
+
diff --git a/packages/twenty-docs/l/ja/twenty-ui/input/block-editor.mdx b/packages/twenty-docs/l/ja/twenty-ui/input/block-editor.mdx
index 9943fa5f5d..e4538b01f1 100644
--- a/packages/twenty-docs/l/ja/twenty-ui/input/block-editor.mdx
+++ b/packages/twenty-docs/l/ja/twenty-ui/input/block-editor.mdx
@@ -1,16 +1,16 @@
---
-title: Block Editor
+title: ブロックエディター
image: /images/user-guide/api/api.png
---
-
+
-Uses a block-based rich text editor from [BlockNote](https://www.blocknotejs.org/) to allow users to edit and view blocks of content.
+ブロックベースのリッチテキストエディター[BlockNote](https://www.blocknotejs.org/)を使用して、ユーザーがコンテンツのブロックを編集および表示できるようにします。
-
+
```jsx
import { useBlockNote } from "@blocknote/react";
import { BlockEditor } from "@/ui/input/editor/components/BlockEditor";
@@ -23,9 +23,9 @@ Uses a block-based rich text editor from [BlockNote](https://www.blocknotejs.org
```
-
- | Props | Type | Description |
- | ------ | ----------------- | ------------------------------------------ |
- | editor | `BlockNoteEditor` | The block editor instance or configuration |
+
+ | プロパティ | タイプ | 説明 |
+ | ----- | ----------------- | -------------------- |
+ | エディター | `BlockNoteEditor` | ブロックエディターインスタンスまたは構成 |
diff --git a/packages/twenty-docs/l/ja/twenty-ui/input/buttons.mdx b/packages/twenty-docs/l/ja/twenty-ui/input/buttons.mdx
index 1c53eb1816..aa52901152 100644
--- a/packages/twenty-docs/l/ja/twenty-ui/input/buttons.mdx
+++ b/packages/twenty-docs/l/ja/twenty-ui/input/buttons.mdx
@@ -1,18 +1,18 @@
---
-title: Buttons
+title: ボタン
image: /images/user-guide/views/filter.png
---
-
+
-A list of buttons and button groups used throughout the app.
+アプリ全体で使用されるボタンおよびボタングループの一覧。
-## Button
+## ボタン
-
+
```jsx
import { Button } from "@/ui/input/button/components/Button";
@@ -21,7 +21,7 @@ A list of buttons and button groups used throughout the app.
console.log("click")}
+ onClick={() => console.log("クリック")}
/>
);
};
```
-
- | Props | Type | Description |
- | --------- | --------------------- | -------------------------------------------------------------------------------------------------------------------- |
- | className | string | Optional class name for additional styling |
- | Icon | `React.ComponentType` | An optional icon component that's displayed within the button |
- | title | string | The text content of the button |
- | fullWidth | boolean | Defines whether the button should span the whole width of its container |
- | variant | string | The visual style variant of the button. Options include `primary`, `secondary`, and `tertiary` |
- | size | string | The size of the button. Has two options: `small` and `medium` |
- | position | string | The position of the button in relation to its siblings. Options include: `standalone`, `left`, `right`, and `middle` |
- | accent | string | The accent color of the button. Options include: `default`, `blue`, and `danger` |
- | soon | boolean | Indicates if the button is marked as "soon" (such as for upcoming features) |
- | disabled | boolean | Specifies whether the button is disabled or not |
- | focus | boolean | Determines if the button has focus |
- | onClick | function | A callback function that triggers when the user clicks on the button |
+
+ | プロパティ | タイプ | 説明 |
+ | --------- | --------------------- | ------------------------------------------------------------------ |
+ | className | string | 追加のスタイリングのためのオプションクラス名 |
+ | アイコン | `React.ComponentType` | ボタン内に表示されるオプションのアイコンコンポーネント |
+ | タイトル | string | ボタンのテキスト内容 |
+ | fullWidth | ブール型 | ボタンがコンテナの全幅を占めるかどうかを定義します |
+ | バリアント | string | ボタンの視覚スタイルのバリアント。 オプションは `primary`、`secondary`、 `tertiary` を含みます |
+ | サイズ | string | ボタンのサイズ。 オプションは2つ:`small` と `medium` |
+ | "位置" | string | ボタンの兄弟関係における位置。 オプションは `standalone`、`left`、`right`、 `middle` を含みます |
+ | accent | string | ボタンのアクセント色。 オプションは `default`、`blue`、`danger` を含みます |
+ | 間もなく | ブール型 | ボタンが「soon」としてマークされているかどうかを示します(たとえば、今後の機能のために)。 |
+ | disabled | ブール型 | ボタンが無効かどうかを指定します |
+ | focus | ブール型 | ボタンにフォーカスがあるかどうかを決定します |
+ | onClick | function | ユーザーがボタンをクリックしたときにトリガーされるコールバック関数 |
-## Button Group
+## ボタングループ
-
+
```jsx
import { Button } from "@/ui/input/button/components/Button";
import { ButtonGroup } from "@/ui/input/button/components/ButtonGroup";
@@ -69,7 +69,7 @@ A list of buttons and button groups used throughout the app.
console.log("click")}
+ onClick={() => console.log("クリック")}
/>
console.log("click")}
+ onClick={() => console.log("クリック")}
/>
console.log("click")}
+ onClick={() => console.log("クリック")}
/>
);
@@ -115,21 +115,21 @@ A list of buttons and button groups used throughout the app.
```
-
- | Props | Type | Description |
- | --------- | --------- | ---------------------------------------------------------------------------------------------------------------- |
- | variant | string | The visual style variant of the buttons within the group. Options include `primary`, `secondary`, and `tertiary` |
- | size | string | The size of the buttons within the group. Has two options: `medium` and `small` |
- | accent | string | The accent color of the buttons within the group. Options include `default`, `blue` and `danger` |
- | className | string | Optional class name for additional styling |
- | children | ReactNode | An array of React elements representing the individual buttons within the group |
+
+ | プロパティ | タイプ | 説明 |
+ | --------- | --------- | ---------------------------------------------------------------------- |
+ | バリアント | string | グループ内のボタンの視覚スタイルのバリアント。 オプションは `primary`、`secondary`、 `tertiary` を含みます |
+ | サイズ | string | グループ内のボタンのサイズ。 オプションは2つ:`medium` と `small` |
+ | accent | string | グループ内のボタンのアクセント色。 オプションは `default`、`blue`、 `danger` を含みます |
+ | className | string | 追加のスタイリングのためのオプションクラス名 |
+ | children | ReactNode | グループ内の個々のボタンを表す React エレメントの配列 |
-## Floating Button
+## 浮動ボタン
-
+
```jsx
import { FloatingButton } from "@/ui/input/button/components/FloatingButton";
import { IconSearch } from "@tabler/icons-react";
@@ -139,7 +139,7 @@ A list of buttons and button groups used throughout the app.
-
- | Props | Type | Description |
- | ----------- | --------------------- | ---------------------------------------------------------------------------------------------------------------- |
- | className | string | Optional name for additional styling |
- | Icon | `React.ComponentType` | An optional icon component that's displayed within the button |
- | title | string | The text content of the button |
- | size | string | The size of the button. Has two options: `small` and `medium` |
- | position | string | The position of the button in relation to its siblings. Options include: `standalone`, `left`, `middle`, `right` |
- | applyShadow | boolean | Determines whether to apply shadow to a button |
- | applyBlur | boolean | Determines whether to apply a blur effect to the button |
- | disabled | boolean | Determines whether the button is disabled |
- | focus | boolean | Indicates if the button has focus |
+
+ | プロパティ | タイプ | 説明 |
+ | ----------- | --------------------- | ------------------------------------------------------------------ |
+ | className | string | 追加のスタイリングのためのオプション名 |
+ | アイコン | `React.ComponentType` | ボタン内に表示されるオプションのアイコンコンポーネント |
+ | タイトル | string | ボタンのテキスト内容 |
+ | サイズ | string | ボタンのサイズ。 オプションは2つ:`small` と `medium` |
+ | "位置" | string | ボタンの兄弟関係における位置。 オプションは `standalone`、`left`、`middle`、 `right` を含みます |
+ | applyShadow | ブール型 | ボタンにシャドウを適用するかどうかを決定します |
+ | applyBlur | ブール型 | ボタンにぼかし効果を適用するかどうかを決定します |
+ | disabled | ブール型 | ボタンが無効かどうかを決定します |
+ | focus | ブール型 | ボタンにフォーカスがあるかどうかを示します |
-## Floating Button Group
+## 浮動ボタングループ
-
+
```jsx
import { FloatingButton } from "@/ui/input/button/components/FloatingButton";
import { FloatingButtonGroup } from "@/ui/input/button/components/FloatingButtonGroup";
@@ -206,18 +206,18 @@ A list of buttons and button groups used throughout the app.
```
-
- | Props | Type | Description | Default |
- | -------- | --------- | ------------------------------------------------------------------------------- | ------- |
- | size | string | The size of the button. Has two options: `small` and `medium` | small |
- | children | ReactNode | An array of React elements representing the individual buttons within the group | |
+
+ | プロパティ | タイプ | 説明 | デフォルト |
+ | -------- | --------- | ------------------------------------ | ----- |
+ | サイズ | string | ボタンのサイズ。 オプションは2つ:`small` と `medium` | small |
+ | children | ReactNode | グループ内の個々のボタンを表す React エレメントの配列 | |
-## Floating Icon Button
+## 浮動アイコンボタン
-
+
```jsx
import { FloatingIconButton } from "@/ui/input/button/components/FloatingIconButton";
import { IconSearch } from "@tabler/icons-react";
@@ -233,7 +233,7 @@ A list of buttons and button groups used throughout the app.
applyBlur={true}
disabled={false}
focus={false}
- onClick={() => console.log("click")}
+ onClick={() => console.log("クリック")}
isActive={true}
/>
);
@@ -241,26 +241,26 @@ A list of buttons and button groups used throughout the app.
```
-
- | Props | Type | Description |
- | ----------- | --------------------- | -------------------------------------------------------------------------------------------------------------------- |
- | className | string | Optional name for additional styling |
- | Icon | `React.ComponentType` | An optional icon component that's displayed within the button |
- | size | string | The size of the button. Has two options: `small` and `medium` |
- | position | string | The position of the button in relation to its siblings. Options include: `standalone`, `left`, `right`, and `middle` |
- | applyShadow | boolean | Determines whether to apply shadow to a button |
- | applyBlur | boolean | Determines whether to apply a blur effect to the button |
- | disabled | boolean | Determines whether the button is disabled |
- | focus | boolean | Indicates if the button has focus |
- | onClick | function | A callback function that triggers when the user clicks on the button |
- | isActive | boolean | Determines if the button is in an active state |
+
+ | プロパティ | タイプ | 説明 |
+ | ----------- | --------------------- | ------------------------------------------------------------------ |
+ | className | string | 追加のスタイリングのためのオプション名 |
+ | アイコン | `React.ComponentType` | ボタン内に表示されるオプションのアイコンコンポーネント |
+ | サイズ | string | ボタンのサイズ。 オプションは2つ:`small` と `medium` |
+ | "位置" | string | ボタンの兄弟関係における位置。 オプションは `standalone`、`left`、`right`、 `middle` を含みます |
+ | applyShadow | ブール型 | ボタンにシャドウを適用するかどうかを決定します |
+ | applyBlur | ブール型 | ボタンにぼかし効果を適用するかどうかを決定します |
+ | disabled | ブール型 | ボタンが無効かどうかを決定します |
+ | focus | ブール型 | ボタンにフォーカスがあるかどうかを示します |
+ | onClick | function | ユーザーがボタンをクリックしたときにトリガーされるコールバック関数 |
+ | isActive | ブール型 | ボタンがアクティブな状態にあるかどうかを決定します |
-## Floating Icon Button Group
+## 浮動アイコンボタングループ
-
+
```jsx
import { FloatingIconButtonGroup } from "@/ui/input/button/components/FloatingIconButtonGroup";
import { IconClipboardText, IconCheckbox } from "@tabler/icons-react";
@@ -269,12 +269,12 @@ A list of buttons and button groups used throughout the app.
const iconButtons = [
{
Icon: IconClipboardText,
- onClick: () => console.log("Button 1 clicked"),
+ onClick: () => console.log("ボタン 1 がクリックされました"),
isActive: true,
},
{
Icon: IconCheckbox,
- onClick: () => console.log("Button 2 clicked"),
+ onClick: () => console.log("ボタン 2 がクリックされました"),
isActive: true,
},
];
@@ -290,19 +290,19 @@ A list of buttons and button groups used throughout the app.
```
-
- | Props | Type | Description |
- | ----------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
- | className | string | Optional name for additional styling |
- | size | string | The size of the button. Has two options: `small` and `medium` |
- | iconButtons | array | An array of objects, each representing an icon button in the group. Each object should include the icon component you want to display in the button, the function you want to call when a user clicks on the button, and whether the button should be active or not. |
+
+ | プロパティ | タイプ | 説明 |
+ | ----------- | ------ | ------------------------------------------------------------------------------------------------------------------------ |
+ | className | string | 追加のスタイリングのためのオプション名 |
+ | サイズ | string | ボタンのサイズ。 オプションは2つ:`small` と `medium` |
+ | iconButtons | array | グループ内のアイコンボタンをそれぞれ表すオブジェクトの配列。 各オブジェクトには、ボタンに表示したいアイコンコンポーネント、ユーザーがボタンをクリックした時に呼び出される関数、およびボタンをアクティブにするかどうかが含まれる必要があります。 |
-## Light Button
+## ライトボタン
-
+
```jsx
import { LightButton } from "@/ui/input/button/components/LightButton";
@@ -310,35 +310,35 @@ A list of buttons and button groups used throughout the app.
return console.log('click')}
+ onClick={()=>console.log('クリック')}
/>;
};
```
-
- | Props | Type | Description |
- | --------- | ----------------- | --------------------------------------------------------------------------- |
- | className | string | Optional name for additional styling |
- | icon | `React.ReactNode` | The icon you want to display in the button |
- | title | string | The text content of the button |
- | accent | string | The accent color of the button. Options include: `secondary` and `tertiary` |
- | active | boolean | Determines if the button is in an active state |
- | disabled | boolean | Determines whether the button is disabled |
- | focus | boolean | Indicates if the button has focus |
- | onClick | function | A callback function that triggers when the user clicks on the button |
+
+ | プロパティ | タイプ | 説明 |
+ | --------- | ----------------- | ------------------------------------------------ |
+ | className | string | 追加のスタイリングのためのオプション名 |
+ | アイコン | `React.ReactNode` | ボタンに表示したいアイコン |
+ | タイトル | string | ボタンのテキスト内容 |
+ | accent | string | ボタンのアクセント色。 オプションは `secondary`、 `tertiary` を含みます |
+ | アクティブ | ブール型 | ボタンがアクティブな状態にあるかどうかを決定します |
+ | disabled | ブール型 | ボタンが無効かどうかを決定します |
+ | focus | ブール型 | ボタンにフォーカスがあるかどうかを示します |
+ | onClick | function | ユーザーがボタンをクリックしたときにトリガーされるコールバック関数 |
-## Light Icon Button
+## ライトアイコンボタン
-
+
```jsx
import { LightIconButton } from "@/ui/input/button/components/LightIconButton";
import { IconSearch } from "@tabler/icons-react";
@@ -349,39 +349,39 @@ A list of buttons and button groups used throughout the app.
className
testId="test1"
Icon={IconSearch}
- title="Title"
+ title="タイトル"
size="small"
accent="secondary"
active={true}
disabled={false}
focus={true}
- onClick={() => console.log("click")}
+ onClick={() => console.log("クリック")}
/>
);
};
```
-
- | Props | Type | Description |
- | --------- | --------------------- | --------------------------------------------------------------------------- |
- | className | string | Optional name for additional styling |
- | testId | string | Test identifier for the button |
- | Icon | `React.ComponentType` | An optional icon component that's displayed within the button |
- | title | string | The text content of the button |
- | size | string | The size of the button. Has two options: `small` and `medium` |
- | accent | string | The accent color of the button. Options include: `secondary` and `tertiary` |
- | active | boolean | Determines if the button is in an active state |
- | disabled | boolean | Determines whether the button is disabled |
- | focus | boolean | Indicates if the button has focus |
- | onClick | function | A callback function that triggers when the user clicks on the button |
+
+ | プロパティ | タイプ | 説明 |
+ | --------- | --------------------- | ------------------------------------------------ |
+ | className | string | 追加のスタイリングのためのオプション名 |
+ | testId | string | ボタンのテスト識別子 |
+ | アイコン | `React.ComponentType` | ボタン内に表示されるオプションのアイコンコンポーネント |
+ | タイトル | string | ボタンのテキスト内容 |
+ | サイズ | string | ボタンのサイズ。 オプションは2つ:`small` と `medium` |
+ | accent | string | ボタンのアクセント色。 オプションは `secondary`、 `tertiary` を含みます |
+ | アクティブ | ブール型 | ボタンがアクティブな状態にあるかどうかを決定します |
+ | disabled | ブール型 | ボタンが無効かどうかを決定します |
+ | focus | ブール型 | ボタンにフォーカスがあるかどうかを示します |
+ | onClick | function | ユーザーがボタンをクリックしたときにトリガーされるコールバック関数 |
-## Main Button
+## メインボタン
-
+
```jsx
import { MainButton } from "@/ui/input/button/components/MainButton";
import { IconCheckbox } from "@tabler/icons-react";
@@ -389,7 +389,7 @@ A list of buttons and button groups used throughout the app.
export const MyComponent = () => {
return (
-
- | Props | Type | Description |
- | -------------------- | -------------------------------- | --------------------------------------------------------------------------------- |
- | title | string | The text content of the button |
- | fullWidth | boolean | Defines whether the button should span the whole width of its container |
- | variant | string | The visual style variant of the button. Options include `primary` and `secondary` |
- | soon | boolean | Indicates if the button is marked as "soon" (such as for upcoming features) |
- | Icon | `React.ComponentType` | An optional icon component that's displayed within the button |
- | React `button` props | `React.ComponentProps<'button'>` | All standard HTML button props are supported |
+
+ | プロパティ | タイプ | 説明 |
+ | -------------------- | -------------------------------- | ------------------------------------------------------ |
+ | タイトル | string | ボタンのテキスト内容 |
+ | fullWidth | ブール型 | ボタンがコンテナの全幅を占めるかどうかを定義します |
+ | バリアント | string | ボタンの視覚スタイルのバリアント。 オプションは `primary` と `secondary` を含みます |
+ | 間もなく | ブール型 | ボタンが「soon」としてマークされているかどうかを示します(たとえば、今後の機能のために)。 |
+ | アイコン | `React.ComponentType` | ボタン内に表示されるオプションのアイコンコンポーネント |
+ | React `button` props | `React.ComponentProps<'button'>` | 標準的なHTMLボタンのプロパティすべてがサポートされています |
-## Rounded Icon Button
+## 丸型アイコンボタン
-
+
```jsx
import { RoundedIconButton } from "@/ui/input/button/components/RoundedIconButton";
import { IconSearch } from "@tabler/icons-react";
@@ -430,10 +430,10 @@ A list of buttons and button groups used throughout the app.
```
-
- | Props | Type | Description |
- | -------------------- | ----------------------------------------------- | ----------- |
- | Icon | `React.ComponentType` | |
- | React `button` props | `React.ButtonHTMLAttributes` | |
+
+ | プロパティ | タイプ | 説明 |
+ | -------------------- | ----------------------------------------------- | -- |
+ | アイコン | `React.ComponentType` | |
+ | React `button` props | `React.ButtonHTMLAttributes` | |
diff --git a/packages/twenty-docs/l/ja/twenty-ui/input/checkbox.mdx b/packages/twenty-docs/l/ja/twenty-ui/input/checkbox.mdx
index b25eeba052..ce0a684b8f 100644
--- a/packages/twenty-docs/l/ja/twenty-ui/input/checkbox.mdx
+++ b/packages/twenty-docs/l/ja/twenty-ui/input/checkbox.mdx
@@ -1,16 +1,16 @@
---
-title: Checkbox
-image: /images/user-guide/tasks/tasks_header.png
+title: チェックボックス
+image: '""'
---
-
+
-Used when a user needs to select multiple values from several options.
+ユーザーが、複数のオプションから複数の値を選択する必要がある場合に使用されます。
-
+
```jsx
import { Checkbox } from "twenty-ui/display";
@@ -30,15 +30,15 @@ Used when a user needs to select multiple values from several options.
```
-
- | Props | Type | Description |
- | --------------- | -------- | -------------------------------------------------------------------------------------------- |
- | checked | boolean | Indicates whether the checkbox is checked |
- | indeterminate | boolean | Indicates whether the checkbox is in an indeterminate state (neither checked nor unchecked) |
- | onChange | function | The callback function you want to trigger when the checkbox state changes |
- | onCheckedChange | function | The callback function you want to trigger when the `checked` state changes |
- | variant | string | The visual style variant of the box. Options include: `primary`, `secondary`, and `tertiary` |
- | size | string | The size of the checkbox. Has two options: `small` and `large` |
- | shape | string | The shape of the checkbox. Has two options: `squared` and `rounded` |
+
+ | プロパティ | タイプ | 説明 |
+ | --------------- | ------ | ------------------------------------------------------------------------- |
+ | checked | ブール型 | チェックボックスがチェックされているかどうかを示します |
+ | 不確定 | ブール型 | チェックボックスが不確定な状態(チェック済みでも未チェックでもない)かどうかを示します |
+ | onChange | 関数 | チェックボックスの状態が変化したときにトリガーされるコールバック関数 |
+ | onCheckedChange | 関数 | `checked` 状態が変化したときにトリガーされるコールバック関数 |
+ | バリアント | string | ボックスのビジュアルスタイルのバリエーション。 オプションには `primary`、 `secondary`、 `tertiary` が含まれます |
+ | サイズ | string | チェックボックスのサイズ。 オプションは2つ:`small` と `large` |
+ | 形状 | string | チェックボックスの形状。 オプションは2つ:`squared` と `rounded` |
diff --git a/packages/twenty-docs/l/ja/twenty-ui/input/color-scheme.mdx b/packages/twenty-docs/l/ja/twenty-ui/input/color-scheme.mdx
index 1b1505d481..093c79b8b8 100644
--- a/packages/twenty-docs/l/ja/twenty-ui/input/color-scheme.mdx
+++ b/packages/twenty-docs/l/ja/twenty-ui/input/color-scheme.mdx
@@ -1,18 +1,18 @@
---
-title: Color Scheme
+title: カラースキーム
image: /images/user-guide/fields/field.png
---
-
+
-## Color Scheme Card
+## 配色カード
-Represents different color schemes and is specially tailored for light and dark themes.
+異なる配色を表し、ライトおよびダークテーマに特化されています。
-
+
```jsx
import { ColorSchemeCard } from "twenty-ui/display";
@@ -27,21 +27,21 @@ Represents different color schemes and is specially tailored for light and dark
```
-
- | Props | Type | Description | Default |
- | ---------------- | --------------------------------------- | ----------------------------------------------------------------------- | ------- |
- | variant | string | The color scheme variant. Options include `Dark`, `Light`, and `System` | light |
- | selected | boolean | If `true`, displays a checkmark to indicate the selected color scheme | |
- | additional props | `React.ComponentPropsWithoutRef<'div'>` | Standard HTML `div` element props | |
+
+ | プロパティ | タイプ | 説明 | デフォルト |
+ | -------- | --------------------------------------- | --------------------------------------------------- | ----- |
+ | バリアント | string | 配色のバリエーション。 オプションには `ダーク`、`ライト`、および `システム` が含まれています | ライト |
+ | 選択済み | ブール型 | `true` の場合、選択されているカラースキームを示すチェックマークを表示します | |
+ | 追加のプロパティ | `React.ComponentPropsWithoutRef<'div'>` | 標準の HTML `div` エレメントのプロパティ | |
-## Color Scheme Picker
+## 配色ピッカー
-Allows users to choose between different color schemes.
+ユーザーが異なる配色を選択できます。
-
+
```jsx
import { ColorSchemePicker } from "twenty-ui/display";
@@ -54,10 +54,10 @@ Allows users to choose between different color schemes.
```
-
- | Props | Type | Description |
- | -------- | -------------- | ---------------------------------------------------------------------------- |
- | value | `Color Scheme` | The currently selected color scheme |
- | onChange | function | The callback function you want to trigger when a user selects a color scheme |
+
+ | プロパティ | タイプ | 説明 |
+ | -------- | --------- | ------------------------------ |
+ | 値 | `カラースキーム` | 現在選択されている配色 |
+ | onChange | 関数 | ユーザーが配色を選択したときにトリガーされるコールバック関数 |
diff --git a/packages/twenty-docs/l/ja/twenty-ui/input/icon-picker.mdx b/packages/twenty-docs/l/ja/twenty-ui/input/icon-picker.mdx
index 59d269242e..c2187ddfed 100644
--- a/packages/twenty-docs/l/ja/twenty-ui/input/icon-picker.mdx
+++ b/packages/twenty-docs/l/ja/twenty-ui/input/icon-picker.mdx
@@ -1,16 +1,16 @@
---
-title: Icon Picker
+title: アイコンピッカー
image: /images/user-guide/github/github-header.png
---
-
+
-A dropdown-based icon picker that allows users to select an icon from a list.
+ドロップダウンベースのアイコンピッカーで、ユーザーがリストからアイコンを選択できます。
-
+
```jsx
import { RecoilRoot } from "recoil";
import React, { useState } from "react";
@@ -38,15 +38,15 @@ A dropdown-based icon picker that allows users to select an icon from a list.
```
-
- | Props | Type | Description |
- | --------------- | -------- | ------------------------------------------------------------------------------------------------------------------------- |
- | disabled | boolean | Disables the icon picker if set to `true` |
- | onChange | function | The callback function triggered when the user selects an icon. It receives an object with `iconKey` and `Icon` properties |
- | selectedIconKey | string | The key of the initially selected icon |
- | onClickOutside | function | Callback function triggered when the user clicks outside the dropdown |
- | onClose | function | Callback function triggered when the dropdown is closed |
- | onOpen | function | Callback function triggered when the dropdown is opened |
- | variant | string | The visual style variant of the clickable icon. Options include: `primary`, `secondary`, and `tertiary` |
+
+ | プロパティ | タイプ | 説明 |
+ | --------------- | ------ | ------------------------------------------------------------------------------ |
+ | 無効 | ブール型 | `true` に設定されるとアイコンピッカーは無効になります |
+ | onChange | 関数 | ユーザーがアイコンを選択したときにトリガーされるコールバック関数。 それは `iconKey` と `Icon` プロパティを持つオブジェクトを受け取ります |
+ | selectedIconKey | string | 最初に選択されたアイコンのキー |
+ | onClickOutside | 関数 | ユーザーがドロップダウン外をクリックしたときにトリガーされるコールバック関数 |
+ | onClose | 関数 | ドロップダウンが閉じられたときにトリガーされるコールバック関数 |
+ | onOpen | 関数 | ドロップダウンが開かれたときにトリガーされるコールバック関数 |
+ | バリアント | string | クリック可能なアイコンのビジュアルスタイルバリアント。 オプションには `primary`、 `secondary`、 `tertiary` が含まれます |
diff --git a/packages/twenty-docs/l/ja/twenty-ui/input/image-input.mdx b/packages/twenty-docs/l/ja/twenty-ui/input/image-input.mdx
index 0d563d7c37..f8f88fb97c 100644
--- a/packages/twenty-docs/l/ja/twenty-ui/input/image-input.mdx
+++ b/packages/twenty-docs/l/ja/twenty-ui/input/image-input.mdx
@@ -1,16 +1,16 @@
---
-title: Image Input
+title: 画像入力
image: /images/user-guide/objects/objects.png
---
-
+
-Allows users to upload and remove an image.
+ユーザーが画像をアップロードおよび削除できるようにします。
-
+
```jsx
import { ImageInput } from "@/ui/input/components/ImageInput";
@@ -20,15 +20,15 @@ Allows users to upload and remove an image.
```
-
- | Props | Type | Description |
- | ------------ | -------- | ------------------------------------------------------------------------------------------------- |
- | picture | string | The image source URL |
- | onUpload | function | The function called when a user uploads a new image. It receives the `File` object as a parameter |
- | onRemove | function | The function called when the user clicks on the remove button |
- | onAbort | function | The function called when a user clicks on the abort button during image upload |
- | isUploading | boolean | Indicates whether an image is currently being uploaded |
- | errorMessage | string | An optional error message to display below the image input |
- | disabled | boolean | If `true`, the entire input is disabled, and the buttons are not clickable |
+
+ | プロパティ | タイプ | 説明 |
+ | ------------ | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------- |
+ | 写真 | string | 画像ソースURL |
+ | onUpload | 関数 | 新しい画像がアップロードされたときに呼び出される関数。 新しい画像がアップロードされたときに呼び出される関数。 パラメーターとして `File` オブジェクトを受け取ります 新しい画像がアップロードされたときに呼び出される関数。 パラメーターとして `File` オブジェクトを受け取ります |
+ | onRemove | 関数 | ユーザーが削除ボタンをクリックしたときに呼び出される関数 |
+ | onAbort | 関数 | 画像のアップロード中に中止ボタンをクリックしたときに呼び出される関数 |
+ | isUploading | ブール型 | 画像が現在アップロード中であるかどうかを示します |
+ | errorMessage | string | 画像入力の下に表示されるオプションのエラーメッセージ |
+ | disabled | ブール型 | `true` の場合、入力全体が無効化され、ボタンをクリックできなくなります。 |
diff --git a/packages/twenty-docs/l/ja/twenty-ui/input/radio.mdx b/packages/twenty-docs/l/ja/twenty-ui/input/radio.mdx
index e6246e631f..36c793dd72 100644
--- a/packages/twenty-docs/l/ja/twenty-ui/input/radio.mdx
+++ b/packages/twenty-docs/l/ja/twenty-ui/input/radio.mdx
@@ -1,16 +1,16 @@
---
-title: Radio
+title: ラジオ
image: /images/user-guide/create-workspace/workspace-cover.png
---
-
+
-Used when users may only choose one option from a series of options.
+ユーザーが一連の選択肢の中から 1 つのオプションのみを選ぶことができるときに使用されます。
-
+
```jsx
import { Radio } from "twenty-ui/display";
@@ -41,27 +41,27 @@ Used when users may only choose one option from a series of options.
```
-
- | Props | Type | Description |
- | --------------- | ---------------------- | ------------------------------------------------------------------------------------------------ |
- | style | `React.CSS` properties | Additional inline styles for the component |
- | className | string | Optional CSS class for additional styling |
- | checked | boolean | Indicates whether the radio button is checked |
- | value | string | The label or text associated with the radio button |
- | onChange | function | The function called when the selected radio button is changed |
- | onCheckedChange | function | The function called when the `checked` state of the radio button changes |
- | size | string | The size of the radio button. Options include: `large` and `small` |
- | disabled | boolean | If `true`, the radio button is disabled and not clickable |
- | labelPosition | string | The position of the label text relative to the radio button. Has two options: `left` and `right` |
+
+ | プロパティ | タイプ | 説明 |
+ | --------------- | ----------------- | ------------------------------------------------ |
+ | スタイル | `React.CSS` プロパティ | コンポーネントの追加インラインスタイル |
+ | className | string | 追加のスタイリング用のオプションのCSSクラス |
+ | checked | ブール型 | ラジオボタンが選択されているかどうかを示す |
+ | 値 | string | ラジオボタンに関連付けられたラベルまたはテキスト |
+ | onChange | 関数 | 選択したラジオボタンが変更されたときに呼ばれる関数 |
+ | onCheckedChange | 関数 | ラジオボタンの「checked」状態が変更されたときに呼び出される関数 |
+ | サイズ | string | ラジオボタンのサイズ。 オプションには、`large` と `small` があります |
+ | disabled | ブール型 | 「true」の場合、ラジオボタンは無効になり、クリックできなくなります |
+ | ラベルの位置 | string | ラジオボタンに対するラベルテキストの位置。 2 つのオプション:`left` と `right` |
-## Radio Group
+## ラジオグループ
-Groups together related radio buttons.
+関連するラジオボタンをまとめます。
-
+
```jsx
import React, { useState } from "react";
import { Radio, RadioGroup } from "twenty-ui/display";
@@ -86,12 +86,12 @@ Groups together related radio buttons.
```
-
- | Props | Type | Description |
+
+ | プロパティ | タイプ | 説明 |
| ------------- | ----------------- | ---------------------------------------------------------------------------------- |
- | value | string | The value of the currently selected radio button |
- | onChange | function | The callback function triggered when the radio button is changed |
- | onValueChange | function | The callback function triggered when the selected value in the group changes. |
+ | 値 | string | 現在選択されているラジオボタンの値 |
+ | onChange | 機能 | ラジオボタンが変更されたときにトリガーされるコールバック関数 |
+ | onValueChange | 機能 | グループ内の選択された値が変更されたときにトリガーされるコールバック関数。 |
| children | `React.ReactNode` | Allows you to pass React components (such as Radio) as children to the Radio Group |
diff --git a/packages/twenty-docs/l/ja/twenty-ui/input/select.mdx b/packages/twenty-docs/l/ja/twenty-ui/input/select.mdx
index d685bf4012..fe2505299a 100644
--- a/packages/twenty-docs/l/ja/twenty-ui/input/select.mdx
+++ b/packages/twenty-docs/l/ja/twenty-ui/input/select.mdx
@@ -1,16 +1,16 @@
---
-title: Select
+title: 選択する
image: /images/user-guide/what-is-twenty/20.png
---
-
+
-Allows users to pick a value from a list of predefined options.
+ユーザーが事前定義されたオプションのリストから値を選択できるようにします。
-
+
```jsx
import { RecoilRoot } from 'recoil';
import { IconTwentyStar } from 'twenty-ui/display';
@@ -38,14 +38,14 @@ Allows users to pick a value from a list of predefined options.
```
-
- | Props | Type | Description |
- | --------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
- | className | string | Optional CSS class for additional styling |
- | disabled | boolean | When set to `true`, disables user interaction with the component |
- | label | string | The label to describe the purpose of the `Select` component |
- | onChange | function | The function called when the selected values change |
- | options | array | Represents the options available for the `Selected` component. It's an array of objects where each object has a `value` (the unique identifier), `label` (the unique identifier), and an optional `Icon` |
- | value | string | Represents the currently selected value. It should match one of the `value` properties in the `options` array |
+
+ | プロパティ | タイプ | 説明 |
+ | --------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------- |
+ | className | string | 追加のスタイリング用のオプションのCSSクラス |
+ | disabled | ブール型 | `true` に設定すると、コンポーネントとのユーザーインタラクションが無効になります。 |
+ | ラベル | string | `選択` コンポーネントの目的を説明するラベル |
+ | onChange | 関数 | 選択された値が変更されたときに呼び出される機能 |
+ | オプション | 配列 | Represents the options available for the `Selected` component. 各オブジェクトが `value`(一意の識別子)、`label`(一意の識別子)、およびオプションの `アイコン` を持つオブジェクトの配列です。 |
+ | 値 | string | 現在選択されている値を表します。 その `options` 配列の `value` プロパティのいずれかと一致する必要があります。 |
diff --git a/packages/twenty-docs/l/ja/twenty-ui/input/text.mdx b/packages/twenty-docs/l/ja/twenty-ui/input/text.mdx
index 8cad1352ae..0925b9f022 100644
--- a/packages/twenty-docs/l/ja/twenty-ui/input/text.mdx
+++ b/packages/twenty-docs/l/ja/twenty-ui/input/text.mdx
@@ -1,40 +1,40 @@
---
-title: Text
+title: テキスト
image: /images/user-guide/notes/notes_header.png
---
-
+
-## Text Input
+## テキスト入力
-Allows users to enter and edit text.
+ユーザーがテキストを入力および編集できるようにします。
-
+
```jsx
import { RecoilRoot } from "recoil";
import { TextInput } from "@/ui/input/components/TextInput";
export const MyComponent = () => {
const handleChange = (text) => {
- console.log("Input changed:", text);
+ console.log("入力が変更されました:", text);
};
const handleKeyDown = (event) => {
- console.log("Key pressed:", event.key);
+ console.log("キーが押されました:", event.key);
};
return (
@@ -45,28 +45,28 @@ Allows users to enter and edit text.
```
-
- | Props | Type | Description |
- | -------------- | ------------- | ---------------------------------------------------------------------------------------------------------------------- |
- | className | string | Optional name for additional styling |
- | label | string | Represents the label for the input |
- | onChange | function | The function called when the input value changes |
- | fullWidth | boolean | Indicates whether the input should take up 100% of the width |
- | disableHotkeys | boolean | Indicates whether hotkeys are enabled for the input |
- | error | string | Represents the error message to be displayed. When provided, it also adds an icon error on the right side of the input |
- | onKeyDown | function | Called when a key is pressed down while the input field is focused. Receives a `React.KeyboardEvent` as an argument |
- | RightIcon | IconComponent | An optional icon component displayed on the right side of the input |
+
+ | プロパティ | タイプ | 説明 |
+ | -------------- | ----------- | --------------------------------------------------------------------------------------------------------------------------- |
+ | className | string | 追加スタイル用のオプション名 |
+ | ラベル | string | 入力のラベルを表します。 |
+ | onChange | function | 入力値が変わるときに呼び出される関数 |
+ | fullWidth | ブール型 | Indicates whether the input should take up 100% of the width |
+ | disableHotkeys | ブール型 | Indicates whether hotkeys are enabled for the input |
+ | エラー | string | 表示されるエラーメッセージを表します。 指定された場合、入力の右側にアイコンエラーも追加されます。 |
+ | onKeyDown | 機能 | 入力フィールドにフォーカスがあるときにキーが押されたときに呼び出されます。 入力フィールドにフォーカスがあるときにキーが押されたときに呼び出されます。 Receives a `React.KeyboardEvent` as an argument |
+ | 右アイコン | アイコンコンポーネント | 入力の右側に表示されるオプションのアイコンコンポーネント |
- The component also accepts other HTML input element props.
+ コンポーネントは、他の HTML 入力要素のプロパティも受け入れます。
-## Autosize Text Input
+## オートサイズテキスト入力
-Text input component that automatically adjusts its height based on the content.
+コンテンツに基づいて高さを自動調整するテキスト入力コンポーネント。
-
+
```jsx
import { RecoilRoot } from "recoil";
import { AutosizeTextInput } from "@/ui/input/components/AutosizeTextInput";
@@ -89,25 +89,25 @@ Text input component that automatically adjusts its height based on the content.
```
-
- | Props | Type | Description |
- | ----------- | -------- | --------------------------------------------------------------------------- |
- | onValidate | function | The callback function you want to trigger when the user validates the input |
- | minRows | number | The minimum number of rows for the text area |
- | placeholder | string | The placeholder text you want to display when the text area is empty |
- | onFocus | function | The callback function you want to trigger when the text area gains focus |
- | variant | string | The variant of the input. Options include: `default`, `icon`, and `button` |
- | buttonTitle | string | The title for the button (only applicable for the button variant) |
- | value | string | The initial value for the text area |
+
+ | プロパティ | タイプ | 説明 |
+ | ---------- | ------ | ------------------------------------------------------------------------ |
+ | onValidate | 機能 | ユーザーが入力を検証するときにトリガーされるコールバック関数 |
+ | 最小行数 | 数 | The minimum number of rows for the text area |
+ | プレースホルダー | string | The placeholder text you want to display when the text area is empty |
+ | onFocus | 機能 | テキストエリアにフォーカスが当たったときにトリガーされるコールバック関数 |
+ | バリアント | string | The variant of the input. オプションには `default`、 `icon`、および `button` が含まれます。 |
+ | ボタンタイトル | string | ボタンのタイトル(ボタンのバリアントの場合のみ適用可能) |
+ | 値 | string | テキストエリアの初期値 |
-## Text Area
+## テキストエリア
-Allows you to create multi-line text inputs.
+複数行のテキスト入力を作成できます。
-
+
```jsx
import { TextArea } from "@/ui/input/components/TextArea";
@@ -125,13 +125,13 @@ Allows you to create multi-line text inputs.
```
-
- | Props | Type | Description |
- | ----------- | -------- | -------------------------------------------------------------- |
- | disabled | boolean | Indicates whether the text area is disabled |
- | minRows | number | Minimum number of visible rows for the text area. |
- | onChange | function | Callback function triggered when the text area content changes |
- | placeholder | string | Placeholder text displayed when the text area is empty |
- | value | string | The current value of the text area |
+
+ | プロパティ | タイプ | 説明 |
+ | -------- | ------ | ---------------------------------- |
+ | 無効 | ブール型 | テキストエリアが無効かどうかを示します |
+ | 最小行数 | 数 | テキストエリアの最小可視行数。 |
+ | onChange | 機能 | テキストエリアの内容が変更されたときにトリガーされるコールバック関数 |
+ | プレースホルダー | string | テキストエリアが空のときに表示されるプレースホルダーテキスト |
+ | 値 | string | テキストエリアの現在の値 |
diff --git a/packages/twenty-docs/l/ja/twenty-ui/input/toggle.mdx b/packages/twenty-docs/l/ja/twenty-ui/input/toggle.mdx
index 39f1645abd..d3304f9606 100644
--- a/packages/twenty-docs/l/ja/twenty-ui/input/toggle.mdx
+++ b/packages/twenty-docs/l/ja/twenty-ui/input/toggle.mdx
@@ -1,14 +1,14 @@
---
-title: Toggle
+title: 切り替え
image: /images/user-guide/table-views/table.png
---
-
+
-
+
```jsx
import { Toggle } from "twenty-ui/input";
@@ -25,12 +25,12 @@ image: /images/user-guide/table-views/table.png
```
-
- | Props | Type | Description | Default |
- | ---------- | -------- | ------------------------------------------------------------------------------------------- | ------------ |
- | value | boolean | The current state of the toggle | `false` |
- | onChange | function | Callback function triggered when the toggle state changes | |
- | color | string | Color of the toggle when it\ | s blue color |
- | toggleSize | string | Size of the toggle, affecting both height and weight. Has two options: `small` and `medium` | medium |
+
+ | プロパティ | タイプ | 説明 | デフォルト |
+ | -------- | ------ | --------------------------------------------------------------------------- | ----- |
+ | 値 | ブール型 | トグルの現在の状態 | `偽` |
+ | onChange | 機能 | トグルスイッチの状態が変化した際にトリガーされるコールバック関数 | |
+ | カラー | string | トグルの色\ | 青色 |
+ | トグルサイズ | string | トグルのサイズは、高さと幅の両方に影響します。 トグルのサイズは、高さと幅の両方に影響します。 オプションは2つ:`small` と `medium` | 中 |
diff --git a/packages/twenty-docs/l/ja/twenty-ui/introduction.mdx b/packages/twenty-docs/l/ja/twenty-ui/introduction.mdx
index 88bad64156..91156a1870 100644
--- a/packages/twenty-docs/l/ja/twenty-ui/introduction.mdx
+++ b/packages/twenty-docs/l/ja/twenty-ui/introduction.mdx
@@ -1,30 +1,30 @@
---
-title: Overview
-description: Component library for Twenty CRM
+title: 概要
+description: Twenty CRMのためのコンポーネントライブラリ
---
import { CardTitle } from "/snippets/card-title.mdx"
-## Components
+## コンポーネント
- Display
- Display components for showing information visually
+ 表示
+ 視覚的に情報を表示するためのコンポーネント
- Feedback
- Feedback components for user notifications
+ フィードバック
+ ユーザー通知のためのフィードバックコンポーネント
- Input
- Input components for user interaction
+ 入力
+ ユーザーとの対話のための入力コンポーネント
-
- Navigation
- Navigation components for user interface
+
+ ナビゲーション
+ ユーザーインターフェースのためのナビゲーションコンポーネント
diff --git a/packages/twenty-docs/l/ja/twenty-ui/navigation.mdx b/packages/twenty-docs/l/ja/twenty-ui/navigation.mdx
index b17dad4220..b51d35678b 100644
--- a/packages/twenty-docs/l/ja/twenty-ui/navigation.mdx
+++ b/packages/twenty-docs/l/ja/twenty-ui/navigation.mdx
@@ -1,8 +1,8 @@
---
-title: Navigation
-image: /images/user-guide/tasks/tasks_header.png
+title: ナビゲーション
+image: '""'
---
-
+
diff --git a/packages/twenty-docs/l/ja/twenty-ui/navigation/breadcrumb.mdx b/packages/twenty-docs/l/ja/twenty-ui/navigation/breadcrumb.mdx
index aadbee8ee4..47fda70593 100644
--- a/packages/twenty-docs/l/ja/twenty-ui/navigation/breadcrumb.mdx
+++ b/packages/twenty-docs/l/ja/twenty-ui/navigation/breadcrumb.mdx
@@ -1,16 +1,16 @@
---
-title: Breadcrumb
+title: ブレッドクラム
image: /images/user-guide/fields/field.png
---
-
+
-Renders a breadcrumb navigation bar.
+ブレッドクラムナビゲーションバーをレンダリングします。
-
+
```jsx
import { BrowserRouter } from "react-router-dom";
import { Breadcrumb } from "@/ui/navigation/bread-crumb/components/Breadcrumb";
@@ -32,10 +32,10 @@ Renders a breadcrumb navigation bar.
```
-
- | Props | Type | Description |
- | --------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
- | className | string | Optional class name for additional styling |
- | links | array | An array of objects, each representing a breadcrumb link. Each object has a `children` property (the text content of the link) and an optional `href` property (the URL to navigate to when the link is clicked) |
+
+ | プロパティ | タイプ | 説明 |
+ | --------- | ------ | --------------------------------------------------------------------------------------------------------------------- |
+ | className | string | 追加のスタイリングのためのオプションクラス名 |
+ | リンク | 配列 | 各オブジェクトはブレッドクラムリンクを表します。 各オブジェクトには `children` プロパティ(リンクのテキストコンテンツ)とオプションの `href` プロパティ(リンクをクリックしたときに移動するURL)が含まれています。 |
diff --git a/packages/twenty-docs/l/ja/twenty-ui/navigation/links.mdx b/packages/twenty-docs/l/ja/twenty-ui/navigation/links.mdx
index e9f7e3d80f..8b1a327b0f 100644
--- a/packages/twenty-docs/l/ja/twenty-ui/navigation/links.mdx
+++ b/packages/twenty-docs/l/ja/twenty-ui/navigation/links.mdx
@@ -1,18 +1,18 @@
---
-title: Links
+title: リンク
image: /images/user-guide/what-is-twenty/20.png
---
-
+
-## Contact Link
+## 連絡先リンク
-A stylized link component for displaying contact information.
+連絡先情報を表示するためのスタイライズされたリンクコンポーネントです。
-
+
```jsx
import { BrowserRouter as Router } from 'react-router-dom';
@@ -38,22 +38,22 @@ A stylized link component for displaying contact information.
```
-
- | Props | Type | Description |
- | --------- | ----------------- | ---------------------------------------------------------- |
- | className | string | Optional name for additional styling |
- | href | string | The target URL or path for the link |
- | onClick | function | Callback function to be triggered when the link is clicked |
- | children | `React.ReactNode` | The content to be displayed inside the link |
+
+ | プロパティ | タイプ | 説明 |
+ | --------- | ----------------- | ---------------------------- |
+ | className | string | 追加のスタイリングのためのオプション名 |
+ | href | string | リンクのターゲットURLまたはパス |
+ | onClick | function | リンクがクリックされた際にトリガーされるコールバック関数 |
+ | children | `React.ReactNode` | リンク内に表示されるコンテンツ |
-## Raw Link
+## 生リンク
-A stylized link component for displaying links.
+リンクを表示するためのスタイライズされたリンクコンポーネントです。
-
+
```jsx
import { RawLink } from "/navigation";
import { BrowserRouter as Router } from "react-router-dom";
@@ -75,22 +75,22 @@ A stylized link component for displaying links.
```
-
- | Props | Type | Description |
- | --------- | ----------------- | ---------------------------------------------------------- |
- | className | string | Optional name for additional styling |
- | href | string | The target URL or path for the link |
- | onClick | function | Callback function to be triggered when the link is clicked |
- | children | `React.ReactNode` | The content to be displayed inside the link |
+
+ | プロパティ | タイプ | 説明 |
+ | --------- | ----------------- | ---------------------------- |
+ | className | string | 追加のスタイリングのためのオプション名 |
+ | href | string | リンクのターゲットURLまたはパス |
+ | onClick | 機能 | リンクがクリックされた際にトリガーされるコールバック関数 |
+ | children | `React.ReactNode` | リンク内に表示されるコンテンツ |
-## Rounded Link
+## 丸リンク
-A rounded-styled link with a Chip component for links.
+リンクのためのチップコンポーネントを備えた丸いスタイルのリンクです。
-
+
```jsx
import { RoundedLink } from "/navigation";
import { BrowserRouter as Router } from "react-router-dom";
@@ -111,21 +111,21 @@ A rounded-styled link with a Chip component for links.
```
-
- | Props | Type | Description |
- | -------- | ----------------- | ---------------------------------------------------------- |
- | href | string | The target URL or path for the link |
- | children | `React.ReactNode` | The content to be displayed inside the link |
- | onClick | function | Callback function to be triggered when the link is clicked |
+
+ | プロパティ | タイプ | 説明 |
+ | -------- | ----------------- | ---------------------------- |
+ | href | string | リンクのターゲットURLまたはパス |
+ | children | `React.ReactNode` | リンク内に表示されるコンテンツ |
+ | onClick | 機能 | リンクがクリックされた際にトリガーされるコールバック関数 |
-## Social Link
+## ソーシャルリンク
-Stylized social links, with support for various social link types, such as URLs, LinkedIn, and X (or Twitter).
+URL、LinkedIn、X(またはTwitter)など、さまざまなソーシャルリンクタイプに対応したスタイライズされたソーシャルリンクです。
-
+
```jsx
import { SocialLink } from "twenty-ui/navigation";
import { BrowserRouter as Router } from "react-router-dom";
@@ -143,12 +143,12 @@ Stylized social links, with support for various social link types, such as URLs,
```
-
- | Props | Type | Description |
- | -------- | ----------------- | --------------------------------------------------------------------------- |
- | href | string | The target URL or path for the link |
- | children | `React.ReactNode` | The content to be displayed inside the link |
- | type | string | The type of social links. Options include: `url`, `LinkedIn`, and `Twitter` |
- | onClick | function | Callback function to be triggered when the link is clicked |
+
+ | プロパティ | タイプ | 説明 |
+ | -------- | ----------------- | ------------------------------------------------------- |
+ | href | string | リンクのターゲットURLまたはパス |
+ | children | `React.ReactNode` | リンク内に表示されるコンテンツ |
+ | タイプ | string | ソーシャルリンクの種類です。 オプションには、`url`、`LinkedIn`、`Twitter`があります。 |
+ | onClick | function | リンクがクリックされた際にトリガーされるコールバック関数 |
diff --git a/packages/twenty-docs/l/ja/twenty-ui/navigation/menu-item.mdx b/packages/twenty-docs/l/ja/twenty-ui/navigation/menu-item.mdx
index 209c6270ea..0a41c59f79 100644
--- a/packages/twenty-docs/l/ja/twenty-ui/navigation/menu-item.mdx
+++ b/packages/twenty-docs/l/ja/twenty-ui/navigation/menu-item.mdx
@@ -1,16 +1,16 @@
---
-title: Menu Item
+title: メニュー項目
image: /images/user-guide/kanban-views/kanban.png
---
-
+
-A versatile menu item designed to be used in a menu or navigation list.
+メニューまたはナビゲーションリストで使用するために設計された汎用性の高いメニュー項目です。
-
+
```jsx
import { IconBell } from "@tabler/icons-react";
import { IconAlertCircle } from "@tabler/icons-react";
@@ -41,30 +41,30 @@ A versatile menu item designed to be used in a menu or navigation list.
```
-
- | Props | Type | Description |
- | ------------- | ------------- | ---------------------------------------------------------------------------------------------------- |
- | LeftIcon | IconComponent | An optional left icon displayed before the text in the menu item |
- | accent | string | Specifies the accent color of the menu item. Options include: `default`, `danger`, and `placeholder` |
- | text | string | The text content of the menu item |
- | iconButtons | array | An array of objects representing additional icon buttons associated with the menu item |
- | isTooltipOpen | boolean | Controls the visibility of the tooltip associated with the menu item |
- | testId | string | The data-testid attribute for testing purposes |
- | onClick | function | Callback function triggered when the menu item is clicked |
- | className | string | Optional name for additional styling |
+
+ | プロパティ | タイプ | 説明 |
+ | ------------- | ----------- | -------------------------------------------------------------------- |
+ | 左アイコン | アイコンコンポーネント | メニュー項目のテキストの前に表示されるオプションの左アイコン |
+ | アクセント | string | メニュー項目のアクセントカラーを指定します。 オプションは `default`、`danger`、`placeholder` を含みます |
+ | テキスト | string | メニュー項目のテキスト内容 |
+ | アイコンボタン | 配列 | メニュー項目に関連する追加のアイコンボタンを表すオブジェクトの配列 |
+ | ツールチップオープンフラグ | ブール型 | メニュー項目に関連するツールチップの表示状態を制御する |
+ | テストID | string | テスト目的のためのdata-testid属性 |
+ | onClick | 関数 | メニュー項目がクリックされたときにトリガーされるコールバック関数 |
+ | className | string | 追加スタイル用のオプション名 |
-## Variants
+## バリエーション
-The different variants of the menu item component include the following:
+メニュー項目コンポーネントの異なるバリエーションには以下が含まれます:
-### Command
+### コマンド
-A command-style menu item within a menu to indicate keyboard shortcuts.
+キーボードショートカットを示すためのメニュー内のコマンド形式のメニュー項目。
-
+
```jsx
import { IconBell } from "@tabler/icons-react";
import { MenuItemCommand } from "twenty-ui/display";
@@ -89,25 +89,25 @@ A command-style menu item within a menu to indicate keyboard shortcuts.
```
-
- | Props | Type | Description |
- | ------------ | ------------- | ---------------------------------------------------------------- |
- | LeftIcon | IconComponent | An optional left icon displayed before the text in the menu item |
- | text | string | The text content of the menu item |
- | firstHotKey | string | The first keyboard shortcut associated with the command |
- | secondHotKey | string | The second keyboard shortcut associated with the command |
- | isSelected | boolean | Indicates whether the menu item is selected or highlighted |
- | onClick | function | Callback function triggered when the menu item is clicked |
- | className | string | Optional name for additional styling |
+
+ | プロパティ | タイプ | 説明 |
+ | ------------ | ----------- | -------------------------------- |
+ | 左アイコン | アイコンコンポーネント | メニュー項目のテキストの前に表示されるオプションの左アイコン |
+ | テキスト | string | メニュー項目のテキスト内容 |
+ | firstHotKey | string | コマンドに関連する最初のキーボードショートカット |
+ | secondHotKey | string | コマンドに関連する2番目のキーボードショートカット |
+ | isSelected | ブール型 | メニュー項目が選択またはハイライトされているかどうかを示します |
+ | onClick | 関数 | メニュー項目がクリックされたときにトリガーされるコールバック関数 |
+ | className | string | 追加スタイル用のオプション名 |
-### Draggable
+### ドラッグ可能
-A draggable menu item component designed to be used in a menu or list where items can be dragged, and additional actions can be performed through icon buttons.
+メニューまたはリスト内で項目をドラッグし、アイコンボタンを通じて追加のアクションを実行するために設計されたドラッグ可能なメニュー項目コンポーネント。
-
+
```jsx
import { IconBell } from "@tabler/icons-react";
import { IconAlertCircle } from "@tabler/icons-react";
@@ -134,26 +134,26 @@ A draggable menu item component designed to be used in a menu or list where item
```
-
- | Props | Type | Description |
- | -------------- | ------------- | ------------------------------------------------------------------------------------------ |
- | LeftIcon | IconComponent | An optional left icon displayed before the text in the menu item |
- | accent | string | The accent color of the menu item. It can either be `default`, `placeholder`, and `danger` |
- | iconButtons | array | An array of objects representing additional icon buttons associated with the menu item |
- | isTooltipOpen | boolean | Controls the visibility of the tooltip associated with the menu item |
- | onClick | function | Callback function to be triggered when the link is clicked |
- | text | string | The text content of the menu item |
- | isDragDisabled | boolean | Indicates whether dragging is disabled |
- | className | string | Optional name for additional styling |
+
+ | プロパティ | タイプ | 説明 |
+ | -------------- | ----------- | ------------------------------------------------------------- |
+ | 左アイコン | アイコンコンポーネント | メニュー項目のテキストの前に表示されるオプションの左アイコン |
+ | アクセント | string | メニュー項目のアクセントカラー。 `default`、`placeholder`、および `danger` のいずれかです |
+ | アイコンボタン | 配列 | メニュー項目に関連する追加のアイコンボタンを表すオブジェクトの配列 |
+ | ツールチップオープンフラグ | ブール型 | メニュー項目に関連するツールチップの表示状態を制御します |
+ | onClick | 関数 | リンクがクリックされるとトリガーされるコールバック関数 |
+ | テキスト | string | メニュー項目のテキスト内容 |
+ | isDragDisabled | ブール型 | ドラッグが無効かどうかを示します |
+ | className | string | 追加スタイル用のオプション名 |
-### Multi Select
+### マルチ選択
-Provides a way to implement multi-select functionality with an associated checkbox.
+関連するチェックボックスを使用してマルチ選択機能を実装する方法を提供します。
-
+
```jsx
import { IconBell } from "@tabler/icons-react";
import { MenuItemMultiSelect } from "twenty-ui/display";
@@ -172,23 +172,23 @@ Provides a way to implement multi-select functionality with an associated checkb
```
-
- | Props | Type | Description |
- | -------------- | ------------- | ---------------------------------------------------------------- |
- | LeftIcon | IconComponent | An optional left icon displayed before the text in the menu item |
- | text | string | The text content of the menu item |
- | selected | boolean | Indicates whether the menu item is selected (checked) |
- | onSelectChange | function | Callback function triggered when the checkbox state changes |
- | className | string | Optional name for additional styling |
+
+ | プロパティ | タイプ | 説明 |
+ | -------------- | ----------- | ----------------------------------- |
+ | 左アイコン | アイコンコンポーネント | メニュー項目のテキストの前に表示されるオプションの左アイコン |
+ | テキスト | string | メニュー項目のテキスト内容 |
+ | selected | ブール型 | メニュー項目が選択されているかどうかを示します |
+ | onSelectChange | 関数 | チェックボックスの状態が変更されたときにトリガーされるコールバック関数 |
+ | className | string | 追加スタイル用のオプション名 |
-### Multi Select Avatar
+### マルチ選択アバター
-A multi-select menu item with an avatar, a checkbox for selection, and textual content.
+選択用のチェックボックスとテキストコンテンツを備えたアバター付きのマルチ選択メニュー項目。
-
+
```jsx
import { MenuItemMultiSelectAvatar } from "twenty-ui/display";
@@ -208,23 +208,23 @@ A multi-select menu item with an avatar, a checkbox for selection, and textual c
```
-
- | Props | Type | Description |
- | -------------- | ----------- | -------------------------------------------------------------------- |
- | avatar | `ReactNode` | The avatar or icon to be displayed on the left side of the menu item |
- | text | string | The text content of the menu item |
- | selected | boolean | Indicates whether the menu item is selected (checked) |
- | onSelectChange | function | Callback function triggered when the checkbox state changes |
- | className | string | Optional name for additional styling |
+
+ | プロパティ | タイプ | 説明 |
+ | -------------- | ----------- | ----------------------------------- |
+ | avatar | `ReactNode` | メニュー項目の左側に表示されるアバターまたはアイコン |
+ | テキスト | string | メニュー項目のテキスト内容 |
+ | selected | ブール型 | メニュー項目が選択されているかどうかを示します |
+ | onSelectChange | 関数 | チェックボックスの状態が変更されたときにトリガーされるコールバック関数 |
+ | className | string | 追加スタイル用のオプション名 |
-### Navigate
+### ナビゲート
-A menu item featuring an optional left icon, textual content, and a right-chevron icon.
+オプションの左アイコン、テキストコンテンツ、および右のチューロマークを特徴とするメニュー項目。
-
+
```jsx
import { IconBell } from "@tabler/icons-react";
import { MenuItemNavigate } from "twenty-ui/display";
@@ -246,22 +246,22 @@ A menu item featuring an optional left icon, textual content, and a right-chevro
```
-
- | Props | Type | Description |
- | --------- | ------------- | ---------------------------------------------------------------- |
- | LeftIcon | IconComponent | An optional left icon displayed before the text in the menu item |
- | text | string | The text content of the menu item |
- | onClick | function | Callback function to be triggered when the menu item is clicked |
- | className | string | Optional name for additional styling |
+
+ | プロパティ | タイプ | 説明 |
+ | --------- | ----------- | -------------------------------- |
+ | 左アイコン | アイコンコンポーネント | メニュー項目のテキストの前に表示されるオプションの左アイコン |
+ | テキスト | string | メニュー項目のテキスト内容 |
+ | onClick | 関数 | メニュー項目がクリックされたときにトリガーされるコールバック関数 |
+ | className | string | 追加スタイル用のオプション名 |
-### Select
+### 選択
-A selectable menu item, featuring optional left content (icon and text) and an indicator (check icon) for the selected state.
+オプションの左コンテンツ(アイコンとテキスト)と選択状態のインジケーター(チェックアイコン)を備えた選択可能なメニュー項目。
-
+
```jsx
import { IconBell } from "@tabler/icons-react";
import { MenuItemSelect } from "twenty-ui/display";
@@ -286,25 +286,25 @@ A selectable menu item, featuring optional left content (icon and text) and an i
```
-
- | Props | Type | Description |
- | --------- | ------------- | ---------------------------------------------------------------- |
- | LeftIcon | IconComponent | An optional left icon displayed before the text in the menu item |
- | text | string | The text content of the menu item |
- | selected | boolean | Indicates whether the menu item is selected (checked) |
- | disabled | boolean | Indicates whether the menu item is disabled |
- | hovered | boolean | Indicates whether the menu item is currently being hovered over |
- | onClick | function | Callback function to be triggered when the menu item is clicked |
- | className | string | Optional name for additional styling |
+
+ | プロパティ | タイプ | 説明 |
+ | --------- | ----------- | -------------------------------- |
+ | 左アイコン | アイコンコンポーネント | メニュー項目のテキストの前に表示されるオプションの左アイコン |
+ | テキスト | string | メニュー項目のテキスト内容 |
+ | selected | ブール型 | メニュー項目が選択されているかどうかを示します |
+ | 無効 | ブール型 | メニュー項目が無効かどうかを示します |
+ | hovered | ブール型 | メニュー項目が現在ホバーされているかどうかを示します |
+ | onClick | 関数 | メニュー項目がクリックされたときにトリガーされるコールバック関数 |
+ | className | string | 追加スタイル用のオプション名 |
-### Select Avatar
+### 選択アバター
-A selectable menu item with an avatar, featuring optional left content (avatar and text) and an indicator (check icon) for the selected state.
+アバター付きの選択可能なメニュー項目、オプションの左コンテンツ(アバターとテキスト)および選択状態のためのインジケーター(チェックアイコン)。
-
+
```jsx
import { MenuItemSelectAvatar } from "twenty-ui/display";
@@ -333,26 +333,26 @@ A selectable menu item with an avatar, featuring optional left content (avatar a
```
-
- | Props | Type | Description |
- | --------- | ----------- | -------------------------------------------------------------------- |
- | avatar | `ReactNode` | The avatar or icon to be displayed on the left side of the menu item |
- | text | string | The text content of the menu item |
- | selected | boolean | Indicates whether the menu item is selected (checked) |
- | disabled | boolean | Indicates whether the menu item is disabled |
- | hovered | boolean | Indicates whether the menu item is currently being hovered over |
- | testId | string | The data-testid attribute for testing purposes |
- | onClick | function | Callback function to be triggered when the menu item is clicked |
- | className | string | Optional name for additional styling |
+
+ | プロパティ | タイプ | 説明 |
+ | --------- | ----------- | -------------------------------- |
+ | avatar | `ReactNode` | メニュー項目の左側に表示されるアバターまたはアイコン |
+ | テキスト | string | メニュー項目のテキスト内容 |
+ | selected | ブール型 | メニュー項目が選択されているかどうかを示します |
+ | 無効 | ブール型 | メニュー項目が無効かどうかを示します |
+ | hovered | ブール型 | メニュー項目が現在ホバーされているかどうかを示します |
+ | テストID | string | テスト目的のためのdata-testid属性 |
+ | onClick | 関数 | メニュー項目がクリックされたときにトリガーされるコールバック関数 |
+ | className | string | 追加スタイル用のオプション名 |
-### Select Color
+### 色を選択
-A selectable menu item with a color sample for scenarios where you want users to choose a color from a menu.
+ユーザーがメニューから色を選択できるシナリオに使用するための、カラーパレットサンプルを備えた選択可能なメニュー項目。
-
+
```jsx
import { MenuItemSelectColor } from "twenty-ui/display";
@@ -376,25 +376,25 @@ A selectable menu item with a color sample for scenarios where you want users to
```
-
- | Props | Type | Description |
- | --------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
- | color | string | The theme color to be displayed as a sample in the menu item. Options include: `green`, `turquoise`, `sky`, `blue`, `purple`, `pink`, `red`, `orange`, `yellow`, and `gray` |
- | selected | boolean | Indicates whether the menu item is selected (checked) |
- | disabled | boolean | Indicates whether the menu item is disabled |
- | hovered | boolean | Indicates whether the menu item is currently being hovered over |
- | variant | string | The variant of the color sample. It can either be `default` or `pipeline` |
- | onClick | function | Callback function to be triggered when the menu item is clicked |
- | className | string | Optional name for additional styling |
+
+ | プロパティ | タイプ | 説明 |
+ | --------- | ------ | ---------------------------------------------------------------------------------------------------------------------- |
+ | カラー | string | メニュー項目にサンプルとして表示されるテーマカラー。 選択肢には、`green`、`turquoise`、`sky`、`blue`、`purple`、`pink`、`red`、`orange`、`yellow`、`gray`があります。 |
+ | 選択済み | ブール型 | メニュー項目が選択されている(チェックされている)かどうかを示します |
+ | 無効 | ブール型 | メニュー項目が無効かどうかを示します |
+ | ホバー | ブール型 | メニュー項目が現在ホバーされているかどうかを示します |
+ | バリアント | string | 色サンプルのバリアント。 `default` または `pipeline` のいずれかです。 |
+ | onClick | 関数 | メニュー項目がクリックされたときにトリガーされるコールバック関数 |
+ | className | string | 追加スタイル用のオプション名 |
-### Toggle
+### 切り替え
-A menu item with an associated toggle switch to allow users to enable or disable a specific feature
+特定の機能を有効または無効にするためのトグルスイッチが付いたメニュー項目
-
+
```jsx
import { IconBell } from '@tabler/icons-react';
@@ -415,14 +415,14 @@ A menu item with an associated toggle switch to allow users to enable or disable
```
-
- | Props | Type | Description |
- | -------------- | ------------- | ----------------------------------------------------------------- |
- | LeftIcon | IconComponent | An optional left icon displayed before the text in the menu item |
- | text | string | The text content of the menu item |
- | toggled | boolean | Indicates whether the toggle switch is in the "on" or "off" state |
- | onToggleChange | function | Callback function triggered when the toggle switch state changes |
- | toggleSize | string | The size of the toggle switch. It can be either \ |
- | className | string | Optional name for additional styling |
+
+ | プロパティ | タイプ | 説明 |
+ | -------------- | ----------- | -------------------------------- |
+ | 左アイコン | アイコンコンポーネント | メニュー項目のテキストの前に表示されるオプションの左アイコン |
+ | テキスト | string | メニュー項目のテキスト内容 |
+ | 切り替え済み | ブール型 | トグルスイッチが「オン」または「オフ」かを示します |
+ | onToggleChange | 関数 | トグルスイッチの状態が変化した際にトリガーされるコールバック関数 |
+ | toggleSize | string | トグルスイッチのサイズです。 いずれかになります \ |
+ | className | string | 追加スタイル用のオプション名 |
diff --git a/packages/twenty-docs/l/ja/twenty-ui/navigation/navigation-bar.mdx b/packages/twenty-docs/l/ja/twenty-ui/navigation/navigation-bar.mdx
index a77e9f34e6..de7a69a1f9 100644
--- a/packages/twenty-docs/l/ja/twenty-ui/navigation/navigation-bar.mdx
+++ b/packages/twenty-docs/l/ja/twenty-ui/navigation/navigation-bar.mdx
@@ -1,16 +1,16 @@
---
-title: Navigation Bar
+title: ナビゲーションバー
image: /images/user-guide/table-views/table.png
---
-
+
-Renders a navigation bar that contains multiple `NavigationBarItem` components.
+複数の`NavigationBarItem`コンポーネントを含むナビゲーションバーをレンダリングします。
-
+
```jsx
import { IconHome, IconUser, IconSettings } from '@tabler/icons-react';
import { NavigationBar } from "@/ui/navigation/navigation-bar/components/NavigationBar";
@@ -40,10 +40,10 @@ Renders a navigation bar that contains multiple `NavigationBarItem` components.
```
-
- | Props | Type | Description |
- | -------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
- | activeItemName | string | The name of the currently active navigation item |
- | items | array | An array of objects representing each navigation item. Each object contains the `name` of the item, the `Icon` component to display, and an `onClick` function to be called when the item is clicked |
+
+ | プロパティ | タイプ | 説明 |
+ | -------------- | ------ | ------------------------------------------------------------------------------------------------------------------- |
+ | activeItemName | string | 現在アクティブなナビゲーション項目の名前 |
+ | アイテム | 配列 | 各ナビゲーションアイテムを表すオブジェクトの配列。 各オブジェクトには、アイテムの `name`、表示する `Icon` コンポーネント、およびアイテムがクリックされたときに呼び出される `onClick` 関数が含まれています。 |
diff --git a/packages/twenty-docs/l/ja/twenty-ui/navigation/step-bar.mdx b/packages/twenty-docs/l/ja/twenty-ui/navigation/step-bar.mdx
index 66c420f561..335fa2fab1 100644
--- a/packages/twenty-docs/l/ja/twenty-ui/navigation/step-bar.mdx
+++ b/packages/twenty-docs/l/ja/twenty-ui/navigation/step-bar.mdx
@@ -1,16 +1,16 @@
---
-title: Step Bar
+title: ステップバー
image: /images/user-guide/api/api.png
---
-
+
-Displays progress through a sequence of numbered steps by highlighting the active step. It renders a container with steps, each represented by the `Step` component.
+アクティブなステップをハイライトして、一連の番号付きステップの進行状況を表示します。 各 `Step` コンポーネントによって表されるステップを含むコンテナをレンダリングします。 各 `Step` コンポーネントによって表されるステップを含むコンテナをレンダリングします。 アクティブなステップをハイライトして、一連の番号付きステップの進行状況を表示します。 各 `Step` コンポーネントによって表されるステップを含むコンテナをレンダリングします。 各 `Step` コンポーネントによって表されるステップを含むコンテナをレンダリングします。 各 `Step` コンポーネントによって表されるステップを含むコンテナをレンダリングします。
-
+
```jsx
import { StepBar } from "@/ui/navigation/step-bar/components/StepBar";
@@ -26,9 +26,9 @@ Displays progress through a sequence of numbered steps by highlighting the activ
```
-
- | Props | Type | Description |
- | ---------- | ------ | ------------------------------------------------------------------------------------------------- |
- | activeStep | number | The index of the currently active step. This determines which step should be visually highlighted |
+
+ | プロパティ | タイプ | 説明 |
+ | --------- | --- | ----------------------------------------------------- |
+ | アクティブステップ | 数 | 現在アクティブなステップのインデックス。 これにより、どのステップを視覚的にハイライトするかが決まります。 |
diff --git a/packages/twenty-docs/l/ja/twenty-ui/progress-bar.mdx b/packages/twenty-docs/l/ja/twenty-ui/progress-bar.mdx
index 2e4735ab30..3eec71cb81 100644
--- a/packages/twenty-docs/l/ja/twenty-ui/progress-bar.mdx
+++ b/packages/twenty-docs/l/ja/twenty-ui/progress-bar.mdx
@@ -1,16 +1,16 @@
---
-title: Feedback
+title: フィードバック
image: /images/user-guide/emails/emails_header.png
---
-
+
-Indicates progress or countdown and moves from right to left.
+進捗やカウントダウンを示し、右から左に動きます。
-
+
```jsx
import { ProgressBar } from "twenty-ui/feedback";
@@ -29,24 +29,24 @@ Indicates progress or countdown and moves from right to left.
```
-
- | Props | Type | Description | Default |
- | --------- | ------- | ------------------------------------------------------------------------------------ | --------- |
- | duration | number | The total duration of the progress bar animation in milliseconds | 3 |
- | delay | number | The delay in starting the progress bar animation in milliseconds | 0 |
- | easing | string | Easing function for the progress bar animation | easeInOut |
- | barHeight | number | The height of the bar in pixels | 24 |
- | barColor | string | The color of the bar | gray80 |
- | autoStart | boolean | If `true`, the progress bar animation starts automatically when the component mounts | `true` |
+
+ | プロパティ | タイプ | 説明 | デフォルト |
+ | ----- | ------ | ------------------------------------------------------ | --------- |
+ | 継続時間 | 数 | プログレスバーアニメーションの総デュレーション(ミリ秒) | 3 |
+ | 遅延 | 数 | プログレスバーアニメーションの開始遅延時間(ミリ秒) | 0 |
+ | イージング | string | プログレスバーアニメーションのイージング関数 | easeInOut |
+ | バーの高さ | 数 | バーの高さ(ピクセル) | 24 |
+ | バーの色 | string | バーの色 | グレー80 |
+ | 自動開始 | ブール型 | `true`の場合、コンポーネントがマウントされたときにプログレスバーアニメーションが自動的に開始されます。 | `真` |
-## Circular Progress Bar
+## 円形プログレスバー
-Indicates the progress of a task, often used in loading screens or areas where you want to communicate ongoing processes to the user.
+タスクの進捗を示し、ユーザーに進行中のプロセスを伝達したい場合に、ロード画面などでよく使用されます。
-
+
```jsx
import { CircularProgressBar } from "@/ui/feedback/progress-bar/components/CircularProgressBar";
@@ -56,11 +56,11 @@ Indicates the progress of a task, often used in loading screens or areas where y
```
-
- | Props | Type | Description | Default |
- | -------- | ------ | ------------------------------------- | ------------ |
- | size | number | The size of the circular progress bar | 50 |
- | barWidth | number | The width of the progress bar line | 5 |
- | barColor | string | The color of the progress bar | currentColor |
+
+ | プロパティ | タイプ | 説明 | デフォルト |
+ | ----- | ------ | ------------- | ----- |
+ | サイズ | 数 | 円形プログレスバーのサイズ | 50 |
+ | バーの幅 | 数 | プログレスバーのラインの幅 | 5 |
+ | バーの色 | string | プログレスバーの色 | 現在の色 |
diff --git a/packages/twenty-docs/l/ja/user-guide/ai/capabilities/ai-agents.mdx b/packages/twenty-docs/l/ja/user-guide/ai/capabilities/ai-agents.mdx
index 18a4cd90bc..0b3e56a2c9 100644
--- a/packages/twenty-docs/l/ja/user-guide/ai/capabilities/ai-agents.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/ai/capabilities/ai-agents.mdx
@@ -1,34 +1,34 @@
---
-title: AI Agents
-description: Integrate AI capabilities directly into your automation workflows.
+title: AIエージェント
+description: AI機能を自動化ワークフローに直接統合します。
---
- This feature is in development and will be available in beta soon.
+ この機能は開発中で、まもなくベータ版として利用可能になります。
-## Overview
+## 概要
-Integrate AI capabilities directly into your automation workflows for intelligent data processing and decision-making.
+AI の機能を自動化ワークフローに直接統合し、インテリジェントなデータ処理と意思決定を実現します。
-## Capabilities
+## 機能
-| Feature | Description |
-| ------------------- | ------------------------------------------------ |
-| **AI actions** | Add AI-powered steps to any workflow |
-| **Data enrichment** | Automatically enhance records with external data |
-| **Classification** | Categorize records based on content analysis |
-| **Summarization** | Generate summaries from text fields |
-| **Custom prompts** | Define exactly how AI processes your data |
+| 機能 | 説明 |
+| ------------- | --------------------------- |
+| **AI アクション** | あらゆるワークフローに AI を活用したステップを追加 |
+| **データ強化** | 外部データでレコードを自動的に補完する |
+| **分類** | 内容分析に基づいてレコードを分類する |
+| **要約** | テキストフィールドから要約を生成する |
+| **カスタムプロンプト** | AI がデータをどのように処理するかを正確に定義する |
-## Use Cases
+## ユースケース
-* **Lead scoring**: Automatically score and prioritize inbound leads
-* **Data cleanup**: Standardize company names and contact information
-* **Email drafts**: Generate follow-up emails based on meeting notes
-* **Record routing**: Assign records to the right team member based on content
+* **リードスコアリング**: インバウンドリードに自動でスコアを付け、優先順位を付ける
+* **データクレンジング**: 企業名と連絡先情報を標準化する
+* **メールの下書き**: 議事録に基づいてフォローアップメールの下書きを生成する
+* **レコードのルーティング**: 内容に基づいて適切なチームメンバーにレコードを割り当てる
-## Related
+## 関連
-* [Workflows Overview](/l/ja/user-guide/workflows/overview) — automation basics
-* [AI Permissions](/l/ja/user-guide/ai/capabilities/permissions-access-control) — access control for AI agents
+* [ワークフローの概要](/l/ja/user-guide/workflows/overview) — 自動化の基本
+* [AI 権限](/l/ja/user-guide/ai/capabilities/permissions-access-control) — AI エージェントのアクセス制御
diff --git a/packages/twenty-docs/l/ja/user-guide/ai/capabilities/ai-chatbot.mdx b/packages/twenty-docs/l/ja/user-guide/ai/capabilities/ai-chatbot.mdx
index d7cbbc04fc..7086a5e93b 100644
--- a/packages/twenty-docs/l/ja/user-guide/ai/capabilities/ai-chatbot.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/ai/capabilities/ai-chatbot.mdx
@@ -1,41 +1,41 @@
---
-title: AI Chatbot
-description: An intelligent assistant that helps you interact with your CRM data using natural language.
+title: AI チャットボット
+description: 自然言語でCRMデータとやり取りできるインテリジェントなアシスタントです。
---
- This feature is in development and will be available in beta soon.
+ この機能は開発中で、まもなくベータ版として利用可能になります。
-## Overview
+## 概要
-An intelligent assistant that helps you interact with your CRM data using natural language.
+自然言語でCRMデータとやり取りできるインテリジェントなアシスタントです。
-## Capabilities
+## 機能
-| Feature | Description |
-| ---------------------------- | ------------------------------------------------------------------------- |
-| **Natural language queries** | Ask questions in plain English instead of building filters |
-| **Full data access** | Query records, relationships, and metrics across your workspace |
-| **Page context** | Reference "this company" or "this opportunity" based on your current view |
-| **Conversational** | Follow-up questions maintain context from previous queries |
+| 機能 | 説明 |
+| --------------- | ------------------------------------------------------ |
+| **自然言語クエリ** | フィルターを作成する代わりに、平易な英語で質問できます |
+| **データへのフルアクセス** | ワークスペース全体にわたり、レコード、リレーションシップ、指標に対してクエリを実行できます |
+| **ページコンテキスト** | 現在の表示に基づいて、"this company" や "this opportunity" を参照できます |
+| **会話型** | 追加の質問でも前のクエリのコンテキストを維持します |
-## Example Interactions
+## 会話例
-### Finding Records
+### レコードの検索
-* "Show me all opportunities over $50,000"
-* "Find contacts I haven't emailed in 2 weeks"
-* "List companies in the healthcare industry"
+* "5万ドルを超える商談をすべて表示して"
+* "過去2週間メールしていない連絡先を検索して"
+* "ヘルスケア業界の企業を一覧表示して"
-### Getting Insights
+### インサイトを得る
-* "What's my total pipeline value?"
-* "How many deals closed last month?"
-* "Which stage has the most stuck opportunities?"
+* "パイプラインの合計金額は?"
+* "先月クローズした商談は何件?"
+* "どのステージで停滞している商談が最も多い?"
-### Using Page Context
+### ページコンテキストを活用する
-* "Summarize my interactions with this person" (on a contact page)
-* "What opportunities are linked to this company?" (on a company page)
-* "When was this deal last updated?" (on an opportunity page)
+* "この人とのやり取りを要約して" (連絡先ページで)
+* "どの商談がこの会社に関連付けられていますか?" (会社ページで)
+* "この商談の最終更新はいつ?" (商談ページで)
diff --git a/packages/twenty-docs/l/ja/user-guide/ai/capabilities/permissions-access-control.mdx b/packages/twenty-docs/l/ja/user-guide/ai/capabilities/permissions-access-control.mdx
index ebbfb1d9c7..aca4fbb3a0 100644
--- a/packages/twenty-docs/l/ja/user-guide/ai/capabilities/permissions-access-control.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/ai/capabilities/permissions-access-control.mdx
@@ -1,35 +1,35 @@
---
-title: Permissions & Access Control
-description: Control what AI agents can access and modify in your workspace.
+title: 権限とアクセス制御
+description: AI エージェントがワークスペース内でアクセスおよび変更できる内容を制御します。
---
-## Overview
+## 概要
-AI agents respect your existing permission structure. This is particularly important for teams who want to control exactly what automated AI processes can access or modify in their workspace.
+AI エージェントは既存の権限構造に従います。 これは、ワークスペース内で自動化された AI プロセスがアクセスまたは変更できる範囲を厳密に管理したいチームにとって特に重要です。
-## Assign a Role to an AI Agent
+## AI エージェントに役割を割り当てる
-1. Go to **Settings → Roles**
-2. Click on the role you want to assign
-3. Open the **Assignment** tab
-4. Under **AI Agents**, click **+ Assign to AI agent**
-5. Select the AI agent from the list
-6. Confirm the assignment
+1. **設定 → 役割** に移動
+2. 割り当てたい役割をクリック
+3. **割り当て** タブを開く
+4. 「**AI Agents**」で、**+ Assign to AI agent** をクリックします
+5. リストから AI エージェントを選択
+6. 割り当てを確認する
-## Why Assign Roles to AI Agents?
+## AI エージェントに役割を割り当てる理由
-| Benefit | Description |
-| ---------------- | ------------------------------------------------- |
-| **Security** | Limit what data AI agents can access or modify |
-| **Compliance** | Ensure AI only processes the data it needs |
-| **Control** | Prevent unintended actions from AI automations |
-| **Auditability** | Track which actions were performed by which agent |
+| 利点 | 説明 |
+| ------------ | ------------------------------ |
+| **セキュリティ** | AI エージェントがアクセスまたは変更できるデータを制限する |
+| **コンプライアンス** | AI が必要なデータのみを処理するようにする |
+| **制御** | AI 自動化による意図しない操作を防止する |
+| **監査可能性** | どのエージェントがどの操作を実行したかを追跡する |
- For AI agents running within workflows, role assignment ensures the agent cannot access or modify data outside its intended scope—even if the workflow has broader permissions.
+ ワークフロー内で実行される AI エージェントの場合、役割の割り当てにより、ワークフローにより広い権限がある場合でも、エージェントが意図された範囲外のデータにアクセスしたり変更したりできないようにします。
-## Related
+## 関連
-* [Permissions](/l/ja/user-guide/permissions-access/capabilities/permissions) — detailed information on creating and managing roles
-* [AI Agents](/l/ja/user-guide/ai/capabilities/ai-agents) — AI capabilities in workflows
+* [権限](/l/ja/user-guide/permissions-access/capabilities/permissions) — 役割の作成と管理に関する詳細情報
+* [AI エージェント](/l/ja/user-guide/ai/capabilities/ai-agents) — ワークフローにおける AI 機能
diff --git a/packages/twenty-docs/l/ja/user-guide/ai/overview.mdx b/packages/twenty-docs/l/ja/user-guide/ai/overview.mdx
index bd4ee68a79..89df2ec12b 100644
--- a/packages/twenty-docs/l/ja/user-guide/ai/overview.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/ai/overview.mdx
@@ -1,62 +1,62 @@
---
title: AI
-description: AI-powered features coming soon to Twenty.
+description: AI搭載機能がまもなく Twenty に登場します。
---
-## What's Coming
+## 今後の展開
-Twenty is building AI capabilities to help your team work smarter. We're focusing on two major areas:
+Twenty は、チームがよりスマートに働けるよう支援する AI 機能を構築しています。 私たちは、次の2つの主要分野に注力しています:
-### 1. AI Chatbot
+### 1. AI チャットボット
-A conversational assistant that understands your context and has access to all your Twenty data.
+コンテキストを理解し、Twenty のすべてのデータにアクセスできる会話型アシスタントです。
-**Key capabilities:**
+**主な機能:**
-* **Full data access**: Query any record, relationship, or metric in your workspace
-* **Page context awareness**: Reference "this company" or "this opportunity" based on where you are in Twenty
-* **Natural language**: Ask questions and get answers without navigating menus
+* **完全なデータアクセス**:ワークスペース内のあらゆるレコード、リレーションシップ、メトリクスをクエリできます
+* **ページコンテキストの認識**:Twenty 内の表示場所に基づいて "this company" や "this opportunity" を参照できます
+* **自然言語**:メニューを操作せずに質問し、回答を得られます
-**Example prompts:**
+**プロンプト例:**
-* "What opportunities are closing this month?"
-* "Which deals have been in Negotiation for more than 30 days?"
-* "Summarize my interactions with this person"
+* "今月クローズ予定の商談はどれですか?"
+* "「Negotiation」に30日以上留まっている商談はどれですか?"
+* "この人とのやり取りを要約して"
-### 2. AI Agents in Workflows
+### 2. ワークフローにおける AI エージェント
-Extend your workflows with AI-powered actions and autonomous agents.
+AI アクションと自律型エージェントでワークフローを拡張します。
-**Key capabilities:**
+**主な機能:**
-* **AI actions**: Use AI to enrich data, classify records, generate summaries, and more
-* **Autonomous agents**: Let agents execute multi-step tasks within a workflow
-* **Custom prompts**: Define exactly how AI should process your data
+* **AI アクション**:AI を使用してデータの充実化、レコードの分類、要約の生成などを行います
+* **自律型エージェント**:ワークフロー内で複数ステップのタスクをエージェントに実行させます
+* **カスタムプロンプト**:AI がデータをどのように処理すべきかを正確に定義します
-**Use cases:**
+**ユースケース:**
-* Automatically categorize inbound leads
-* Enrich company data from public sources
-* Generate follow-up email drafts based on meeting notes
-* Score opportunities based on engagement patterns
+* インバウンドリードを自動分類する
+* 公開情報から企業データを充実させる
+* 議事録に基づいてフォローアップメールの下書きを生成する
+* エンゲージメントのパターンに基づいて商談をスコアリングする
-## Permissions and Access Control
+## 権限とアクセス制御
-AI agents will be managed through the existing permissions system:
+AI エージェントは既存の権限システムを通じて管理されます:
-1. Go to **Settings → Roles**
-2. Configure which data each AI agent can access
-3. Set read/write permissions per object
+1. **設定 → 役割** に移動
+2. 各 AI エージェントがアクセスできるデータを設定する
+3. オブジェクトごとに読み取り/書き込み権限を設定する
-This ensures AI agents respect your data governance policies and only access what they need.
+これにより、AI エージェントがデータガバナンスポリシーを遵守し、必要なものにのみアクセスすることを保証します。
-## Stay Updated
+## 最新情報を入手
-We'll update this section as AI features become available. In the meantime:
+AI 機能が利用可能になり次第、このセクションを更新します。 それまでの間:
-* Follow our [GitHub](https://github.com/twentyhq/twenty) for development updates
-* Join our [Discord](https://discord.gg/twenty) to share feedback and feature requests
+* 開発の最新情報は私たちの[GitHub](https://github.com/twentyhq/twenty)をフォローしてください
+* フィードバックや機能リクエストを共有するには、私たちの[Discord](https://discord.gg/twenty)に参加してください
diff --git a/packages/twenty-docs/l/ja/user-guide/billing/capabilities/pricing-plans.mdx b/packages/twenty-docs/l/ja/user-guide/billing/capabilities/pricing-plans.mdx
index 90bf7e7cbb..2736e5997c 100644
--- a/packages/twenty-docs/l/ja/user-guide/billing/capabilities/pricing-plans.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/billing/capabilities/pricing-plans.mdx
@@ -1,79 +1,79 @@
---
-title: Pricing Plans
-description: Learn about Twenty's pricing plans and how to switch between them.
+title: 料金プラン
+description: Twenty の料金プランと切り替え方法について説明します。
---
-## Overview
+## 概要
-Twenty offers flexible pricing to fit teams of all sizes, whether you prefer cloud hosting or self-hosting.
+Twenty は、クラウドホスティングでもセルフホスティングでも、あらゆる規模のチームに適した柔軟な料金を提供します。
-## Cloud Plans
+## クラウドプラン
-### Pro (Cloud)
+### Pro(クラウド)
-For teams ready to scale:
+スケールする準備ができているチーム向け:
-* All core CRM features
-* Email and calendar sync
-* Workflows and automations
-* Standard support
+* すべてのコア CRM 機能
+* メールとカレンダーの同期
+* ワークフローと自動化
+* 標準サポート
- Premium features (SSO and row-level permissions) are not included in the Pro plan.
+ プレミアム機能(SSO と行レベル権限)は Pro プランには含まれません。
-### Organization (Cloud)
+### Organization(クラウド)
-For larger teams with advanced needs:
+より高度なニーズを持つ大規模チーム向け:
-* Everything in Pro
-* **Premium features**: SSO integration and row-level permissions
-* Priority support
+* Pro のすべての内容
+* **プレミアム機能**:SSO 連携と行レベル権限
+* 優先サポート
-## Self-Hosted Plans
+## セルフホスト型プラン
-### Free (Self-Hosted)
+### Free(セルフホスト)
-Host Twenty on your own infrastructure at no cost:
+自社インフラで Twenty を無料でホスト:
-* All Pro features included
-* Community support via Discord
-* Full control over your data
+* Pro のすべての機能を含む
+* Discord でのコミュニティサポート
+* データの完全なコントロール
-### Organization (Self-Hosted)
+### Organization(セルフホスト)
-For teams who need premium features while self-hosting:
+セルフホストしながらプレミアム機能が必要なチーム向け:
-* All Pro features
-* **Premium features**: SSO integration and row-level permissions
-* Twenty team support
-* No requirement to publish custom code as open-source before distributing
+* Pro のすべての機能
+* **プレミアム機能**:SSO 連携と行レベル権限
+* Twenty チームによるサポート
+* 配布前にカスタムコードをオープンソースとして公開する必要はありません
-## Premium Features
+## プレミアム機能
-Premium features are only available on the Organization plans (Cloud or Self-Hosted):
+プレミアム機能は Organization プラン(クラウド/セルフホスト)でのみ利用可能:
-* **SSO integration**: Single Sign-On with your identity provider
-* **Row-level permissions**: Fine-grained access control at the record level
+* **SSO 連携**:ID プロバイダーによるシングルサインオン
+* **行レベル権限**:レコード単位のきめ細かなアクセス制御
-## Switching Plans
+## プランの切り替え
-### Upgrade to Organization
+### Organization にアップグレード
-1. Go to **Settings → Billing**
-2. Click **Switch to Organization**
-3. Confirm your upgrade
+1. **設定 → 請求** へ移動
+2. 「**Switch to Organization**」をクリック
+3. アップグレードを確認する
-### Downgrade to Pro
+### Pro にダウングレード
-Contact support to downgrade your plan.
+プランのダウングレードはサポートにご連絡ください。
-### Switch to Yearly Billing
+### 年払いに切り替える
-1. Go to **Settings → Billing**
-2. Click **Switch to Yearly**
-3. Save with annual billing
+1. **設定 → 請求** へ移動
+2. 「**Switch to Yearly**」をクリック
+3. 年払いで節約
-### Switch to Monthly Billing
+### 月額に切り替える
-Contact support to switch back to monthly billing.
+月額請求に戻すにはサポートにご連絡ください。
diff --git a/packages/twenty-docs/l/ja/user-guide/billing/capabilities/workflow-credits.mdx b/packages/twenty-docs/l/ja/user-guide/billing/capabilities/workflow-credits.mdx
index 0ce8e3be72..4a9eed73a2 100644
--- a/packages/twenty-docs/l/ja/user-guide/billing/capabilities/workflow-credits.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/billing/capabilities/workflow-credits.mdx
@@ -1,49 +1,49 @@
---
-title: Workflow Credits
-description: Understanding workflow credits, consumption, and how to purchase more.
+title: ワークフロークレジット
+description: ワークフロークレジットの仕組み、消費、追加購入方法。
---
-## Overview
+## 概要
-Credits power your workflow automations in Twenty. Every workflow action consumes credits based on its complexity.
+ワークフロークレジットは、Twentyでの自動化をサポートします。 各ワークフローアクションは、その複雑さに応じてクレジットを消費します。
-## Credit Allocation
+## クレジット配分
-Credits are based on your billing cycle, not your plan:
+クレジットはプランではなく、請求サイクルに基づきます。
-| Billing Cycle | Credits |
-| ------------- | --------------- |
-| Monthly | 5 million/month |
-| Yearly | 50 million/year |
+| 請求サイクル | クレジット |
+| ------ | -------- |
+| 月払い | 500万/月 |
+| 年払い | 5,000万/年 |
- The 5 million monthly credits are designed to empower you to run automations without worrying about costs. For most workflows using standard actions, this is more than enough. You'll only need additional credits when running advanced code nodes or AI-powered features.
+ 月間500万クレジットは、費用を気にせず自動化を実行できるように設計されています。 標準アクションを使用するほとんどのワークフローでは、これで十分以上です。 高度なコードノードやAI搭載機能を実行する場合にのみ、追加のクレジットが必要になります。
-## Credit Consumption
+## クレジット消費
-Different actions consume different amounts of credits:
+アクションの種類によって消費するクレジット量が異なります。
-| Action Type | Credit Usage |
-| ------------------------------------------------------- | ----------------------- |
-| **Basic operations** (search, update, create records) | Minimal |
-| **Complex operations** (code nodes, external API calls) | More credits |
-| **AI prompts** (coming soon) | Variable based on usage |
+| アクションの種類 | クレジット使用量 |
+| --------------------------- | ------------- |
+| **基本操作**(検索、更新、レコードの作成) | 最小限 |
+| **複雑な操作**(コードノード、外部API呼び出し) | より多くのクレジットを消費 |
+| **AIプロンプト**(近日公開) | 利用状況に応じて変動 |
-Credits are deducted in real-time when workflows execute.
+ワークフローが実行されるときにリアルタイムでクレジットが差し引かれます。
-## Monitoring Usage
+## 使用状況の監視
-Track your credit consumption:
+クレジット消費を追跡します。
-1. Go to **Settings → Billing**
-2. View your current usage and remaining credits
-3. Monitor trends to plan for additional credits if needed
+1. **設定 → 請求** へ移動
+2. 現在の使用量と残りのクレジットを確認
+3. 傾向を監視し、必要に応じて追加クレジットを計画します
-## Purchasing Additional Credits
+## 追加クレジットの購入
-Need more credits?
+さらにクレジットが必要ですか?
-1. Go to **Settings → Billing**
-2. Click on the option to purchase additional credit packs
-3. Select the amount you need
+1. **設定 → 請求** へ移動
+2. 追加クレジットパックを購入するオプションをクリックします
+3. 必要な量を選択します
diff --git a/packages/twenty-docs/l/ja/user-guide/billing/how-tos/billing-faq.mdx b/packages/twenty-docs/l/ja/user-guide/billing/how-tos/billing-faq.mdx
index ee1d560cb1..5904e5ef27 100644
--- a/packages/twenty-docs/l/ja/user-guide/billing/how-tos/billing-faq.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/billing/how-tos/billing-faq.mdx
@@ -3,11 +3,11 @@ title: Billing FAQ
description: Frequently asked questions about Twenty pricing and billing.
---
-## Pricing
+## 料金
-
- Yes, you can use Twenty for free while self-hosting. You will get access to everything included in the Pro (Cloud) plan, except the support from our core-team. Support is accessible via our Discord community.
+
+ はい、自分でホストしながら無料で利用できます。 You will get access to everything included in the Pro (Cloud) plan, except the support from our core-team. サポートはDiscordコミュニティを通じて利用可能です。
If you want to self-host and need the Premium features (SSO and row-level permissions), you can choose the paid Organization (Self-Hosted) license. This also includes support from the Twenty team and removes the requirement to publish custom code as open-source before distributing.
@@ -19,68 +19,68 @@ description: Frequently asked questions about Twenty pricing and billing.
* **Row-level permissions**: Fine-grained access control at the record level
-
- We do not offer free seats. Pricing is per user and each user needs a licence to access Twenty.
+
+ 無料の席は提供していません。 料金はユーザー毎に設定されており、各ユーザーはTwentyを利用するためにライセンスが必要です。
-
- You can do so under `Settings → Billing`. Then click on `Switch to Organization`.
+
+ `設定 → 請求` で行います。 その後、`Organizationに切り替え` をクリックしてください。
-
- Please reach out to our team directly via the Support, there is no easy way to do this using the UI at the moment.
+
+ 現在、UIを使用して簡単に行う方法がないので、サポートを通じて直接チームにお問い合わせください。
-
- You can do so under `Settings → Billing`. Then click on `Switch to Yearly`.
+
+ `設定 → 請求` で行います。 その後、`年間プランに切り替え` をクリックしてください。
-
- Please reach out to our team directly via the Support, there is no easy way to do this using the UI at the moment.
+
+ 現在、UIを使用して簡単に行う方法がないので、サポートを通じて直接チームにお問い合わせください。
-
- You will find this under `Settings → Billing`.
+
+ `設定 → 請求` で見つけることができます。
-
+
The number of credits depends on your billing cycle, not your plan:
* **Monthly subscriptions**: 5 million credits per month
* **Yearly subscriptions**: 50 million credits per year
-
- Each workflow action consumes credits based on its complexity:
+
+ 各ワークフローアクションは、その複雑さに応じてクレジットを消費します。
- * **Basic internal operations** (such as search, update, create records) consume very few credits
- * **More complex operations** like code nodes and requests to external services consume more credits
- * **AI prompts** (coming soon!) will also consume more credits based on usage
+ * **基本的な内部操作**(検索、更新、レコード作成など)は、非常に少ないクレジットを消費します。
+ * **より複雑な操作**(コードノードや外部サービスへのリクエストなど)は、より多くのクレジットを消費します。
+ * **AIプロンプト**(近日公開) 使用量に応じてさらに多くのクレジットを消費します。
- Credits are deducted in real-time when workflows execute. You can monitor your usage in **Settings → Billing** to track consumption and remaining credits.
+ ワークフローが実行されるときにリアルタイムでクレジットが差し引かれます。 消費や残りクレジットを追跡するために **設定 → 請求** で使用状況を監視できます。
-
- You can buy additional credits under `Settings → Billing`.
+
+ `設定 → 請求` で追加クレジットを購入することができます。
-## Billing
+## 請求
-
- You can do so under `Settings → Billing`.
+
+ `設定 → 請求` で行います。
-
- You can do so under `Settings → Billing`. Then click on `View billing details`. You'll be able to add a new payment method there.
+
+ `設定 → 請求` で行います。 その後、`請求の詳細を見る` をクリックしてください。 そこで新しい支払い方法を追加できます。
-
- You can do so under `Settings → Billing`. Then click on `View billing details`. You'll be able to edit the billing information there.
+
+ `設定 → 請求` で行います。 その後、`請求の詳細を見る` をクリックしてください。 そこで請求情報を編集できます。
-
- You can do so under `Settings → Billing`. Then click on `View billing details`. You'll see all your invoices at the bottom of the screen.
+
+ `設定 → 請求` で行います。 その後、`請求の詳細を見る` をクリックしてください。 画面の下部で、すべての請求書を確認することができます。
diff --git a/packages/twenty-docs/l/ja/user-guide/billing/overview.mdx b/packages/twenty-docs/l/ja/user-guide/billing/overview.mdx
index 767116719c..cc05816b74 100644
--- a/packages/twenty-docs/l/ja/user-guide/billing/overview.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/billing/overview.mdx
@@ -1,45 +1,45 @@
---
-title: Billing
-description: Understand Twenty pricing and manage your subscription.
+title: 請求
+description: Twenty の料金を把握し、サブスクリプションを管理しましょう。
image: /images/user-guide/setup/pricing.png
---
-
+
-Twenty offers flexible pricing plans to fit your team's needs. Manage your subscription, track workflow credits, and access invoices all from **Settings → Billing**.
+Twenty は、チームのニーズに合わせた柔軟な料金プランを提供します。 サブスクリプションの管理、ワークフロー クレジットの確認、請求書へのアクセスは、すべて **設定 → 請求** から行えます。
-## What's in this section
+## このセクションの内容
-
- Learn about Twenty's pricing plans and what's included.
+
+ Twenty の料金プランと含まれる内容についてご確認ください。
- Frequently asked questions about pricing and billing.
+ 料金と請求に関するよくある質問。
-## At a glance
+## 概要
-| Plan | Key Features |
-| ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
-| **Free (Self-Hosted)** | All Pro features, community support |
-| **Pro (Cloud)** | Everything apart from the Premium features (SSO and row-level permissions), standard support |
-| **Organization (Cloud)** | All from Pro + the Premium features (SSO and row-level permissions), priority support |
-| **Organization (Self-Hosted)** | All from Pro + the Premium features (SSO, row-level permissions), Twenty team support, not required to publish your custom code as open-source before distributing |
+| プラン | 主な機能 |
+| -------------- | ----------------------------------------------------------------------------------- |
+| **無料(セルフホスト)** | すべての Pro 機能、コミュニティサポート |
+| **Pro(クラウド)** | プレミアム機能(SSO と行レベルの権限)を除くすべて、標準サポート |
+| **組織(クラウド)** | Pro のすべてに加え、プレミアム機能(SSO と行レベルの権限)、優先サポート |
+| **組織(セルフホスト)** | Pro のすべてに加え、プレミアム機能(SSO、行レベルの権限)、Twenty チームのサポート、配布前にカスタムコードをオープンソースとして公開する必要はありません |
-## Quick answers
+## すぐにわかる回答
-**Where do I manage billing?**
-Go to **Settings → Billing** to view your plan, update payment methods, and access invoices.
+**請求はどこで管理できますか?**
+プランの確認、支払い方法の更新、請求書へのアクセスは **設定 → 請求** で行えます。
-**Can I use Twenty for free?**
-Yes! Self-host Twenty and get all Pro features at no cost.
+**Twenty を無料で使えますか?**
+はい! Twenty をセルフホストすると、すべての Pro 機能を無料で利用できます。
-**How do I upgrade?**
-Go to **Settings → Billing** and click **Switch to Organization** or **Switch to Yearly**.
+**どのようにアップグレードしますか?**
+**設定 → 請求** に移動し、**組織プランに切り替え** または **年払いに切り替え** をクリックします。
-For more questions, see the [Billing FAQ](/l/ja/user-guide/billing/how-tos/billing-faq).
+詳しくは [請求に関する FAQ](/l/ja/user-guide/billing/how-tos/billing-faq) をご覧ください。
diff --git a/packages/twenty-docs/l/ja/user-guide/calendar-emails/capabilities/calendar.mdx b/packages/twenty-docs/l/ja/user-guide/calendar-emails/capabilities/calendar.mdx
index fa774b40a7..cd8587c881 100644
--- a/packages/twenty-docs/l/ja/user-guide/calendar-emails/capabilities/calendar.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/calendar-emails/capabilities/calendar.mdx
@@ -1,43 +1,43 @@
---
-title: Calendar
-description: Understanding calendar integration features in Twenty.
+title: カレンダー
+description: Twenty のカレンダー統合機能について。
---
-**Note**: To connect your calendar and configure sync settings, visit [Email & Calendar Setup](/l/ja/user-guide/calendar-emails/overview).
+**メモ**:カレンダーを接続し、同期設定を構成するには、[メールとカレンダーの設定](/l/ja/user-guide/calendar-emails/overview)を参照してください。
-## How Calendar Integration Works
+## カレンダー統合の仕組み
-Twenty automatically syncs your calendar events and links them to the relevant CRM records, giving you a complete view of your meeting history with contacts and companies.
+Twenty はカレンダーのイベントを自動的に同期し、関連する CRM レコードにリンクします。これにより、連絡先や企業との会議履歴を包括的に把握できます。
-## Calendar Tab
+## カレンダータブ
-Next to the Emails tab on records, you'll find a `Calendar` tab that contains the history of meetings scheduled with the record.
+メールタブの隣に、該当レコードとの会議の履歴が含まれる`カレンダー`タブがあります。
-### Available For
+### 対象
-* **People**: View all meetings scheduled with a specific contact
-* **Companies**: See all meetings related to a company and its employees
-* **Opportunities**: Access meeting history related to the company linked to this opportunity
+* **人物**:特定の連絡先とのすべての会議を表示
+* **会社**:会社およびその従業員に関連するすべての会議を表示
+* **機会**:この機会にリンクされた会社に関連する会議の履歴にアクセス
-### Viewing Meeting History
+### 会議履歴の表示
-1. **Navigate to a Record**: Go to any Person, Company, or Opportunity record
-2. **Select the Calendar Tab**: Click on the `Calendar` tab next to the Emails tab
-3. **Browse Meeting History**: View all scheduled meetings and their details
-4. **Access Meeting Context**: See meeting participants, times, and related information
+1. **レコードに移動**:任意の人物、会社、機会のレコードに移動
+2. **カレンダータブを選択**:メールタブの隣の`カレンダー` タブをクリック
+3. **会議履歴を閲覧**:予定されたすべての会議とその詳細を参照
+4. **会議コンテキストにアクセス**:会議の参加者、時間、関連情報を確認
-## Visibility Settings
+## 可視性設定
-Calendar data follows the same visibility settings as emails, ensuring consistent privacy controls across both communication channels.
+カレンダーデータは、メールと同じ可視性設定に従い、両方の通信チャネルで一貫したプライバシーコントロールを保証します。
-## What Gets Synced
+## 同期されるもの
-* **External Meetings**: All meetings with contacts outside your organization
-* **Automatic Linking**: Meetings connect to existing People and Company records based on attendee email addresses
-* **Meeting Details**: Subject, time, duration, and participants
-* **Updates**: New calendar events sync automatically
+* **外部会議**:組織外の連絡先とのすべての会議
+* **自動リンク**:出席者のメールアドレスに基づき、会議は既存の人物および会社のレコードに接続されます
+* **会議の詳細**:件名、時間、所要時間、参加者
+* **更新**:新しいカレンダーイベントは自動的に同期されます
-## What Doesn't Get Synced
+## 同期されないもの
-* **Internal Meetings**: Meetings with only colleagues (same domain) remain private
-* **Private Events**: Events marked as private in your calendar
+* **内部会議**:同僚のみ(同一ドメイン)の会議は非公開のままです
+* **プライベートイベント**:カレンダーでプライベートに設定されたイベント
diff --git a/packages/twenty-docs/l/ja/user-guide/calendar-emails/capabilities/mailbox.mdx b/packages/twenty-docs/l/ja/user-guide/calendar-emails/capabilities/mailbox.mdx
index d7bdb8552b..8a62a5ad85 100644
--- a/packages/twenty-docs/l/ja/user-guide/calendar-emails/capabilities/mailbox.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/calendar-emails/capabilities/mailbox.mdx
@@ -1,85 +1,95 @@
---
-title: Mailbox
-description: Understanding email integration features in Twenty.
+title: メールボックス
+description: Twenty のメール連携機能を理解する。
---
-**Note**: To connect your email accounts and configure sync settings, visit [Email & Calendar Setup](/l/ja/user-guide/calendar-emails/overview).
+**メモ**:メールアカウントを接続し、同期設定を構成するには、[メールとカレンダーの設定](/l/ja/user-guide/calendar-emails/overview)を訪問してください。
-## How Email Integration Works
+## メール統合の仕組み
-Twenty automatically links emails from your connected mailboxes to the relevant CRM records, keeping all communication history in one place.
+Twentyは、接続されたメールボックスからのメールを関連するCRMレコードに自動でリンクし、すべての通信履歴を一箇所にまとめます。
-### Objects Where Emails Can Be Found
+### メールが見つかるオブジェクト
-Email conversations appear in three main objects:
+メールの会話は、次の3つの主要なオブジェクトに表示されます。
-* **People**: View all emails exchanged with a specific contact
-* **Companies**: See all emails related to a company and its employees
-* **Opportunities**: Access email threads related to the company linked to this opportunity. Email threads from individual people on the opportunity are not shown yet.
+* **人物**:特定の連絡先との交換されたすべてのメールを表示
+* **会社**:会社およびその従業員に関連するすべてのメールを表示
+* **機会**:この機会にリンクされた会社に関連するメールスレッドにアクセス。 この機会での個人のメールスレッドはまだ表示されません。 この機会での個人のメールスレッドはまだ表示されません。 この機会での個人のメールスレッドはまだ表示されません。 この機会での個人のメールスレッドはまだ表示されません。
-### Viewing Email Threads
+### メールスレッドの表示
-1. **Navigate to a Record**: Go to any Person, Company, or Opportunity record
-2. **Select the Emails Tab**: Click on the `Emails` tab to view synced emails
-3. **Open an Email Thread**: Click on any email to open and read the full conversation
-4. **Browse History**: Scroll through the complete email history with that contact
+1. **レコードに移動**:任意の人物、会社、機会のレコードにアクセス
+2. **メールタブを選択**:`メール` タブをクリックして同期されたメールを表示
+3. **メールスレッドを開く**:任意のメールをクリックして完全な会話を開いて読む
+4. **履歴を閲覧**:その連絡先とすべてのメール履歴をスクロールして参照する
-## What You'll See
+## あなたが見るもの
-### Email Thread View
+### メールスレッドビュー
-When you open an email thread, you can:
+メールスレッドを開いたとき、次のことができます:
-* **Read Full Conversations**: See the complete email exchange
-* **View Participants**: See all people involved in the email thread
-* **Check Timestamps**: Know exactly when each email was sent
-* **Access Context**: Understand the full communication history
+* **完全な会話を読む**:メール交換の全体を参照
+* **参加者を見る**:メールスレッドに関与しているすべての人を表示
+* **タイムスタンプを確認**:各メールが送信された正確な時間を把握
+* **コンテキストにアクセス**:完全な通信履歴を理解
-### Email Visibility
+### メールの可視性
-Depending on your mailbox settings, you might see:
+メールボックスの設定によっては、以下を確認する場合があります。
-* **Full Content**: Complete email text and details
-* **Subject + Metadata**: Subject line, sender, recipient, and timestamp
-* **Metadata Only**: Basic information without email content
+* **完全なコンテンツ**:完全なメールテキストと詳細
+* **件名+メタデータ**:件名、送信者、受信者、タイムスタンプ
+* **メタデータのみ**:メールコンテンツを含まない基本情報
-## Email Sync Behavior
+## メールの同期動作
-### What Gets Synced
+### 同期レート
-* **External Emails**: All emails with contacts outside your organization
-* **Automatic Linking**: Emails connect to existing People and Company records
-* **Multiple Addresses**: Emails from any address link to the same contact record
-* **Updates**: New emails appear within 5 minutes
+Twenty は約 **1分あたり400通のメッセージ**を取り込みます。 このレートは現在、Gmail API のレート制限によって制限されています(他のプロバイダーにも同様に適用されます)。
-### What Doesn't Get Synced
+参考:
-* **Internal Emails**: Emails between colleagues (same domain) remain private
-* **Group Emails**: Distribution lists and group emails are excluded
-* **Excluded Folders**: Folders you've chosen not to sync (configured under Settings → Accounts → Email)
+* 1,000 通のメール → ~2.5 分
+* 10,000 通のメール → ~25 分
+* 50,000 通のメール → ~2 時間
-### Selective Folder Sync (Lab Feature)
+### 同期されるもの
-Control which email folders sync with Twenty:
+* **外部メール**:組織外の連絡先とのすべてのメール
+* **自動リンク**:メールは既存の人物と会社のレコードに接続
+* **複数のアドレス**:どのアドレスからのメールも同じ連絡先レコードにリンク
+* **更新**:新しいメールは5分以内に表示されます
-1. Enable `Message Folder` in Settings → Releases → Lab
-2. Configure folders under Settings → Accounts → Email
-3. Choose specific folders to include or exclude (Inbox, Sent, Archive, custom folders)
+### 同期されないもの
-## Troubleshooting Email Sync
+* **内部メール**:同僚(同じドメイン)間のメールは個人用に残る
+* **グループメール**:配信リストおよびグループメールは対象外
+* **除外フォルダー**:同期しないよう選択したフォルダー(設定 → アカウント → メールで設定)
-### Common Sync Issues
+### 選択フォルダー同期
-* **Sync Delays**: Emails appear within 5 minutes, but initial imports take longer
-* **Missing Emails**: Check if:
- * Folders are excluded in Message Folder settings
- * Contact auto-creation is disabled (emails need existing Twenty records)
- * Email is from colleagues (same domain) or group lists
- * Mailbox is still completing initial sync
+Twenty と同期するメールフォルダーを制御:
-### Email Limitations
+1. **設定 → アカウント** に移動し、接続済みのメールアカウントを選択します
+2. メールセクションでフォルダーを設定します
+3. 特定のフォルダーを選択して含めるまたは除外する(受信トレイ、送信済み、アーカイブ、カスタムフォルダー)
-* **System Folders**: Some email folders may not be available for sync
-* **Aliases**: Only true mailboxes can be connected (not email aliases)
+## メール同期のトラブルシューティング
+
+### 一般的な同期問題
+
+* **同期遅延**:メールは5分以内に表示されますが、最初のインポートには時間がかかります
+* **メールの欠落**:以下を確認してください:
+ * メッセージフォルダー設定でフォルダーが除外されている
+ * 連絡先の自動作成が無効になっている(メールには既存のTwentyレコードが必要)
+ * メールが同僚(同じドメイン)またはグループリストからのものである
+ * メールボックスが初期同期をまだ完了していない
+
+### メールの制限事項
+
+* **システムフォルダー**:一部のメールフォルダーは同期できない可能性があります
+* **エイリアス**:実際のメールボックスのみが接続できます(メールエイリアス不可)
diff --git a/packages/twenty-docs/l/ja/user-guide/calendar-emails/how-tos/can-i-book-meetings-from-twenty.mdx b/packages/twenty-docs/l/ja/user-guide/calendar-emails/how-tos/can-i-book-meetings-from-twenty.mdx
index edee83875d..0b4c8bba87 100644
--- a/packages/twenty-docs/l/ja/user-guide/calendar-emails/how-tos/can-i-book-meetings-from-twenty.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/calendar-emails/how-tos/can-i-book-meetings-from-twenty.mdx
@@ -1,28 +1,28 @@
---
-title: Can I Book Meetings from Twenty?
-description: Information about booking meetings directly from Twenty.
+title: Twenty からミーティングを予約できますか?
+description: Twenty から直接ミーティングを予約することに関する情報。
---
-## Current Status
+## 現在の状況
-**No, Twenty does not currently support booking meetings directly from the platform.**
+**いいえ、現在 Twenty ではプラットフォームから直接ミーティングを予約することはできません。**
-Twenty's calendar integration is designed to **sync and display** your existing calendar events, not to create new ones. All meeting scheduling should be done through your native calendar application (Google Calendar, Microsoft Outlook, etc.).
+Twenty のカレンダー連携は、既存のカレンダーイベントを**同期して表示**するように設計されており、新規作成するためのものではありません。 ミーティングのスケジューリングは、すべてお使いのネイティブのカレンダーアプリ(Google Calendar、Microsoft Outlook など)で行ってください。
-## What You Can Do
+## 現在できること
-* **View meeting history** on People, Companies, and Opportunities records
-* **See upcoming meetings** with contacts in your CRM
-* **Track meeting context** alongside email communications
-* **Auto-create contacts** from meeting participants
+* **ミーティング履歴を表示**(People、Companies、Opportunities のレコード上)
+* CRM 内の連絡先との**今後のミーティングを確認**
+* メールのやり取りと併せて**ミーティングのコンテキストを追跡**
+* ミーティング参加者から**連絡先を自動作成**
-## How to Schedule Meetings
+## ミーティングをスケジュールする方法
-1. Use your native calendar app (Google Calendar, Outlook, etc.)
-2. Create the meeting as you normally would
-3. The meeting will automatically sync to Twenty within 5 minutes
-4. View the meeting on the relevant CRM records
+1. お使いのネイティブのカレンダーアプリ(Google Calendar、Outlook など)を使用する
+2. 通常どおりミーティングを作成する
+3. ミーティングは 5 分以内に自動的に Twenty と同期されます
+4. 関連する CRM のレコード上でミーティングを表示する
-## Future Plans
+## 今後の計画
-Meeting creation from within Twenty is on our roadmap. Join our [GitHub discussions](https://github.com/twentyhq/twenty/discussions) to share your use case and help prioritize this feature.
+Twenty 内からミーティングを作成する機能はロードマップに含まれています。 この機能の優先度付けの参考にするため、ユースケースを共有するには[GitHub のディスカッション](https://github.com/twentyhq/twenty/discussions)に参加してください。
diff --git a/packages/twenty-docs/l/ja/user-guide/calendar-emails/how-tos/can-i-send-emails-from-twenty.mdx b/packages/twenty-docs/l/ja/user-guide/calendar-emails/how-tos/can-i-send-emails-from-twenty.mdx
index 7f731f6e6a..c25fb95ff5 100644
--- a/packages/twenty-docs/l/ja/user-guide/calendar-emails/how-tos/can-i-send-emails-from-twenty.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/calendar-emails/how-tos/can-i-send-emails-from-twenty.mdx
@@ -1,44 +1,44 @@
---
-title: Can I Send Emails from Twenty?
-description: Information about sending emails directly from Twenty.
+title: Twenty からメールを送信できますか?
+description: Twenty から直接メールを送信することに関する情報。
---
-## Current Status
+## 現在の状況
-Twenty's email integration is designed to **sync and display** your email history. Emails cannot be composed or sent directly from Twenty's interface.
+Twenty のメール連携は、メール履歴を**同期して表示**するように設計されています。 Twenty のインターフェースからメールを作成したり直接送信したりすることはできません。
-When you view an email thread on a record page and click **Reply**, you'll be redirected to the original thread in your mailbox (Gmail, Outlook, etc.). This is where you compose and send your reply.
+レコードページでメールスレッドを表示し、**返信**をクリックすると、メールボックス(Gmail、Outlook など)の元のスレッドにリダイレクトされます。 そこで返信を作成して送信します。
-## What You Can Do Today
+## 現在できること
-* **View email history** on People, Companies, and Opportunities records
-* **Read full email threads** with contacts in your CRM
-* **Track communication context** alongside calendar events
-* **Auto-create contacts** from email interactions
-* **Reply via redirect** — click Reply to jump to your mailbox
+* **メール履歴を表示**(People、Companies、Opportunities のレコード上)
+* CRM 内の連絡先との**メールスレッド全体を閲覧**
+* カレンダーイベントと併せて**コミュニケーションのコンテキストを追跡**
+* メールでのやり取りから**連絡先を自動作成**
+* **リダイレクトで返信** — 返信をクリックしてメールボックスに移動
-## Sending Emails via Workflows
+## ワークフローによるメール送信
-While you can't send emails manually from Twenty, you **can send emails automatically using Workflows**. This is useful for:
+Twenty から手動でメールを送信することはできませんが、**ワークフローを使用して自動的にメールを送信**できます。 このような用途に役立ちます:
-* Automated follow-ups
-* Notifications to contacts
-* Triggered communications based on record changes
+* 自動フォローアップ
+* 連絡先への通知
+* レコードの変更をトリガーにしたコミュニケーション
-Emails sent via workflows go through your connected mailbox account.
+ワークフロー経由で送信されるメールは、接続済みのメールボックスアカウントを通じて送信されます。
-→ Learn about the [Send Email action](/l/ja/user-guide/workflows/capabilities/workflow-actions#send-email)
+→ [Send Email アクション](/l/ja/user-guide/workflows/capabilities/workflow-actions#send-email) について詳しく知る
-## Email Sequences and Newsletters
+## メールシーケンスとニュースレター
-For email sequences and newsletters, we recommend using workflows to connect Twenty to a dedicated email marketing tool.
+メールシーケンスやニュースレターには、ワークフローを使って Twenty を専用のメールマーケティングツールに接続することを推奨します。
- Mass emails should not be sent directly from your mailbox to protect your domain reputation. Use a dedicated tool for bulk communications.
+ ドメインのレピュテーションを保護するため、大量メールをメールボックスから直接送信しないでください。 一括配信には専用ツールを使用してください。
-→ See [How to send emails from workflows](/l/ja/user-guide/workflows/capabilities/send-emails-from-workflows) for setup instructions
+→ 設定手順は、[ワークフローからメールを送信する方法](/l/ja/user-guide/workflows/capabilities/send-emails-from-workflows) を参照してください
-## Future Plans
+## 今後の計画
-Native email composition from within Twenty is on our roadmap. Join our [GitHub discussions](https://github.com/twentyhq/twenty/discussions) to share your use case and help prioritize this feature.
+Twenty 内でネイティブにメール作成できる機能はロードマップに含まれています。 この機能の優先度付けの参考にするため、ユースケースを共有するには[GitHub のディスカッション](https://github.com/twentyhq/twenty/discussions)に参加してください。
diff --git a/packages/twenty-docs/l/ja/user-guide/calendar-emails/how-tos/can-i-track-email-activity-on-all-objects.mdx b/packages/twenty-docs/l/ja/user-guide/calendar-emails/how-tos/can-i-track-email-activity-on-all-objects.mdx
index de258baef3..049a833b70 100644
--- a/packages/twenty-docs/l/ja/user-guide/calendar-emails/how-tos/can-i-track-email-activity-on-all-objects.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/calendar-emails/how-tos/can-i-track-email-activity-on-all-objects.mdx
@@ -1,35 +1,35 @@
---
-title: Can I Track Email Activity on All Objects?
-description: Understanding email activity tracking across different objects.
+title: すべてのオブジェクトでメールアクティビティを追跡できますか?
+description: 異なるオブジェクト間でのメールアクティビティの追跡について説明します。
---
-## Supported Objects
+## サポート対象のオブジェクト
-Email activity is currently available on **three standard objects**:
+メールアクティビティは現在、**3 つの標準オブジェクト**で利用できます:
-| Object | What You See |
-| ----------------- | ---------------------------------------------------------------- |
-| **People** | All emails exchanged with that specific contact |
-| **Companies** | All emails with anyone from that company (based on email domain) |
-| **Opportunities** | Emails related to the company linked to the opportunity |
+| オブジェクト | 表示内容 |
+| ------- | --------------------------------- |
+| **連絡先** | その特定の連絡先とやり取りしたすべてのメール |
+| **会社** | その会社に所属する相手とのすべてのメール(メールドメインに基づく) |
+| **商談** | その商談にリンクされた会社に関連するメール |
-## Why Only These Objects?
+## なぜこれらのオブジェクトだけなのですか?
-People, Companies, and Opportunities are the core relationship objects where email context adds the most value. Email threads are automatically linked based on:
+連絡先、会社、商談は、メールのコンテキストが最も価値を生む中核のリレーションシップオブジェクトです。 メールスレッドは以下に基づいて自動的にリンクされます:
-* **Email address** → matched to People records
-* **Email domain** → matched to Company records
-* **Company relation** → linked to Opportunities
+* **メールアドレス** → 連絡先レコードに照合
+* **メールドメイン** → 会社レコードに照合
+* **会社の関連付け** → 商談にリンク
-## Custom Objects
+## カスタムオブジェクト
-**Email tracking is not available on custom objects** at this time.
+**カスタムオブジェクトではメール追跡は利用できません**(現時点では)。
-If you need email context on a custom object, consider:
+カスタムオブジェクトでメールのコンテキストが必要な場合は、次を検討してください:
-* Using a relation field to link your custom object to People or Companies
-* Viewing email history on the linked People/Company record
+* 関連フィールドを使用して、カスタムオブジェクトを連絡先または会社にリンクする
+* リンクされた連絡先/会社レコードでメール履歴を閲覧する
-## Future Plans
+## 今後の計画
-Extending email visibility to custom objects is being considered. Share your use case on our [GitHub discussions](https://github.com/twentyhq/twenty/discussions) to help prioritize this feature.
+メールの可視性をカスタムオブジェクトへ拡張することを検討中です。 この機能の優先順位付けの参考になるよう、ユースケースを[GitHub のディスカッション](https://github.com/twentyhq/twenty/discussions)で共有してください。
diff --git a/packages/twenty-docs/l/ja/user-guide/calendar-emails/how-tos/connect-several-mailboxes-per-user.mdx b/packages/twenty-docs/l/ja/user-guide/calendar-emails/how-tos/connect-several-mailboxes-per-user.mdx
index 83da30bd83..fe20b7730a 100644
--- a/packages/twenty-docs/l/ja/user-guide/calendar-emails/how-tos/connect-several-mailboxes-per-user.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/calendar-emails/how-tos/connect-several-mailboxes-per-user.mdx
@@ -1,42 +1,42 @@
---
-title: Connect Several Mailboxes per User
-description: Connect multiple email accounts for a single user.
+title: ユーザーごとに複数のメールボックスを接続
+description: 1人のユーザーに対して複数のメールアカウントを接続できます。
---
-## Overview
+## 概要
-Twenty supports **unlimited email accounts per user**. This is useful if you manage multiple inboxes, such as:
+Twenty は、**ユーザーごとに無制限のメールアカウント**をサポートしています。 例えば、次のような複数の受信トレイを管理している場合に便利です:
-* Personal work email + shared team inbox
-* Multiple client-facing email addresses
-* Different email accounts for different roles
+* 個人の仕事用メール + 共有のチーム受信トレイ
+* クライアント対応用の複数のメールアドレス
+* 役割ごとに別々のメールアカウント
-## How to Add Multiple Mailboxes
+## 複数のメールボックスを追加する方法
-1. Go to **Settings → Accounts**
-2. Click **Add account**
-3. Connect your additional Google or Microsoft account
-4. Configure sync settings for this mailbox
-5. Repeat for each mailbox you want to connect
+1. **設定 → アカウント** に移動します
+2. **アカウントを追加**をクリックします
+3. 追加の Google または Microsoft アカウントを接続します
+4. このメールボックスの同期設定を構成します
+5. 接続したい各メールボックスについて繰り返します
-## Managing Multiple Accounts
+## 複数アカウントの管理
-Each connected mailbox has its own settings:
+接続された各メールボックスには独自の設定があります:
-* **Email visibility**: Choose what teammates can see
-* **Contact auto-creation**: Enable/disable per mailbox
-* **Folder selection**: Choose which folders to sync (Lab feature)
+* **メールの表示範囲**: チームメンバーに何を見せるかを選択します
+* **連絡先の自動作成**: メールボックスごとに有効/無効を設定できます
+* **フォルダー選択**: 同期するフォルダーを選択
-## How Emails Appear
+## メールの表示方法
-Emails from all your connected mailboxes are synced to Twenty and appear on:
+接続したすべてのメールボックスからのメールは Twenty に同期され、次の場所に表示されます:
-* **People records**: Based on the contact's email address
-* **Company records**: Based on the email domain
-* **Opportunities**: Based on the linked company
+* **人物レコード**: 連絡先のメールアドレスに基づく
+* **会社レコード**: メールドメインに基づく
+* **商談**: リンクされた会社に基づく
-Each email shows which mailbox it was sent from/received to, so you can track which account was used for each communication.
+各メールには送信元/受信先のメールボックスが表示されるため、各やり取りでどのアカウントが使用されたかを追跡できます。
-## Important Notes
+## 重要な注意事項
-Only true mailboxes can be connected. Email aliases that forward to another mailbox cannot be connected separately—they'll sync through the main mailbox.
+実際のメールボックスのみ接続できます。 別のメールボックスに転送するメールエイリアスは個別に接続できません—メインのメールボックス経由で同期されます。
diff --git a/packages/twenty-docs/l/ja/user-guide/calendar-emails/how-tos/i-dont-see-emails-on-records.mdx b/packages/twenty-docs/l/ja/user-guide/calendar-emails/how-tos/i-dont-see-emails-on-records.mdx
index c5db7745a0..ecad34ca7c 100644
--- a/packages/twenty-docs/l/ja/user-guide/calendar-emails/how-tos/i-dont-see-emails-on-records.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/calendar-emails/how-tos/i-dont-see-emails-on-records.mdx
@@ -1,53 +1,53 @@
---
-title: I Don't See Emails on Records
-description: Troubleshooting missing emails on records.
+title: レコードにメールが表示されない
+description: レコードにメールが表示されない場合のトラブルシューティング。
---
-## Common Reasons
+## よくある原因
-### 1. Initial Sync Still in Progress
+### 1. 初回同期がまだ進行中です
-Email sync takes time, especially for large mailboxes.
+メール同期には時間がかかります。特に大きなメールボックスでは時間を要します。 Twenty は約 **1分あたり400通のメッセージ**を取り込みます(Gmail API のレート制限により制限されます)。
-* **Calendar sync**: Completes in minutes
-* **Email sync**: Can take several hours for large mailboxes
+* **カレンダー同期**: 数分で完了します
+* **メール同期**: メールボックスのサイズに依存します(例: 10,000 件のメール ≈ 25 分、50,000 件のメール ≈ 2 時間)
-**Solution**: Wait up to a few hours for the initial import to complete.
+**解決策**: 初回の取り込みが完了するまでお待ちください。 メールボックスのサイズに基づいて所要時間を見積もることができます。
-### 2. Contact Doesn't Exist in Twenty
+### 2. Twenty に連絡先が存在しない
-Emails only appear on existing People records. If the contact wasn't created yet:
+メールは既存の People レコードにのみ表示されます。 連絡先がまだ作成されていない場合:
-* Enable **Contact Auto-Creation** in your mailbox settings
-* Or manually create the Person record first
+* メールボックス設定で**連絡先の自動作成**を有効にする
+* または、先に Person レコードを手動で作成する
-**Solution**: Go to **Settings → Accounts**, select your mailbox, and enable contact auto-creation.
+**解決策**: **設定 → アカウント** に移動し、メールボックスを選択して連絡先の自動作成を有効にします。
-### 3. Internal Emails Are Excluded
+### 3. 社内メールは除外されます
-Emails between colleagues (same email domain) are never synced to maintain privacy.
+同じメールドメインの同僚間のメールは、プライバシー保護のため同期されません。
-**Solution**: This is expected behavior. Only external emails are synced.
+**解決策**: これは想定どおりの動作です。 外部メールのみが同期されます。
-### 4. Email Is from a Group or Distribution List
+### 4. グループまたは配布リストからのメール
-Group emails and distribution lists are excluded from sync.
+グループ宛てのメールや配布リストは同期対象外です。
-**Solution**: This is expected behavior.
+**解決策**: これは想定どおりの動作です。
-### 5. Folder Not Selected for Sync
+### 5. 同期対象として選択されていないフォルダー
-If you're using the Message Folder feature, some folders might be excluded.
+メッセージフォルダー機能を使用している場合、一部のフォルダーが除外されている可能性があります。
-**Solution**: Go to **Settings → Accounts**, select your mailbox, and check folder sync settings.
+**解決策**: **設定 → アカウント** に移動し、メールボックスを選択してフォルダー同期の設定を確認してください。
-### 6. Wrong Email Address on Record
+### 6. レコードのメールアドレスが間違っている
-The Person record might have a different email address than the one used in the email.
+メールで使用されているものとは異なるメールアドレスが Person レコードに登録されている可能性があります。
-**Solution**: Add the correct email address to the Person record.
+**解決策**: 正しいメールアドレスを Person レコードに追加してください。
-## Still Not Working?
+## まだうまくいきませんか?
-1. Try disconnecting and reconnecting your mailbox
-2. Contact support if issues persist
+1. メールボックスの接続を一度解除して再接続してみてください
+2. 問題が解決しない場合はサポートにお問い合わせください
diff --git a/packages/twenty-docs/l/ja/user-guide/calendar-emails/how-tos/limit-emails-imported.mdx b/packages/twenty-docs/l/ja/user-guide/calendar-emails/how-tos/limit-emails-imported.mdx
index 9569d2651a..6213f098f3 100644
--- a/packages/twenty-docs/l/ja/user-guide/calendar-emails/how-tos/limit-emails-imported.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/calendar-emails/how-tos/limit-emails-imported.mdx
@@ -1,52 +1,50 @@
---
-title: Limit Emails Imported
-description: Control which emails are imported into Twenty.
+title: インポートされるメールを制限
+description: Twenty にインポートされるメールを管理します。
---
-## Overview
+## 概要
-By default, Twenty syncs all external emails from your connected mailbox. You can limit what gets imported using **folder selection** and **visibility settings**.
+デフォルトでは、Twenty は接続済みメールボックスのすべての外部メールを同期します。 **フォルダー選択** と **表示設定** を使用して、インポート対象を制限できます。
-## Method 1: Folder Selection (Recommended)
+## 方法 1: フォルダー選択(推奨)
-Control which email folders sync with Twenty:
+Twenty と同期するメールフォルダーを制御:
-1. Go to **Settings → Releases → Lab**
-2. Enable **Message Folder**
-3. Return to **Settings → Accounts**
-4. Select your connected email account
-5. Choose which folders to sync:
+1. **設定 → アカウント** に移動
+2. 接続済みのメールアカウントを選択
+3. 同期するフォルダーを選択してください:
-| Folder | Description |
-| ------------------ | ----------------------------- |
-| **Inbox** | Primary incoming emails |
-| **Sent** | Outgoing emails you've sent |
-| **Archive** | Archived messages |
-| **Custom Folders** | Any specific folders you want |
+| フォルダー | 説明 |
+| ------------- | ------------- |
+| **受信トレイ** | 主要な受信メール |
+| **送信済み** | 送信したメール |
+| **アーカイブ** | アーカイブされたメッセージ |
+| **カスタムフォルダー** | 任意に指定したフォルダー |
-6. Exclude folders you don't want synced (Spam, Trash, personal folders)
+6. 同期したくないフォルダーを除外(スパム、ゴミ箱、個人用フォルダー)
-This gives you precise control over which emails appear in your CRM without syncing everything.
+これにより、すべてを同期することなく、CRM に表示されるメールを正確に制御できます。
-## Method 2: Contact Auto-Creation Settings
+## 方法 2: 連絡先の自動作成設定
-Control when contacts are created from emails:
+メールから連絡先を作成するタイミングを制御します:
-1. Go to **Settings → Accounts**
-2. Select your connected mailbox
-3. Choose an option:
- * **Deactivated**: No contacts created, but emails still sync to existing contacts
- * **Sent & Received**: Create contacts from all external emails
- * **Sent Only**: Only create contacts from emails you send
+1. **設定 → アカウント** に移動します
+2. 接続済みのメールボックスを選択
+3. オプションを選択:
+ * **無効**: 連絡先は作成されませんが、メールは既存の連絡先と引き続き同期されます
+ * **送受信**: すべての外部メールから連絡先を作成します
+ * **送信のみ**: 自分が送信したメールからのみ連絡先を作成します
-## What's Always Excluded
+## 常に除外されるもの
-These emails are never synced, regardless of settings:
+設定に関係なく、これらのメールは同期されません:
-* **Internal emails**: Messages between colleagues (same domain)
-* **Group emails**: Distribution lists and group messages
-* **Spam/Trash**: System folders are typically excluded
+* **内部メール**: 同僚(同一ドメイン)間のメッセージ
+* **グループメール**: 配信リストおよびグループメッセージ
+* **スパム/ゴミ箱**: システムフォルダーは通常除外されます
-## Important Note
+## 重要な注意事項
-We don't provide a CC email address for selective syncing. Use the folder selection feature above to achieve the same level of control.
+選択的な同期のための CC メールアドレスは提供していません。 上記のフォルダー選択機能を使用して、同等のレベルの制御が可能です。
diff --git a/packages/twenty-docs/l/ja/user-guide/calendar-emails/overview.mdx b/packages/twenty-docs/l/ja/user-guide/calendar-emails/overview.mdx
index a36e1fbccd..61b9f94c46 100644
--- a/packages/twenty-docs/l/ja/user-guide/calendar-emails/overview.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/calendar-emails/overview.mdx
@@ -1,132 +1,130 @@
---
-title: Calendar & Emails
-description: Connect your email and calendar accounts to Twenty.
+title: カレンダーとメール
+description: メールとカレンダーのアカウントをTwentyに接続します。
image: /images/user-guide/emails/emails_header.png
---
-
+
-## Connection Options
+## 接続オプション
-### Google Account (Gmail & Google Calendar)
+### Google アカウント(Gmail & Google カレンダー)
-1. Go to **Settings → Accounts**
-2. Click **Add account**
-3. Select **Continue with Google**
-4. Authorize Twenty to access your Gmail and Google Calendar
-5. Configure email sync settings (visibility, auto-creation) → click **Next**
-6. Configure calendar sync settings (visibility, auto-creation) → click **Add Account**
-7. Your emails and calendar events will start syncing automatically
+1. **設定 → アカウント** に移動します
+2. **アカウントを追加**をクリックします
+3. **Googleで続行**を選択します
+4. Twenty に Gmail および Google カレンダーへのアクセスを許可
+5. メールの同期設定(表示、自動作成)を設定し、→ **次へ**をクリックします
+6. カレンダーの同期設定(表示、自動作成)を設定し、→ **アカウントを追加**をクリックします
+7. メールとカレンダーのイベントは自動で同期され始めます
-### Microsoft Account (Outlook & Microsoft Calendar)
+### Microsoft アカウント(Outlook & Microsoft カレンダー)
-1. Go to **Settings → Accounts**
-2. Click **Add account**
-3. Select **Continue with Microsoft**
-4. Authorize Twenty to access your Outlook and Microsoft Calendar
-5. Configure email sync settings (visibility, auto-creation) → click **Next**
-6. Configure calendar sync settings (visibility, auto-creation) → click **Add Account**
-7. Your emails and calendar events will start syncing automatically
+1. **設定 → アカウント** に移動します
+2. **アカウントを追加**をクリックします
+3. **Microsoftで続行**を選択します
+4. Twenty に Outlook および Microsoft カレンダーへのアクセスを許可
+5. メールの同期設定(表示、自動作成)を設定し、→ **次へ**をクリックします
+6. カレンダーの同期設定(表示、自動作成)を設定し、→ **アカウントを追加**をクリックします
+7. メールとカレンダーのイベントは自動で同期され始めます
-### SMTP/CalDAV Setup (Other Providers)
+### SMTP/CalDAV セットアップ(他のプロバイダー)
-For other email and calendar providers:
+他のメールおよびカレンダー プロバイダーの場合:
-1. Go to **Settings → Releases → Lab** to enable the feature
-2. Return to **Settings → Accounts**
-3. Configure SMTP settings for email
-4. Configure CalDAV settings for calendar
-5. Test the connection
+1. **設定 → アカウント** に移動します
+2. メール用の SMTP 設定を構成
+3. カレンダー用の CalDAV 設定を構成
+4. 接続をテスト
-### Multiple Mailboxes
+### 複数のメールボックス
-* **Unlimited Accounts**: Connect multiple email accounts per user
-* **Account Management**: Switch between different mailboxes
-* **Sync Settings**: Configure different settings per mailbox
+* **無制限のアカウント**: ユーザーごとに複数のメールアカウントを接続
+* **アカウント管理**: 異なるメールボックス間を切り替える
+* **同期設定**: メールボックスごとに異なる設定を構成
- Only true mailboxes can be connected (e.g., support@domain.com with its own inbox). Email aliases that forward to another mailbox cannot be connected to Twenty.
+ 本物のメールボックスのみ接続可能(例: support@domain.com で独自の受信トレイ)。 他のメールボックスに転送するメールエイリアスは Twenty に接続できません。
-## Email Configuration
+## メール設定
-### Message Visibility
+### メッセージの可視性
-Choose different levels of visibility for your emails:
+メールの可視性レベルを選択:
-* **Metadata Only**: Share only basic information (sender, recipient, date, time)
-* **Subject and Metadata**: Share subject line along with metadata
-* **All Email Content**: Share entire email content including attachments
+* **メタデータのみ**: 基本情報(送信者、受信者、日付、時間)のみ共有
+* **件名とメタデータ**: 件名とメタデータを共有
+* **すべてのメール コンテンツ**: 添付ファイルを含む全メールコンテンツを共有
-### Contact Auto-Creation
+### 連絡先の自動作成
-* **Deactivated**: No automatic contact creation
-* **For messages sent & received**: Create contacts for all external email interactions
-* **For messages sent only**: Create contacts only for emails you send
-* **Note**: Internal emails (same domain) are never synced to maintain privacy
+* **非活性化**: 連絡先の自動作成なし
+* **送受信メッセージ用**: すべての外部メール インタラクションの連絡先を作成
+* **送信メッセージ用のみ**: 送信するメールの連絡先のみ作成
+* **注意**: 内部メール(同じドメイン)はプライバシーを維持するために同期されません
-When enabled, contacts are automatically linked to their Company records based on their email domain. If the company doesn't exist yet, Twenty creates it for you.
+有効にすると、連絡先はメールドメインに基づいて会社レコードに自動的にリンクされます。 会社がまだ存在しない場合は、Twentyが会社レコードを作成します。
-### Control which emails get sync with Message Folder Selection (Lab Feature)
+### メッセージ フォルダー選択で同期するメールを制御
-Control which email folders sync with Twenty:
+Twenty と同期するメールフォルダーを制御:
-1. Go to **Settings → Releases → Lab** and enable **Message Folder**
-2. Return to **Settings → Accounts** and select your connected email account
-3. Choose which folders to sync:
- * **Inbox**: Primary incoming emails
- * **Sent**: Outgoing emails you've sent
- * **Custom Folders**: Any specific folders you want to include
- * **Exclude Folders**: Skip folders like Spam, Trash, or personal folders
+1. **設定 → アカウント** に移動し、接続済みのメールアカウントを選択します
+2. 同期するフォルダーを選択してください:
+ * **受信トレイ**: 主要な受信メール
+ * **送信済み**: 送信したメール
+ * **カスタムフォルダー**: 含めたい特定のフォルダー
+ * **フォルダーの除外**: スパム、ゴミ箱、個人用フォルダーなどをスキップ
-This gives you precise control over which emails appear in your CRM without syncing everything.
+これにより、CRM に表示されるメールをすべて同期することなく正確に制御できます。
-**What Gets Synced:**
+**同期される内容:**
-* **External Emails**: All emails with external contacts from selected folders
-* **Internal Emails**: Not synced (same domain emails remain private)
-* **Attachments**: Coming in H1 2026
+* **外部メール**: 選択されたフォルダーの外部連絡先とのすべてのメール
+* **内部メール**: 同期されない(同じドメインのメールはプライベートのままです)
+* **添付ファイル**: H1 2026 に登場予定
-**Note**: We don't provide a CC email address for selective syncing. Instead, use the Message Folder feature above to achieve the same level of control over which emails sync with Twenty.
+**注意**: 選択的な同期用の CC メールアドレスは提供していません。 代わりに、上記のメッセージフォルダー機能を使用して、Twenty と同期するメールの制御レベルを同様に達成してください。 **注意**: 選択的な同期用の CC メールアドレスは提供していません。 代わりに、上記のメッセージフォルダー機能を使用して、Twenty と同期するメールの制御レベルを同様に達成してください。 代わりに、上記のメッセージフォルダー機能を使用して、Twenty と同期するメールの制御レベルを同様に達成してください。
-## Calendar Configuration
+## カレンダー設定
-### Event Visibility
+### イベントの可視性
-Choose what will be visible to other users in your workspace:
+ワークスペース内の他のユーザーに表示される内容を選択:
-* **Everything**: The whole event details will be shared with your team
-* **Metadata**: Only date & participants will be shared with your team
+* **すべて**: イベントの詳細全体をチームと共有
+* **メタデータ**: 日付と参加者のみをチームに共有
-### Contact Auto-Creation for Meetings
+### 会議のための連絡先自動作成
-* **Yes**: Automatically create contacts for meeting participants not in your CRM
-* **No**: Only link meetings to existing contacts
+* **はい**: CRM にない会議参加者の連絡先を自動的に作成
+* **いいえ**: 既存の連絡先にのみ会議をリンク
-When enabled, contacts are automatically linked to their Company records based on their email domain. If the company doesn't exist yet, Twenty creates it for you.
+有効にすると、連絡先はメールドメインに基づいて会社レコードに自動的にリンクされます。 会社がまだ存在しない場合は、Twentyが会社レコードを作成します。
-### Control which events get sync
+### 同期するイベントを制御
-* **Meeting Import**: Automatically import calendar events
-* **Contact Linking**: Link meetings to People and Company records
+* **会議インポート**: カレンダーイベントを自動的にインポート
+* **連絡先のリンク**: 会議を人物および会社のレコードにリンク
-**What Gets Synced:**
+**同期される内容:**
-* **Meetings**: Calendar events with external participants
-* **Contact Linking**: Events automatically linked to CRM records
-* **Team Events**: Shared calendar visibility
+* **会議**: 外部参加者とのカレンダーイベント
+* **連絡先のリンク**: イベントが自動的に CRM レコードにリンク
+* **チームイベント**: 共有カレンダーの可視性
-## Sync Frequency
+## 同期頻度
-**Updates every 5 minutes**: Both email and calendar data sync automatically every 5 minutes after the initial import.
+**5分ごとの更新**: メールとカレンダーのデータが初回インポート後に5分ごとに自動的に同期されます。
- **Initial sync timing**: Calendar sync completes quickly (usually within minutes), while email sync takes longer for large mailboxes—up to a few hours depending on volume. Don't worry if you see contacts from calendar events appearing before your email contacts; this is normal behavior.
+ **初回同期のタイミング**: カレンダーの同期はすばやく完了します(通常は数分以内に)。一方、メールの同期は大容量のメールボックスではより時間がかかります。 Twenty は約 **1分あたり400通のメッセージ**を取り込みます(Gmail API のレート制限により制限されます)。そのため、10,000通のメールがあるメールボックスでは約25分かかります。 カレンダーのイベント由来の連絡先がメールの連絡先より先に表示されても心配はいりません。これは正常な動作です。
-## Next Steps
+## 次のステップ
-* [Mailbox capabilities](/l/ja/user-guide/calendar-emails/capabilities/mailbox)
-* [Troubleshoot missing emails](/l/ja/user-guide/calendar-emails/how-tos/i-dont-see-emails-on-records)
+* [メールボックスの機能](/l/ja/user-guide/calendar-emails/capabilities/mailbox)
+* [メールが表示されない場合のトラブルシューティング](/l/ja/user-guide/calendar-emails/how-tos/i-dont-see-emails-on-records)
diff --git a/packages/twenty-docs/l/ja/user-guide/dashboards/capabilities/chart-settings.mdx b/packages/twenty-docs/l/ja/user-guide/dashboards/capabilities/chart-settings.mdx
new file mode 100644
index 0000000000..16ace63034
--- /dev/null
+++ b/packages/twenty-docs/l/ja/user-guide/dashboards/capabilities/chart-settings.mdx
@@ -0,0 +1,275 @@
+---
+title: チャート設定
+description: チャートが必要なとおりにデータを表示するように設定します。
+---
+
+import { ChartIcon } from '/snippets/chart-icon.mdx';
+
+## チャート設定にアクセス
+
+1. ダッシュボード右上の **編集** ボタンをクリック
+
+
+
+2. ダッシュボードが編集モードになります。
+3. 任意のウィジェットをクリックして選択します。
+4. 右側に設定パネルが開きます。
+
+設定は次のセクションに分かれています。
+
+* **データ**: 取得するデータとその絞り込み方法
+* **X 軸**: カテゴリのグループ化と並べ替え方法(棒グラフ/折れ線グラフ)
+* **Y 軸**: 何を測定し、どのように表示するか(棒グラフ/折れ線グラフ)
+* **スタイル**: 色、ラベル、表示オプション
+
+
+ 一部の設定は、他の設定を構成したときにのみ表示されます。 たとえば、日付フィールドを選択した場合にのみ **日付の粒度** が表示されます。
+
+
+---
+
+## データ設定
+
+### ソース
+
+データを取得するオブジェクトを選択します。
+
+1. **ソース** をクリック
+2. オブジェクトを選択します(商談、人物、会社など)。
+
+標準オブジェクトとカスタムオブジェクトのすべてが利用できます。 ソースを変更すると、フィールドの選択肢は選択したオブジェクトに依存するため、他の設定がリセットされます。
+
+
+
+### フィルター
+
+チャートに含めるレコードを制限します。
+
+1. **フィルター** をクリックします
+2. フィルタービルダーが開きます。
+3. **+ Add filter** をクリック
+4. フィールド、条件、値を選択します。
+5. 必要に応じてフィルターを追加します。
+
+フィルターの動作はテーブルビューと同様です。 データの特定のセグメントに焦点を当てるために使用します。
+
+**例**: ステージが「受注」に等しい商談でフィルターし、クローズ済みの商談のみを表示します。
+
+
+
+
+ 日付フィールドでは、**Is relative** を使うと「過去7日間」や「今月」のような自動更新される動的フィルターを作成できます。
+
+
+
+ 高度なフィルターに対応しています — 複数のフィルタールールを追加し、**And** または **Or** ロジックで組み合わせます。
+
+
+---
+
+## X 軸の設定
+
+これらの設定は棒グラフと折れ線グラフの横軸を制御します。通常、データをカテゴリにどのようにグループ化するかを決定します。
+
+### 表示データ
+
+データをグループ化する基準のフィールドを選択します。 X 軸に表示されるカテゴリが決まります。
+
+**例**: 「ステージ」を選択するとパイプラインのステージ別にグループ化されたデータを表示できます。「作成日」を選択すると時間の経過に沿ったデータを表示できます。
+
+
+
+### 日付の粒度
+
+日付フィールドでグループ化する場合、グループ化の期間を選択します。
+
+| オプション | グループ化の基準 | 出力例 |
+| --------- | -------- | ----------------------- |
+| **日** | 各日 | 1月1日、1月2日、1月3日... |
+| **週** | カレンダー週 | 第1週、第2週、第3週... |
+| **月** | 各月 | 1月、2月、3月... |
+| **四半期** | 会計四半期 | Q1、Q2、Q3、Q4 |
+| **年** | 各年 | 2023、2024、2025 |
+| **曜日** | 曜日(集計) | 月曜日、火曜日... (すべての月曜日を集計) |
+| **年の月** | 月(集計) | 1月、2月... (すべての1月を集計) |
+| **年の四半期** | 四半期(集計) | Q1、Q2、Q3、Q4(すべてのQ1を集計) |
+
+「曜日」「年の月」などのオプションは、全期間を横断して集計します。 「曜日」を使うと、通常どの曜日に最も多くの商談があるかが分かります。 「月」を使うと、月ごとの傾向を確認できます。
+
+### 並べ替え
+
+X 軸上のカテゴリの順序を制御します。
+
+* **Position** – Select フィールド設定で定義された順序を使用
+* **Alphabetical** – A から Z(または日付の場合は時系列)
+* **By value** – 指標の値で順序付け(高い/低いの順)
+* **Manual** – ドラッグして任意の順序に設定
+
+
+
+**ヒント**: パイプラインのステージには、**Position** を使用して営業プロセスの順序(見込み → 資格判定 → 提案 → 受注)のとおりに表示します。
+
+
+ 表示されるオプションはフィールドタイプによって異なります。 Select フィールドにはすべてのオプションがありますが、日付フィールドやテキストフィールドでは表示されるオプションが少なくなります。
+
+
+
+ **Manual** 並べ替えでは、カテゴリをドラッグして任意の順序を作成できます。特定のセグメントを強調したり、データでストーリーを伝えたりするのに最適です。
+
+
+### ゼロ値を除外
+
+ゼロまたはデータのないカテゴリを非表示にします。
+
+* **オン**: レコードのないカテゴリを非表示にする
+* **オフ**: 空でもすべてのカテゴリを表示する
+
+データがまばらなチャートを見やすくするために使用します。
+
+---
+
+## Y 軸の設定
+
+何を測定し、どのように表示するかを制御します。
+
+### 表示データ
+
+指標を計算するフィールドと演算を選択します。
+
+* **カウント** – すべてをカウント、空をカウント、空以外をカウント、一意の値をカウント
+* **数値演算** – 合計、平均、最小、最大(数値フィールド)
+* **パーセンテージ** – 空の割合、空以外の割合
+
+ブール値フィールドでは、True/False のカウントが追加されます。 日付フィールドを含む集計チャートでは、最古/最新を表示できます。
+
+**例**: 「金額」を合計で選択するとカテゴリごとの商談総額を表示できます。Count all を選択すると商談件数を表示できます。
+
+
+
+
+ 表示されるオプションはフィールドとチャートの種類によって異なります。 期待する演算が見つからない場合は、フィールドタイプを確認してください。
+
+
+### 比率
+
+Select、Multi-select、またはブール値フィールドでは、特定の値の割合を計算できます。
+
+1. Select、Multi-select、またはブール値フィールドを選択します
+2. **Ratio** を有効にする
+3. 測定するオプションを選択します
+
+**例**: すべての商談に対する「受注」商談の割合を表示します。 合計50件中受注が10件なら、チャートには20%と表示されます。
+
+### グループ化
+
+第2の次元を追加して複数の系列(複数のバーや線)を作成します。
+
+1. 先に X 軸のフィールドを設定します
+2. **Group by** をクリック
+3. 2 つ目のフィールドを選択します
+
+**例**: ステージ(X 軸)とオーナー(グループ化)の両方で商談をグループ化し、各担当者のパイプラインの内訳を並べて表示します。
+
+
+
+Group by を設定すると、チャートに複数の色が表示され、凡例が現れます。
+
+### 日付の粒度
+
+Group by が日付フィールドの場合、期間を選択します(X 軸と同じオプション)。
+
+### 並べ替え
+
+Group by 設定時、グループ化された系列の順序(各カテゴリ内でどのオーナーのバーを先頭にするかなど)を制御します。
+
+X 軸の並べ替えと同じオプション(**Position**、**Alphabetical**、**Manual**)ですが、第二のグループ化では「値に基づく並べ替え」は利用できません。
+
+### 累積
+
+個別値の代わりに累計を表示します。
+
+* **オフ**: 各バー/ポイントがそれ自身の値を表示
+* **オン**: 各バー/ポイントが、それ以前のすべての値の合計に自身の値を加えたものを表示
+
+**例**: 1月 = 10、2月 = 15
+
+* 累積オフ: 10 と 15 を表示
+* 累積オン: 10 と 25(10 + 15)を表示
+
+累積を使うと、目標に向けた進捗を経時的に追跡できます。
+
+
+
+### 最小値 / 最大値
+
+Y 軸の最小値と最大値を固定します。
+
+* 空欄のままにすると自動調整されます
+* 数値を入力すると境界が固定されます
+
+**使用する場面:**
+
+* 視覚的に正確な比較のために最小値を 0 に設定する
+* 複数のチャートでスケールを統一するため両方を設定する
+* 両方を設定して特定の値の範囲に焦点を当てる
+
+---
+
+## スタイル設定
+
+### 色
+
+チャートの配色を設定します。 さまざまなカラーパレットから選択できます。
+
+
+ 選択フィールドでグループ化している場合、フィールド設定で各オプションに定義した色が自動的に使用されます。
+
+
+### 軸名
+
+表示する軸ラベルを選択します: **なし**、**X 軸**、**Y 軸**、**両方**(棒グラフと折れ線グラフのみ)。
+
+### 積み上げ棒 / 積み上げ折れ線
+
+Group by が設定されている場合、複数系列の表示方法を選択します。
+
+* **オフ(グループ)**: 系列が横に並びます。 グループ間の正確な値を比較するときに使用します。
+* **オン(積み上げ)**: 系列が重なって表示されます。 構成(全体に対する内訳)を示すときに使用します。
+
+**例**: ステージ別の商談(オーナー別にグループ化)
+
+* グループ: 各オーナーの正確な数値を横並びで確認
+* 積み上げ: ステージごとの商談合計と各オーナーの内訳を積み上げで表示
+
+### データラベル
+
+棒、点、スライスなどのチャート要素に値を直接表示します。
+
+* **オン**: 値をチャートに表示
+* **オフ**: 値を表示しない(すっきりした見た目)
+
+### 凡例
+
+凡例を表示/非表示にします(Group by 設定時のみ表示)。
+
+* **オン**: 各色が何を表すかを凡例に表示
+* **オフ**: 凡例を表示しない
+
+
+ **ホバー** すると、そのグループを強調表示します。 **クリック** すると、一時的にチャートから非表示にします。
+
+
+---
+
+## チャート固有の注意事項
+
+### パイチャート
+
+* **各スライスが表すもの** – スライスのグループ化方法を定義
+* **空のカテゴリを非表示** – 値が 0 のスライスを除外
+* **中央に値を表示** – 集計値(合計、平均、件数など)を表示
+
+### 集計チャート
+
+* **接頭辞** – 数値の前に文字を追加(例: `$`)
+* **接尾辞** – 数値の後に文字を追加(例: `%`)
diff --git a/packages/twenty-docs/l/ja/user-guide/dashboards/capabilities/dashboards.mdx b/packages/twenty-docs/l/ja/user-guide/dashboards/capabilities/dashboards.mdx
index b3d731e668..2c392ba50b 100644
--- a/packages/twenty-docs/l/ja/user-guide/dashboards/capabilities/dashboards.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/dashboards/capabilities/dashboards.mdx
@@ -1,74 +1,92 @@
---
-title: Dashboards
-description: Create and organize dashboards with tabs to visualize your CRM data.
+title: ダッシュボード
+description: タブでダッシュボードを作成・整理し、CRM データを可視化します。
---
-## Overview
+## 概要
-Dashboards in Twenty are organized in a hierarchy: **Dashboards → Tabs → Widgets**. Each dashboard can contain multiple tabs, and each tab contains widgets (charts, numbers, iFrames).
+Twenty のダッシュボードは階層構造で整理されています: **Dashboards → Tabs → Widgets**。 各ダッシュボードには複数のタブを含めることができ、各タブにはウィジェット(チャート、数値、iFrames)が含まれます。
-## Creating a Dashboard
+## ダッシュボードの作成
-1. Go to **Dashboards** in the navigation
-2. Click **+ New Dashboard**
-3. Give your dashboard a name
-4. Start adding tabs and widgets
+1. ナビゲーションの **Dashboards** に移動します。
+2. 「**+ New Record**」をクリックします
-## Working with Tabs
+
-Tabs help you organize your dashboard into logical sections.
+3. ダッシュボードに名前を付けます
+4. タブとウィジェットの追加を開始します
-### Creating Tabs
+## タブの操作
-1. In edit mode, click **+ Add Tab**
-2. Name your tab (e.g., "Pipeline Overview", "Team Performance")
-3. Add widgets to the tab
+タブを使うと、ダッシュボードを論理的なセクションに整理できます。
-### Duplicating Tabs
+### タブの作成
-1. Click on the tab you want to duplicate
-2. Click the **Duplicate** button in the side panel
+1. 編集モードで、タブバーの **+** をクリックすると、右側にサイドパネルが開きます。
+2. タブに名前を付けます(例: 「パイプライン概要」「チームのパフォーマンス」)。
+3. タブにウィジェットを追加します。
-## Dashboard Layout
+### タブの並べ替え
-### Arranging Widgets
+1. 編集モードで、移動したいタブをクリックして押し続けます。
+2. 新しい位置にドラッグ&ドロップします。
+3. タブをクリックし、コマンドメニューでタブを左または右に移動することもできます。
-* Drag and drop to position
-* Resize for emphasis
-* Group related charts together
+### タブの削除
-### Duplicating a Dashboard
+1. 編集モードで、削除したいタブをクリックします。
+2. コマンドメニューの **Delete** ボタンをクリックします。
-1. Exit edit mode (view mode only)
-2. Open the command bar with **Cmd + K** (or **Ctrl + K** on Windows)
-3. Select **Duplicate dashboard**
+### タブの複製
-### Best Practices
+1. 複製したいタブをクリックします。
+2. サイドパネルの **Duplicate** ボタンをクリックします。
-* **Logical flow**: Arrange from overview to detail
-* **Visual hierarchy**: Larger charts for key metrics
-* **Consistent styling**: Use matching colors and fonts
+
-## Visibility & Access
+## ダッシュボードのレイアウト
-### Dashboard Visibility
+### ウィジェットの配置
-Dashboards are visible to everyone who has access to your Twenty workspace. There is no private dashboard option at the moment.
+* ドラッグ&ドロップで配置します。
+* 強調のためにサイズを変更します。
+* 関連するチャートをまとめてグループ化します。
-### Favorites
+### ダッシュボードの複製
-You can add dashboards to your favorites for quick access. This is a personal setting—your favorites are not visible to other users.
+1. 複製したいダッシュボードを選択します。
+2. コマンドバーを **Cmd + K**(Windows の場合は **Ctrl + K**)で開きます。
+3. **Duplicate dashboard** を選択します。
-To add a dashboard to favorites, open the dashboard and click the star icon.
+
-### Timezone Behavior
+### ベストプラクティス
-Dashboards currently display data based on the timezone of the user viewing them. This means the same dashboard may show different metrics for team members in different regions (e.g., APAC vs. US).
+* **論理的な流れ**: 概要から詳細へ配置します。
+* **視覚的な階層**: 重要な指標には大きなチャートを使用します。
+* **一貫したスタイル**: 色やフォントを統一します。
+
+## 表示とアクセス権
+
+### ダッシュボードの表示範囲
+
+ダッシュボードは、あなたの Twenty ワークスペースにアクセス権のあるすべての人に表示されます。 現在、プライベートダッシュボードのオプションはありません。
+
+### お気に入り
+
+ダッシュボードをお気に入りに追加して、すばやくアクセスできます。 これは個人設定であり、あなたのお気に入りは他のユーザーには表示されません。
+
+ダッシュボードをお気に入りに追加するには、ダッシュボードを開いて星アイコンをクリックします。
+
+### タイムゾーンの動作
+
+ダッシュボードは現在、閲覧しているユーザーのタイムゾーンに基づいてデータを表示します。 つまり、同じダッシュボードでも、地域の異なるチームメンバー(例: APAC と US)には異なる指標が表示される場合があります。
- **Coming soon**: We will add the ability to set a specific timezone for a dashboard, so all users see consistent data regardless of their location.
+ **近日対応**: ダッシュボードごとに特定のタイムゾーンを設定できるようにし、ユーザーの所在地に関係なく一貫したデータが表示されるようにします。
- **Coming soon**: Dashboard-level filters will allow you to apply filters across all widgets at once, making it faster to explore your data.
+ **近日対応**: ダッシュボードレベルのフィルターにより、すべてのウィジェットに一括でフィルターを適用でき、データの探索がより速くなります。
diff --git a/packages/twenty-docs/l/ja/user-guide/dashboards/capabilities/widgets.mdx b/packages/twenty-docs/l/ja/user-guide/dashboards/capabilities/widgets.mdx
index fc12e61339..5e603a0feb 100644
--- a/packages/twenty-docs/l/ja/user-guide/dashboards/capabilities/widgets.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/dashboards/capabilities/widgets.mdx
@@ -1,131 +1,149 @@
---
-title: Widgets
-description: Explore the widget types and visualization options in Twenty.
+title: ウィジェット
+description: Twentyのウィジェットの種類と可視化オプションを確認します。
---
-## Available Widgets
+import { ChartIcon } from '/snippets/chart-icon.mdx';
-Twenty provides various widget types to visualize your CRM data.
+## 利用可能なウィジェット
-### Bar Charts
+Twentyは、CRMデータを可視化するためのさまざまなウィジェットタイプを提供します。
-Display data as horizontal or vertical bars.
+### Bar Charts
-**Best for:**
+データを横棒または縦棒で表示します。
-* Comparing values across categories
-* Showing rankings
-* Tracking metrics by time period
+
+
+
-**Example uses:**
+**最適な用途:**
-* Deals by stage
-* Revenue by sales rep
-* Contacts added per month
+* カテゴリ間の値を比較する
+* ランキングを表示する
+* 期間別の指標を追跡する
+
+**使用例:**
+
+* ステージ別の商談
+* 営業担当者別の売上
+* 月別のコンタクト追加数
- **Display limits**: Bar charts can show a maximum of 100 bars (horizontal) or 50 bars (vertical). If you see the warning "Undisplayed data: max X bars per chart", add filters to narrow down your data or change the grouping (e.g., group by week instead of days).
+ **Display limits**: Bar charts can show a maximum of 100 bars, and 50 groups per bar when using Group By. 警告 "Undisplayed data: max X bars per chart" が表示された場合は、フィルターを追加してデータを絞り込むか、グルーピングを変更します(例: 日単位ではなく週単位でグループ化)。
-### Pie Charts
+### Pie Charts
-Show proportions of a whole.
+全体に占める割合を表示します。
-**Best for:**
+
+
+
-* Showing composition or distribution
-* Comparing parts to whole
-* Highlighting major segments
+**最適な用途:**
-**Example uses:**
+* 構成や分布を示す
+* 部分と全体を比較する
+* 主要セグメントを強調する
-* Deal distribution by source
-* Contact breakdown by industry
-* Pipeline composition by owner
+**使用例:**
-### Line Charts
+* ソース別の商談分布
+* 業種別のコンタクト内訳
+* 担当者別のパイプライン構成
-Display trends over time.
+### Line Charts
-**Best for:**
+時間の経過に伴う傾向を表示します。
-* Tracking changes over time
-* Identifying trends
-* Comparing multiple metrics
+
+
+
-**Example uses:**
+**最適な用途:**
-* Monthly deal count trend
-* Revenue growth over quarters
-* Activity levels over time
+* 時間経過による変化を追跡する
+* トレンドを把握する
+* 複数の指標を比較する
-### Number Metrics
+**使用例:**
-Display single key values prominently.
+* 月次の商談数の推移
+* 四半期ごとの売上成長
+* 活動量の推移
-**Best for:**
+### Aggregate Charts
-* Highlighting KPIs
-* Showing totals or averages
-* Quick status checks
+重要な単一値を目立つ形で表示します。
-**Example uses:**
+
+
+
-* Total pipeline value
-* Number of open opportunities
-* Conversion rate
+**最適な用途:**
-**Advanced options:**
+* KPIを強調する
+* 合計や平均を表示する
+* ステータスを素早く確認する
-* **Ratio**: For Select fields, calculate ratios between values. Go to **Data on display** → select your field → enable the **Ratio** option.
-* **Prefix & Suffix**: Add custom text before or after the number (e.g., "$" prefix or "%" suffix) for better readability.
+**使用例:**
-### iFrames
+* パイプラインの合計金額
+* オープンな商談数
+* コンバージョン率
-Embed external tools and content directly in your dashboard.
+**高度なオプション:**
-**Best for:**
+* **比率**: Select フィールドで、値同士の比率を計算します。 **Data on display** → フィールドを選択 → **Ratio** オプションを有効にします。
+* **Prefix & Suffix**: 可読性を高めるために、数値の前後にカスタムテキストを追加します(例: "$" のプレフィックスや "%" のサフィックス)。
-* Displaying external reports or dashboards
-* Integrating third-party sales tools
-* Showing live content from other systems
+### iFrames
-**Example uses:**
+外部ツールやコンテンツをダッシュボードに直接埋め込みます。
-* Metrics from your Support tool
-* Metrics from your dialer
-* Live content from your Sales sequence tool
+
+
+
+
+**最適な用途:**
+
+* 外部のレポートやダッシュボードを表示する
+* サードパーティのセールスツールを統合する
+* 他システムのライブコンテンツを表示する
+
+**使用例:**
+
+* サポートツールの指標
+* ダイヤラーの指標
+* セールスシーケンスツールのライブコンテンツ
+
+### Rich Text
+
+Add formatted text and content directly to your dashboard.
+
+
+
+
+
+**最適な用途:**
+
+* Adding context or instructions
+* Dashboard descriptions
+* Notes and annotations
+
+**Features:**
+
+* Rich text formatting (bold, italic, lists, etc.)
+* Image and file uploads
+* Markdown-style editing
- **Coming soon**: Gauge charts and tables are not yet available but are on our roadmap.
+ **近日提供予定**: ゲージチャートとテーブルはまだ利用できませんが、ロードマップに含まれています。
-## Configuring Widgets
+### ウィジェットの複製
-### Data Source
-
-1. Select the object to visualize (Opportunities, People, etc.)
-2. Choose the metric to display (count, sum, average)
-3. Apply filters to focus on specific data
-
-### Grouping
-
-Group data by:
-
-* Fields (stage, owner, industry)
-* Time periods (day, week, month, quarter)
-* Custom segments
-
-### Styling
-
-Customize your charts with:
-
-* Colors and themes
-* Labels and legends
-* Size and positioning
-
-### Duplicating Widgets
-
-1. Click on the widget
-2. Open **Options**
-3. Click **Duplicate widget**
+1. ウィジェットをクリックします
+2. **Options** を開きます
+3. **Duplicate widget** をクリックします
diff --git a/packages/twenty-docs/l/ja/user-guide/dashboards/how-tos/dashboards-faq.mdx b/packages/twenty-docs/l/ja/user-guide/dashboards/how-tos/dashboards-faq.mdx
index 7af41b4efa..e456669ab3 100644
--- a/packages/twenty-docs/l/ja/user-guide/dashboards/how-tos/dashboards-faq.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/dashboards/how-tos/dashboards-faq.mdx
@@ -1,59 +1,55 @@
---
-title: Dashboards FAQ
-description: Frequently asked questions about dashboards in Twenty.
+title: ダッシュボードFAQ
+description: Twenty のダッシュボードに関するよくある質問。
---
-
- No, dashboards are currently visible to everyone with access to your Twenty workspace. Private dashboards are not yet available.
+
+ いいえ、現在ダッシュボードは、あなたの Twenty ワークスペースへアクセスできるすべてのユーザーに表示されます。 プライベートダッシュボードはまだ利用できません。
-
- Dashboards currently display data based on the viewer's timezone. If you're in different regions (e.g., APAC vs. US), you may see slightly different numbers for the same dashboard. We're working on adding a timezone setting per dashboard to ensure consistent data across teams.
+
+ 現在、ダッシュボードは閲覧者のタイムゾーンに基づいてデータを表示します。 異なる地域(例: APAC と US)にいる場合、同じダッシュボードでも数値がわずかに異なることがあります。 チーム間でデータを一貫させるため、ダッシュボードごとのタイムゾーン設定の追加に取り組んでいます。
-
- Exporting dashboards is not available at the moment. This feature is on our roadmap.
+
+ 現時点では、ダッシュボードのエクスポートは利用できません。 この機能はロードマップに含まれています。
-
- No, sharing dashboards with users outside your Twenty workspace (non-Twenty users) is not currently supported.
+
+ いいえ、現在は Twenty ワークスペース外のユーザー(Twenty を利用していないユーザー)とのダッシュボード共有には対応していません。
-
- Open the dashboard you want to favorite, then click the star icon. Favorites are personal—they won't affect other users.
+
+ お気に入りに追加したいダッシュボードを開き、星形アイコンをクリックします。 お気に入りは個人設定であり、他のユーザーには影響しません。
-
- * **Tabs** organize your dashboard into sections (like pages within the dashboard)
- * **Widgets** are the individual visualizations (charts, numbers, iFrames) within each tab
+
+ * **タブ** はダッシュボードをセクションに整理します(ダッシュボード内のページのようなもの)
+ * **ウィジェット** は各タブ内の個々の可視化要素(グラフ、数値、iFrame)です
- Structure: Dashboard → Tabs → Widgets
+ 構造: ダッシュボード → タブ → ウィジェット
-
- Bar charts have display limits: 100 bars for horizontal charts, 50 for vertical. If your data exceeds this, add filters to narrow down the results or change the grouping (e.g., group by week instead of day).
+
+ ダッシュボードレベルのフィルターはまだ利用できませんが、この機能はロードマップに含まれています。 現在は、各ウィジェットごとに個別にフィルターを適用する必要があります。
-
- Dashboard-level filters are not available yet, but this feature is on our roadmap. Currently, you need to apply filters to each widget individually.
+
+ まだできません。 ゲージチャートとテーブルはロードマップに含まれており、今後のリリースで追加されます。
-
- Not yet. Gauge charts and tables are on our roadmap and will be added in a future release.
+
+ 1. 閲覧モードであることを確認してください(編集中ではないこと)。
+ 2. コマンドバーを **Cmd + K**(Windows の場合は **Ctrl + K**)で開きます。
+ 3. 「**Duplicate dashboard**」を選択します。
-
- 1. Make sure you're in view mode (not editing)
- 2. Open the command bar with **Cmd + K** (or **Ctrl + K** on Windows)
- 3. Select **Duplicate dashboard**
-
+
+ CRM データの変更に合わせてウィジェットは自動的に更新されます:
-
- Widgets update automatically as your CRM data changes:
-
- * Real-time updates for most metrics
- * Use the refresh button for a manual update if needed
- * Historical data is preserved for trend analysis
+ * ほとんどの指標はリアルタイムで更新されます
+ * 必要に応じて、更新ボタンで手動更新できます
+ * トレンド分析のために履歴データは保持されます
diff --git a/packages/twenty-docs/l/ja/user-guide/dashboards/how-tos/widget-faq.mdx b/packages/twenty-docs/l/ja/user-guide/dashboards/how-tos/widget-faq.mdx
new file mode 100644
index 0000000000..72984d46d0
--- /dev/null
+++ b/packages/twenty-docs/l/ja/user-guide/dashboards/how-tos/widget-faq.mdx
@@ -0,0 +1,67 @@
+---
+title: ウィジェットFAQ
+description: よくある質問とエラーメッセージの解説。
+---
+
+
+
+ 3つの方法:
+
+ * **Percent empty/not empty**: Data on display で、Percent empty または Percent not empty を選択します
+ * **Ratio**: Select または Checkbox フィールドでは、Ratio を有効にすると、特定のオプションを全レコードに対する割合で表示できます
+ * **Suffix**: 集計チャートでは、Style settings の Suffix に `%` を追加します
+
+
+
+ **Group by** を使用する場合、系列は2つの方法で表示できます:
+
+ * **Grouped**: バーを横に並べる—正確な値の比較に最適
+ * **Stacked**: バーを積み上げる—構成の表示に最適
+
+ 切り替えるには、Style settings で **Stacked** を切り替えます。
+
+
+
+ 利用可能な操作は **フィールドタイプ** によって異なります:
+
+ * **数値フィールド**: Sum、Average、Min、Max
+ * **日付フィールド**: Earliest、Latest(集計チャートのみ)
+ * **チェックボックスフィールド**: Count true、Count false
+
+ オプションが表示されない場合は、互換性のあるフィールドタイプを選択しているか確認してください。
+
+
+
+ 多くの設定は、前提条件を満たした場合にのみ表示されます:
+
+ * **Date granularity**: 先に日付フィールドを選択します
+ * **Group by、Legend、Stacked**: 先に Source を設定します
+ * **Legend、Stacked のトグル**: 先に Group by を設定します
+
+ 設定が表示されない場合は、先にその前提条件を設定してください。
+
+
+
+ チャートは設定に一致するレコードを見つけられませんでした。
+
+ **対処方法:** フィルターを削除または調整し、正しい Source オブジェクトを選択しているか、指定した期間にレコードが存在するかを確認します。
+
+
+
+ 必須の設定が欠けているか、互換性がありません。
+
+ **対処方法:** Source が設定されていること、Data on display が構成されていること、必要なグループ化フィールドが選択されていることを確認してください。
+
+
+
+ データが表示制限(バー100、データポイント100、またはスライス100)を超えています。
+
+ **対処方法:** フィルターを追加してデータを絞り込むか、Date granularity を Day から Week または Month に変更します。
+
+
+
+ 選択したフィールドにフィルター対象のレコードの値がないか、フィールドタイプが想定されるデータと一致していません。
+
+ **対処方法:** 別のフィールドを試すか、選択したフィールドに値があることを確認してください。
+
+
diff --git a/packages/twenty-docs/l/ja/user-guide/dashboards/overview.mdx b/packages/twenty-docs/l/ja/user-guide/dashboards/overview.mdx
index 41d62bddd7..68e7c0d461 100644
--- a/packages/twenty-docs/l/ja/user-guide/dashboards/overview.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/dashboards/overview.mdx
@@ -1,79 +1,85 @@
---
-title: Dashboards
-description: Learn the basics of reporting and dashboards in Twenty.
+title: ダッシュボード
+description: Twenty におけるレポートとダッシュボードの基本を学びましょう。
image: /images/user-guide/reporting/pie-chart.png
---
-
+
-## Understanding Dashboards
-
-Dashboards in Twenty provide a visual way to track your key performance metrics and gain insights from your CRM data.
-
-
-
-## Key Concepts
-
-### Dashboards
-
-A dashboard is a collection of tabs that display your CRM data at a glance. You can create multiple dashboards for different purposes:
-
-* Sales performance
-* Team activity
-* Pipeline health
-* Custom metrics
-
-### Tabs
-
-Tabs allow you to organize your dashboard into sections. Each tab contains one or more widgets.
-
-### Widgets
-
-Widgets are individual visualizations that display specific data. Types include:
-
-* Bar charts
-* Pie charts
-* Line charts
-* Number metrics
-* iFrames
-
- **Current limitations**:
-
- * Exporting dashboards and sharing with external users (non-Twenty users) are not available at the moment.
- * Gauge charts and tables are not yet available.
+ ダッシュボードは現在ベータ版です。 **設定 → 更新 → 早期アクセス**で有効にしてください。
-## Getting Started
+## ダッシュボードの理解
-### Creating Your First Dashboard
+Twenty のダッシュボードは、主要なパフォーマンス指標を視覚的に追跡し、CRM データからインサイトを得るための手段を提供します。
-1. Navigate to the **Dashboards** section
-2. Click **+ New Dashboard**
-3. Give your dashboard a name
-4. Add tabs to organize your content
-5. Add widgets to display your data
-6. Save
+
-### Adding Widgets
+## 主要な概念
-1. Open a tab on your dashboard
-2. Click **+ Add Widget**
-3. Select the widget type
-4. Choose the data source (object)
-5. Configure the widget settings
-6. Save and view your widget
+### ダッシュボード
-## Best Practices
+ダッシュボードは、CRM データをひと目で表示するタブの集合です。 目的に応じて複数のダッシュボードを作成できます:
-* **Start simple**: Begin with a few key metrics and add more over time
-* **Focus on actionable data**: Display metrics that drive decisions
-* **Regular review**: Check your dashboards regularly to spot trends
-* **Share with team**: Make dashboards visible to relevant team members
+* 営業パフォーマンス
+* チームの活動
+* パイプラインの健全性
+* カスタム指標
-## Next Steps
+### タブ
-* [Widgets and visualizations](/l/ja/user-guide/dashboards/capabilities/widgets)
-* [Dashboards FAQ](/l/ja/user-guide/dashboards/how-tos/dashboards-faq)
+タブを使うと、ダッシュボードをセクションに整理できます。 各タブには1つ以上のウィジェットが含まれます。
+
+### ウィジェット
+
+ウィジェットは、特定のデータを表示する個別の可視化です。 種類には次のものがあります:
+
+* 棒グラフ
+* パイチャート
+* ラインチャート
+* 集計チャート
+* iFrame
+* リッチテキスト
+
+
+ **現在の制限**:
+
+ * ダッシュボードのエクスポートおよび外部ユーザー(Twenty 以外のユーザー)との共有は、現時点では利用できません。
+ * ゲージチャートおよびテーブルはまだ利用できません。
+
+
+## 始めに
+
+### 最初のダッシュボードを作成する
+
+1. 「**Dashboards**」セクションに移動します
+2. 「**+ New Dashboard**」をクリックします
+3. ダッシュボードに名前を付けます
+4. コンテンツを整理するためにタブを追加します
+5. データを表示するためにウィジェットを追加します
+6. 保存
+
+### ウィジェットの追加
+
+1. ダッシュボードのタブを開きます
+2. 「**+ Add Widget**」をクリックします
+3. ウィジェットの種類を選択します
+4. データソース(オブジェクト)を選択します
+5. ウィジェットの設定を行います
+6. ウィジェットを保存して表示します
+
+## ベストプラクティス
+
+* **シンプルに始める**: いくつかの主要な指標から始め、徐々に追加していきます
+* **実行可能なデータに集中**: 意思決定を促進する指標を表示します
+* **定期的な確認**: 傾向を見つけるためにダッシュボードを定期的に確認します
+* **チームで共有**: 関連するチームメンバーがダッシュボードを閲覧できるようにします
+
+## 次のステップ
+
+* [ウィジェットと可視化](/l/ja/user-guide/dashboards/capabilities/widgets)
+* [チャート設定のリファレンス](/l/ja/user-guide/dashboards/capabilities/chart-settings)
+* [ダッシュボードのFAQ](/l/ja/user-guide/dashboards/how-tos/dashboards-faq)
diff --git a/packages/twenty-docs/l/ja/user-guide/data-migration/capabilities/error-handling.mdx b/packages/twenty-docs/l/ja/user-guide/data-migration/capabilities/error-handling.mdx
index 5860a302a0..7c73736732 100644
--- a/packages/twenty-docs/l/ja/user-guide/data-migration/capabilities/error-handling.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/data-migration/capabilities/error-handling.mdx
@@ -1,76 +1,76 @@
---
-title: Error Handling & Validation
-description: Review and fix import errors directly in the UI before confirming.
+title: エラー処理と検証
+description: 確定する前に、UI 上でインポートエラーを確認して修正します。
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-## Pre-Import Validation
+## インポート前の検証
-After uploading your file and mapping fields, Twenty validates your data **before** importing. This allows you to catch and fix errors without affecting your existing data.
+ファイルをアップロードしてフィールドをマッピングした後、Twenty はインポートする**前**にデータを検証します。 これにより、既存のデータに影響を与えることなく、エラーを検出して修正できます。
-## How It Works
+## 仕組み
-1. **Upload** your CSV file
-2. **Map** your columns to Twenty fields
-3. **Review** the potential errors highlighted in yellow
-4. **Fix errors** directly in the UI
-5. **Confirm** the import
+1. **CSV ファイルをアップロード**
+2. **列を Twenty のフィールドにマッピング**
+3. **黄色で強調表示された潜在的なエラーを確認**
+4. **UI で直接エラーを修正**
+5. **インポートを確定**
-
+
-## Error Display
+## エラーの表示
-Rows with issues are highlighted in **yellow**. You can:
+問題のある行は **黄色** で強調表示されます。 次のことができます:
-* **Edit the cell directly** to fix the error
-* **Remove the row** to skip it entirely
+* **セルを直接編集**してエラーを修正
+* **行を削除**して完全にスキップ
-This inline editing saves time—no need to go back to your spreadsheet, fix errors, and re-upload.
+このインライン編集により時間を節約できます—スプレッドシートに戻ってエラーを修正し、再アップロードする必要はありません。
-## Common Error Types
+## よくあるエラーの種類
-### Duplicate Values
+### 重複した値
-**Cause**: A unique field (email, domain) already exists in Twenty or appears twice in your file.
+**原因**: 一意のフィールド(メール、ドメイン)が Twenty に既に存在するか、ファイル内で 2 回出現しています。
-**Fix**:
+**対処**:
-* Edit the duplicate value in the import UI
-* Remove one of the duplicate rows
+* インポート UI で重複値を編集
+* 重複行のいずれかを削除
-See [Uniqueness Constraints](/l/ja/user-guide/data-migration/capabilities/uniqueness-constraints) for more details on how uniqueness is enforced.
+一意性の適用方法の詳細は[一意性制約](/l/ja/user-guide/data-migration/capabilities/uniqueness-constraints)を参照してください。
-### Invalid Format
+### 無効な形式
-**Cause**: Data doesn't match the expected format (e.g., invalid email, wrong date format).
+**原因**: データが期待される形式に一致していません(例: 無効なメールアドレス、日付形式の誤り)。
-**Fix**: Edit the cell to use the correct format.
+**対処**: セルを編集して正しい形式にする。
-See [Field Mapping](/l/ja/user-guide/data-migration/capabilities/field-mapping) for the expected format of each field type.
+各フィールドタイプの期待される形式は[フィールドマッピング](/l/ja/user-guide/data-migration/capabilities/field-mapping)を参照してください。
-### Missing Required Fields
+### 必須フィールドの欠落
-**Cause**: A required field is empty.
+**原因**: 必須フィールドが空です。
-**Fix**: Enter a value in the required field or remove the row.
+**対処**: 必須フィールドに値を入力するか、その行を削除する。
-### Relation Not Found
+### リレーションが見つかりません
-**Cause**: The referenced record doesn't exist (e.g., a Company domain that wasn't imported).
+**原因**: 参照しているレコードが存在しません(例: インポートされていない会社のドメイン)。
-**Fix**:
+**対処**:
-* Import the parent records first
-* Or correct the reference value
+* まず親レコードをインポートする
+* または参照値を修正する
-See [Import Relations](/l/ja/user-guide/data-migration/capabilities/import-relations) for the correct import order and how to link records.
+正しいインポート順序とレコードの関連付け方法は[リレーションのインポート](/l/ja/user-guide/data-migration/capabilities/import-relations)を参照してください。
-## Tips for Fewer Errors
+## エラーを減らすためのヒント
-1. **Download the template** to see expected format prior to importing your file
-2. **Clean your data** in the spreadsheet first
-3. **Import files in correct order** to import relations (Companies → People → Opportunities)
-4. **Test with small batches** before full import
-5. **Check for duplicates** before uploading
-6. **Limit the size of your file to 10,000 records** per file
+1. **テンプレートをダウンロード**して、ファイルをインポートする前に期待される形式を確認
+2. まず**スプレッドシートでデータをクリーンアップ**
+3. **正しい順序でファイルをインポート**してリレーションを取り込む(会社 → 人 → 商談)
+4. **小さなバッチでテスト**してから全量インポート
+5. **アップロード前に重複を確認**
+6. **ファイルあたりのレコード数を 10,000 に制限**
diff --git a/packages/twenty-docs/l/ja/user-guide/data-migration/capabilities/field-mapping.mdx b/packages/twenty-docs/l/ja/user-guide/data-migration/capabilities/field-mapping.mdx
index 3f7751c8d0..9705a6b89f 100644
--- a/packages/twenty-docs/l/ja/user-guide/data-migration/capabilities/field-mapping.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/data-migration/capabilities/field-mapping.mdx
@@ -1,198 +1,198 @@
---
-title: Field Mapping
-description: How field mapping works during data import.
+title: フィールドマッピング
+description: データインポート時のフィールドマッピングの仕組み。
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-## How Field Mapping Works
+## フィールドマッピングの仕組み
-When you upload a file, Twenty analyzes your columns and attempts to match them to existing fields.
+ファイルをアップロードすると、Twenty が列を解析し、既存のフィールドに一致させようとします。
-### Automatic Mapping
+### 自動マッピング
-Twenty tries to match columns based on:
+Twenty は次の基準に基づいて列を照合します:
-* Column header names (exact or similar matches)
-* Data type detection (dates, numbers, emails)
-* Common field patterns
+* 列ヘッダー名(完全一致または類似一致)
+* データ型の検出(日付、数値、メールアドレス)
+* 一般的なフィールドのパターン
-**Quick tip:** Export a few rows from the object you want to import. The exported file will have the exact column names Twenty expects, making automatic mapping seamless during import.
+**クイックヒント:** インポートしたいオブジェクトから数行をエクスポートしてください。 エクスポートしたファイルには、Twenty が想定する正確な列名が含まれているため、インポート時の自動マッピングがスムーズになります。
-### Manual Mapping Options
+### 手動マッピングのオプション
-For each column, you can:
+各列に対して、次の操作ができます:
-* **Map to a field**: Select the matching Twenty field from a dropdown
-* **Do not map**: Skip the column entirely (data won't be imported)
+* **フィールドにマップ**:ドロップダウンから一致する Twenty のフィールドを選択します
+* **マップしない**:その列をスキップします(データはインポートされません)
-**Fields must exist before import.** The import creates records, not fields. Create custom fields under **Settings → Data Model** before importing.
+**フィールドはインポート前に存在している必要があります。** インポートで作成されるのはフィールドではなくレコードです。 インポート前に **Settings → Data Model** でカスタムフィールドを作成してください。
-## Field Type Compatibility
+## フィールドタイプの互換性
-All field types available in the Data Model are supported for import.
+Data Model で利用可能なすべてのフィールドタイプはインポートに対応しています。
-You can also import `id` values to either assign a specific ID to new records or update existing ones.
+`id` 値をインポートして、新規レコードに特定の ID を割り当てるか、既存レコードを更新することもできます。
-## Data Format Requirements
+## データ形式の要件
-**Some fields have special syntax.** We recommend downloading the sample file before preparing your import to see the expected syntax for each field type.
+**一部のフィールドには特別な書式があります。** インポートの準備をする前にサンプルファイルをダウンロードし、各フィールドタイプに期待される書式を確認することをおすすめします。
-### Address Fields
+### 住所フィールド
-Address is a nested field with multiple columns. Some can be left empty.
+住所は複数の列を持つネストされたフィールドです。 一部は空欄のままにできます。
-* **Address / Address 1**: Street address line 1
-* **Address / Address 2**: Street address line 2
-* **Address / City**: City name
-* **Address / State**: State or province
-* **Address / Country**: Country name
-* **Address / Post Code**: Postal/ZIP code
+* **Address / Address 1**:住所の1行目
+* **Address / Address 2**:住所の2行目
+* **Address / City**:市区町村名
+* **Address / State**:州または都道府県
+* **Address / Country**:国名
+* **Address / Post Code**:郵便番号/ZIP コード
-### Array Fields
+### 配列フィールド
-Use the following format:
+次の形式を使用します:
```
-["value1","value2"]
+[\"value1\",\"value2\"]
```
-### Boolean Fields
+### ブール型フィールド
-Use `TRUE` or `FALSE` (uppercase) - not `true` or `false`
+`TRUE` または `FALSE`(大文字)を使用します。`true` や `false` は使用しません
-### Currency Fields
+### 通貨フィールド
-Currency is a nested field with two columns that **both must be filled**:
+通貨は 2 列からなるネストされたフィールドで、**両方を必ず入力** する必要があります:
-* **Amount / Amount**: The numeric value (e.g., `1234.56`)
-* **Amount / Currency**: The currency code (e.g., `USD`, `EUR`)
+* **Amount / Amount**:数値(例:`1234.56`)
+* **Amount / Currency**:通貨コード(例:`USD`、`EUR`)
-### Date Fields
+### 日付フィールド
-Supported formats:
+サポートされている形式:
-* `YYYY-MM-DD` (recommended)
+* `YYYY-MM-DD`(推奨)
* `MM/DD/YYYY`
* `DD/MM/YYYY`
-* ISO 8601 format
+* ISO 8601 形式
-### Domain Fields
+### ドメインフィールド
-* It is recommended to use the format `https://domain.com` to avoid creating duplicates, as this is the format used for Companies created by the mailbox and calendar synchronizations
-* A `Domain Label` and `Domain URL` can be filled: best practice is to fill `domain.com` in the label and `https://domain.com` in the url
-* Domains must be unique within the Companies object
-* **Domains must be unique within the file to import**
+* 重複作成を避けるため、`https://domain.com` の形式を使用することを推奨します。これは、メールボックスおよびカレンダーの同期で作成される Companies オブジェクトでも使用される形式です
+* `Domain Label` と `Domain URL` を入力できます。ベストプラクティスは、ラベルには `domain.com`、URL には `https://domain.com` を入力することです
+* Companies オブジェクト内でドメインは一意である必要があります
+* **インポートするファイル内でもドメインは一意である必要があります**
-### Email Fields
+### メールアドレスフィールド
-* Must be valid email format
-* Emails must be unique within the People object
-* **Emails must be unique within the file to import**
-* For additional emails: use **Emails / Primary Email** for the main email, and **Emails / Additional Emails** with this format:
+* 有効なメールアドレス形式である必要があります
+* People オブジェクト内でメールアドレスは一意である必要があります
+* **インポートするファイル内でもメールアドレスは一意である必要があります**
+* 追加のメールアドレスについて:メインのメールには **Emails / Primary Email** を使用し、**Emails / Additional Emails** には次の形式を使用します:
```
-["jane@twenty.com","jane.doe@twenty.com"]
+[\"jane@twenty.com\",\"jane.doe@twenty.com\"]
```
-### Id Fields
+### ID フィールド
-Specifying an `id` during import is optional. Twenty auto-generates one if not provided.
+インポート時に `id` を指定するかどうかは任意です。 指定しない場合は、Twenty が自動生成します。
-Use cases for mapping an `id` column:
+`id` 列をマッピングするユースケース:
-* **Set a specific ID**: Choose the UUID for newly created records
-* **Update existing records**: Match against existing records to update them instead of creating duplicates. In that case, it is recommended to not map the other unique fields: mapping only one unique field ensures a smoother import.
+* **特定の ID を設定**:新規作成されるレコードの UUID を指定します
+* **既存レコードを更新**:既存レコードに照合して、重複を作成せずに更新します。 その場合、他の一意なフィールドはマッピングしないことを推奨します。唯一の一意フィールドのみをマッピングすることで、よりスムーズにインポートできます。
-If you provide an `id`, it must be in UUID format (e.g., `c776ee49-f608-4a77-8cc8-6fe96ae1e43f`).
+`id` を指定する場合は UUID 形式(例:`c776ee49-f608-4a77-8cc8-6fe96ae1e43f`)である必要があります。
-### JSON Fields
+### JSON フィールド
-Use valid JSON format:
+有効な JSON 形式を使用します:
```
-{"key":"value","key2":"value2"}
+{\"key\":\"value\",\"key2\":\"value2\"}
```
-### Links Fields
+### リンクフィールド
-Similar to Domain fields:
+ドメインフィールドと同様に:
-* Fill both the label and URL columns: **Links / Link URL** and **Links / Link Label**
-* Use full URL format: `https://example.com`
-* For secondary links, use **Links / Secondary Links** column with this format:
+* ラベル列と URL 列の両方を入力します:**Links / Link URL** と **Links / Link Label**
+* 完全な URL 形式(`https://example.com`)を使用します
+* セカンダリリンクには **Links / Secondary Links** 列を使用し、次の形式で入力します:
```
-[{"url":"https://twenty.com","label":"Twenty"}]
+[{\"url\":\"https://twenty.com\",\"label\":\"Twenty\"}]
```
-### Multi-Select Fields
+### マルチセレクトフィールド
-Use the **API names** (not the display labels) in the following format:
+表示ラベルではなく **API 名** を使用し、次の形式で指定します:
```
-["VALUE1","VALUE2"]
+[\"VALUE1\",\"VALUE2\"]
```
-See [here](#finding-api-names-for-select-fields) where to find the API names.
+API 名の確認方法は[こちら](#finding-api-names-for-select-fields)をご覧ください。
-New select options will not be created automatically by the import. They must be added under **Settings → Data Model** before importing.
+新しい選択肢はインポートによって自動作成されません。 インポート前に **Settings → Data Model** で追加する必要があります。
- **Import overwrites, it does not add.**
+ **インポートは追加ではなく上書きです。**
- If a record already has `VALUE2` and `VALUE3` selected, and you import `["VALUE1"]`, the record will only have `VALUE1` after import. The previous selections are replaced, not merged.
+ レコードにすでに `VALUE2` と `VALUE3` が選択されている状態で `[\"VALUE1\"]` をインポートすると、インポート後そのレコードは `VALUE1` のみになります。 以前の選択は結合されず、置き換えられます。
-### Number Fields
+### 数値フィールド
-* Numbers only
-* Decimals use period: `1234.56`
-* No thousands separators
+* 数値のみ
+* 小数点はピリオドを使用:`1234.56`
+* 桁区切りは使用しないでください
-### Phone Fields
+### 電話番号フィールド
-Phone is a nested field with multiple columns that **must be filled**
+電話は複数の列からなるネストされたフィールドで、**必ず入力** する必要があります
-* **Phones / Primary Phone Number**: The phone number (e.g., `4159095555`)
-* **Phones / Primary Phone Country Code**: Country code (e.g., `US`)
-* **Phones / Primary Phone Calling Code**: Dialing code (e.g., `+1`)
+* **Phones / Primary Phone Number**:電話番号(例:`4159095555`)
+* **Phones / Primary Phone Country Code**:国コード(例:`US`)
+* **Phones / Primary Phone Calling Code**:ダイヤルコード(例:`+1`)
-### Rating Fields
+### 評価フィールド
-Use the API name format: `RATING_1`, `RATING_2`, `RATING_3`, `RATING_4`, `RATING_5`
+API 名の形式(`RATING_1`、`RATING_2`、`RATING_3`、`RATING_4`、`RATING_5`)を使用します
-### Relation Fields
+### リレーションフィールド
-Please see our dedicated article: [Import Relations Between Objects](/l/ja/user-guide/data-migration/capabilities/import-relations)
+詳細は専用記事「[オブジェクト間のリレーションのインポート](/l/ja/user-guide/data-migration/capabilities/import-relations)」をご覧ください
-### Select Fields
+### 選択フィールド
-Use the **API name** of the option (not the display label):
+表示ラベルではなく、オプションの **API 名** を使用します:
```
VALUE1
```
-See [here](#finding-api-names-for-select-fields) where to find the API names.
-New select options will not be created automatically by the import. They must be added under **Settings → Data Model** before importing.
+API 名の見つけ方は[こちら](#finding-api-names-for-select-fields)を参照してください。
+新しい Select オプションは、インポートによって自動的に作成されません。 インポート前に **設定 → データモデル** で追加する必要があります。
-### Text Fields
+### テキストフィールド
-* No special formatting required
-* Leading/trailing spaces are trimmed
+* 特別な書式設定は不要です
+* 先頭と末尾の空白は削除されます
-## Finding API Names
+## API 名の見つけ方
-For Select, Multi-Select, and Array fields with predefined options, you must use the **API names**, not the display labels.
+事前定義されたオプションを持つ Select、Multi-Select、Array フィールドでは、表示ラベルではなく、必ず **API 名** を使用してください。
-### How to Find API Names
+### API 名の確認方法
-1. Go to **Settings → Data Model**
-2. Select the object and field
-3. Enable **Advanced mode** (toggle at the bottom right of the settings page)
-4. View the API name for each option
+1. **設定 → データモデル** に移動する
+2. オブジェクトとフィールドを選択する
+3. **詳細モード** を有効にする(設定ページの右下にあるトグル)
+4. 各オプションの API 名を確認する
-
+
diff --git a/packages/twenty-docs/l/ja/user-guide/data-migration/capabilities/file-formats.mdx b/packages/twenty-docs/l/ja/user-guide/data-migration/capabilities/file-formats.mdx
index 24be6eaded..85b915f2d8 100644
--- a/packages/twenty-docs/l/ja/user-guide/data-migration/capabilities/file-formats.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/data-migration/capabilities/file-formats.mdx
@@ -1,48 +1,48 @@
---
-title: Supported File Formats
-description: File formats supported for data import in Twenty.
+title: 対応ファイル形式
+description: Twenty でのデータインポートで対応しているファイル形式。
---
-## Supported Formats
+## 対応形式
-Twenty supports three file formats for import:
+Twenty はインポート用に 3 種類のファイル形式に対応しています:
-| Format | Extension | Notes |
-| ------------------ | --------- | ---------------------------- |
-| **CSV** | .csv | Recommended, most compatible |
-| **Excel** | .xlsx | Modern Excel format |
-| **Excel (Legacy)** | .xls | Older Excel format |
+| 形式 | 拡張子 | ノート |
+| ---------------- | ----- | ------------ |
+| **CSV** | .csv | 推奨(最も互換性が高い) |
+| **Excel** | .xlsx | 現行の Excel 形式 |
+| **Excel (レガシー)** | .xls | 旧 Excel 形式 |
-## File Requirements
+## ファイル要件
-| Requirement | Value |
-| ---------------- | ------------------------------------- |
-| **Encoding** | UTF-8 recommended |
-| **Record limit** | 10,000 records per file |
-| **Structure** | First row must contain column headers |
-| **Content** | One object type per file |
+| 要件 | 値 |
+| ------------ | --------------------- |
+| **エンコーディング** | UTF-8 を推奨 |
+| **レコード数の上限** | 1 ファイルあたり 10,000 レコード |
+| **構造** | 先頭行には列ヘッダーを含める必要があります |
+| **コンテンツ** | 1 ファイルにつき 1 種類のオブジェクト |
-## CSV Best Practices
+## CSV ベストプラクティス
-* **Delimiter**: Use comma (`,`) or semicolon (`;`)
-* **Text qualifier**: Use double quotes (`"`) for text containing commas
-* **Line endings**: Windows (CRLF) or Unix (LF) both supported
-* **Empty values**: Leave cells empty, don't use "NULL" or "N/A"
+* **区切り文字**: カンマ (`,`) またはセミコロン (`;`) を使用
+* **テキスト囲み文字**: カンマを含むテキストには二重引用符 (`\"`) を使用
+* **改行コード**: Windows (CRLF) または Unix (LF) のどちらにも対応
+* **空の値**: セルは空のままにし、"NULL" や "N/A" は使用しないでください
-## Excel Best Practices
+## Excel ベストプラクティス
-When exporting from Excel:
+Excel からエクスポートする場合:
-* Remove formulas (export values only)
-* Delete empty rows at the end
-* Ensure no merged cells
-* Use the first sheet only
+* 数式を削除 (値のみをエクスポート),
+* 末尾の空行を削除
+* 結合セルがないことを確認
+* 最初のシートのみを使用
-## Large Datasets
+## 大規模データセット
-For datasets larger than 10,000 records:
+10,000 レコードを超えるデータセットの場合:
-* Split into multiple files
-* Or use the [API import](/l/ja/user-guide/data-migration/how-tos/import-data-via-api) for unlimited records
+* 複数のファイルに分割
+* または、無制限のレコードに対応する [API インポート](/l/ja/user-guide/data-migration/how-tos/import-data-via-api) を使用
-For very large migrations (100,000+ records), the API is significantly faster and more reliable than CSV imports.
+非常に大規模な移行 (100,000 レコード以上) の場合、API は CSV インポートよりも大幅に高速で信頼性も高くなります。
diff --git a/packages/twenty-docs/l/ja/user-guide/data-migration/capabilities/import-relations.mdx b/packages/twenty-docs/l/ja/user-guide/data-migration/capabilities/import-relations.mdx
index 2c2ea60c23..7351611f66 100644
--- a/packages/twenty-docs/l/ja/user-guide/data-migration/capabilities/import-relations.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/data-migration/capabilities/import-relations.mdx
@@ -1,94 +1,94 @@
---
-title: Import Relations Between Objects
-description: Import relationships between records via CSV.
+title: オブジェクト間のリレーションをインポートする
+description: CSV を使ってレコード間のリレーションをインポートします。
---
-## Overview
+## 概要
-Twenty supports importing relationships between objects during CSV import. This allows you to link records (e.g., attach People to Companies) as part of your data migration.
+Twenty は、CSV インポート時にオブジェクト間のリレーションのインポートをサポートしています。 これにより、データ移行の一環としてレコードをリンクできます(例:連絡先を会社に関連付ける)。
-**Currently supported for import**: One-to-many relations pointing to a single object type on each side (e.g., People → Companies). Relations pointing to multiple object types are not yet supported in import/export.
+**現在インポートでサポート**:各側が単一のオブジェクトタイプを指す一対多リレーション(例:連絡先 → 会社)。 複数のオブジェクトタイプを指すリレーションは、現時点ではインポート/エクスポートに対応していません。
-## How Relations Work in Twenty
+## Twenty におけるリレーションの仕組み
-### One to Many / Many to One
+### 1 対多 / 多対 1
-Twenty supports standard relations where one record links to many others:
+Twenty は、1 件のレコードが複数のレコードにリンクする標準的なリレーションをサポートしています:
-* **One Company → Many People**: A company can have multiple employees, but each person belongs to one company
-* **One Company → Many Opportunities**: A company can have multiple deals, but each opportunity belongs to one company
+* **1 社 → 複数の連絡先**:1 つの会社には複数の従業員が所属できますが、各連絡先は 1 つの会社に所属します
+* **1 社 → 複数の商談**:1 つの会社は複数の商談を持てますが、各商談は 1 つの会社に属します
-### Relations That Can Point to Multiple Object Types
+### 複数のオブジェクトタイプを指すことができるリレーション
-Some relations can connect to different types of objects. This works in two ways:
+一部のリレーションは、異なる種類のオブジェクトに接続できます。 これは 2 つのパターンで機能します:
-**Pattern 1: Many records linking to one record each from different object types**
+**パターン 1:異なるオブジェクトタイプからの多数のレコードが、それぞれ 1 件のレコードにリンクする場合**
-Several Notes, Tasks, or Activities can each be attached to multiple object types at once:
+複数のメモ、タスク、またはアクティビティは、それぞれ同時に複数のオブジェクトタイプに関連付けることができます:
-* **Notes** can be linked to one Person, one Company, and one Opportunity simultaneously
-* **Tasks** can be linked to one Person, one Company, and one Opportunity simultaneously
+* **メモ**は、連絡先 1 件、会社 1 社、商談 1 件に同時にリンクできます
+* **タスク**は、連絡先 1 件、会社 1 社、商談 1 件に同時にリンクできます
-Here, the Notes/Tasks are on the "many" side. Each links to one record per object type.
+ここでは、メモ/タスクが「多」の側です。 それぞれがオブジェクトタイプごとに 1 件のレコードへリンクします。
-**Pattern 2: One record receiving links from many records of different object types**
+**パターン 2:1 件のレコードが、異なるオブジェクトタイプの多数のレコードからリンクを受け取る場合**
-A Project can receive links from multiple records across different object types:
+プロジェクトは、異なるオブジェクトタイプにわたる複数のレコードからリンクを受け取ることができます:
-* **A Project** can have many People linked to it, many Companies linked to it, and many Notes attached to it
+* **プロジェクト**には、多数の連絡先がリンクされ、多数の会社がリンクされ、多数のメモが添付される可能性があります
-Here, the Project is on the "one" side. Multiple records from different objects can all link to the same Project.
+ここでは、プロジェクトが「1」の側です。 異なるオブジェクトの複数のレコードが、同じプロジェクトにすべてリンクできます。
- **Import/Export limitation**: Relations that point to multiple object types (like Notes → People/Companies/Opportunities) are **not yet supported** in CSV import or export.
+ **インポート/エクスポートの制限**:複数のオブジェクトタイプを指すリレーション(例:メモ → 連絡先/会社/商談)は、CSV のインポートやエクスポートでは**まだサポートされていません**。
- * **Import**: Only one-to-many relations pointing to a single object type on each side can be imported
- * **Export**: Columns for relations pointing to multiple object types are currently left empty
+ * **インポート**:各側が単一のオブジェクトタイプを指す一対多のリレーションのみインポートできます
+ * **エクスポート**:複数のオブジェクトタイプを指すリレーションの列は、現在空のままになります
- This is on our roadmap.
+ これはロードマップにあります。
-### What's Not Supported Today
+### 現在サポートされていないもの
-**Many to Many relations** are not yet available. For example, you cannot currently create a relation where:
+**多対多リレーション**はまだ利用できません。 たとえば、現在は次のようなリレーションを作成できません:
-* Many People are linked to many Projects
+* 多数の連絡先が多数のプロジェクトにリンクされる
-Many to Many relations are planned for H1 2026.
+多対多リレーションは 2026 年上半期に提供予定です。
-## Linking Records During Import
+## インポート時にレコードをリンクする
-**Reminder**: Only one-to-many relations pointing to a single object type can be imported (e.g., People → Companies). Relations pointing to multiple object types (e.g., Notes → People/Companies/Opportunities) are not yet supported.
+**リマインダー**:各側が単一のオブジェクトタイプを指す一対多のリレーションのみインポートできます(例:連絡先 → 会社)。 複数のオブジェクトタイプを指すリレーション(例:メモ → 連絡先/会社/商談)は、まだサポートされていません。
-### Step 1: Identify the "One" and "Many" Sides
+### ステップ 1: 「1」と「多」の側を特定する
-First, determine which object is on the "one" side and which is on the "many" side of the relationship.
+まず、どのオブジェクトがリレーションの「1」の側で、どのオブジェクトが「多」の側かを特定します。
-**Example**:
+**例**:
-* **Company** is the "one" side (one company has many employees)
-* **People** is the "many" side (each person belongs to one company)
+* **会社**が「1」の側(1 つの会社に多くの従業員がいる)
+* **連絡先**が「多」の側(各人は 1 つの会社に所属する)
-### Step 2: Ensure the "One" Side Records Exist
+### ステップ 2: 「1」の側のレコードが存在することを確認する
-Before importing the "many" side, the "one" side records must already exist in Twenty.
+「多」の側をインポートする前に、「1」の側のレコードが Twenty に既に存在している必要があります。
-* Import or create the "one" side records first (e.g., Companies)
-* Validate their unique identifier. This can be:
- * The `id` (Twenty's UUID)
- * A field set as unique (e.g., `domain` for Companies, or an external ID from your previous system)
+* まず「1」の側のレコード(例:会社)をインポートまたは作成します
+* それらの一意の識別子を検証します。 これは次のいずれかです:
+ * `id`(Twenty の UUID)
+ * 一意に設定されたフィールド(例:会社の `domain`、または以前のシステムの外部 ID)
-The import will fail if a reference is made to a record that does not exist.
+存在しないレコードを参照している場合、インポートは失敗します。
-### Step 3: Prepare Your CSV File
+### ステップ 3: CSV ファイルを準備する
-Add a column in your "many" side CSV file that references the "one" side record.
+「多」の側の CSV ファイルに、「1」の側のレコードを参照する列を追加します。
-**Example**: For a People CSV file linking to Companies:
+**例**:会社にリンクする連絡先の CSV ファイルの場合:
```
firstName,lastName,email,companyDomain
@@ -96,53 +96,53 @@ John,Smith,john@acme.com,https://acme.com
Jane,Doe,jane@widgets.co,https://widgets.co
```
-**Important**:
+**重要**:
-* The value must **exactly match** the unique field on the Company record
-* For domains, use the **Domain URL** (e.g., `https://acme.com`), not the Domain Label
-* Map only **one** unique identifier per relation: this leads to a smoother import
+* 値は会社レコード上の一意フィールドと**完全に一致**している必要があります
+* ドメインの場合は、ドメインラベルではなく、**ドメイン URL**(例:`https://acme.com`)を使用してください
+* リレーションごとに**1 つ**の一意の識別子のみをマッピングしてください。そうすることで、よりスムーズにインポートできます
-### Step 4: Ensure the Relation Field Exists
+### ステップ 4: リレーションフィールドが存在することを確認する
-Before uploading your file, make sure the relation field exists between your objects.
+ファイルをアップロードする前に、オブジェクト間にリレーションフィールドが存在することを確認してください。
-If it doesn't exist:
+存在しない場合は:
-1. Go to **Settings → Data Model**
-2. Select your object (e.g., People)
-3. Create a relation field pointing to the target object (e.g., Company)
+1. **設定 → データモデル** に移動
+2. オブジェクト(例:連絡先)を選択する
+3. 対象オブジェクト(例:会社)を指すリレーションフィールドを作成する
-### Step 5: Upload and Map the Relation
+### ステップ 5: リレーションをアップロードしてマッピングする
-1. Upload your CSV file via the import UI
-2. In the field mapping step, find your relation column (e.g., `companyDomain`)
-3. Map it to the relation field (e.g., Company)
-4. Twenty will automatically link each record to the matching parent
+1. インポート UI から CSV ファイルをアップロードする
+2. フィールドのマッピング手順で、リレーション列(例:`companyDomain`)を見つける
+3. それをリレーションフィールド(例:会社)にマッピングする
+4. Twenty が各レコードを一致する親に自動でリンクします。
-### Available Unique Fields for Relations
+### リレーションで利用可能な一意フィールド
-| Object | Unique Fields Available |
-| ------------------------------------- | --------------------------------------- |
-| **Companies** | `id`, `domain`, any custom unique field |
-| **People** | `id`, `email`, any custom unique field |
-| **Workspace Members** | `id`, `email` (not name) |
-| **Other standard and custom objects** | `id`, any field marked as unique |
+| オブジェクト | 利用可能な一意フィールド |
+| ----------------------------- | ---------------------------- |
+| **会社** | `id`、`domain`、任意のカスタム一意フィールド |
+| **連絡先** | `id`、`email`、任意のカスタム一意フィールド |
+| **ワークスペースメンバー** | `id`、`email`(名前ではありません) |
+| **その他の標準オブジェクトおよびカスタムオブジェクト** | `id`、一意としてマークされた任意のフィールド |
-**Linking to Workspace Members**: When the relation points to Workspace Members (your team logging into Twenty), reference them by their **email address**, not their name.
+**ワークスペースメンバーへのリンク**:リレーションの参照先がワークスペースメンバー(Twenty にログインするあなたのチーム)の場合、名前ではなく**メールアドレス**で参照してください。
-We recommend using `domain` for Companies and `email` for People, as these are human-readable and easy to maintain in spreadsheets.
+会社には `domain`、連絡先には `email` を使用することをおすすめします。これらは人間が読みやすく、スプレッドシートでの管理も容易です。
-**Reminder**: Soft-deleted records (visible under Command Menu → See deleted records) count toward uniqueness criteria. If you import a record with the same unique value as a deleted record, the deleted record will be restored. See [Uniqueness Constraints](/l/ja/user-guide/data-migration/capabilities/uniqueness-constraints) for more details.
+**リマインダー**:ソフト削除されたレコード(コマンドメニュー → 削除済みレコードを表示 で確認可能)は、一意性の判定に含まれます。 削除済みレコードと同じ一意の値を持つレコードをインポートすると、その削除済みレコードが復元されます。 詳細は[一意性制約](/l/ja/user-guide/data-migration/capabilities/uniqueness-constraints)を参照してください。
-## Import Order Rule
+## インポート順のルール
- **Always import the "one" side first!**
+ **必ず「1」の側を先にインポートしてください!**
- 1. **Companies** first (no dependencies)
- 2. **People** second (linked to Companies)
- 3. **Opportunities** third (linked to Companies/People)
- 4. **Custom objects** following their dependencies
+ 1. **会社**を最初に(依存関係なし)
+ 2. **連絡先**を次に(会社にリンク)
+ 3. **商談**を 3 番目に(会社/連絡先にリンク)
+ 4. **カスタムオブジェクト**は依存関係に従って
- The parent record must exist before you can reference it.
+ 参照する前に、親レコードが存在している必要があります。
diff --git a/packages/twenty-docs/l/ja/user-guide/data-migration/capabilities/uniqueness-constraints.mdx b/packages/twenty-docs/l/ja/user-guide/data-migration/capabilities/uniqueness-constraints.mdx
index 5f6d05701b..1eb5100fc2 100644
--- a/packages/twenty-docs/l/ja/user-guide/data-migration/capabilities/uniqueness-constraints.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/data-migration/capabilities/uniqueness-constraints.mdx
@@ -1,72 +1,72 @@
---
-title: Uniqueness Constraints
-description: How Twenty enforces data uniqueness during import.
+title: 一意性の制約
+description: Twenty によるインポート時のデータ一意性の確保方法。
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-## Overview
+## 概要
-Twenty enforces uniqueness on certain fields to prevent duplicate records and ensure data integrity. Understanding these constraints is essential for successful imports.
+Twenty は、重複レコードを防ぎデータの整合性を確保するため、特定のフィールドに一意性を強制します。 これらの制約を理解することは、インポートを成功させるうえで不可欠です。
-## Default Unique Fields
+## デフォルトの一意のフィールド
-| Object | Unique Fields |
-| ------------------ | ---------------------- |
-| **People** | `id`, `email` |
-| **Companies** | `id`, `domain` |
-| **Custom objects** | `id` only (by default) |
+| オブジェクト | 一意のフィールド |
+| -------------- | -------------- |
+| **連絡先** | `id`, `email` |
+| **会社** | `id`, `domain` |
+| **カスタムオブジェクト** | `id` のみ(デフォルト) |
-The `id` field is Twenty's internal identifier, auto-generated for each record. It uses UUID format (e.g., `c776ee49-f608-4a77-8cc8-6fe96ae1e43f`).
+`id` フィールドは Twenty の内部識別子で、各レコードに対して自動生成されます。 UUID 形式を使用します(例: `c776ee49-f608-4a77-8cc8-6fe96ae1e43f`)。
-## Custom Unique Fields
+## カスタムの一意フィールド
-You can define additional unique fields under **Settings → Data Model**:
+追加の一意フィールドは **設定 → データモデル** で定義できます:
-1. Go to **Settings → Data Model**
-2. Select the object
-3. Click on a field
-4. Enable **Unique** in field settings
+1. **設定 → データモデル** に移動します
+2. オブジェクトを選択する
+3. フィールドをクリックする
+4. フィールド設定で **Unique** を有効化する
-### Use Cases for Custom Unique Fields
+### カスタムの一意フィールドのユースケース
-* **External IDs**: Store IDs from other systems (Salesforce ID, HubSpot ID)
-* **Business identifiers**: Employee numbers, customer codes
-* **Alternative contact info**: LinkedIn profile, phone number
+* **外部 ID**: 他システムの ID を保存(Salesforce ID、HubSpot ID)
+* **ビジネス識別子**: 従業員番号、顧客コード
+* **代替連絡先情報**: LinkedIn プロフィール、電話番号
-The field name `id` is reserved for Twenty's internal ID. Use a different name like `externalId` or `legacyId` for external identifiers.
+フィールド名 `id` は Twenty の内部 ID 用に予約されています。 外部識別子には `externalId` や `legacyId` など別の名前を使用してください。
-## Import Behavior
+## インポート時の動作
-### Creating New Records
+### 新規レコードの作成
-If a unique field value doesn't exist, a new record is created.
+一意フィールドの値が存在しない場合は、新しいレコードが作成されます。
-### Updating Existing Records
+### 既存レコードの更新
-If a unique field value matches an existing record, that record is **updated** with the new data.
-To **update existing records**, it is recommended to **only match one unique field**.
+一意フィールドの値が既存レコードに一致する場合、そのレコードは新しいデータで**更新**されます。
+**既存レコードを更新**する場合は、**一意フィールドを 1 つのみに限定して照合**することを推奨します。
-### Soft-Deleted Records
+### ソフト削除済みレコード
- **Deleted records count toward uniqueness.**
+ **削除済みレコードは一意性の判定に含まれます。**
- Soft-deleted records (visible under Command Menu → See deleted records) are included in uniqueness checks. If you import a record with the same unique value as a deleted record, the deleted record will be **restored** with the new data.
+ ソフト削除されたレコード(コマンドメニュー → 削除済みレコードを表示 で表示可能)は、一意性チェックに含まれます。 削除済みレコードと同じ一意の値を持つレコードをインポートすると、その削除済みレコードが新しいデータで**復元**されます。
-## Duplicate Detection During Import
+## インポート時の重複検出
-During the validation phase:
+検証フェーズ中:
-* Duplicates within your file are highlighted in yellow
-* You can edit or remove duplicate rows from the UI before starting the import
+* ファイル内の重複は黄色でハイライト表示されます
+* インポートを開始する前に、UI から重複行を編集または削除できます
-
+
-## Best Practices
+## ベストプラクティス
-1. **Remove duplicates** from your file before importing
-2. **Check for existing records** in Twenty before importing
-3. **Use external IDs** when migrating from other systems
-4. **Include unique fields** if you want to update existing records
+1. インポート前にファイルから**重複を削除**してください
+2. インポート前に Twenty で**既存レコードを確認**してください
+3. 他のシステムから移行する場合は、**外部 ID を使用**してください
+4. 既存レコードを更新したい場合は、**一意フィールドを含め**てください
diff --git a/packages/twenty-docs/l/ja/user-guide/data-migration/how-tos/export-your-data.mdx b/packages/twenty-docs/l/ja/user-guide/data-migration/how-tos/export-your-data.mdx
index b980e32088..4e6f6593e3 100644
--- a/packages/twenty-docs/l/ja/user-guide/data-migration/how-tos/export-your-data.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/data-migration/how-tos/export-your-data.mdx
@@ -1,209 +1,209 @@
---
-title: Export Your Data
-description: Complete step-by-step guide to exporting data from Twenty.
+title: データをエクスポート
+description: Twenty からデータをエクスポートするための完全なステップバイステップガイド。
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-## Overview
+## 概要
-Export your workspace data to CSV for backups, reporting, or migration.
+バックアップ、レポート作成、または移行のために、ワークスペースのデータを CSV にエクスポートします。
-**Use cases:**
+**ユースケース:**
-* **Regular backups** — keep copies of your data
-* **External reporting** — analyze data in Excel, Google Sheets, or BI tools
-* **Migration** — move data to another system
-* **Bulk updates** — export, edit, and re-import to update records
+* **定期的なバックアップ** — データのコピーを保持
+* **外部レポーティング** — Excel、Google スプレッドシート、BI ツールでデータを分析
+* **移行** — データを別のシステムに移す
+* **一括更新** — エクスポートして編集し、再インポートしてレコードを更新
-## What You Need to Know
+## 知っておくべきこと
-### Export Limits
+### エクスポートの制限
-* **Maximum 20,000 records** per export
-* Only **visible columns** are exported
-* Only **filtered records** are exported (based on your current view)
+* 1 回のエクスポートにつき **最大 20,000 件のレコード**
+* **表示されている列**のみがエクスポートされます
+* **フィルターで絞り込まれたレコード**のみがエクスポートされます(現在のビューに基づきます)
-For larger exports (20,000+ records), use filters to export in batches or use the [API](/l/ja/developers/extend/capabilities/apis).
+大規模なエクスポート(20,000 件超)では、フィルターを使ってバッチに分けてエクスポートするか、[API](/l/ja/developers/extend/capabilities/apis) を使用してください。
-### Permissions
+### 権限
-You need the **"Export CSV"** permission to export data. Contact your workspace admin if you don't have this option.
+データをエクスポートするには **"Export CSV"** 権限が必要です。 このオプションがない場合は、ワークスペース管理者に連絡してください。
-## Step 1: Navigate to the Object
+## ステップ 1:対象オブジェクトに移動
-Go to the object you want to export:
+エクスポートしたいオブジェクトに移動します:
-* **People** — for contacts
-* **Companies** — for organizations
-* **Opportunities** — for deals
-* **Custom objects** — any object you've created
+* **People** — 連絡先
+* **Companies** — 組織
+* **Opportunities** — 商談
+* **カスタムオブジェクト** — 作成した任意のオブジェクト
-## Step 2: Configure Your View
+## ステップ 2:ビューを設定
-**Important:** The export includes only what's visible in your current view.
+**重要:** エクスポートには現在のビューで表示されているもののみが含まれます。
-### Add/Remove Columns
+### 列の追加/削除
-1. Click **Options → Fields** (or the **+** at the end of columns)
-2. Check the fields you want to export
-3. Uncheck fields you don't need
+1. **Options → Fields** をクリックします(または列の末尾の **+** をクリックします)
+2. エクスポートしたいフィールドにチェックを入れる
+3. 不要なフィールドのチェックを外す
-### Filter Records (Optional)
+### レコードをフィルター(任意)
-If you only need a subset of data:
+データの一部だけが必要な場合:
-1. Click **Filter**
-2. Add filter conditions (e.g., "Created date > January 1, 2024")
-3. Only matching records will be exported
+1. **Filter** をクリックします
+2. フィルター条件を追加します(例:"Created date > January 1, 2024")
+3. 条件に一致するレコードのみがエクスポートされます
-### Sort Records (Optional)
+### レコードを並べ替え(任意)
-1. Click a column header to sort
-2. The export will follow your sort order
+1. 列ヘッダーをクリックして並べ替えます
+2. エクスポートは並べ替え順に従います
-**Create a dedicated export view.** Save a view specifically configured for exports so you don't need to reconfigure each time.
+**エクスポート専用のビューを作成しましょう。** エクスポート用に設定したビューを保存しておくと、毎回再設定する必要がありません。
-## Step 3: Export the Data
+## ステップ 3:データをエクスポート
-1. Click the **⋮** icon on the top right of the table
-2. Select **Export view**
-3. Choose where to save the CSV file
-4. Wait for the download to complete
+1. テーブル右上の **⋮** アイコンをクリックします
+2. **Export view** を選択します
+3. CSV ファイルの保存場所を選択します
+4. ダウンロードの完了を待ちます
-## What Gets Exported
+## エクスポートされる内容
-| Included | Not Included |
-| -------------------------------- | ---------------------- |
-| All visible columns | Hidden columns |
-| Records matching current filters | Filtered-out records |
-| Custom field values | Fields not in the view |
-| Record IDs | File attachments |
-| Relation IDs | Images |
+| 含まれるもの | 含まれないもの |
+| ----------------- | ---------------- |
+| 表示されているすべての列 | 非表示の列 |
+| 現在のフィルターに一致するレコード | フィルターで除外されたレコード |
+| カスタムフィールドの値 | ビューに含まれていないフィールド |
+| レコード ID | 添付ファイル |
+| リレーション ID | 画像 |
-### Relation Fields
+### リレーションフィールド
-Relation IDs are only exported on the **"many" side** of a relationship:
+リレーション ID はリレーションシップの **"many" 側** でのみエクスポートされます:
-* **People export** includes a `companyId` column (People → Company relation)
-* **Companies export** does NOT include `peopleIds` (Companies is the "one" side)
+* **People のエクスポート** には `companyId` 列が含まれます(People → Company のリレーション)
+* **Companies のエクスポート** には `peopleIds` は含まれません(Companies は "one" 側です)
-This means you can use the People export to re-import and maintain the Company link, but you'll need to re-import People after Companies to recreate the relationships.
+つまり、People のエクスポートを使用して再インポートすれば Company とのリンクを維持できますが、関係を再作成するには Companies の後に People を再インポートする必要があります。
-## Exporting for Specific Purposes
+## 目的別のエクスポート
-### For Backups
+### バックアップの場合
-1. Create a view with **all fields** visible
-2. Remove all filters to include all records
-3. Export each object type separately
-4. Store exports in a secure location
-5. Set a recurring reminder (weekly/monthly)
+1. **すべてのフィールド** を表示したビューを作成
+2. すべてのフィルターを解除して全レコードを含める
+3. 各オブジェクトタイプを個別にエクスポート
+4. エクスポートファイルを安全な場所に保管
+5. 定期的なリマインダーを設定(毎週/毎月)
-### For External Reporting
+### 外部レポーティングの場合
-1. Include only the fields you need for analysis
-2. Apply filters to focus on relevant data
-3. Consider sorting by the field you'll analyze
+1. 分析に必要なフィールドのみを含める
+2. フィルターを適用して関連データに絞り込む
+3. 分析対象のフィールドで並べ替えることを検討
-### For Bulk Updates
+### 一括更新の場合
-1. Export the records you want to update
-2. Include the unique identifier (`email`, `domain`, or `id`)
-3. Edit the exported file
-4. Re-import to update records
- See: [How to Update Existing Records](/l/ja/user-guide/data-migration/how-tos/update-existing-records-via-import)
+1. 更新したいレコードをエクスポート
+2. 一意の識別子(`email`、`domain`、または `id`)を含める
+3. エクスポートしたファイルを編集
+4. 再インポートしてレコードを更新します
+ 参照:[既存レコードを更新する方法](/l/ja/user-guide/data-migration/how-tos/update-existing-records-via-import)
-### For Migration
+### マイグレーションの場合
-If you're exporting to migrate to another system:
+別のシステムへマイグレーションするためにエクスポートする場合:
-1. **Export each object separately** — People, Companies, Opportunities, etc.
-2. **Include ID fields** — these help maintain relationships
-3. **Document field mappings** — note how Twenty fields map to your target system
+1. **各オブジェクトを個別にエクスポート** — People、Companies、Opportunities など
+2. **ID フィールドを含める** — 関係の維持に役立ちます
+3. **フィールドのマッピングを文書化** — Twenty のフィールドが対象システムにどのように対応するかを記録
-## Handling Large Datasets (20,000+ Records)
+## 大規模データセットの扱い(20,000 件超)
-The export limit is 20,000 records. For larger datasets:
+エクスポートの上限は 20,000 件です。 より大きなデータセットの場合:
-### Option 1: Export in Batches
+### オプション 1:バッチでエクスポート
-1. Add a filter (e.g., "Created date" ranges)
-2. Export the first batch
-3. Change the filter
-4. Export the next batch
-5. Combine files in your spreadsheet
+1. フィルターを追加(例:"Created date" の範囲)
+2. 最初のバッチをエクスポート
+3. フィルターを変更
+4. 次のバッチをエクスポート
+5. スプレッドシートでファイルを結合
-**Example filters for batching:**
+**バッチ分割の例となるフィルター:**
-* By date range (January, February, March...)
-* By owner (Team member A, Team member B...)
-* By status (Active, Inactive...)
+* 日付範囲別(1月、2月、3月...)
+* 担当者別(チームメンバー A、チームメンバー B...)
+* ステータス別(Active、Inactive...)
-### Option 2: Use the API
+### オプション 2:API を使用
-The API has no record limit:
+API にはレコード数の上限がありません:
-1. Get your API key from **Settings → Developers**
-2. Use the GraphQL API to query records
-3. Process results in your application
+1. **Settings → Developers** から API キーを取得
+2. GraphQL API を使用してレコードをクエリします
+3. アプリケーションで結果を処理
-See: [API Documentation](/l/ja/developers/extend/capabilities/apis)
+参照:[API ドキュメント](/l/ja/developers/extend/capabilities/apis)
-## Tips and Best Practices
+## ヒントとベストプラクティス
-### Create Export Views
+### エクスポート用ビューを作成
-Save views configured specifically for exports:
+エクスポート用に設定したビューを保存します:
-1. Configure columns and filters
-2. Click **View options** → **Save as new view**
-3. Name it "Export - [Purpose]"
+1. 列とフィルターを設定
+2. **View options** → **Save as new view** をクリック
+3. 名前を "Export - [Purpose]" にします
-### Secure Your Exports
+### エクスポートを安全に管理
-Exported files may contain sensitive data:
+エクスポートされたファイルには機密データが含まれる場合があります:
-* Store in secure locations
-* Delete old exports when no longer needed
-* Be careful sharing export files
+* 安全な場所に保管する
+* 不要になった古いエクスポートを削除する
+* エクスポートファイルの共有に注意する
-### Check Before Exporting
+### エクスポート前の確認
-Correct columns are visible
-Filters are set correctly (or removed for full export)
-You have Export permission
+正しい列が表示されている
+フィルターが正しく設定されている(または全件エクスポートのために解除済み)
+エクスポート権限がある
## FAQ
-
- Only visible columns are exported. Add the columns you need via **Options → Fields** before exporting.
+
+ 表示されている列のみがエクスポートされます。 エクスポート前に **Options → Fields** から必要な列を追加してください。
-
- Check your filters. The export only includes records matching your current view filters. Remove filters to export all records.
+
+ フィルターを確認してください。 エクスポートには、現在のビューのフィルターに一致するレコードのみが含まれます。 すべてのレコードをエクスポートするにはフィルターを解除してください。
-
- Not in a single export. Use filters to export in batches, or use the API for larger datasets.
+
+ 1 回のエクスポートではできません。 フィルターを使ってバッチに分けてエクスポートするか、より大きなデータセットには API を使用してください。
-
- CSV (Comma Separated Values). Opens in Excel, Google Sheets, or any spreadsheet application.
+
+ CSV(カンマ区切り形式)です。 Excel、Google スプレッドシート、その他のスプレッドシートアプリで開けます。
-
- Yes, but only on the "many" side of relationships. For example, a People export includes `companyId`, but a Companies export does not include people IDs.
+
+ はい。ただし、リレーションシップの "many" 側のみです。 たとえば、People のエクスポートには `companyId` が含まれますが、Companies のエクスポートには People の ID は含まれません。
-
- Not directly through the UI. Use the API to build automated export workflows.
+
+ UI から直接はできません。 API を使用して自動エクスポートのワークフローを構築してください。
-## Next Steps
+## 次のステップ
-* [How to Update Existing Records](/l/ja/user-guide/data-migration/how-tos/update-existing-records-via-import) — edit and re-import your export
-* [How to Import Data via API](/l/ja/user-guide/data-migration/how-tos/import-data-via-api) — for large datasets
-* [API Documentation](/l/ja/developers/extend/capabilities/apis) — build custom export workflows
+* [既存レコードを更新する方法](/l/ja/user-guide/data-migration/how-tos/update-existing-records-via-import) — エクスポートを編集して再インポート
+* [API でデータをインポートする方法](/l/ja/user-guide/data-migration/how-tos/import-data-via-api) — 大規模データセット向け
+* [API ドキュメント](/l/ja/developers/extend/capabilities/apis) — カスタムのエクスポートワークフローを構築
diff --git a/packages/twenty-docs/l/ja/user-guide/data-migration/how-tos/fix-import-errors.mdx b/packages/twenty-docs/l/ja/user-guide/data-migration/how-tos/fix-import-errors.mdx
index 50698ef1cc..bd2f5bdc6a 100644
--- a/packages/twenty-docs/l/ja/user-guide/data-migration/how-tos/fix-import-errors.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/data-migration/how-tos/fix-import-errors.mdx
@@ -1,122 +1,122 @@
---
-title: Fix Import Errors
-description: Complete troubleshooting guide for resolving CSV import errors.
+title: インポートエラーの修正
+description: CSV のインポートエラーを解決するための包括的なトラブルシューティングガイド。
---
-## Overview
+## 概要
-Import not working? This guide helps you identify and fix common import errors step by step.
+インポートがうまくいきませんか? このガイドでは、一般的なインポートエラーを段階的に特定して修正する方法を説明します。
-## How Import Validation Works
+## インポート検証の仕組み
-After uploading your file and mapping columns, Twenty validates your data:
+ファイルをアップロードして列をマッピングすると、Twenty がデータを検証します。
-1. **Validation runs** — Twenty checks each row for errors
-2. **Errors are highlighted** — problematic rows appear in **yellow**
-3. **You can fix in-place** — edit cells directly in the import UI
-4. **Or remove rows** — skip problematic records entirely
+1. **検証の実行** — Twenty が各行にエラーがないか確認します
+2. **エラーをハイライト** — 問題のある行は**黄色**で表示されます
+3. **その場で修正可能** — インポート UI でセルを直接編集できます
+4. **行を削除** — 問題のあるレコードをまるごとスキップします
-**Fix errors in the UI.** You don't need to go back to your spreadsheet. Edit cells directly during import to save time.
+**エラーは UI で修正できます。** スプレッドシートに戻る必要はありません。 インポート中にセルを直接編集して時間を節約しましょう。
-## Step-by-Step Troubleshooting
+## ステップごとのトラブルシューティング
-### Step 1: Identify the Error Type
+### ステップ 1: エラーの種類を特定する
-Click on a highlighted row to see the specific error message. Common error types:
+ハイライトされた行をクリックすると、具体的なエラーメッセージを確認できます。 よくあるエラーの種類:
-| Error Message | What It Means |
-| --------------------------------------------------------------------- | ------------------------------------------------------------ |
-| Duplicate values highlighted in yellow | Value already exists in Twenty or appears twice in your file |
-| `{field} is not a valid {type}` (hover on yellow cell) | Data doesn't match expected format |
-| Required field highlighted | A required field is empty |
-| `Can't connect to {object}. No unique record found...` (import fails) | Referenced record doesn't exist |
-| `Too many records. Up to 10000 allowed` (upload blocked) | File has more than 10,000 records |
+| エラーメッセージ | 意味 |
+| ------------------------------------------------------------------- | -------------------------------------- |
+| 重複する値が黄色でハイライト | その値は Twenty に既に存在するか、ファイル内で 2 回出現しています |
+| `{field} is not a valid {type}`(黄色のセルにカーソルを合わせる) | データが想定される形式と一致していません |
+| 必須フィールドがハイライト表示 | 必須フィールドが空です |
+| `Can't connect to {object}. No unique record found...`(インポートは失敗します) | 参照されているレコードが存在しません |
+| `Too many records. Up to 10000 allowed`(アップロードがブロックされます) | ファイルのレコード数が 10,000 を超えています |
-### Step 2: Fix the Error
+### ステップ 2: エラーを修正する
-Follow the specific instructions below for each error type.
+各エラータイプに応じて、以下の手順に従ってください。
---
-## Error: Duplicate Value
+## エラー:重複する値
-### What You'll See
+### あなたが見るもの
-Rows with duplicate values are **highlighted in yellow** in the import UI before the import starts.
+インポート開始前に、重複する値がある行はインポート UI で**黄色でハイライト表示**されます。
-### What It Means
+### 意味
-A unique field (email, domain) either:
+一意のフィールド(email、domain)が次のいずれかに該当しています:
-* Already exists in Twenty
-* Appears twice in your file
+* Twenty に既に存在する
+* ファイル内で 2 回出現している
-### How to Fix
+### 解決方法
-**Option 1: Edit the duplicate value**
+**オプション 1:重複している値を編集**
-1. Click the cell with the error
-2. Change to a unique value
-3. Continue with import
+1. エラーのあるセルをクリック
+2. 一意の値に変更
+3. インポートを続行
-**Option 2: Remove the duplicate row**
+**オプション 2:重複行を削除**
-1. Click the X next to the row
-2. The row will be skipped during import
+1. 行の横にある X をクリック
+2. その行はインポート時にスキップされます
-**Option 3: Let Twenty update the existing record**
+**オプション 3:Twenty に既存レコードの更新を任せる**
-1. Ensure your file includes a unique identifier (`email`, `domain`, or `id`)
-2. Map the unique identifier field
-3. Twenty will update the existing record instead of creating a duplicate
+1. ファイルに一意の識別子(`email`、`domain`、または `id`)が含まれていることを確認する
+2. 一意の識別子フィールドをマッピングする
+3. Twenty は重複を作成せず、既存のレコードを更新します
- **You can update unique fields too.**
+ 一意のフィールドも更新できます。
- * If you keep the `id` but change the `email` → the email will be updated
- * If you keep the `email` but change the `id` → the id will be updated
+ * `id` を保持して `email` を変更すると → メールアドレスが更新されます
+ * `email` を保持して `id` を変更すると → ID が更新されます
- As long as one unique identifier matches, Twenty updates the record.
+ いずれか 1 つの一意の識別子が一致していれば、Twenty がレコードを更新します。
-### How to Prevent This Error
+### このエラーの防止策
-Before importing:
+インポート前:
-1. Sort your spreadsheet by the unique field
-2. Remove duplicate rows
-3. Check if records already exist in Twenty
+1. スプレッドシートを一意のフィールドで並べ替える
+2. 重複行を削除する
+3. レコードが Twenty に既に存在するか確認する
- **Soft-deleted records count toward uniqueness.**
+ **論理削除されたレコードも一意性の判定に含まれます。**
- Check Command Menu → See deleted records. Records there still enforce uniqueness. Permanently delete them or restore and update.
+ コマンドメニューを確認 → 削除済みレコードを表示。 そこにあるレコードにも一意性制約が適用されます。 完全に削除するか、復元して更新します。
-For more details: [Uniqueness Constraints](/l/ja/user-guide/data-migration/capabilities/uniqueness-constraints)
+詳細はこちら: [一意性制約](/l/ja/user-guide/data-migration/capabilities/uniqueness-constraints)
---
-## Error: Invalid Format
+## エラー:無効な形式
-### What You'll See
+### あなたが見るもの
-The cell value is highlighted in yellow. Hover over it to see the error message:
+セルの値が黄色でハイライト表示されます。 カーソルを合わせるとエラーメッセージが表示されます:
```
-{field name} is not a valid {field type}
+{field name} は有効な {field type} ではありません
```
-### What It Means
+### 意味
-The data doesn't match the expected format for that field type.
+データがそのフィールドタイプの想定形式と一致していません。
-### How to Fix — By Field Type
+### 解決方法 — フィールドタイプ別
-#### Email
+#### メール
-**Problem:** Invalid email format
-**Solution:** Use format `name@domain.com`
+**問題:** 無効なメール形式
+**解決策:** `name@domain.com` 形式を使用する
```
❌ john.smith@
@@ -124,23 +124,23 @@ The data doesn't match the expected format for that field type.
✓ john.smith@acme.com
```
-#### Domain
+#### ドメイン
-**Problem:** Inconsistent format may cause duplicates
-**Solution:** Use `https://domain.com` format (recommended)
+**問題:** 形式の不一致は重複の原因になります
+**解決策:** `https://domain.com` 形式を使用(推奨)
```
-⚠️ acme.com (valid, but not recommended)
-⚠️ www.acme.com (valid, but not recommended)
-✅ https://acme.com (recommended)
+⚠️ acme.com (有効だが非推奨)
+⚠️ www.acme.com (有効だが非推奨)
+✅ https://acme.com (推奨)
```
-All formats are valid, but `https://domain.com` is recommended because it matches the format used by email/calendar sync. Using other formats may create duplicate companies.
+すべての形式は有効ですが、メール/カレンダー同期で使用される形式と一致するため、`https://domain.com` を推奨します。 他の形式を使用すると、会社が重複して作成される場合があります。
-#### Date
+#### 日付
-**Problem:** Unrecognized date format
-**Solution:** Use consistent format throughout file
+**問題:** 認識できない日付形式
+**解決策:** ファイル全体で形式を統一する
```
✓ 2024-03-15 (YYYY-MM-DD - recommended)
@@ -148,21 +148,21 @@ The data doesn't match the expected format for that field type.
✓ 15/03/2024 (DD/MM/YYYY)
```
-#### Phone
+#### 電話
-**Problem:** Missing required columns
-**Solution:** Include all phone columns
+**問題:** 必須列が不足
+**解決策:** すべての電話関連の列を含める
-| Column | Example |
+| 列 | 例 |
| --------------------------------------- | ------------ |
| **Phones / Primary Phone Number** | `4159095555` |
| **Phones / Primary Phone Country Code** | `US` |
| **Phones / Primary Phone Calling Code** | `+1` |
-#### Boolean
+#### ブール型
-**Problem:** Wrong boolean value
-**Solution:** Use uppercase `TRUE` or `FALSE`
+**問題:** 不正なブール値
+**解決策:** 大文字の `TRUE` または `FALSE` を使用する
```
❌ true
@@ -172,37 +172,37 @@ The data doesn't match the expected format for that field type.
✓ FALSE
```
-#### Select / Multi-Select
+#### セレクト/マルチセレクト
-**Problem:** Value doesn't match existing options
-**Solution:** Use **API names**, not display labels
+**問題:** 値が既存のオプションと一致しない
+**解決策:** 表示ラベルではなく、**API 名**を使用する
-How to find API names:
+API 名の確認方法:
-1. Go to **Settings → Data Model**
-2. Select the object and field
-3. Enable **Advanced mode** (toggle at bottom right)
-4. Use the API name (e.g., `OPTION_1`, not "Option 1")
+1. **設定 → データモデル** に移動する
+2. オブジェクトとフィールドを選択する
+3. **詳細モード** を有効にする(右下のトグル)
+4. API 名を使用する(例:`OPTION_1`。"Option 1" ではありません)
```
❌ High Priority
✓ HIGH_PRIORITY
```
-#### Currency
+#### 通貨
-**Problem:** Missing amount or currency code
-**Solution:** Fill both columns
+**問題:** 金額または通貨コードが欠落
+**解決策:** 両方の列を入力する
-| Column | Example |
+| 列 | 例 |
| --------------------- | --------- |
| **Amount / Amount** | `1234.56` |
| **Amount / Currency** | `USD` |
-#### Number
+#### 数
-**Problem:** Non-numeric characters
-**Solution:** Numbers only, period for decimals
+**問題:** 数値以外の文字を含む
+**解決策:** 数字のみを使用し、小数はピリオドを使用する
```
❌ $1,234.56
@@ -210,221 +210,221 @@ How to find API names:
✓ 1234.56
```
-For complete format reference: [Field Mapping](/l/ja/user-guide/data-migration/capabilities/field-mapping)
+完全な形式のリファレンス: [フィールドマッピング](/l/ja/user-guide/data-migration/capabilities/field-mapping)
---
-## Error: Required Field Missing
+## エラー:必須フィールドが未入力
-### What You'll See
+### あなたが見るもの
-The row is highlighted in yellow with the required field cell marked.
+必須フィールドのセルがマークされ、その行が黄色でハイライト表示されます。
-### What It Means
+### 意味
-A required field is empty for this row.
+この行で必須フィールドが未入力です。
-### How to Fix
+### 解決方法
-**Option 1: Enter a value**
+**オプション 1:値を入力**
-1. Click the empty cell
-2. Enter a value
-3. Continue with import
+1. 空のセルをクリック
+2. 値を入力する
+3. インポートを続行
-**Option 2: Remove the row**
+**オプション 2:行を削除**
-1. If you don't have the data, click X to skip the row
+1. データがない場合は、X をクリックしてその行をスキップ
-### How to Prevent This Error
+### このエラーの防止策
-Before importing, identify required fields:
+インポート前に、必須フィールドを確認してください:
-1. Go to **Settings → Data Model**
-2. Select your object
-3. Check which fields are marked as required
+1. **設定 → データモデル** に移動する
+2. 対象のオブジェクトを選択する
+3. どのフィールドが必須としてマークされているか確認する
---
-## Error: Relation Not Found
+## エラー:リレーションが見つかりません
-### What You'll See
+### あなたが見るもの
-This error appears **after the import starts** — the import fails with a message like:
+このエラーは**インポート開始後**に発生します — 次のようなメッセージとともにインポートが失敗します:
```
Can't connect to company. No unique record found with condition: id = 7776ee49-f608-4a77-8cc8-6fe96ae1e43f
```
-This means there is no Company in Twenty with that specific identifier.
+これは、その特定の識別子を持つ会社が Twenty に存在しないことを意味します。
-Unlike other errors, this one is not caught during the data review step. The import will start and then fail when it encounters the missing relation.
+他のエラーと異なり、このエラーはデータレビューの段階では検出されません。 インポートは開始されますが、欠落しているリレーションに遭遇すると失敗します。
-### What It Means
+### 意味
-You're trying to link to a record that doesn't exist in Twenty.
+Twenty に存在しないレコードへリンクしようとしています。
-### How to Fix
+### 解決方法
-**Option 1: Import parent records first**
+**オプション 1:まず親レコードをインポート**
-1. Cancel the current import
-2. Import the parent records (e.g., Companies)
-3. Then import the child records (e.g., People)
+1. 現在のインポートをキャンセル
+2. 親レコード(例:会社)をインポート
+3. その後、子レコード(例:連絡先)をインポート
-**Option 2: Fix the reference value**
+**オプション 2:参照値を修正**
-1. Check the reference value in your file
-2. Ensure it exactly matches an existing record
-3. Verify format: domains should be `https://domain.com`
+1. ファイル内の参照値を確認
+2. 既存のレコードと完全一致していることを確認
+3. 形式を確認:ドメインは `https://domain.com` にする
-**Option 3: Remove the relation**
+**オプション 3:リレーションを削除**
-1. Clear the cell to import without the relation
-2. Add the relation manually later
+1. セルを空にして、リレーションなしでインポート
+2. 後で手動でリレーションを追加
-### How to Prevent This Error
+### このエラーの防止策
-1. **Import in the correct order:**
- * Companies first
- * People second (with company references)
- * Opportunities third
+1. **正しい順序でインポートする:**
+ * まず会社
+ * 次に連絡先(会社の参照付き)
+ * 最後に商談
-2. **Verify reference values:**
- * Export parent records to get exact identifiers
- * Use domain format `https://domain.com`
- * Check for typos and case sensitivity
+2. **参照値を検証する:**
+ * 親レコードをエクスポートして正確な識別子を取得
+ * ドメイン形式は `https://domain.com` を使用
+ * 入力ミスや大文字・小文字の相違を確認
- **Import will fail if a reference is made to a non-existent record.**
+ **存在しないレコードを参照している場合、インポートは失敗します。**
- Always import parent objects before child objects.
+ 必ず子オブジェクトの前に親オブジェクトをインポートしてください。
-For more details: [Import Relations](/l/ja/user-guide/data-migration/capabilities/import-relations)
+詳細はこちら: [リレーションのインポート](/l/ja/user-guide/data-migration/capabilities/import-relations)
---
-## Error: File Too Large
+## エラー:ファイルが大きすぎます
-### What You'll See
+### あなたが見るもの
-This error appears **when uploading your file** — the upload is blocked entirely:
+このエラーは**ファイルのアップロード時**に表示され、アップロードは完全にブロックされます:
```
Too many records. Up to 10000 allowed
```
-You won't be able to proceed to the data review step until you reduce the file size.
+ファイルサイズを減らすまで、データレビューの段階に進むことはできません。
-### What It Means
+### 意味
-Your file has more than 10,000 records.
+ファイルのレコード数が 10,000 を超えています。
-### How to Fix
+### 解決方法
-**Option 1: Split into multiple files**
+**オプション 1:複数のファイルに分割**
-1. Divide your data into files of 10,000 records or fewer
-2. Import each file separately
-3. Maintain import order (Companies before People)
+1. データを 10,000 レコード以下のファイルに分割する
+2. 各ファイルを個別にインポートする
+3. インポートの順序を維持する(連絡先の前に会社)
-**Option 2: Use API import**
-For very large datasets, use the API which has no record limit.
-See: [How to Import Data via API](/l/ja/user-guide/data-migration/how-tos/import-data-via-api)
+**オプション 2:API インポートを使用**
+非常に大きなデータセットには、レコード数の制限がない API を使用してください。
+参照:[API でデータをインポートする方法](/l/ja/user-guide/data-migration/how-tos/import-data-via-api)
---
-## Error: Field Not Recognized
+## エラー:フィールドが認識されません
-### What It Means
+### 意味
-A column in your file can't be mapped because the field doesn't exist in Twenty.
+ファイル内の列をマッピングできません。該当フィールドが Twenty に存在しないためです。
-### How to Fix
+### 解決方法
-1. Go to **Settings → Data Model**
-2. Select the object you're importing
-3. Click **+ Add field**
-4. Create the custom field with the appropriate type
-5. Re-upload your file
+1. **設定 → データモデル** に移動する
+2. インポート対象のオブジェクトを選択する
+3. **+ Add field** をクリック
+4. 適切なタイプでカスタムフィールドを作成する
+5. ファイルを再アップロードする
-The CSV import creates records, not fields. All fields must exist before importing.
+CSV インポートで作成されるのはレコードであり、フィールドではありません。 すべてのフィールドは、インポート前に存在している必要があります。
---
-## Error: User Relation Empty
+## エラー:ユーザーのリレーションが空
-### What It Means
+### 意味
-You're trying to assign a record to a user (Owner, Assignee) but the relation isn't being mapped.
+レコードをユーザー(所有者、担当者)に割り当てようとしていますが、そのリレーションがマッピングされていません。
-### Common Causes
+### よくある原因
-1. **User hasn't accepted their invitation** — the user doesn't exist in Twenty yet
-2. **Using user ID from old system** — Twenty can't match IDs from another system
-3. **Wrong email format** — the email doesn't match the user's Twenty account
+1. **ユーザーが招待を受諾していない** — そのユーザーはまだ Twenty に存在していません
+2. **旧システムのユーザー ID を使用している** — Twenty は他システムの ID を照合できません
+3. **メール形式が不正** — 入力されたメールがユーザーの Twenty アカウントと一致していません
-### How to Fix
+### 解決方法
-1. Ensure all users have **accepted their invitation** to your Twenty workspace
-2. Use the user's **email address** (not their name or old system ID)
-3. Use the same email they used to join Twenty
+1. すべてのユーザーが Twenty ワークスペースへの**招待を受諾**していることを確認する
+2. ユーザーの**メールアドレス**を使用する(名前や旧システムの ID ではなく)
+3. Twenty に参加した際と同じメールアドレスを使用する
- **Users must accept invitations before importing.**
+ **インポート前に、ユーザーは招待を受諾している必要があります。**
- If a user hasn't accepted their invitation, records referencing them will have empty user relations.
+ ユーザーが招待を受諾していない場合、そのユーザーを参照するレコードのユーザーリレーションは空になります。
---
-## Pre-Import Checklist
+## インポート前チェックリスト
-Avoid errors by checking these before importing:
+インポート前に次を確認し、エラーを回避してください:
-### File Requirements
+### ファイル要件
-File is CSV, XLSX, or XLS format
-File has fewer than 10,000 records
-File uses UTF-8 encoding
+ファイル形式が CSV、XLSX、または XLS
+レコード数が 10,000 未満
+UTF-8 エンコードを使用
-### Data Quality
+### データ品質
-No duplicate emails (for People)
-No duplicate domains (for Companies)
-All dates use consistent format
-All domains use `https://domain.com` format
+メールの重複なし(連絡先)
+ドメインの重複なし(会社)
+すべての日付が一貫した形式
+すべてのドメインが `https://domain.com` 形式
-### Field Formats
+### フィールドの形式
-Boolean fields use `TRUE` or `FALSE` (uppercase)
-Select fields use API names, not display labels
-Phone fields have all required columns
-Currency fields have both Amount and Currency Code
+ブール型フィールドは `TRUE` または `FALSE`(大文字)を使用
+セレクト型フィールドは表示ラベルではなく API 名を使用
+電話フィールドに必要な列がすべて揃っている
+通貨フィールドに金額と通貨コードの両方がある
-### Relations
+### 関連
-Parent records imported before child records
-Relation columns reference existing records
-Domain format matches Twenty's format exactly
+親レコードを子レコードより先にインポート
+リレーション列が既存レコードを参照している
+ドメイン形式が Twenty の形式と完全一致
-### Data Model
+### データモデル
-All custom fields exist in Settings → Data Model
-Select options exist before importing
+すべてのカスタムフィールドが 設定 → データモデル に存在
+インポート前にセレクトの選択肢が作成済み
---
-## Still Having Issues?
+## まだ問題がありますか?
-If you've tried the above solutions:
+上記の解決策を試しても解決しない場合:
-1. **Download the sample file** — see the exact format Twenty expects
-2. **Export existing records** — compare your file to working data
-3. **Test with a small batch** — try 5-10 rows first
-4. **Check the reference articles:**
- * [Field Mapping](/l/ja/user-guide/data-migration/capabilities/field-mapping)
- * [Uniqueness Constraints](/l/ja/user-guide/data-migration/capabilities/uniqueness-constraints)
- * [Import Relations](/l/ja/user-guide/data-migration/capabilities/import-relations)
- * [Error Handling](/l/ja/user-guide/data-migration/capabilities/error-handling)
+1. **サンプルファイルをダウンロード** — Twenty が想定する正確な形式を確認
+2. **既存レコードをエクスポート** — ファイルを動作しているデータと比較
+3. **少量でテスト** — まず 5〜10 行で試す
+4. **参考記事を確認:**
+ * [フィールドマッピング](/l/ja/user-guide/data-migration/capabilities/field-mapping)
+ * [一意性制約](/l/ja/user-guide/data-migration/capabilities/uniqueness-constraints)
+ * [リレーションのインポート](/l/ja/user-guide/data-migration/capabilities/import-relations)
+ * [エラー処理](/l/ja/user-guide/data-migration/capabilities/error-handling)
diff --git a/packages/twenty-docs/l/ja/user-guide/data-migration/how-tos/import-companies-via-csv.mdx b/packages/twenty-docs/l/ja/user-guide/data-migration/how-tos/import-companies-via-csv.mdx
index d330adf1e4..ebb3e302e3 100644
--- a/packages/twenty-docs/l/ja/user-guide/data-migration/how-tos/import-companies-via-csv.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/data-migration/how-tos/import-companies-via-csv.mdx
@@ -1,71 +1,71 @@
---
-title: Import Companies via CSV
-description: Complete step-by-step guide to importing companies into Twenty.
+title: CSV ファイルで会社をインポートする
+description: Twenty に会社をインポートするための完全なステップバイステップガイド。
---
-## Overview
+## 概要
-This guide walks you through importing your companies into Twenty. **Companies should be imported first** because People and Opportunities link to Companies.
+このガイドでは、会社を Twenty にインポートする手順を説明します。 **まず Companies をインポートしてください**。People と Opportunities は Companies にリンクします。
-## Before You Start
+## 始める前に
-### Prerequisites Checklist
+### 事前準備チェックリスト
- Your file is CSV, XLSX, or XLS format
+ ファイル形式が CSV、XLSX、または XLS である
- File has fewer than 10,000 records
+ ファイルのレコード数が 10,000 未満
- No duplicate domains in your file
+ ファイル内に重複するドメインがない
- All custom fields exist in **Settings → Data Model**
+ すべてのカスタムフィールドが **Settings → Data Model** に存在する
- Need to import more than 10,000 companies? Split into multiple files or use the [API import](/l/ja/user-guide/data-migration/how-tos/import-data-via-api).
+ 10,000 社を超えてインポートする必要がありますか? 複数のファイルに分割するか、[API インポート](/l/ja/user-guide/data-migration/how-tos/import-data-via-api) を使用します。
-## Step 1: Prepare Your Company Data
+## ステップ 1: 会社データを準備する
-### Required and Recommended Fields
+### 必須および推奨フィールド
-| Field | Required? | Format | Notes |
-| ----------------- | ----------- | -------------------- | ------------------------ |
-| **Name** | Recommended | Text | Company display name |
-| **Domain** | Recommended | `https://domain.com` | Unique identifier |
-| **Address** | Optional | Multiple columns | See below |
-| **Employees** | Optional | Number | Employee count |
-| **Custom fields** | Optional | Varies | Must exist in Data Model |
+| フィールド | 必須? | 形式 | ノート |
+| ------------- | --- | -------------------- | --------------------- |
+| **Name** | 推奨 | テキスト | 会社の表示名 |
+| **ドメイン** | 推奨 | `https://domain.com` | 一意の識別子 |
+| **住所** | 任意 | 複数の列 | 以下を参照 |
+| **従業員** | 任意 | 数 | 従業員数 |
+| **カスタムフィールド** | 任意 | 項目により異なる | データモデル内に存在している必要があります |
-### Domain Format
+### ドメイン形式
- **Use the format `https://domain.com` for domains.**
+ **ドメインには `https://domain.com` の形式を使用してください。**
- This matches the format used when Companies are auto-created from email/calendar sync, preventing duplicates later.
+ これは、メール/カレンダー同期から Companies が自動作成される際に使用される形式と一致し、後の重複を防ぎます。
-**Domain columns:**
+**ドメイン列:**
* **Domain / Domain Label**: `acme.com`
* **Domain / Domain URL**: `https://acme.com`
-### Address Format
+### 住所形式
-Address is a nested field with multiple columns:
+住所は複数の列を必要とする**ネストされたフィールド**です:
```
Address / Address 1,Address / City,Address / State,Address / Country,Address / Post Code
123 Main Street,San Francisco,CA,USA,94105
```
-### Sample CSV Structure
+### CSV のサンプル構造
```csv
name,Domain / Domain URL,Domain / Domain Label,Address / City,Address / Country,employees
@@ -74,128 +74,128 @@ Widget Co,https://widgets.co,widgets.co,New York,USA,50
```
- **Pro tip:** Click **Download sample file** during import to see the exact column names Twenty expects.
+ **プロのヒント:** インポート中に **Download sample file** をクリックして、Twenty が想定する正確な列名を確認してください。
-## Step 2: Access the Import Feature
+## ステップ 2: インポート機能にアクセスする
-**Option 1: From the Companies View**
+**オプション 1: Companies ビューから**
-1. Navigate to **Companies** in the left sidebar
-2. Click the **⋮** icon on the top right
-3. Select **Import records**
+1. 左側のサイドバーで **Companies** に移動します
+2. 右上の **⋮** アイコンをクリックします
+3. **Import records** を選択します
-**Option 2: Using Command Menu**
+**オプション 2: Command メニューを使用**
-1. Press `Cmd + K` (Mac) or `Ctrl + K` (Windows)
-2. Type "import"
-3. Select **Import records**
-4. Choose **Companies**
+1. `Cmd + K`(Mac)または`Ctrl + K`(Windows)を押します
+2. "import" と入力します
+3. **Import records** を選択します
+4. **Companies** を選択します
-## Step 3: Upload Your File
+## ステップ 3: ファイルをアップロードする
-1. Click **Select file**
-2. Choose your CSV, XLSX, or XLS file
-3. Wait for Twenty to analyze your file
+1. **Select file** をクリックします
+2. CSV、XLSX、または XLS ファイルを選択します
+3. Twenty がファイルを解析するまで待ちます
-## Step 4: Map Your Columns
+## ステップ 4: 列をマッピングする
-Twenty automatically tries to match your columns to fields. Review and adjust:
+Twenty は列をフィールドに自動的に照合しようとします。 確認して調整します:
-1. **Check automatic mappings** — verify they're correct
-2. **Fix incorrect mappings** — click the dropdown to select the right field
-3. **Skip columns** — select **Do not map** for columns you don't want to import
+1. **自動マッピングを確認** — 正しいことを検証します
+2. **誤ったマッピングを修正** — ドロップダウンをクリックして正しいフィールドを選択します
+3. **列をスキップ** — インポートしたくない列には **Do not map** を選択します
-### Important Mapping Rules
+### 重要なマッピングルール
-* **Domain**: Map to **Domain / Domain URL** (not Domain Label)
-* **Address**: Map each part to its specific column (City, State, etc.)
-* **Select fields**: Values must match existing options (or you'll map them in the next step)
+* **Domain**: **Domain / Domain URL** にマップします(Domain Label ではありません)
+* **住所**: 各項目を対応する列(City、State など)にマップします
+* **Select フィールド**: 値は既存のオプションと一致している必要があります(次のステップでマッピングすることもできます)
-## Step 5: Map Select Field Values
+## ステップ 5: Select フィールドの値をマッピングする
-If you have Select or Multi-Select fields:
+Select または Multi-Select フィールドがある場合:
-1. Twenty shows your values alongside existing options
-2. Match each value in your file to a Twenty option
-3. Or create new options if needed
+1. Twenty は、既存のオプションと並べて値を表示します
+2. ファイル内の各値を Twenty のオプションに対応付けます
+3. 必要に応じて新しいオプションを作成します
- Select options use **API names**, not display labels. Check **Settings → Data Model** → Enable **Advanced mode** to see API names.
+ Select のオプションは表示ラベルではなく、**API 名**を使用します。 API 名を確認するには、**Settings → Data Model** で **Advanced mode** を有効にします。
-## Step 6: Review and Fix Errors
+## ステップ 6: エラーを確認して修正
-Before completing the import, Twenty validates your data:
+インポートを完了する前に、Twenty がデータを検証します:
-1. Click **Next Steps**
-2. Rows with errors are highlighted in **yellow**
-3. **Fix errors directly** — click a cell and edit the value
-4. **Remove problematic rows** — click the X to skip that row
+1. **Next Steps** をクリックします
+2. エラーのある行は **黄色** で強調表示されます
+3. **エラーを直接修正** — セルをクリックして値を編集します
+4. **問題のある行を削除** — その行をスキップするには X をクリックします
-### Common Company Import Errors
+### 一般的な会社インポートのエラー
-| Error | Cause | Solution |
-| -------------------------- | ------------------------------- | ------------------------------------------ |
-| **Duplicate domain** | Domain already exists in Twenty | Remove from file or update existing record |
-| **Invalid domain format** | Wrong format | Use `https://domain.com` |
-| **Missing required field** | Required field is empty | Fill in the value or remove the row |
+| エラー | 原因 | 解決策 |
+| -------------- | -------------------- | --------------------------- |
+| **重複したドメイン** | ドメインが Twenty に既に存在する | ファイルから削除するか、既存のレコードを更新します |
+| **無効なドメイン形式** | 形式の誤り | `https://domain.com` を使用します |
+| **必須フィールドの欠落** | 必須フィールドが空です | 値を入力するか、その行を削除します |
-## Step 7: Complete the Import
+## ステップ 7: インポートを完了する
-1. Review the import summary
-2. Click **Confirm** to import
-3. Wait for the import to complete
-4. Verify by checking a few records
+1. インポートの概要を確認します
+2. インポートするには **Confirm** をクリックします
+3. インポートが完了するまで待ちます
+4. いくつかのレコードを確認して検証します
-## After Importing Companies
+## 会社をインポートした後
-Now you can import records that link to Companies:
+これで、Companies にリンクするレコードをインポートできます:
-1. **[Import People](/l/ja/user-guide/data-migration/how-tos/import-contacts-via-csv)** — link them to Companies using the domain
-2. **Import Opportunities** — link them to Companies
-3. **Verify the import** — spot-check a few records to ensure data is correct
+1. **[People をインポート](/l/ja/user-guide/data-migration/how-tos/import-contacts-via-csv)** — ドメインを使って Companies にリンクします
+2. **Opportunities をインポート** — Companies にリンクします
+3. **インポートを検証** — データが正しいことを確認するために、いくつかのレコードを抜き取り確認します
-## Updating Existing Companies
+## 既存の会社を更新する
-To update companies instead of creating new ones:
+新規作成ではなく会社を更新するには:
-1. Include the `domain` or `id` column in your file
-2. Twenty matches records by this unique identifier
-3. Existing companies are updated; new ones are created
+1. ファイルに `domain` または `id` 列を含めます
+2. Twenty はこの一意の識別子でレコードを照合します
+3. 既存の会社は更新され、新規は作成されます
-See [How to Update Existing Records](/l/ja/user-guide/data-migration/how-tos/update-existing-records-via-import) for details.
+詳細は [既存レコードを更新する方法](/l/ja/user-guide/data-migration/how-tos/update-existing-records-via-import) を参照してください。
## FAQ
-
- Domain is a unique identifier in Twenty. This prevents duplicate companies and ensures email sync correctly links emails to the right company.
+
+ ドメインは Twenty における一意の識別子です。 これにより会社の重複を防ぎ、メール同期でメールが正しい会社にリンクされるようになります。
-
- You can leave the domain empty. However, we recommend adding domains when possible for better data quality and automatic email linking.
+
+ ドメインは空のままでもかまいません。 ただし、データ品質を高め自動メールリンクのため、可能であればドメインの追加を推奨します。
-
- Yes! You can import companies first, then import People later and link them using the company domain.
+
+ はい! 最初に会社をインポートし、その後に People をインポートして、会社のドメインを使用して関連付けることができます。
-
- If you include a unique identifier (domain or id) that matches an existing company, Twenty updates that company instead of creating a duplicate.
+
+ 既存の会社と一致する一意の識別子(ドメインまたは id)を含めた場合、Twenty は重複を作成せず、その会社を更新します。
-
- Either remove the duplicate from your file, or include the company's `id` to update the existing record instead.
+
+ ファイルから重複を削除するか、代わりに会社の `id` を含めて既存のレコードを更新してください。
-## Troubleshooting
+## トラブルシューティング
-Having issues? Check:
+お困りですか? 次を確認してください:
-* [How to Fix Import Errors](/l/ja/user-guide/data-migration/how-tos/fix-import-errors)
-* [Field Mapping Reference](/l/ja/user-guide/data-migration/capabilities/field-mapping)
-* [Uniqueness Constraints](/l/ja/user-guide/data-migration/capabilities/uniqueness-constraints)
+* [インポートエラーを解決する方法](/l/ja/user-guide/data-migration/how-tos/fix-import-errors)
+* [フィールドマッピングのリファレンス](/l/ja/user-guide/data-migration/capabilities/field-mapping)
+* [一意性制約](/l/ja/user-guide/data-migration/capabilities/uniqueness-constraints)
diff --git a/packages/twenty-docs/l/ja/user-guide/data-migration/how-tos/import-contacts-via-csv.mdx b/packages/twenty-docs/l/ja/user-guide/data-migration/how-tos/import-contacts-via-csv.mdx
index 447e4da8c7..46879d5215 100644
--- a/packages/twenty-docs/l/ja/user-guide/data-migration/how-tos/import-contacts-via-csv.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/data-migration/how-tos/import-contacts-via-csv.mdx
@@ -1,90 +1,90 @@
---
-title: Import Contacts via CSV
-description: Complete step-by-step guide to importing people/contacts into Twenty.
+title: CSV ファイルで連絡先をインポートする
+description: Twenty に連絡先(People)をインポートするための完全なステップバイステップガイド。
---
-## Overview
+## 概要
-This guide walks you through importing your contacts (People) into Twenty. **Import Companies first** if you want to link People to Companies.
+このガイドでは、連絡先(People)を Twenty にインポートする手順を説明します。 People を会社に関連付けたい場合は、**会社を先にインポート**してください。
-## Before You Start
+## 始める前に
-### Prerequisites Checklist
+### 事前準備チェックリスト
- Your file is CSV, XLSX, or XLS format
+ ファイル形式が CSV、XLSX、または XLS である
- File has fewer than 10,000 records
+ ファイルのレコード数が 10,000 未満
- No duplicate email addresses in your file
+ ファイル内に重複するメールアドレスがない
- **Companies imported first** (if linking People to Companies)
+ **会社を先にインポート**(People を会社に関連付ける場合)
- All custom fields exist in **Settings → Data Model**
+ すべてのカスタムフィールドが **Settings → Data Model** に存在する
- **Import Companies Before People**
+ **People の前に会社をインポート**
- If you want to link People to Companies, import Companies first. The Company must exist before you can reference it.
+ People を会社に関連付けたい場合は、まず会社をインポートしてください。 参照する前に、その会社が存在している必要があります。
-## Step 1: Prepare Your Contact Data
+## ステップ 1: 連絡先データを準備する
-### Required and Recommended Fields
+### 必須および推奨フィールド
-| Field | Required? | Format | Notes |
-| ----------------- | ----------- | ----------------- | ------------------------- |
-| **Email** | Recommended | `name@domain.com` | Must be unique |
-| **First Name** | Recommended | Text | |
-| **Last Name** | Recommended | Text | |
-| **Company** | Optional | Domain or ID | Links to existing Company |
-| **Phone** | Optional | Multiple columns | See below |
-| **Job Title** | Optional | Text | |
-| **Custom fields** | Optional | Varies | Must exist in Data Model |
+| フィールド | 必須? | 形式 | ノート |
+| ------------- | --- | ----------------- | --------------------- |
+| **メール** | 推奨 | `name@domain.com` | 一意である必要があります |
+| **名** | 推奨 | テキスト | |
+| **姓** | 推奨 | テキスト | |
+| **会社** | 任意 | ドメインまたは ID | 既存の会社にリンクします |
+| **電話** | 任意 | 複数の列 | 以下を参照 |
+| **職種** | 任意 | テキスト | |
+| **カスタムフィールド** | 任意 | 項目により異なる | データモデル内に存在している必要があります |
-### Email Format
+### メール形式
-* Must be valid email format: `name@domain.com`
-* **Must be unique** — no duplicates in your file or in Twenty
-* For additional emails, use the **Emails / Additional Emails** column:
+* 有効なメール形式である必要があります: `name@domain.com`
+* **一意である必要があります** — ファイル内や Twenty 内に重複がないこと
+* 追加のメールには、**Emails / Additional Emails** 列を使用してください:
```
["jane@twenty.com","jane.doe@twenty.com"]
```
-### Phone Format
+### 電話番号の形式
-Phone is a **nested field** requiring multiple columns:
+電話番号は複数の列を必要とする**ネストされたフィールド**です:
-| Column | Example |
+| 列 | 例 |
| --------------------------------------- | ------------ |
| **Phones / Primary Phone Number** | `4159095555` |
| **Phones / Primary Phone Country Code** | `US` |
| **Phones / Primary Phone Calling Code** | `+1` |
-### Linking to Companies
+### 会社への関連付け
-Add a column with the Company's unique identifier:
+会社の一意の識別子を含む列を追加します:
-| Column Name | Format | Example |
-| --------------- | ---------- | -------------------------------------- |
-| `companyDomain` | URL format | `https://acme.com` |
-| `companyId` | UUID | `c776ee49-f608-4a77-8cc8-6fe96ae1e43f` |
+| 列名 | 形式 | 例 |
+| --------------- | ------ | -------------------------------------- |
+| `companyDomain` | URL 形式 | `https://acme.com` |
+| `companyId` | UUID | `c776ee49-f608-4a77-8cc8-6fe96ae1e43f` |
- **Use Domain URL format** (`https://acme.com`), not the label. This matches how Companies are stored in Twenty.
+ **ドメインの URL 形式**(`https://acme.com`)を使用し、ラベルは使用しないでください。 これは Twenty における会社の保存方式に一致します。
-### Sample CSV Structure
+### CSV のサンプル構造
```csv
firstName,lastName,email,jobTitle,companyDomain,Phones / Primary Phone Number,Phones / Primary Phone Country Code
@@ -93,150 +93,150 @@ Jane,Doe,jane@widgets.co,CTO,https://widgets.co,2125551234,US
```
- **Pro tip:** Click **Download sample file** during import or export a few existing People to see the exact column names Twenty expects.
+ **プロのヒント:** インポート中に **Download sample file** をクリックするか、既存の People をいくつかエクスポートして、Twenty が想定する正確な列名を確認してください。
-## Step 2: Access the Import Feature
+## ステップ 2: インポート機能にアクセスする
-**Option 1: From the People View**
+**オプション 1: People ビューから**
-1. Navigate to **People** in the left sidebar
-2. Click the **⋮** icon on the top right
-3. Select **Import records**
+1. 左側のサイドバーで **People** に移動します
+2. 右上の **⋮** アイコンをクリックします
+3. **Import records** を選択します
-**Option 2: Using Command Menu**
+**オプション 2: Command メニューを使用**
-1. Press `Cmd + K` (Mac) or `Ctrl + K` (Windows)
-2. Type "import"
-3. Select **Import records**
-4. Choose **People**
+1. `Cmd + K`(Mac)または`Ctrl + K`(Windows)を押します
+2. "import" と入力します
+3. **Import records** を選択します
+4. **People** を選択します
-## Step 3: Upload Your File
+## ステップ 3: ファイルをアップロードする
-1. Click **Select file**
-2. Choose your CSV, XLSX, or XLS file
-3. Wait for Twenty to analyze your file
+1. **Select file** をクリックします
+2. CSV、XLSX、または XLS ファイルを選択します
+3. Twenty がファイルを解析するまで待ちます
-## Step 4: Map Your Columns
+## ステップ 4: 列をマッピングする
-Twenty automatically tries to match your columns to fields. Review and adjust:
+Twenty は列をフィールドに自動的に照合しようとします。 確認して調整します:
-1. **Check automatic mappings** — verify they're correct
-2. **Fix incorrect mappings** — click the dropdown to select the right field
-3. **Skip columns** — select **Do not map** for columns you don't want to import
+1. **自動マッピングを確認** — 正しいことを検証します
+2. **誤ったマッピングを修正** — ドロップダウンをクリックして正しいフィールドを選択します
+3. **列をスキップ** — インポートしたくない列には **Do not map** を選択します
-### Important Mapping Rules
+### 重要なマッピングルール
-| Column Type | Map To | Notes |
-| ----------------- | ------------------------------ | ---------------------------------- |
-| Company reference | **Company** relation field | Use domain OR id, not both |
-| Email | **Email** | Primary email address |
-| Additional emails | **Emails / Additional Emails** | Array format |
-| Phone | Separate columns | Number, Country Code, Calling Code |
+| 列の種類 | マッピング先 | ノート |
+| ------ | ------------------------------ | ------------------------------------ |
+| 会社参照 | **会社** の関連フィールド | ドメインまたは ID のいずれか一方を使用し、両方は使用しないでください |
+| メール | **メール** | プライマリメールアドレス |
+| 追加のメール | **Emails / Additional Emails** | 配列形式 |
+| 電話 | 別々の列 | 番号、国コード、Calling Code |
-### Mapping the Company Relation
+### 会社リレーションのマッピング
-When mapping the company column:
+会社列をマッピングする際:
-1. Find your company reference column (e.g., `companyDomain`)
-2. Map it to the **Company** relation field
-3. Twenty will link each Person to the matching Company
+1. 会社参照列(例: `companyDomain`)を見つけます
+2. それを **会社** の関連フィールドにマッピングします
+3. Twenty は各 People レコードを対応する会社にリンクします
- **Map only ONE unique identifier for relations.**
+ **リレーションには一意の識別子を必ず1つだけマッピングしてください。**
- Don't map both `companyId` AND `companyDomain`. Choose one—preferably domain since it's human-readable.
+ `companyId` と `companyDomain` の両方をマッピングしないでください。 どちらか一方を選択してください—人間が読みやすいので、可能であればドメインを推奨します。
-## Step 5: Map Select Field Values
+## ステップ 5: Select フィールドの値をマッピングする
-If you have Select or Multi-Select fields (like Lead Source):
+Select または Multi-Select フィールド(例: リードソース)がある場合:
-1. Twenty shows your values alongside existing options
-2. Match each value in your file to a Twenty option
-3. Or create new options if needed
+1. Twenty は、既存のオプションと並べて値を表示します
+2. ファイル内の各値を Twenty のオプションに対応付けます
+3. 必要に応じて新しいオプションを作成します
- Select options use **API names**, not display labels. Check **Settings → Data Model** → Enable **Advanced mode** to see API names.
+ Select のオプションは表示ラベルではなく、**API 名**を使用します。 API 名を確認するには、**Settings → Data Model** で **Advanced mode** を有効にします。
-## Step 6: Review and Fix Errors
+## ステップ 6: エラーを確認して修正
-Before completing the import, Twenty validates your data:
+インポートを完了する前に、Twenty がデータを検証します:
-1. Click **Next Steps**
-2. Rows with errors are highlighted in **yellow**
-3. **Fix errors directly** — click a cell and edit the value
-4. **Remove problematic rows** — click the X to skip that row
+1. **Next Steps** をクリックします
+2. エラーのある行は **黄色** で強調表示されます
+3. **エラーを直接修正** — セルをクリックして値を編集します
+4. **問題のある行を削除** — その行をスキップするには X をクリックします
-### Common Contact Import Errors
+### 一般的な連絡先インポートのエラー
-| Error | Cause | Solution |
-| -------------------------- | -------------------------------------- | ------------------------------------------- |
-| **Duplicate email** | Email already exists in Twenty or file | Remove duplicate or update existing record |
-| **Invalid email format** | Email format incorrect | Fix to `name@domain.com` |
-| **Relation not found** | Company doesn't exist | Import Companies first or fix the reference |
-| **Missing required field** | Required field is empty | Fill in the value or remove the row |
+| エラー | 原因 | 解決策 |
+| ------------------ | ------------------------------- | --------------------------- |
+| **重複したメールアドレス** | メールアドレスが Twenty またはファイルに既に存在します | 重複を削除するか、既存のレコードを更新します |
+| **無効なメールアドレス形式** | メールアドレスの形式が正しくありません | `name@domain.com` の形式に修正します |
+| **リレーションが見つかりません** | 会社が存在しません | 先に会社をインポートするか、参照を修正します |
+| **必須フィールドの欠落** | 必須フィールドが空です | 値を入力するか、その行を削除します |
-## Step 7: Complete the Import
+## ステップ 7: インポートを完了する
-1. Review the import summary
-2. Click **Confirm** to import
-3. Wait for the import to complete
-4. Verify by checking a few records and their Company links
+1. インポートの概要を確認します
+2. インポートするには **Confirm** をクリックします
+3. インポートが完了するまで待ちます
+4. いくつかのレコードを確認し、それらの Company リンクをチェックして検証します
-## After Importing Contacts
+## 連絡先をインポートした後
-Your contacts are now in Twenty! Next steps:
+連絡先は Twenty に追加されました! 次のステップ:
-1. **Verify Company links** — open a few People records to confirm they're linked to the right Company
-2. **Import Opportunities** — if needed, link them to People and Companies
-3. **Set up email sync** — connect your mailbox to see email history on contact records
+1. **会社リンクを確認** — いくつかの People レコードを開き、正しい会社にリンクされていることを確認します
+2. **Opportunities をインポート** — 必要に応じて、People や Companies にリンクします
+3. **メール同期を設定** — メールボックスを接続して、連絡先レコード上でメール履歴を確認します
-## Updating Existing Contacts
+## 既存の連絡先を更新する
-To update contacts instead of creating new ones:
+新規作成ではなく連絡先を更新するには:
-1. Include the `email` or `id` column in your file
-2. Twenty matches records by this unique identifier
-3. Existing contacts are updated; new ones are created
+1. ファイルに `email` または `id` 列を含めます
+2. Twenty はこの一意の識別子でレコードを照合します
+3. 既存の連絡先は更新され、新規は作成されます
-See [How to Update Existing Records](/l/ja/user-guide/data-migration/how-tos/update-existing-records-via-import) for details.
+詳細は [既存レコードを更新する方法](/l/ja/user-guide/data-migration/how-tos/update-existing-records-via-import) を参照してください。
## FAQ
-
- Email is a unique identifier in Twenty. This prevents duplicate contacts and ensures email sync correctly links emails to the right person.
+
+ メールアドレスは Twenty における一意の識別子です。 これにより連絡先の重複を防ぎ、メール同期でメールが正しい人物にリンクされるようになります。
-
- You can leave the email empty. However, we recommend adding emails when possible for better data quality and email sync functionality.
+
+ メールアドレスは空のままでもかまいません。 ただし、データ品質とメール同期機能を高めるため、可能であればメールアドレスの追加を推奨します。
-
- Add a column with the Company's domain (e.g., `https://acme.com`) or ID. During mapping, connect this column to the Company relation field.
+
+ Company のドメイン(例: `https://acme.com`)または ID の列を追加します マッピング時に、この列を Company のリレーションフィールドに関連付けます。
-
- Import Companies first, then import People. The Company must exist before you can reference it.
+
+ まず Companies をインポートし、その後 People をインポートします。 参照する前に、その Company が存在している必要があります。
-
- Yes! Create a custom field marked as "unique" in your data model to store the external ID. Note: the field name `id` is reserved for Twenty's internal ID.
+
+ はい! 外部 ID を保存するために、データモデルで "unique" に指定したカスタムフィールドを作成します。 注意: フィールド名 `id` は Twenty の内部 ID 用に予約されています。
-
- The Company you're referencing doesn't exist. Either import the Company first, or check that the domain/ID exactly matches an existing Company.
+
+ 参照している Company が存在しません。 Company を先にインポートするか、ドメイン/ID が既存の Company と完全に一致しているか確認してください。
-## Troubleshooting
+## トラブルシューティング
-Having issues? Check:
+お困りですか? 次を確認してください:
-* [How to Fix Import Errors](/l/ja/user-guide/data-migration/how-tos/fix-import-errors)
-* [How to Import Relations](/l/ja/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv)
-* [Field Mapping Reference](/l/ja/user-guide/data-migration/capabilities/field-mapping)
+* [インポートエラーを解決する方法](/l/ja/user-guide/data-migration/how-tos/fix-import-errors)
+* [リレーションをインポートする方法](/l/ja/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv)
+* [フィールドマッピングのリファレンス](/l/ja/user-guide/data-migration/capabilities/field-mapping)
diff --git a/packages/twenty-docs/l/ja/user-guide/data-migration/how-tos/import-data-via-api.mdx b/packages/twenty-docs/l/ja/user-guide/data-migration/how-tos/import-data-via-api.mdx
index 17e5402632..a70cac4fa6 100644
--- a/packages/twenty-docs/l/ja/user-guide/data-migration/how-tos/import-data-via-api.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/data-migration/how-tos/import-data-via-api.mdx
@@ -1,176 +1,176 @@
---
-title: Import Data via API
-description: When and how to use Twenty's APIs for large-scale data imports.
+title: API でデータをインポートする
+description: 大規模なデータインポートに Twenty の API をいつ・どのように使用するか。
---
-## Overview
+## 概要
-Twenty provides both **GraphQL** and **REST APIs** for programmatic data import. Use the API when CSV import isn't practical for your data volume or when you need automated, recurring imports.
+Twenty は、プログラムによるデータインポートのために **GraphQL** と **REST API** の両方を提供しています。 CSV インポートがデータ量の観点で現実的でない場合、または自動化された定期的なインポートが必要な場合は、API を使用してください。
-## When to Use API Import
+## API インポートを使うべきタイミング
-| Scenario | Recommended Method |
-| ---------------------------------- | ----------------------------- |
-| Under 10,000 records | CSV Import |
-| 10,000 - 50,000 records | CSV Import (split into files) |
-| **50,000+ records** | **API Import** |
-| One-time migration | Either (based on volume) |
-| **Recurring imports** | **API Import** |
-| **Real-time sync** | **API Import** |
-| **Integration with other systems** | **API Import** |
+| シナリオ | 推奨アプローチ |
+| ------------- | ----------------- |
+| 1 万件未満 | CSVインポート |
+| 1 万〜5 万件 | CSVインポート(ファイルに分割) |
+| **5 万件以上** | **API インポート** |
+| 一度きりの移行 | どちらでも可(データ量に応じて) |
+| **定期的なインポート** | **API インポート** |
+| **リアルタイム同期** | **API インポート** |
+| **他システムとの統合** | **API インポート** |
-For datasets in the hundreds of thousands, the API is significantly faster and more reliable than multiple CSV imports.
+数十万件規模のデータセットでは、複数回の CSV インポートよりも API の方が大幅に高速で信頼性があります。
-## API Rate Limits
+## API レートリミット
-Twenty enforces rate limits to ensure system stability:
+Twenty では、システムの安定性を確保するためにレート制限を設けています:
-| Limit | Value |
-| -------------------------- | --------------------- |
-| **Requests per minute** | 100 |
-| **Records per batch call** | 60 |
-| **Maximum throughput** | ~6,000 records/minute |
+| 制限 | 値 |
+| -------------------- | ------------- |
+| **1 分あたりのリクエスト数** | 100 |
+| **バッチ呼び出しあたりのレコード数** | 60 |
+| **最大スループット** | ~6,000 レコード/分 |
- **Plan your import around these limits.**
+ **これらの制限を前提にインポート計画を立ててください。**
- For 100,000 records at maximum throughput, expect approximately 17 minutes of import time. Add buffer time for error handling and retries.
+ 最大スループットで 100,000 レコードの場合、インポート時間は約 17 分になります。 エラー処理や再試行のための余裕時間を確保してください。
-## Getting Started
+## 始めに
-### Step 1: Get Your API Key
+### ステップ 1: API キーを取得する
-1. Go to **Settings → Developers**
-2. Click **+ Create API key**
-3. Give your key a descriptive name
-4. Copy the API key immediately (it won't be shown again)
-5. Store it securely
+1. **設定 → 開発者** に移動
+2. **+ API キーを作成** をクリック
+3. キーにわかりやすい名前を付ける
+4. API キーをすぐにコピーします(再表示されません)
+5. 安全に保管する
- **Keep your API key secret.**
+ **API キーは秘密にしてください。**
- Anyone with your API key can access and modify your workspace data. Never commit it to code repositories or share it publicly.
+ API キーを知っている人は誰でも、あなたのワークスペースのデータにアクセス・変更できます。 コードリポジトリにコミットしたり、公開で共有したりしないでください。
-### Step 2: Choose Your API
+### ステップ 2: API を選択する
-Twenty supports two API types:
+Twenty は 2 種類の API をサポートしています:
-| API | Best For | Documentation |
-| ----------- | ----------------------------------------------------------- | ------------------------------------------------ |
-| **GraphQL** | Flexible queries, fetching related data, complex operations | [API Docs](/l/ja/developers/extend/capabilities/apis) |
-| **REST** | Simple CRUD operations, familiar REST patterns | [API Docs](/l/ja/developers/extend/capabilities/apis) |
+| API | 最適な用途 | ドキュメント |
+| ----------- | ------------------------------ | -------------------------------------------------- |
+| **GraphQL** | 柔軟なクエリ、関連データの取得、複雑な操作に最適 | [API ドキュメント](/l/ja/developers/extend/capabilities/apis) |
+| **REST** | シンプルな CRUD 操作、馴染みのある REST パターン | [API ドキュメント](/l/ja/developers/extend/capabilities/apis) |
-Both APIs support:
+両方の API でサポートされる内容:
-* Creating, reading, updating, and deleting records
-* **Batch operations** — create or update up to 60 records per call
+* レコードの作成、読み取り、更新、削除
+* **バッチ操作** — 1 回の呼び出しで最大 60 レコードを作成または更新
-**For imports, use batch operations** to maximize throughput within rate limits.
+**インポートではバッチ操作を使用**し、レート制限内でスループットを最大化してください。
-### Step 3: Plan Your Import Order
+### ステップ 3: インポート順序を計画する
-Just like CSV imports, **order matters** for relations:
+CSV インポートと同様に、リレーションでは**順序が重要**です:
-1. **Companies** first (no dependencies)
-2. **People** second (can link to Companies)
-3. **Opportunities** third (can link to Companies and People)
-4. **Tasks/Notes** (can link to any of the above)
-5. **Custom objects** (following their dependencies)
+1. **会社**を最初に(依存関係なし)
+2. 2 番目に **連絡先**(会社にリンク可能)
+3. 3 番目に **商談**(会社および連絡先にリンク可能)
+4. **タスク/メモ**(上記のいずれにもリンク可能)
+5. **カスタムオブジェクト**(依存関係に従って)
-## Best Practices
+## ベストプラクティス
-### Batch Your Requests
+### リクエストをバッチ化する
-* Don't send records one at a time
-* Group up to **60 records per API call**
-* This maximizes throughput within rate limits
+* レコードを 1 件ずつ送信しない
+* 1 回の API 呼び出しにつき**最大 60 レコード**にまとめる
+* これにより、レート制限内でスループットを最大化できます
-### Handle Rate Limits
+### レート制限への対応
-* Implement delays between requests (600ms minimum for sustained imports)
-* Use exponential backoff when you hit limits
-* Monitor for 429 (Too Many Requests) responses
+* リクエスト間に遅延を入れる(継続的なインポートでは最小 600ms)
+* 制限に達したら指数バックオフを使用する
+* 429(Too Many Requests)応答を監視する
-### Validate Data First
+### まずデータを検証する
-* Clean and validate your data before importing
-* Check required fields are populated
-* Verify formats match Twenty's requirements (see [Field Mapping](/l/ja/user-guide/data-migration/capabilities/field-mapping))
+* インポート前にデータをクリーンアップし、検証する
+* 必須フィールドが入力されていることを確認する
+* 形式が Twenty の要件に合致していることを確認する([フィールドマッピング](/l/ja/user-guide/data-migration/capabilities/field-mapping) を参照)
-### Log Everything
+### すべてをログに記録する
-* Log every record imported (including IDs)
-* Log errors with full context
-* This helps debug issues and verify completion
+* インポートしたすべてのレコード(ID を含む)を記録する
+* エラーをコンテキスト情報とともに記録する
+* これにより、問題のデバッグと完了確認が容易になります
-### Test First
+### まずテストする
-* Test with a small batch (10-20 records)
-* Verify data appears correctly in Twenty
-* Then run the full import
+* 少量のバッチ(10〜20 レコード)でテストする
+* Twenty にデータが正しく表示されることを確認する
+* その後、フルインポートを実行する
-### Upsert to Avoid Duplicates
+### 重複を避けるためにアップサートを使用する
-The GraphQL API supports **batch upsert** — update if the record exists, create if not. This prevents duplicates when re-running imports.
+GraphQL API は **バッチ アップサート**をサポートしています — レコードが存在する場合は更新、存在しない場合は作成します。 これにより、インポートを再実行しても重複を防止できます。
-## Finding Object and Field Names
+## オブジェクト名とフィールド名の確認方法
-To see available objects and fields:
+利用可能なオブジェクトとフィールドを確認するには:
-1. Go to **Settings → API and Webhooks**
-2. Browse the **Metadata API**
-3. View all standard and custom objects with their fields
+1. **設定 → API と Webhook** に移動
+2. **Metadata API** を参照
+3. すべての標準およびカスタムオブジェクトとそのフィールドを表示
-The documentation shows all standard and custom objects, their fields, and the expected data types.
+ドキュメントには、すべての標準およびカスタムオブジェクト、そのフィールド、および期待されるデータ型が示されています。
-## Professional Services
+## プロフェッショナルサービス
-For complex API migrations, our partners can help:
+複雑な API 移行については、パートナーがお手伝いします:
-| Service | What's Included |
-| ----------------------- | ---------------------------------- |
-| **Data Model Design** | design your optimal data structure |
-| **Migration Scripts** | write and run the import scripts |
-| **Data Transformation** | handle complex mapping and cleanup |
-| **Validation & QA** | verify the migration is complete |
+| サービス | 提供内容 |
+| ------------ | ------------------- |
+| **データモデル設計** | 最適なデータ構造を設計 |
+| **移行スクリプト** | インポート用スクリプトの作成と実行 |
+| **データ変換** | 複雑なマッピングとクリーンアップに対応 |
+| **検証と QA** | 移行が完了していることを検証 |
-**Best for:**
+**最適な用途:**
-* Migrations of 100,000+ records
-* Complex data transformations
-* Tight timelines
-* Teams without developer resources
+* 10 万件以上のレコードの移行
+* 複雑なデータ変換
+* 厳しいスケジュール
+* 開発リソースのないチーム
-Contact us at [contact@twenty.com](mailto:contact@twenty.com) or explore our [Implementation Services](/l/ja/user-guide/getting-started/capabilities/implementation-services).
+[contact@twenty.com](mailto:contact@twenty.com) までお問い合わせいただくか、[導入支援サービス](/l/ja/user-guide/getting-started/capabilities/implementation-services)をご覧ください。
## FAQ
-
- GraphQL lets you request exactly the data you need in a single query and is better for complex operations. REST uses standard HTTP methods (GET, POST, PUT, DELETE) and may be more familiar if you've worked with traditional APIs.
+
+ GraphQL は、1 回のクエリで必要なデータだけを正確に要求でき、複雑な操作に適しています。 REST は標準的な HTTP メソッド(GET、POST、PUT、DELETE)を使用しており、従来の API を扱ったことがある場合は馴染みやすいでしょう。
-
- Yes! Use update mutations (GraphQL) or PUT/PATCH requests (REST) with the record's `id`.
+
+ はい! 更新用ミューテーション(GraphQL)またはレコードの `id` を用いた PUT/PATCH リクエスト(REST)を使用してください。
-
- Query for existing records first using unique identifiers (email, domain). Update if exists, create if not.
+
+ 一意の識別子(メール、ドメイン)を使用して、まず既存のレコードをクエリします。 存在すれば更新、なければ作成します。
-
- Yes, use delete mutations (GraphQL) or DELETE requests (REST).
+
+ はい、削除用ミューテーション(GraphQL)または DELETE リクエスト(REST)を使用します。
-
- Not currently, but both APIs work with any HTTP client in any language.
+
+ 現時点ではありませんが、どちらの API もあらゆる言語の任意の HTTP クライアントで利用できます。
-## API Documentation
+## API ドキュメント
-For full implementation details, code examples, and schema reference:
+実装の詳細、コード例、スキーマリファレンスについては次を参照してください:
-* [API Documentation](/l/ja/developers/extend/capabilities/apis)
+* [API ドキュメント](/l/ja/developers/extend/capabilities/apis)
diff --git a/packages/twenty-docs/l/ja/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv.mdx b/packages/twenty-docs/l/ja/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv.mdx
index 562620b68f..f70ee83f75 100644
--- a/packages/twenty-docs/l/ja/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv.mdx
@@ -1,103 +1,103 @@
---
-title: Import Relations Between Objects via CSV
-description: Complete step-by-step guide to linking records during CSV import.
+title: CSV でオブジェクト間のリレーションをインポートする
+description: CSV インポート時にレコードを関連付けるための完全なステップバイステップガイド。
---
-## Overview
+## 概要
-This guide walks you through importing relations between objects—for example, linking People to Companies, or Opportunities to People.
+本ガイドでは、オブジェクト間のリレーションをインポートする手順を説明します(例:連絡先を会社にリンク、または商談を連絡先にリンク)。
-**What can be imported:** Only one-to-many relations pointing to a single object type. Relations pointing to multiple object types (like Notes linking to People AND Companies) are not yet supported for import.
+**インポート可能なもの:** 単一のオブジェクトタイプを指す 1 対多のリレーションのみ。 複数のオブジェクトタイプを指すリレーション(例:メモが連絡先と会社の双方にリンク)は、現時点ではインポートに対応していません。
-## Understanding Relations
+## リレーションの理解
-### What is a "One-to-Many" Relation?
+### 「1 対多」リレーションとは?
-In a one-to-many relation:
+1 対多のリレーションでは:
-* **One** Company has **many** People (employees)
-* **One** Company has **many** Opportunities
-* **One** Person has **many** Tasks
+* **1 つの**会社には**多数の**連絡先(従業員)がいる
+* **1 つの**会社には**多数の**商談がある
+* **1 つの**連絡先には**多数の**タスクがある
-The "one" side is the **parent**. The "many" side is the **child**.
+「1」の側は**親**です。 「多」の側は**子**です。
-### Common Relations in Twenty
+### Twenty における一般的なリレーション
-| Relation | "One" Side (Parent) | "Many" Side (Child) |
-| ------------------------- | ------------------- | ------------------- |
-| Companies → People | Company | People |
-| Companies → Opportunities | Company | Opportunities |
-| People → Tasks | Person | Tasks |
-| People → Notes | Person | Notes |
+| リレーション | 「1」の側(親) | 「多」の側(子) |
+| --------- | -------- | -------- |
+| 会社 → 連絡先 | 会社 | 人物 |
+| 会社 → 商談 | 会社 | 商談 |
+| 連絡先 → タスク | 人物 | タスク |
+| 連絡先 → メモ | 人物 | ノート |
-## Step 1: Identify the "One" and "Many" Sides
+## ステップ 1: 「1」と「多」の側を特定する
-Before importing, determine which object is the parent and which is the child.
+インポート前に、どのオブジェクトが親で、どれが子かを判断します。
-**Ask yourself:** "Does ONE [Object A] have MANY [Object B]?"
+**自問:** 「1 つの [オブジェクト A] は多数の [オブジェクト B] を持つか?」
-* One Company → Many People ✓ (Company is parent)
-* One Person → Many Companies ✗ (This is wrong—a person belongs to one company)
+* 1 つの会社 → 多数の連絡先 ✓(会社が親)
+* 1 人 → 多数の会社 ✗(誤りです—1 人は 1 社に所属)
-## Step 2: Import the Parent Records First
+## ステップ 2: まず親レコードをインポートする
-The parent ("one" side) must exist in Twenty before you can reference it.
+参照する前に、親(「1」の側)が Twenty に存在している必要があります。
-**Import order:**
+**インポート順:**
-1. **Companies** first (no dependencies)
-2. **People** second (link to Companies)
-3. **Opportunities** third (link to Companies and/or People)
-4. **Tasks/Notes** (link to any of the above)
+1. **会社**を最初に(依存関係なし)
+2. **連絡先**を次に(会社にリンク)
+3. **商談**を 3 番目に(会社や連絡先にリンク)
+4. **タスク/メモ**(上記のいずれかにリンク)
- **If the parent record doesn't exist, the import will fail.**
+ **親レコードが存在しない場合、インポートは失敗します。**
- Always verify that Companies are imported before importing People with company references.
+ 会社参照を含む連絡先をインポートする前に、必ず会社がインポート済みであることを確認してください。
-## Step 3: Note the Parent's Unique Identifier
+## ステップ 3: 親の一意識別子を控える
-You need to reference the parent record using a **unique identifier**. Available options:
+親レコードは**一意の識別子**で参照する必要があります。 利用可能な選択肢:
-| Parent Object | Available Unique Identifiers |
-| --------------------- | --------------------------------------------------------------- |
-| **Companies** | `id` (UUID), `domain` (recommended), or any custom unique field |
-| **People** | `id` (UUID), `email`, or any custom unique field |
-| **Workspace Members** | `id` (UUID), `email` (not name) |
-| **Custom Objects** | `id` (UUID), or any field marked as unique |
+| 親オブジェクト | 利用可能な一意識別子 |
+| --------------- | ----------------------------------------- |
+| **会社** | `id`(UUID)、`domain`(推奨)、または任意のカスタム一意フィールド |
+| **連絡先** | `id`(UUID)、`email`、または任意のカスタム一意フィールド |
+| **ワークスペースメンバー** | `id`(UUID)、`email`(名前ではありません) |
+| **カスタムオブジェクト** | `id`(UUID)、または一意としてマークされた任意のフィールド |
-**Recommended:** Use `domain` for Companies and `email` for People. These are human-readable and easy to verify in your spreadsheet.
+**推奨:** 会社には `domain`、連絡先には `email` を使用してください。 これらは人間が読みやすく、スプレッドシートで簡単に確認できます。
-### Finding the Identifier
+### 識別子の見つけ方
-If you need the `id`:
+`id` が必要な場合:
-1. Export the parent records from Twenty
-2. The export includes the `id` column
-3. Use these IDs in your child records file
+1. 親レコードを Twenty からエクスポートする
+2. エクスポートには `id` 列が含まれます
+3. これらの ID を子レコードのファイルで使用する
-## Step 4: Verify the Relation Field Exists
+## ステップ 4: リレーションフィールドが存在することを確認する
-Before importing, ensure the relation field exists between your objects.
+インポート前に、オブジェクト間のリレーションフィールドが存在することを確認します。
-**To check or create:**
+**確認・作成方法:**
-1. Go to **Settings → Data Model**
-2. Select your child object (e.g., People)
-3. Look for a relation field pointing to the parent (e.g., Company)
-4. If it doesn't exist, create it:
- * Click **+ Add field**
- * Select **Relation** type
- * Choose the parent object
+1. **設定 → データモデル** に移動する
+2. 子オブジェクト(例:連絡先)を選択する
+3. 親(例:会社)を指すリレーションフィールドを探す
+4. 存在しない場合は作成する:
+ * **+ Add field** をクリック
+ * **Relation** タイプを選択
+ * 親オブジェクトを選択
-## Step 5: Prepare Your CSV File
+## ステップ 5: CSV ファイルを準備する
-Add a column to your child CSV that references the parent using its unique identifier.
+子側の CSV に、親を一意の識別子で参照する列を追加します。
-### Example: People Linking to Companies
+### 例:連絡先を会社にリンクする
-**Your People CSV:**
+**連絡先の CSV:**
```csv
firstName,lastName,email,jobTitle,companyDomain
@@ -106,66 +106,66 @@ Jane,Doe,jane@widgets.co,CTO,https://widgets.co
Bob,Johnson,bob@techstart.io,Developer,https://techstart.io
```
-The `companyDomain` column references the Company's domain.
+`companyDomain` 列は会社のドメインを参照します。
-### Format Requirements
+### 形式要件
-| Identifier | Format | Example |
-| ---------- | -------------- | -------------------------------------- |
-| Domain | URL format | `https://acme.com` |
-| Email | Standard email | `john@acme.com` |
-| ID | UUID | `c776ee49-f608-4a77-8cc8-6fe96ae1e43f` |
+| 識別子 | 形式 | 例 |
+| ---- | ----------- | -------------------------------------- |
+| ドメイン | URL 形式 | `https://acme.com` |
+| メール | 標準的なメールアドレス | `john@acme.com` |
+| ID | UUID | `c776ee49-f608-4a77-8cc8-6fe96ae1e43f` |
- **Domain format matters!**
+ **ドメインの形式が重要です!**
- Use `https://domain.com` (not just `domain.com`). This matches how Twenty stores Company domains and prevents matching errors.
+ `https://domain.com` を使用してください(`domain.com` だけではありません)。 これは Twenty が会社のドメインを保存する方法に一致し、照合エラーを防ぎます。
-### Important Rules
+### 重要なルール
-1. **Exact match required** — the value must exactly match the parent record
-2. **Map only ONE unique identifier** — don't include both `companyId` AND `companyDomain`
-3. **Case sensitive** — `Acme.com` ≠ `acme.com`
+1. **完全一致が必要** — 値は親レコードと完全に一致している必要があります
+2. **一意の識別子は 1 つだけマッピング** — `companyId` と `companyDomain` の両方を含めないでください
+3. **大文字小文字を区別** — `Acme.com` ≠ `acme.com`
-## Step 6: Upload and Map the Relation
+## ステップ 6: リレーションをアップロードしてマッピングする
-1. Navigate to the child object (e.g., People)
-2. Click **⋮** → **Import records**
-3. Upload your CSV file
-4. In the field mapping step:
- * Find your relation column (e.g., `companyDomain`)
- * Map it to the **Company** relation field
-5. Complete the remaining mapping
-6. Review errors and confirm
+1. 子オブジェクト(例:連絡先)に移動
+2. **⋮** → **Import records** をクリック
+3. CSV ファイルをアップロード
+4. フィールドマッピングのステップで:
+ * リレーション列(例:`companyDomain`)を見つける
+ * それを**会社**のリレーションフィールドにマッピングする
+5. 残りのマッピングを完了する
+6. エラーを確認して確定する
-Twenty will automatically link each child record to the matching parent.
+Twenty が各子レコードを一致する親に自動でリンクします。
-## Step 7: Verify the Import
+## ステップ 7: インポートを確認する
-After importing:
+インポート後:
-1. Open a few child records (e.g., People)
-2. Verify the relation field shows the correct parent (e.g., Company)
-3. Open a parent record and check the related records section
+1. いくつかの子レコード(例:連絡先)を開く
+2. リレーションフィールドに正しい親(例:会社)が表示されていることを確認する
+3. 親レコードを開き、関連レコードのセクションを確認する
-## Common Mistakes to Avoid
+## 避けるべき一般的なミス
-| Mistake | Problem | Solution |
-| -------------------------- | -------------------------------------------------- | ------------------------------------------------------- |
-| **Wrong import order** | Importing People before Companies | Always import parents first, then children |
-| **Wrong domain format** | Using `acme.com` instead of `https://acme.com` | Use full URL format with `https://` |
-| **Multiple unique fields** | Mapping both `companyId` AND `companyDomain` | Map only ONE unique identifier |
-| **Missing relation field** | The relation field doesn't exist in the data model | Create it in **Settings → Data Model** before importing |
-| **Non-existent records** | The parent record doesn't exist in Twenty | Import parent records first, or check for typos |
-| **Case mismatch** | `Acme.com` in file but `acme.com` in Twenty | Ensure exact case matching |
+| ミス | 問題 | 解決策 |
+| ------------------ | ------------------------------------------- | ----------------------------- |
+| **インポート順の誤り** | 会社より先に連絡先をインポートしている | 常に親を先に、次に子をインポートする |
+| **ドメイン形式の誤り** | `https://acme.com` ではなく `acme.com` を使用している | `https://` を含む完全な URL 形式を使用する |
+| **複数の一意フィールド** | `companyId` と `companyDomain` の両方をマッピングしている | 一意の識別子は 1 つだけマッピングする |
+| **リレーションフィールドがない** | データモデルにリレーションフィールドが存在しない | インポート前に **設定 → データモデル** で作成する |
+| **存在しないレコード** | 親レコードが Twenty に存在しない | 先に親レコードをインポートするか、タイプミスを確認する |
+| **大文字小文字の不一致** | ファイルでは `Acme.com`、Twenty では `acme.com` | 大文字小文字が完全に一致していることを確認する |
-## Linking to Workspace Members
+## ワークスペースメンバーへのリンク
-When linking to Workspace Members (your team):
+ワークスペースメンバー(あなたのチーム)にリンクする場合:
-* Use their **email address**, not their name
-* Example: `owner@yourcompany.com`, not "John Smith"
+* 名前ではなく**メールアドレス**を使用する
+* 例:`owner@yourcompany.com`、"John Smith" ではなく
```csv
taskName,assignedTo
@@ -176,53 +176,53 @@ Review proposal,jane@yourcompany.com
## FAQ
-
- You have two options:
+
+ 次の 2 つの選択肢があります:
- 1. Use the Twenty `id` (export parent records to get their IDs)
- 2. Create a custom unique field in your data model to store an external ID from your previous system
+ 1. Twenty の `id` を使用する(親レコードをエクスポートして ID を取得)
+ 2. データモデルにカスタムの一意フィールドを作成し、以前のシステムの外部 ID を保存する
-
- Yes! Include the child record's unique identifier (e.g., `email` for People) and the new relation value. The import will update the relation.
+
+ はい! 子レコードの一意の識別子(例:連絡先なら `email`)と新しいリレーションの値を含めてください。 インポートによってリレーションが更新されます。
-
- Many-to-Many relations are not yet supported for import. This is planned for H1 2026.
+
+ 多対多のリレーションは、現時点ではインポートに対応していません。 これは 2026 年上期に対応予定です。
-
- Relations pointing to multiple object types are not yet supported for import/export. This is on our roadmap.
+
+ 複数のオブジェクトタイプを指すリレーションは、現時点ではインポート/エクスポートに対応していません。 これはロードマップにあります。
-
- The import will show an error for that row. You can either:
+
+ その行に対してエラーが表示されます。 次のいずれかを行うことができます。
- * Import the parent record first, then re-import
- * Fix the reference value
- * Remove the row from import
+ * 先に親レコードをインポートしてから再インポートする
+ * 参照値を修正する
+ * インポート対象からその行を削除する
-
- Common causes:
+
+ よくある原因:
- * Wrong format (use `https://domain.com` for domains)
- * Case mismatch (check exact spelling)
- * Parent doesn't exist (import parents first)
- * Mapping multiple identifiers (use only one)
+ * 形式の誤り(ドメインには `https://domain.com` を使用)
+ * 大文字小文字の不一致(綴りを正確に確認)
+ * 親が存在しない(先に親をインポート)
+ * 複数の識別子をマッピングしている(1 つだけを使用)
- **Remember: Soft-deleted records count toward uniqueness.**
+ **注意: 論理削除されたレコードも一意性の判定に含まれます。**
- If you're getting "not found" errors but the record seems to exist, check Command Menu → See deleted records. The parent may have been soft-deleted.
+ 「not found」エラーが出るのにレコードが存在するように見える場合は、Command Menu → See deleted records を確認してください。 親が論理削除されている可能性があります。
-## Troubleshooting
+## トラブルシューティング
-Having issues? Check:
+お困りですか? 次を確認してください:
-* [How to Fix Import Errors](/l/ja/user-guide/data-migration/how-tos/fix-import-errors)
-* [Import Relations Capabilities](/l/ja/user-guide/data-migration/capabilities/import-relations)
-* [Uniqueness Constraints](/l/ja/user-guide/data-migration/capabilities/uniqueness-constraints)
+* [インポートエラーを解決する方法](/l/ja/user-guide/data-migration/how-tos/fix-import-errors)
+* [リレーションのインポート機能](/l/ja/user-guide/data-migration/capabilities/import-relations)
+* [一意性制約](/l/ja/user-guide/data-migration/capabilities/uniqueness-constraints)
diff --git a/packages/twenty-docs/l/ja/user-guide/data-migration/how-tos/migrating-from-other-crms.mdx b/packages/twenty-docs/l/ja/user-guide/data-migration/how-tos/migrating-from-other-crms.mdx
index 65bf3cf811..dade2a0396 100644
--- a/packages/twenty-docs/l/ja/user-guide/data-migration/how-tos/migrating-from-other-crms.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/data-migration/how-tos/migrating-from-other-crms.mdx
@@ -1,133 +1,133 @@
---
-title: Migrating from Other CRMs
-description: Step-by-step guide to migrate your data from any CRM to Twenty.
+title: 他のCRMからの移行
+description: 任意の CRM から Twenty へデータを移行するためのステップバイステップガイド。
---
-## Overview
+## 概要
-This guide walks you through migrating your data from any CRM to Twenty. The process involves auditing your data, preparing your Twenty workspace, exporting from your current system, and importing into Twenty.
+このガイドでは、任意の CRM から Twenty へデータを移行する手順を説明します。 このプロセスには、データの監査、Twenty ワークスペースの準備、現在のシステムからのエクスポート、および Twenty へのインポートが含まれます。
-Views, workflows, and permissions must be recreated manually after migration. Plan time for this configuration work.
+移行後、ビュー、ワークフロー、権限は手動で再作成する必要があります。 この構成作業のための時間を確保してください。
-## Step 1: Audit Your Current Data
+## ステップ 1: 現在のデータを監査する
-Migration is an opportunity for a fresh start. Don't bring over clutter.
+移行は新たなスタートの好機です。 不要なデータは持ち込まないでください。
-**What to keep:**
+**保持するもの:**
-* Active contacts and companies
-* Open opportunities and deals
-* Important notes and activities
-* Custom fields you actually use
+* アクティブな連絡先と会社
+* 進行中の商談やディール
+* 重要なメモとアクティビティ
+* 実際に使用しているカスタムフィールド
-**What to leave behind:**
+**除外するもの:**
-* Outdated contacts (no activity in 2+ years)
-* Duplicate records
-* Test data
-* Unused custom fields
+* 古い連絡先(2年以上アクティビティがないもの)
+* 重複レコード
+* テストデータ
+* 未使用のカスタムフィールド
-## Step 2: Map Your Data Model
+## ステップ 2: データモデルをマッピングする
-Create a mapping document between your current CRM and Twenty:
+現在の CRM と Twenty の間のマッピングドキュメントを作成します:
-| Your CRM | Twenty |
-| ---------------------- | -------------------- |
-| Account / Organization | **Company** |
-| Contact / Person | **People** |
-| Deal / Opportunity | **Opportunity** |
-| Activity | **Task** or **Note** |
-| Custom Object | **Custom Object** |
+| お使いの CRM | Twenty |
+| ---------- | ------------------ |
+| アカウント / 組織 | **会社** |
+| 連絡先 / 人 | **連絡先** |
+| ディール / 商談 | **商談** |
+| アクティビティ | **タスク** または **メモ** |
+| カスタムオブジェクト | **カスタムオブジェクト** |
-**For each field, document:**
+**各フィールドごとに、次を記録します:**
-* The source field name
-* The target Twenty field
-* Any format transformations needed (dates, phone numbers, etc.)
+* ソースフィールド名
+* 移行先の Twenty フィールド
+* 必要な形式変換(例:日付、電話番号など)
-Keep this mapping document handy during import—you'll reference it when mapping columns.
+インポート中はこのマッピングドキュメントを手元に置いてください—列のマッピング時に参照します。
-## Step 3: Set Up Your Twenty Workspace
+## ステップ 3: Twenty ワークスペースを設定する
-Before importing data, prepare your Twenty workspace:
+データをインポートする前に、Twenty ワークスペースを準備します:
-### Create Custom Objects and Fields
+### カスタムオブジェクトとフィールドを作成
-1. Go to **Settings → Data Model**
-2. Create any custom objects you need
-3. Add custom fields to standard and custom objects
-4. Configure field settings (unique, required, select options, etc.)
+1. **設定 → データモデル** に移動
+2. 必要なカスタムオブジェクトを作成する
+3. 標準オブジェクトおよびカスタムオブジェクトにカスタムフィールドを追加する
+4. フィールドの設定(一意、必須、選択肢など)を構成する
- **Fields must exist before import.**
+ **インポート前にフィールドが存在している必要があります。**
- The CSV import creates records, not fields. Create all custom fields in Settings → Data Model before importing.
+ CSV インポートはレコードを作成します。フィールドは作成しません。 インポート前に **設定 → データモデル** でカスタムフィールドをすべて作成してください。
-### Invite Your Team
+### チームを招待
- **Invite users BEFORE importing data.**
+ **重要: データをインポートする前にユーザーを招待してください。**
- If your data includes user references (Account Owner, Assignee, etc.), those users must exist in Twenty before import. Otherwise, those relations cannot be mapped.
+ データにユーザー参照(アカウント所有者、担当者など)が含まれる場合、それらのユーザーはインポート前に Twenty 上に存在している必要があります。 そうでない場合、それらのリレーションはマッピングできません。
-1. Go to **Settings → Members**
-2. Invite all team members
-3. **Wait for everyone to accept** their invitation
-4. Verify all users appear in your Members list
+1. **設定 → メンバー** に移動
+2. すべてのチームメンバーを招待する
+3. **全員が招待を受諾するのを待つ**
+4. メンバー一覧にすべてのユーザーが表示されていることを確認する
-## Step 4: Export from Your Current CRM
+## ステップ 4: 現在の CRM からエクスポートする
-Export your data from your current CRM:
+現在の CRM からデータをエクスポートします:
-1. Look for an **Export** function (usually under Settings, Data Management, or Admin)
-2. Export to **CSV format** when possible
-3. Export each object type separately (Companies, Contacts, Deals, etc.)
-4. Include all fields you want to migrate
+1. 通常は設定、データ管理、管理の下にある **エクスポート** 機能を探します
+2. 可能であれば **CSV 形式** でエクスポートする
+3. 各オブジェクトタイプを個別にエクスポートする(会社、連絡先、商談など)
+4. 移行したいすべてのフィールドを含める
-**Export these objects (in this order for reference):**
+**次のオブジェクトをエクスポートします(この順序で):**
-1. Companies / Accounts / Organizations
-2. Contacts / People
-3. Deals / Opportunities
-4. Notes and Activities
-5. Custom objects
+1. 会社 / アカウント / 組織
+2. 連絡先 / 人
+3. ディール / 商談
+4. メモとアクティビティ
+5. カスタムオブジェクト
-## Step 5: Clean and Format Your Data
+## ステップ 5: データをクリーンアップして整形する
-Open each exported CSV in a spreadsheet application and prepare it for Twenty.
+エクスポートした各 CSV を表計算アプリで開き、Twenty 用に準備します。
-### Remove Duplicates
+### 重複を削除
-1. Sort by the unique field (email for People, domain for Companies)
-2. Remove or merge duplicate rows
-3. Verify no duplicates exist in Twenty already
+1. 一意のフィールドで並べ替える(連絡先はメール、会社はドメイン)
+2. 重複行を削除または統合する
+3. Twenty にすでに重複が存在しないことを確認する
-### Format Fields Correctly
+### フィールドの形式を正しく整える
-| Field Type | Required Format |
-| ----------------- | ------------------------------------------------- |
-| **Domain** | `https://domain.com` |
-| **Email** | `name@domain.com` (must be unique) |
-| **Date** | `YYYY-MM-DD` |
-| **Phone** | Three columns: Number, Country Code, Calling Code |
-| **Boolean** | `TRUE` or `FALSE` (uppercase) |
-| **Select fields** | Use API names, not display labels |
+| フィールドタイプ | 必須の形式 |
+| ----------- | ------------------------------- |
+| **ドメイン** | `https://domain.com` |
+| **メール** | `name@domain.com`(一意である必要があります) |
+| **日付** | `YYYY-MM-DD` |
+| **電話** | 3 列: 番号、国コード、Calling Code |
+| **ブール型** | `TRUE` または `FALSE`(大文字) |
+| **選択フィールド** | 表示ラベルではなく API 名を使用する |
- **Domain format is critical.**
+ **ドメインの形式は重要です。**
- Use `https://domain.com` (not `domain.com` or `www.domain.com`). This matches Twenty's format and prevents duplicates when you connect email/calendar sync.
+ `https://domain.com` を使用してください(`domain.com` や `www.domain.com` ではありません)。 これは Twenty の形式に一致し、メール/カレンダー同期を接続した際の重複を防ぎます。
-See [How to Prepare Your CSV Files](/l/ja/user-guide/data-migration/how-tos/prepare-your-csv-files) for complete formatting requirements for all field types.
+すべてのフィールドタイプに関する完全な書式要件は、[CSV ファイルを準備する方法](/l/ja/user-guide/data-migration/how-tos/prepare-your-csv-files) を参照してください。
-### Add Relation Columns
+### リレーション列を追加
-To link records (e.g., People to Companies), add a column with the parent's unique identifier.
+レコードをリンクするには(例:連絡先を会社にリンク)、親の一意の識別子を含む列を追加します。
-**Example: People CSV with Company link**
+**例:会社リンク付きの連絡先 CSV**
```csv
firstName,lastName,email,companyDomain
@@ -135,159 +135,159 @@ John,Smith,john@acme.com,https://acme.com
Jane,Doe,jane@widgets.co,https://widgets.co
```
-See [How to Import Relations](/l/ja/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv) for detailed instructions on linking records.
+レコードをリンクする手順の詳細は、[リレーションをインポートする方法](/l/ja/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv) を参照してください。
-### Update User References
+### ユーザー参照を更新
-If your data includes user assignments (Owner, Assignee):
+データにユーザーの割り当て(所有者、担当者)が含まれる場合:
-1. Add a column with the **user's email** (not just their ID from the old system)
-2. Use the same email addresses that users used to join your Twenty workspace
+1. **ユーザーのメールアドレス** の列を追加する(古いシステムの ID だけでは不可)
+2. ユーザーが Twenty のワークスペースに参加した際に使用したものと同じメールアドレスを使用してください。
-See [How to Prepare Your CSV Files](/l/ja/user-guide/data-migration/how-tos/prepare-your-csv-files) for complete formatting guide.
+完全な書式ガイドは、[CSV ファイルを準備する方法](/l/ja/user-guide/data-migration/how-tos/prepare-your-csv-files) を参照してください。
-## Step 6: Import to Twenty
+## ステップ 6: Twenty にインポートする
- **Import Order Matters!**
+ **インポート順は重要です!**
- Always import in this order:
+ 必ずこの順序でインポートします:
- 1. **Companies** first (no dependencies)
- 2. **People** second (link to Companies)
- 3. **Opportunities** third (link to Companies/People)
- 4. **Notes and Tasks** (link to records)
- 5. **Custom objects** following their dependencies
+ 1. 最初に **会社**(依存関係なし)
+ 2. 次に **連絡先**(会社にリンク)
+ 3. 3 番目に **商談**(会社/連絡先にリンク)
+ 4. **メモとタスク**(レコードにリンク)
+ 5. **カスタムオブジェクト**(依存関係に従って)
- The parent record must exist before you can reference it.
+ 参照する前に、親レコードが存在している必要があります。
-### Import Each Object
+### 各オブジェクトをインポート
-For each CSV file, in order:
+各 CSV ファイルについて、順番に実行します:
-1. Navigate to the object in Twenty
-2. Click **⋮ → Import records**
-3. Upload the CSV file
-4. Map columns to fields:
- * Map user email columns to the appropriate relation fields
- * Map relation columns (like `companyDomain`) to relation fields
-5. Review and fix any errors in the UI
-6. Confirm the import
-7. Verify a few records before proceeding to the next file
+1. Twenty の対象オブジェクトに移動します
+2. **⋮ → Import records** をクリックします
+3. CSV ファイルをアップロードします
+4. 列をフィールドにマッピングします:
+ * ユーザーのメールアドレス列を適切なリレーションフィールドにマッピングします
+ * リレーション列(`companyDomain` など)をリレーションフィールドにマッピングします
+5. UI でエラーを確認して修正します
+6. インポートを確定します
+7. 次のファイルに進む前に、いくつかのレコードを確認します
-**Detailed guides:**
+**詳細ガイド:**
-* [How to Import Companies](/l/ja/user-guide/data-migration/how-tos/import-companies-via-csv)
-* [How to Import Contacts](/l/ja/user-guide/data-migration/how-tos/import-contacts-via-csv)
-* [How to Import Relations](/l/ja/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv)
+* [会社をインポートする方法](/l/ja/user-guide/data-migration/how-tos/import-companies-via-csv)
+* [連絡先をインポートする方法](/l/ja/user-guide/data-migration/how-tos/import-contacts-via-csv)
+* [リレーションをインポートする方法](/l/ja/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv)
-## Step 7: Large Migrations (50,000+ Records)
+## ステップ 7: 大規模な移行(5 万件以上のレコード)
-For large migrations:
+大規模な移行の場合:
-| Volume | Recommended Approach |
-| ----------------------- | ----------------------------- |
-| Under 10,000 records | Single CSV import |
-| 10,000 - 50,000 records | Split into multiple CSV files |
-| 50,000+ records | Use the API |
+| 件数 | 推奨アプローチ |
+| -------- | ----------------- |
+| 1 万件未満 | 単一の CSV インポート |
+| 1 万〜5 万件 | 複数の CSV ファイルに分割する |
+| 5 万件以上 | API を使用する |
-**For API imports:**
+**API でのインポートについて:**
-* Faster and more reliable for large datasets
-* Supports batch operations (up to 60 records per call)
-* See [How to Import Data via API](/l/ja/user-guide/data-migration/how-tos/import-data-via-api)
+* 大規模データセットでは高速で信頼性が高い
+* バッチ処理に対応(1 回の呼び出しで最大 60 レコード)
+* 詳細は [API でデータをインポートする方法](/l/ja/user-guide/data-migration/how-tos/import-data-via-api) を参照
-## Step 8: Post-Migration Setup
+## ステップ 8: 移行後のセットアップ
-After importing data, complete your workspace configuration:
+データのインポート後、ワークスペースの設定を完了します:
-### Recreate Views
+### ビューを再作成
-* Set up saved views with filters, sorts, and column configurations
-* Create any kanban or calendar views you need
+* フィルター、並べ替え、列の構成を含む保存済みビューを設定します
+* 必要なカンバンビューやカレンダービューを作成します
-### Recreate Workflows
+### ワークフローを再作成
-* Rebuild your automations in **Settings → Workflows**
-* Start with the most critical workflows
-* Test each one before relying on it
+* **設定 → ワークフロー** で自動化を再構築します
+* 最も重要なワークフローから開始する
+* 運用に入れる前に各ワークフローをテストします
-### Configure Roles and Permissions
+### 役割と権限の設定
-* Set up roles in **Settings → Roles**
-* Assign users to appropriate roles
+* **設定 → 役割** で役割を設定します
+* ユーザーに適切な役割を割り当てます
-### Connect Email and Calendar
+### メールとカレンダーの連携
-* Each user connects their own account in **Settings → Accounts**
-* Twenty will start syncing emails to contact records
-* See [Email & Calendar](/l/ja/user-guide/calendar-emails/overview)
+* 各ユーザーは **設定 → アカウント** で自分のアカウントを接続します
+* Twenty がメールを連絡先レコードと同期し始めます
+* [メールとカレンダー](/l/ja/user-guide/calendar-emails/overview) を参照
-### Train Your Team
+### チームのトレーニング
-* Walk through the new interface together
-* Document any team-specific processes
+* 新しいインターフェースを一緒に確認する
+* チーム固有のプロセスを文書化する
-## Common Issues and Solutions
+## 一般的な問題と解決策
-| Issue | Cause | Solution |
-| ----------------------- | --------------------------- | ------------------------------------------------------------------------------------ |
-| **Duplicate errors** | Email/domain already exists | Remove duplicates from file, or include unique identifier to update existing records |
-| **Relation not found** | Parent record doesn't exist | Import parent objects first (Companies before People) |
-| **Missing fields** | Custom field doesn't exist | Create field in Settings → Data Model before importing |
-| **Select field errors** | Using display labels | Use API names (enable Advanced mode in Settings to find them) |
-| **User relation empty** | User hasn't accepted invite | Ensure all users accept invitations before importing |
+| 問題 | 原因 | 解決策 |
+| ------------------ | ---------------- | -------------------------------------------- |
+| **重複エラー** | メール/ドメインがすでに存在する | ファイルから重複を削除するか、一意の識別子を含めて既存のレコードを更新する |
+| **リレーションが見つかりません** | 親レコードが存在しない | 親オブジェクトを先にインポートする(連絡先の前に会社) |
+| **不足しているフィールド** | カスタムフィールドが存在しない | インポート前に **設定 → データモデル** でフィールドを作成する |
+| **選択フィールドのエラー** | 表示ラベルを使用している | API 名を使用する(設定で詳細モードを有効にして確認) |
+| **ユーザーのリレーションが空** | ユーザーが招待を受諾していない | データをインポートする前に、すべてのユーザーが招待を受諾していることを確認してください。 |
-See [How to Fix Import Errors](/l/ja/user-guide/data-migration/how-tos/fix-import-errors) for detailed troubleshooting steps.
+詳細なトラブルシューティング手順は、[インポートエラーを解決する方法](/l/ja/user-guide/data-migration/how-tos/fix-import-errors) を参照してください。
-## Post-Migration Checklist
+## ポスト移行チェックリスト
-### Data Integrity
+### データの整合性
-All records imported (compare counts with source system)
-Relations working correctly (People linked to Companies)
-User assignments mapped correctly (Owner, Assignee)
-Custom fields populated
-No unexpected duplicates
+すべてのレコードがインポートされた(ソースシステムの件数と比較)
+リレーションが正常に機能している(連絡先が会社にリンク)
+ユーザーの割り当てが正しくマッピングされている(所有者、担当者)
+カスタムフィールドが入力されている
+想定外の重複がない
-### Configuration
+### 構成
-Views recreated
-Workflows recreated and tested
-Roles and permissions configured
-Email/calendar sync connected
+ビューを再作成済み
+ワークフローを再作成しテスト済み
+役割と権限を設定済み
+メール/カレンダー同期を接続済み
-### Team Readiness
+### チームの準備状況
-Team trained on new system
-Old CRM access plan decided (keep for reference? When to disable?)
+新しいシステムについてチームをトレーニング済み
+旧 CRM のアクセス計画を決定(参照用に保持する? いつ無効化するか?)
## FAQ
-
- Not currently. Workflows must be recreated manually in Twenty.
+
+ 現時点ではできません。 ワークフローは Twenty で手動で再作成する必要があります。
-
- File attachments are not included in CSV exports. You'll need to re-upload them manually, migrate via API, or contact our team for assistance.
+
+ CSV のエクスポートにはファイル添付は含まれません。 手動で再アップロードするか、API で移行するか、サポートが必要な場合は弊社チームにご連絡ください。
-
- Yes, we recommend keeping your old CRM running until you've verified the migration is complete. Just be careful not to create new data in both places.
+
+ はい、移行が完了したことを確認するまでは、旧 CRM を稼働させておくことを推奨します。 ただし、両方の環境で新しいデータを作成しないよう注意してください。
-
- Depends on data volume and complexity. Small migrations (under 10,000 records) can be done in a few hours. Large migrations may take several days including data cleanup and testing.
+
+ データの量と複雑さによります。 小規模な移行(1 万件未満)は数時間で完了します。 大規模な移行は、データのクリーンアップやテストを含め、数日かかる場合があります。
-## Need Help?
+## ヘルプが必要ですか?
-For complex migrations or large datasets:
+複雑な移行や大規模なデータセットの場合:
-* **Guided setup:** Book a 4-hour onboarding pack
-* **Full migration service:** Our partners can handle the entire migration
+* **ガイド付きセットアップ:** 4 時間のオンボーディングパックを予約する
+* **フル移行サービス:** パートナーが移行全体に対応できます
-Contact [contact@twenty.com](mailto:contact@twenty.com) or explore our [Implementation Services](/l/ja/user-guide/getting-started/capabilities/implementation-services).
+[contact@twenty.com](mailto:contact@twenty.com) までご連絡いただくか、[導入支援サービス](/l/ja/user-guide/getting-started/capabilities/implementation-services)をご覧ください。
diff --git a/packages/twenty-docs/l/ja/user-guide/data-migration/how-tos/migrating-from-self-hosted-to-cloud.mdx b/packages/twenty-docs/l/ja/user-guide/data-migration/how-tos/migrating-from-self-hosted-to-cloud.mdx
index dc1baa38a4..de9fd117b4 100644
--- a/packages/twenty-docs/l/ja/user-guide/data-migration/how-tos/migrating-from-self-hosted-to-cloud.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/data-migration/how-tos/migrating-from-self-hosted-to-cloud.mdx
@@ -1,171 +1,171 @@
---
-title: Migrating from Self-Hosted to Cloud
-description: Step-by-step guide to migrate your Twenty self-hosted instance to Twenty Cloud.
+title: セルフホストからクラウドへの移行
+description: Twenty のセルフホストのインスタンスを Twenty Cloud に移行するためのステップバイステップガイド。
---
-## Overview
+## 概要
-This guide walks you through migrating your data from a Twenty self-hosted instance to Twenty Cloud. The process involves setting up your cloud workspace, exporting your data, and re-importing it.
+このガイドでは、Twenty のセルフホストのインスタンスから Twenty Cloud へデータを移行する手順を説明します。 クラウドのワークスペースをセットアップし、データをエクスポートしてから再インポートする流れです。
-Views, workflows, and roles must be recreated manually after migration. Plan time for this configuration work.
+移行後、ビュー、ワークフロー、役割は手動で再作成する必要があります。 この構成作業のための時間を確保してください。
-## Step 1: Create Your Cloud Workspace
+## ステップ 1: クラウドワークスペースを作成する
-1. Go to [app.twenty.com](https://app.twenty.com) and create a new workspace
-2. Complete the initial setup wizard
-3. Note your new workspace URL
+1. [app.twenty.com](https://app.twenty.com) にアクセスし、新しいワークスペースを作成します
+2. 初期セットアップウィザードを完了します
+3. 新しいワークスペースの URL を控えておきます
-## Step 2: Recreate Your Data Model
+## ステップ 2: データモデルを再作成する
-Before importing data, recreate your custom objects and fields:
+データをインポートする前に、カスタムオブジェクトとフィールドを再作成してください:
-1. Go to **Settings → Data Model** in your cloud instance
-2. Create custom objects that match your self-hosted setup
-3. Add custom fields to standard and custom objects
-4. Configure field settings (unique, required, etc.)
+1. クラウドのインスタンスで **設定 → データモデル** に移動します
+2. セルフホスト環境の設定に一致するカスタムオブジェクトを作成します
+3. 標準オブジェクトおよびカスタムオブジェクトにカスタムフィールドを追加します
+4. フィールドの設定(一意、必須など)を行います
-Take screenshots of your self-hosted data model for reference, or keep both instances open side by side.
+参照用にセルフホスト環境のデータモデルのスクリーンショットを撮るか、両方のインスタンスを並べて開いたままにしておきましょう。
-## Step 3: Invite All Users
+## ステップ 3: すべてのユーザーを招待する
- **Critical: Invite users BEFORE importing data.**
+ **重要: データをインポートする前にユーザーを招待してください。**
- Users must accept their invitations before you import any records that reference them (like Account Owner fields). If users don't exist yet, those relations cannot be mapped.
+ ユーザーを参照するレコード(例: Account Owner フィールド)をインポートする前に、ユーザーは招待を受諾している必要があります。 ユーザーがまだ存在しない場合、それらのリレーションはマッピングできません。
-1. Go to **Settings → Members** in your cloud instance
-2. Invite all team members who had accounts on self-hosted
-3. **Wait for everyone to accept** their invitation
-4. Verify all users appear in your Members list
+1. クラウドのインスタンスで **設定 → メンバー** に移動します
+2. セルフホストでアカウントを持っていたチームメンバー全員を招待します
+3. **全員が招待を受諾するのを待ちます**
+4. メンバー一覧にすべてのユーザーが表示されていることを確認します
-## Step 4: Export Data from Self-Hosted
+## ステップ 4: セルフホストからデータをエクスポートする
-Export each object from your self-hosted instance:
+セルフホストのインスタンスから各オブジェクトをエクスポートします:
-1. Navigate to each object (Companies, People, Opportunities, etc.)
-2. Configure the view to show **all columns** you want to migrate
-3. Click **⋮ → Export view**
-4. Save each CSV file with a clear name (e.g., `companies-export.csv`)
+1. 各オブジェクト(会社、連絡先、商談など)に移動します
+2. 移行したい**すべての列**が表示されるようにビューを設定します
+3. **⋮ → Export view** をクリックします
+4. 各 CSV ファイルをわかりやすい名前で保存します(例: `companies-export.csv`)
-**Export in this order** (for reference when importing):
+インポート時の参照のため、**この順序でエクスポート**してください:
-1. Companies
-2. People
-3. Opportunities
-4. Custom objects (following their dependencies)
-5. Tasks, Notes
+1. 会社
+2. 人物
+3. 商談
+4. カスタムオブジェクト(依存関係に従って)
+5. タスク、メモ
-## Step 5: Update Workspace Member References
+## ステップ 5: ワークスペースのメンバー参照を更新する
-The exported CSVs contain user IDs from your self-hosted instance. These IDs won't match your cloud instance, so you need to replace them with emails.
+エクスポートした CSV には、セルフホストのインスタンスのユーザー ID が含まれています。 これらの ID はクラウドのインスタンスと一致しないため、メールアドレスに置き換える必要があります。
-**For each CSV file with user references (Owner, Assignee, etc.):**
+**ユーザー参照(Owner、Assignee など)がある各 CSV ファイルについて:**
-1. Open the CSV in a spreadsheet application
-2. Add a new column next to each user ID column (e.g., `accountOwnerEmail` next to `accountOwnerId`)
-3. Fill in the **email address** of each user
-4. You can delete the old ID column or leave it (it will be skipped during import)
+1. CSV をスプレッドシートアプリで開きます
+2. 各ユーザー ID 列の隣に新しい列を追加します(例: `accountOwnerId` の隣に `accountOwnerEmail`)
+3. 各ユーザーの**メールアドレス**を入力します
+4. 古い ID 列は削除しても残しても構いません(インポート時にスキップされます)
-**Example:**
+**例:**
-Before:
+以前:
```csv
name,domain,accountOwnerId
Acme Corp,https://acme.com,old-uuid-123
```
-After:
+以降:
```csv
name,domain,accountOwnerEmail
Acme Corp,https://acme.com,john@yourcompany.com
```
-Use the same email addresses that users used to accept their cloud workspace invitation.
+クラウドのワークスペース招待を受諾した際にユーザーが使用したものと同じメールアドレスを使用してください。
-## Step 6: Plan Your Import Order
+## ステップ 6: インポート順序を計画する
-Import files in the correct order to maintain relationships:
+リレーションを維持するため、正しい順序でファイルをインポートします:
-1. **Companies** first (no dependencies)
-2. **People** second (link to Companies)
-3. **Opportunities** third (link to Companies and People)
-4. **Custom objects** (following their dependencies)
-5. **Tasks and Notes** last (link to other records)
+1. 最初に**会社**(依存関係なし)
+2. 次に**連絡先**(会社にリンク)
+3. 3 番目に**商談**(会社および連絡先にリンク)
+4. **カスタムオブジェクト**(依存関係に従って)
+5. 最後に**タスクとメモ**(他のレコードにリンク)
-See [How to Import Relations](/l/ja/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv) for details on maintaining relationships.
+リレーションの維持方法の詳細は、[リレーションをインポートする方法](/l/ja/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv) を参照してください。
-## Step 7: Import to Cloud
+## ステップ 7: クラウドにインポートする
-For each CSV file, in order:
+各 CSV ファイルについて、順番に実行します:
-1. Navigate to the object in your cloud instance
-2. Click **⋮ → Import records**
-3. Upload the CSV file
-4. Map columns to fields:
- * Map user email columns to the appropriate relation fields
- * Map other columns as usual
-5. Review and fix any errors
-6. Confirm the import
-7. Verify a few records before proceeding to the next file
+1. クラウドのインスタンスで対象のオブジェクトに移動します
+2. **⋮ → Import records** をクリックします
+3. CSV ファイルをアップロードします
+4. 列をフィールドにマッピングします:
+ * ユーザーのメールアドレス列を適切なリレーションフィールドにマッピングします
+ * その他の列は通常どおりマッピングします
+5. エラーを確認して修正します
+6. インポートを確認します
+7. 次のファイルに進む前に、いくつかのレコードを確認します
-## Step 8: Recreate Configuration
+## ステップ 8: 設定を再作成する
-After importing data, manually recreate:
+データのインポート後、次の項目を手動で再作成します:
-### Views
+### ビュー
-* Recreate saved views with filters, sorts, and column configurations
-* Set up any kanban or calendar views
+* フィルター、並べ替え、列の構成を含む保存済みビューを再作成します
+* カンバンビューやカレンダービューを設定します
-### Workflows
+### ワークフロー
-* Recreate automations in **Settings → Workflows**
-* Test each workflow before relying on it
+* **設定 → ワークフロー** で自動化を再作成します
+* 運用に入れる前に各ワークフローをテストします
-### Roles and Permissions
+### 役割と権限
-* Configure roles in **Settings → Roles**
-* Assign users to appropriate roles
+* **設定 → 役割** で役割を設定します
+* ユーザーに適切な役割を割り当てます
-### Integrations
+### 統合
-* Reconnect email and calendar sync for each user
-* Reconfigure any API integrations with new API keys
+* 各ユーザーのメールおよびカレンダーの同期を再接続します
+* 新しい API キーで各種 API 連携を再設定します
-## Post-Migration Checklist
+## ポスト移行チェックリスト
-All data imported successfully
-Relations between objects working correctly
-User assignments (Owner, Assignee) mapped correctly
-Views recreated
-Workflows recreated and tested
-Roles and permissions configured
-Email/calendar sync reconnected
-API integrations updated with new keys
+すべてのデータが正常にインポートされている
+オブジェクト間のリレーションが正しく機能している
+ユーザーの割り当て(Owner、Assignee)が正しくマッピングされている
+ビューを再作成済み
+ワークフローを再作成し、テスト済み
+役割と権限を構成済み
+メール/カレンダーの同期を再接続済み
+API 連携を新しいキーで更新済み
## FAQ
-
- Not currently. Workflows must be recreated manually in your cloud instance.
+
+ 現時点ではできません。 ワークフローはクラウドのインスタンスで手動で再作成する必要があります。
-
- File attachments are not included in CSV exports. You'll need to re-upload any attachments manually, migrate them via API or contact our team for assistance with large migrations.
+
+ CSV のエクスポートにはファイルの添付は含まれません。 添付ファイルは手動で再アップロードするか、API で移行するか、大規模な移行については弊社チームにご連絡ください。
-
- Yes, we recommend keeping your self-hosted instance running until you've verified the cloud migration is complete. Just be careful not to create new data in both places.
+
+ はい、クラウドへの移行が完了したことを確認するまでは、セルフホストのインスタンスを稼働させておくことを推奨します。 ただし、両方の環境で新しいデータを作成しないようご注意ください。
-
- Records referencing that user will fail to import or the relation will be empty. Ensure all users accept invitations before importing data.
+
+ そのユーザーを参照するレコードはインポートに失敗するか、リレーションが空になります。 データをインポートする前に、すべてのユーザーが招待を受諾していることを確認してください。
-## Need Help?
+## ヘルプが必要ですか?
-For complex migrations or large datasets, contact us at [contact@twenty.com](mailto:contact@twenty.com) or explore our [Implementation Services](/l/ja/user-guide/getting-started/capabilities/implementation-services).
+複雑な移行や大規模なデータセットについては、[contact@twenty.com](mailto:contact@twenty.com) までご連絡いただくか、[導入支援サービス](/l/ja/user-guide/getting-started/capabilities/implementation-services)をご覧ください。
diff --git a/packages/twenty-docs/l/ja/user-guide/data-migration/how-tos/prepare-your-csv-files.mdx b/packages/twenty-docs/l/ja/user-guide/data-migration/how-tos/prepare-your-csv-files.mdx
index 6377c8783c..b86b29ab71 100644
--- a/packages/twenty-docs/l/ja/user-guide/data-migration/how-tos/prepare-your-csv-files.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/data-migration/how-tos/prepare-your-csv-files.mdx
@@ -1,200 +1,200 @@
---
-title: Prepare Your CSV Files
-description: Complete step-by-step guide to format your data for import into Twenty.
+title: CSV ファイルを準備する
+description: Twenty へのインポート用にデータをフォーマットするための、完全なステップバイステップガイド。
---
-## Overview
+## 概要
-This guide walks you through preparing your CSV file for a successful import. Follow these steps in order to avoid errors.
+このガイドは、インポートを成功させるための CSV ファイルの準備方法を順を追って説明します。 エラーを避けるために、次の手順に従ってください。
-## Step 1: Check File Requirements
+## ステップ 1: ファイル要件を確認する
-Before you start, ensure your file meets these requirements:
+開始する前に、ファイルが次の要件を満たしていることを確認してください。
-| Requirement | Details |
+| 要件 | 詳細 |
+| ------------ | --------------------- |
+| **形式** | CSV、XLSX、または XLS |
+| **サイズ上限** | 1 ファイルあたり 10,000 レコード |
+| **エンコーディング** | UTF-8 推奨 |
+| **構造** | ファイルごとに 1 つのオブジェクトタイプ |
+
+10,000 レコードを超えるデータセットは、複数のファイルに分割するか、[API インポート](/l/ja/user-guide/data-migration/how-tos/import-data-via-api)を使用してください。
+
+## ステップ 2: サンプルファイルをダウンロードする
+
+**これは最も重要なステップです。** サンプルファイルには、Twenty が想定する正確な列名と形式が示されています。
+
+1. オブジェクトビュー(People、Companies など)に移動します。
+2. 「**⋮**」→「**Import records**」をクリックします。
+3. 「**Download sample file**」をクリックします。
+4. このファイルをテンプレートとして使用してください。
+
+**プロのヒント:** 代わりに、既存のレコードを少数エクスポートします。 これにより、データのあるべきフォーマットの実例が得られ、インポート時に列名が自動的にマッピングされます。
+
+## ステップ 3: 重複値を削除する
+
+Twenty は一部のフィールドに一意性を強制します。 重複はインポートエラーの原因になります。
+
+| オブジェクト | 一意のフィールド |
| -------------- | ------------------------ |
-| **Format** | CSV, XLSX, or XLS |
-| **Size limit** | 10,000 records per file |
-| **Encoding** | UTF-8 recommended |
-| **Structure** | One object type per file |
+| **People** | `id`, `email` |
+| **会社** | `id`, `domain` |
+| **カスタムオブジェクト** | `id` に加え、一意に設定した任意のフィールド |
-For datasets larger than 10,000 records, split into multiple files or use the [API import](/l/ja/user-guide/data-migration/how-tos/import-data-via-api).
+**インポート前に:**
-## Step 2: Download the Sample File
+1. スプレッドシートを一意フィールド(email または domain)で並べ替えます。
+2. 重複行を削除または統合します。
+3. Twenty に既に存在する重複がないか確認します。
-**This is the most important step.** The sample file shows you the exact column names and format Twenty expects.
+**ソフト削除されたレコードも一意性の判定に含まれます。** Command Menu → See deleted records にあるレコードは重複エラーの原因になります。 それらを完全に削除するか、復元して更新してください。
-1. Go to the object view (People, Companies, etc.)
-2. Click **⋮** → **Import records**
-3. Click **Download sample file**
-4. Use this file as your template
+## ステップ 4: 各フィールドタイプを正しくフォーマットする
-**Pro tip:** Export a few existing records instead. This gives you real examples of how data should be formatted, and the column names will map automatically during import.
+フィールドタイプごとに必要な形式が異なります。 完全なリファレンスは次のとおりです。
-## Step 3: Remove Duplicate Values
+### テキストフィールド
-Twenty enforces uniqueness on certain fields. Duplicates will cause import errors.
+* 特別なフォーマットは不要です
+* 先頭/末尾の空白は自動的にトリムされます
-| Object | Unique Fields |
-| ------------------ | ----------------------------------------- |
-| **People** | `id`, `email` |
-| **Companies** | `id`, `domain` |
-| **Custom objects** | `id`, plus any field you marked as unique |
+### メールフィールド
-**Before importing:**
-
-1. Sort your spreadsheet by the unique field (email or domain)
-2. Remove or merge duplicate rows
-3. Check for duplicates that already exist in Twenty
-
-**Soft-deleted records count toward uniqueness.** Records in Command Menu → See deleted records will cause duplicate errors. Delete them permanently or restore and update them.
-
-## Step 4: Format Each Field Type Correctly
-
-Different field types require specific formats. Here's the complete reference:
-
-### Text Fields
-
-* No special formatting required
-* Leading/trailing spaces are automatically trimmed
-
-### Email Fields
-
-* Must be valid email format: `name@domain.com`
-* Must be unique (no duplicates in file or in Twenty)
-* For additional emails, use this format in the **Emails / Additional Emails** column:
+* 有効なメール形式である必要があります: `name@domain.com`
+* 一意である必要があります(ファイル内および Twenty 内に重複がないこと)
+* 追加のメールについては、**Emails / Additional Emails** 列で次の形式を使用します:
```
["jane@twenty.com","jane.doe@twenty.com"]
```
-### Domain Fields
+### ドメインフィールド
-* **Recommended format**: `https://domain.com`
-* This matches the format used by mailbox/calendar sync (prevents duplicates)
-* Fill both columns:
+* **推奨形式**: `https://domain.com`
+* これはメールボックス/カレンダーの同期で使用される形式と一致します(重複を防止)
+* 両方の列を入力してください。
* **Domain / Domain Label**: `domain.com`
* **Domain / Domain URL**: `https://domain.com`
-* Must be unique within your file and in Twenty
+* ファイル内および Twenty 内で一意である必要があります
-### Phone Fields
+### 電話番号フィールド
-Phone is a **nested field** requiring multiple columns:
+電話番号は、複数の列を必要とする**ネストされたフィールド**です:
-| Column | Example |
+| 列 | 例 |
| --------------------------------------- | ------------ |
| **Phones / Primary Phone Number** | `4159095555` |
| **Phones / Primary Phone Country Code** | `US` |
| **Phones / Primary Phone Calling Code** | `+1` |
-### Address Fields
+### 住所フィールド
-Address is a **nested field** with multiple columns (some can be left empty):
+住所は複数列からなる **入れ子のフィールド** です(空欄のままでよい列もあります):
-* **Address / Address 1**: Street address line 1
-* **Address / Address 2**: Street address line 2 (optional)
-* **Address / City**: City name
-* **Address / State**: State or province
-* **Address / Country**: Country name
-* **Address / Post Code**: Postal/ZIP code
+* **Address / Address 1**: 住所の 1 行目(番地など)
+* **Address / Address 2**: 住所の 2 行目(任意)
+* **Address / City**: 市区町村名
+* **Address / State**: 州または都道府県
+* **Address / Country**: 国名
+* **Address / Post Code**: 郵便番号(ZIP コード)
-### Date Fields
+### 日付フィールド
-Use consistent formatting throughout your file:
+ファイル全体で形式を統一してください:
-* `YYYY-MM-DD` (recommended): `2024-03-15`
+* `YYYY-MM-DD`(推奨): `2024-03-15`
* `MM/DD/YYYY`: `03/15/2024`
* `DD/MM/YYYY`: `15/03/2024`
* ISO 8601: `2024-03-15T10:30:00Z`
-### Number Fields
+### 数値フィールド
-* Numbers only (no text)
-* Use period for decimals: `1234.56`
-* No thousands separators (not `1,234.56`)
+* 数値のみ(テキスト不可)
+* 小数点はピリオドを使用: `1234.56`
+* 桁区切りを使用しない(`1,234.56` は不可)
-### Currency Fields
+### 通貨フィールド
-Currency is a **nested field** requiring two columns that **both must be filled**:
+通貨は **2 列を要する入れ子のフィールド** で、**両方に入力が必要** です:
-| Column | Example |
+| 列 | 例 |
| --------------------- | --------- |
| **Amount / Amount** | `1234.56` |
| **Amount / Currency** | `USD` |
-### Boolean Fields
+### ブール値フィールド
-Use uppercase: `TRUE` or `FALSE`
+大文字を使用: `TRUE` または `FALSE`
-Lowercase `true` or `false` will not work.
+小文字の `true` や `false` は動作しません。
-### Select Fields
+### 選択フィールド
-Use the **API name** of the option, not the display label.
+表示ラベルではなく、オプションの **API 名** を使用してください。
-**How to find API names:**
+**API 名の見つけ方:**
-1. Go to **Settings → Data Model**
-2. Select the object and field
-3. Enable **Advanced mode** (toggle at bottom right)
-4. Copy the API name (e.g., `OPTION_1`, not "Option 1")
+1. **設定 → データモデル** に移動する
+2. オブジェクトとフィールドを選択
+3. **高度なモード** を有効化(右下のトグル)
+4. API 名をコピー(例: `OPTION_1`。"Option 1" ではありません)
-New select options are not created automatically. Add them in **Settings → Data Model** before importing.
+新しい選択肢は自動的に作成されません。 インポート前に **設定 → データモデル** で追加してください。
-### Multi-Select Fields
+### 複数選択フィールド
-Use API names in array format:
+API 名を配列形式で記述します:
```
["VALUE1","VALUE2"]
```
-### Array Fields
+### 配列フィールド
-Use JSON array format:
+JSON 配列形式を使用します:
```
["value1","value2"]
```
-### Rating Fields
+### 評価フィールド
-Use the format: `RATING_1`, `RATING_2`, `RATING_3`, `RATING_4`, or `RATING_5`
+次の形式を使用: `RATING_1`、`RATING_2`、`RATING_3`、`RATING_4`、または `RATING_5`
-### Links/URL Fields
+### リンク/URL フィールド
-Fill both columns:
+両方の列を入力:
* **Links / Link Label**: `Twenty`
* **Links / Link URL**: `https://twenty.com`
-For secondary links, use the **Links / Secondary Links** column:
+二次リンクは **Links / Secondary Links** 列を使用します:
```
[{"url":"https://twenty.com","label":"Twenty"}]
```
-### JSON Fields
+### JSON フィールド
-Use valid JSON format:
+有効な JSON 形式を使用します:
```
{"key":"value","key2":"value2"}
```
-### ID Fields
+### ID フィールド
-* **Optional**: Twenty auto-generates IDs if not provided
-* **Format**: UUID (e.g., `c776ee49-f608-4a77-8cc8-6fe96ae1e43f`)
-* **Use case**: Include ID to update existing records instead of creating new ones
+* **任意**: 指定がない場合、Twenty が ID を自動生成します
+* **形式**: UUID(例: `c776ee49-f608-4a77-8cc8-6fe96ae1e43f`)
+* **用途**: 新規作成ではなく既存レコードを更新する場合は ID を含めます
-## Step 5: Add Relation Columns (If Linking Records)
+## 手順5: リレーション列を追加(レコードをリンクする場合)
-To link records to other objects (e.g., People to Companies), add a column with the unique identifier of the related record.
+レコードを他のオブジェクトにリンクするには(例: People を Companies にリンク)、関連レコードの一意の識別子を含む列を追加します。
-**Example**: Linking People to Companies
+**例**: People を Companies にリンク
-Add a column to your People CSV:
+People の CSV に列を追加:
```
firstName,lastName,email,companyDomain
@@ -202,69 +202,69 @@ John,Smith,john@acme.com,https://acme.com
Jane,Doe,jane@widgets.co,https://widgets.co
```
-**Important rules for relations:**
+**リレーションに関する重要なルール:**
-* The parent record must already exist in Twenty
-* Use the **Domain URL** format (`https://domain.com`), not the label
-* Map only ONE unique identifier (don't include both `companyId` AND `companyDomain`)
-* For Workspace Members, use their **email** (not name)
+* 親レコードは事前に Twenty に存在している必要があります
+* ラベルではなく **ドメイン URL** 形式(`https://domain.com`)を使用してください
+* 一意の識別子は 1 つだけマッピングしてください(`companyId` と `companyDomain` を両方含めない)
+* ワークスペースメンバーには **メールアドレス**(氏名ではなく)を使用してください
- **Import Order Matters!**
+ **インポート順序は重要です!**
- Import the "one" side before the "many" side:
+ 「1」側を「多」側より先にインポートしてください:
- 1. **Companies** first
- 2. **People** second (with company reference)
- 3. **Opportunities** third
+ 1. **会社** を先に
+ 2. **People** を 2 番目(会社参照付き)
+ 3. **商談** を 3 番目に
- The parent record must exist before you can reference it.
+ 参照する前に親レコードが存在している必要があります。
-See [How to Import Relations](/l/ja/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv) for detailed instructions.
+詳細な手順については、[リレーションをインポートする方法](/l/ja/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv)を参照してください。
-## Step 6: Ensure Fields Exist in Twenty
+## 手順6: Twenty にフィールドが存在することを確認
-The import creates **records**, not **fields**. All fields you want to import must already exist in your data model.
+インポートで作成されるのはフィールドではなくレコードです。 インポートしたいフィールドはすべて、あらかじめデータモデルに存在している必要があります。
-**Before importing:**
+**インポート前に:**
-1. Go to **Settings → Data Model**
-2. Select your object
-3. Create any custom fields you need
-4. Note the exact field names (they must match your column headers)
+1. **設定 → データモデル** に移動する
+2. 対象オブジェクトを選択する
+3. 必要なカスタムフィールドを作成する
+4. フィールド名の正確な表記を控える(列ヘッダーと一致している必要があります)
-## Step 7: Final Checklist
+## 手順7: 最終チェックリスト
-Before uploading your file, verify:
+ファイルをアップロードする前に、次を確認してください:
-File is CSV, XLSX, or XLS format
-File has fewer than 10,000 records
-Encoding is UTF-8
-No duplicate emails (for People) or domains (for Companies)
-Dates use consistent format throughout
-Domains use `https://domain.com` format
-Boolean fields use `TRUE` or `FALSE` (uppercase)
-Select fields use API names, not display labels
-All custom fields exist in Settings → Data Model
-Parent records imported before child records
-Relation columns reference existing records
+ファイル形式が CSV、XLSX、または XLS である
+ファイルのレコード数が 10,000 未満である
+エンコーディングが UTF-8 である
+(People)では重複するメールがなく、(Companies)では重複するドメインがない
+日付の形式が全体で統一されている
+ドメインが `https://domain.com` 形式である
+ブール値フィールドは `TRUE` または `FALSE`(大文字)を使用している
+選択フィールドは表示ラベルではなく API 名を使用している
+すべてのカスタムフィールドが 設定 → データモデル に存在する
+子レコードより先に親レコードをインポートしている
+リレーション列が既存レコードを参照している
-## Common Mistakes to Avoid
+## 避けるべき一般的なミス
-| Mistake | Solution |
-| -------------------------------------------- | ------------------------------------- |
-| Using `true` instead of `TRUE` | Boolean values must be uppercase |
-| Using display labels for Select fields | Find and use API names in Settings |
-| Importing People before Companies | Always import parent objects first |
-| Missing currency code for Currency fields | Fill both Amount and Currency columns |
-| Wrong domain format | Use `https://domain.com` consistently |
-| Mapping multiple unique fields for relations | Map only ONE (domain OR id, not both) |
+| 誤り | 解決策 |
+| -------------------------------- | --------------------------------------- |
+| `TRUE` の代わりに `true` を使用している | ブール値は大文字である必要があります |
+| 選択フィールドで表示ラベルを使用している | 設定で API 名を確認して使用する |
+| Companies より先に People をインポートしている | 常に親オブジェクトから先にインポートする |
+| 通貨フィールドで通貨コードが欠けている | Amount と Currency の両方の列を入力する |
+| ドメインの形式が誤っている | `https://domain.com` を一貫して使用する |
+| リレーションで複数の一意フィールドをマッピングしている | 1 つだけをマッピングする(domain か id のどちらかで、両方は不可) |
-## Next Steps
+## 次のステップ
-Your file is ready! Now:
+ファイルの準備ができました! 次へ:
-* [Import Companies](/l/ja/user-guide/data-migration/how-tos/import-companies-via-csv) (import these first)
-* [Import Contacts](/l/ja/user-guide/data-migration/how-tos/import-contacts-via-csv)
-* [Fix any import errors](/l/ja/user-guide/data-migration/how-tos/fix-import-errors)
+* [会社をインポート](/l/ja/user-guide/data-migration/how-tos/import-companies-via-csv)(これを先にインポート)
+* [コンタクトをインポート](/l/ja/user-guide/data-migration/how-tos/import-contacts-via-csv)
+* [インポートエラーを修正](/l/ja/user-guide/data-migration/how-tos/fix-import-errors)
diff --git a/packages/twenty-docs/l/ja/user-guide/data-migration/how-tos/update-existing-records-via-import.mdx b/packages/twenty-docs/l/ja/user-guide/data-migration/how-tos/update-existing-records-via-import.mdx
index 1d903a37c5..6ff5e9f8fd 100644
--- a/packages/twenty-docs/l/ja/user-guide/data-migration/how-tos/update-existing-records-via-import.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/data-migration/how-tos/update-existing-records-via-import.mdx
@@ -1,67 +1,67 @@
---
-title: Update Existing Records via Import
-description: Complete step-by-step guide to bulk updating records using CSV import.
+title: インポートで既存のレコードを更新する
+description: CSV インポートを使用したレコードの一括更新のための完全なステップバイステップガイド。
---
-## Overview
+## 概要
-Need to update many records at once? Instead of editing them one by one, use the CSV import to bulk update existing records.
+多数のレコードを一度に更新する必要がありますか? 1 件ずつ編集する代わりに、CSV インポートを使って既存のレコードを一括更新しましょう。
-**Use cases:**
+**ユースケース:**
-* Update job titles for multiple people
-* Change company information in bulk
-* Add data to new custom fields
-* Correct data errors across many records
+* 複数の連絡先の役職を更新する
+* 会社情報を一括で変更する
+* 新しいカスタムフィールドにデータを追加する
+* 多数のレコードにわたるデータの誤りを修正する
-## How It Works
+## 仕組み
-When you import a file containing a **unique identifier** that matches an existing record, Twenty updates that record instead of creating a duplicate.
+既存のレコードと一致する**一意の識別子**を含むファイルをインポートすると、Twenty は重複を作成せず、そのレコードを更新します。
-| If unique identifier... | Twenty will... |
-| -------------------------- | ------------------------------------------------ |
-| Matches an existing record | **Update** the existing record |
-| Doesn't match any record | **Create** a new record |
-| Is missing from your file | **Create** a new record (with auto-generated ID) |
+| 一意の識別子が... | Twenty は... |
+| ------------- | ------------------------ |
+| 既存のレコードに一致する | 既存のレコードを**更新** |
+| どのレコードにも一致しない | 新しいレコードを**作成** |
+| ファイルに含まれていない | 新しいレコードを**作成**(ID は自動生成) |
- **Multi-Select fields are overwritten, not merged.**
+ **複数選択フィールドはマージではなく上書きされます。**
- If a record has `Option A` and `Option B` selected, and you import `["Option C"]`, the record will only have `Option C` after import. The import replaces all previous selections—it does not add to them.
+ あるレコードで `Option A` と `Option B` が選択されている状態で `["Option C"]` をインポートすると、インポート後はそのレコードには `Option C` のみが残ります。 インポートは以前の選択をすべて置き換えます—追加はされません。
- To keep existing values, include them all in your import: `["Option A","Option B","Option C"]`
+ 既存の値を保持するには、インポートにすべて含めてください: `["Option A","Option B","Option C"]`
-## Step 1: Export Your Current Data
+## ステップ 1: 現在のデータをエクスポートする
-First, export the records you want to update:
+まず、更新したいレコードをエクスポートします。
-1. Navigate to the object (People, Companies, etc.)
-2. **Add the columns you need** — click **Options → Fields** to show the fields you want to update
-3. **Filter if needed** — narrow down to only the records you want to update
-4. Click **⋮** → **Export view**
-5. Save the CSV file
+1. オブジェクト(連絡先、会社など)に移動します。
+2. **必要な列を追加** — 更新したいフィールドを表示するには **Options → Fields** をクリックします
+3. **必要に応じてフィルター** — 更新対象のレコードのみに絞り込みます
+4. **⋮** → **Export view** をクリック
+5. CSV ファイルを保存します
-**Why export first?** The exported file has the correct format, includes unique identifiers, and maps automatically during import.
+**なぜ最初にエクスポートするのか?** エクスポートされたファイルは正しい形式で、一意の識別子を含み、インポート時に自動でマッピングされます。
-### What Gets Exported
+### エクスポートされる内容
-* All visible columns in your current view
-* The record's unique identifiers (`id`, `email`, `domain`)
-* Current field values you can modify
+* 現在のビューで表示されているすべての列
+* レコードの一意の識別子(`id`、`email`、`domain`)
+* 変更可能な現在のフィールド値
-## Step 2: Edit the CSV File
+## ステップ 2: CSV ファイルを編集する
-Open the exported file in your spreadsheet application (Excel, Google Sheets, etc.):
+エクスポートしたファイルを表計算アプリ(Excel、Google スプレッドシートなど)で開きます。
-1. **Keep the unique identifier column** — don't delete `id`, `email`, or `domain`
-2. **Update the values** in the columns you want to change
-3. **Remove columns you don't need to update** (optional, but cleaner)
-4. **Don't change unique identifier values** — or Twenty will create new records
+1. **一意の識別子の列は残す** — `id`、`email`、`domain` は削除しないでください
+2. 変更したい列の値を**更新**します
+3. **更新が不要な列は削除**(任意ですが、その方がすっきりします)
+4. **一意の識別子の値は変更しないでください** — 変更すると Twenty が新しいレコードを作成します
-### Example: Updating Job Titles
+### 例:役職の更新
-**Exported file:**
+**エクスポートしたファイル:**
```csv
id,email,firstName,lastName,jobTitle
@@ -70,7 +70,7 @@ id,email,firstName,lastName,jobTitle
550e8400-e29b-41d4-a716-446655440003,bob@acme.com,Bob,Johnson,Sales Rep
```
-**After your edits:**
+**編集後:**
```csv
id,email,firstName,lastName,jobTitle
@@ -80,63 +80,63 @@ id,email,firstName,lastName,jobTitle
```
- **Don't change the unique identifier values.**
+ **一意の識別子の値は変更しないでください。**
- If you change `john@acme.com` to `john.smith@acme.com`, Twenty will create a new record instead of updating the existing one.
+ `john@acme.com` を `john.smith@acme.com` に変更すると、Twenty は既存のレコードを更新せずに新しいレコードを作成します。
-## Step 3: Import the Updated File
+## ステップ 3: 更新したファイルをインポートする
-1. Navigate to the object
-2. Click **⋮** → **Import records**
-3. Upload your edited CSV file
-4. **Ensure the unique identifier is mapped** — verify `email`, `domain`, or `id` is mapped correctly
-5. Review the field mappings
-6. Check for errors
-7. Click **Confirm**
+1. 対象のオブジェクトに移動します
+2. **⋮** → **Import records** をクリック
+3. 編集した CSV ファイルをアップロードします
+4. **一意の識別子がマッピングされていることを確認** — `email`、`domain`、または `id` が正しくマッピングされているか検証します
+5. フィールドのマッピングを確認します
+6. エラーがないか確認します
+7. **Confirm** をクリック
-Twenty matches records by the unique identifier and updates them with new values.
+Twenty は一意の識別子でレコードを照合し、新しい値で更新します。
-## Choosing the Right Unique Identifier
+## 適切な一意の識別子の選び方
-| Object | Recommended | Alternative | Notes |
-| ------------------ | ---------------- | ----------- | ---------------------------- |
-| **People** | `email` | `id` | Email is human-readable |
-| **Companies** | `domain` | `id` | Domain is human-readable |
-| **Custom objects** | Any unique field | `id` | Use your custom unique field |
+| オブジェクト | 推奨 | 代替 | ノート |
+| -------------- | ---------- | ---- | ----------------- |
+| **連絡先** | `メール` | `id` | メールアドレスは人間が読みやすい |
+| **会社** | `ドメイン` | `id` | ドメインは人間が読みやすい |
+| **カスタムオブジェクト** | 任意の一意フィールド | `id` | カスタムの一意フィールドを使用する |
-**Use only ONE unique identifier.** Don't map both `email` AND `id`. This can cause confusion and errors.
+**一意の識別子は 1 つだけ使用してください。** `email` と `id` の両方をマッピングしないでください。 これは混乱やエラーの原因になります。
-### Using Custom Unique Fields
+### カスタムの一意フィールドを使用する
-If you have a custom field marked as unique (like an external ID from another system):
+一意としてマークされたカスタムフィールド(他システムの外部 ID など)がある場合:
-1. Include that field in your export and import
-2. Map it during import
-3. Twenty will match on that field
+1. そのフィールドをエクスポートとインポートに含めます
+2. インポート時にマッピングします
+3. Twenty はそのフィールドで照合します
-## Step 4: Verify the Updates
+## ステップ 4: 更新内容を確認する
-After importing:
+インポート後:
-1. Open a few updated records
-2. Verify the changes were applied
-3. Check that no duplicate records were created
+1. 更新されたレコードをいくつか開きます
+2. 変更が反映されていることを確認します
+3. 重複レコードが作成されていないことを確認します
-## What About Fields Not in Your File?
+## ファイルに含まれていないフィールドはどうなりますか?
-**Fields not included in your import file remain unchanged.**
+**インポートファイルに含まれていないフィールドは変更されません。**
-| Your file includes... | Result |
-| ---------------------------- | ------------------------------------------------------ |
-| `email`, `jobTitle` | Only `jobTitle` is updated; other fields stay the same |
-| `email`, `jobTitle`, `phone` | `jobTitle` and `phone` are updated |
+| ファイルに含まれている項目... | 結果 |
+| -------------------------- | -------------------------------- |
+| `email`、`jobTitle` | `jobTitle` のみ更新され、他のフィールドはそのままです |
+| `email`、`jobTitle`、`phone` | `jobTitle` と `phone` が更新されます |
-This means you only need to include the fields you want to change (plus the unique identifier).
+つまり、変更したいフィールド(+一意の識別子)だけを含めれば十分です。
-## Combining Updates and New Records
+## 更新と新規レコードの併用
-You can update existing records AND create new ones in the same import:
+同じインポートで既存レコードの更新と新規作成の両方が可能です。
```csv
email,firstName,lastName,jobTitle
@@ -144,55 +144,55 @@ john@acme.com,John,Smith,Senior Manager ← Updates existing (email matches)
newperson@acme.com,New,Person,Analyst ← Creates new (email doesn't match)
```
-## Common Mistakes to Avoid
+## 避けるべき一般的なミス
-| Mistake | Problem | Result | Solution |
-| ------------------------------ | ------------------------------------------------------- | -------------------------------------- | ----------------------------------------- |
-| **Changing unique identifier** | Changed `john@acme.com` to `john.smith@acme.com` | Creates new record instead of updating | Keep unique identifiers unchanged |
-| **Multiple unique fields** | Mapping both `email` AND `id` | Potential matching conflicts | Map only ONE unique identifier |
-| **No unique identifier** | File only has `firstName`, `lastName`, `jobTitle` | All rows create new records | Always include `email`, `domain`, or `id` |
-| **Case mismatch** | File has `John@acme.com` but Twenty has `john@acme.com` | Creates new record | Export from Twenty to get exact values |
+| ミス | 問題 | 結果 | 解決策 |
+| -------------- | --------------------------------------------------------- | ------------------- | -------------------------------- |
+| **一意の識別子の変更** | `john@acme.com` を `john.smith@acme.com` に変更した | 更新ではなく新しいレコードが作成される | 一意の識別子は変更しない |
+| **複数の一意フィールド** | `email` と `id` の両方をマッピングしている | 照合の競合が発生する可能性 | 一意の識別子は 1 つだけマッピングする |
+| **一意の識別子なし** | ファイルには `firstName`、`lastName`、`jobTitle` しかない | すべての行で新しいレコードが作成される | `email`、`domain`、または `id` を必ず含める |
+| **大文字小文字の不一致** | ファイルは `John@acme.com` だが、Twenty では `john@acme.com` になっている | 新しいレコードを作成する | 正確な値を取得するには Twenty からエクスポートする |
## FAQ
-
- Records with unique identifiers that don't match existing records will be created as new records. This lets you update and create in the same import.
+
+ 一意の識別子が既存レコードと一致しないレコードは新規レコードとして作成されます。 これにより、同じインポートで更新と新規作成の両方が可能になります。
-
- Yes, leave the cell empty in your CSV. The import will clear that field's value on the existing record.
+
+ はい、CSV のセルを空白のままにしてください。 インポートにより、既存レコードのそのフィールド値がクリアされます。
-
- Fields not in your import file remain unchanged on existing records. Only fields you include are updated.
+
+ インポートファイルにないフィールドは、既存レコード上で変更されません。 含めたフィールドのみが更新されます。
-
- Yes! Include the relation's unique identifier (e.g., `companyDomain`) and map it to the relation field. The relation will be updated.
+
+ はい! リレーションの一意の識別子(例:`companyDomain`)を含め、リレーションフィールドにマッピングします。 リレーションが更新されます。
-
- During the import review step, Twenty shows you how many records will be updated vs. created based on unique identifier matches.
+
+ インポートの確認ステップで、一意の識別子の一致に基づき、更新と作成の件数を Twenty が表示します。
-
- There's no automatic undo. We recommend exporting your data as a backup before making bulk updates.
+
+ 自動で元に戻す機能はありません。 一括更新の前に、バックアップとしてデータをエクスポートすることをお勧めします。
-## Best Practices
+## ベストプラクティス
-1. **Export first** — always start from an export to ensure correct format
-2. **Backup before updating** — export your data before making bulk changes
-3. **Test with a few records** — try updating 5-10 records first before doing a large batch
-4. **Use human-readable identifiers** — `email` and `domain` are easier to verify than `id`
-5. **Only include necessary columns** — fewer columns means less chance for errors
+1. **まずエクスポート** — 正しい形式を確実にするため、必ずエクスポートから始める
+2. **更新前にバックアップ** — 大量の変更を行う前にデータをエクスポートする
+3. **少数のレコードでテスト** — 大規模に実行する前に、まず 5~10 件で更新を試す
+4. **人間が読みやすい識別子を使用** — `id` よりも `email` と `domain` の方が検証しやすい
+5. **必要な列のみを含める** — 列が少ないほどエラーの可能性が減ります
-## Troubleshooting
+## トラブルシューティング
-Having issues? Check:
+お困りですか? 次を確認してください:
-* [How to Fix Import Errors](/l/ja/user-guide/data-migration/how-tos/fix-import-errors)
-* [Uniqueness Constraints](/l/ja/user-guide/data-migration/capabilities/uniqueness-constraints)
-* [Field Mapping Reference](/l/ja/user-guide/data-migration/capabilities/field-mapping)
+* [インポートエラーを解決する方法](/l/ja/user-guide/data-migration/how-tos/fix-import-errors)
+* [一意性制約](/l/ja/user-guide/data-migration/capabilities/uniqueness-constraints)
+* [フィールドマッピングのリファレンス](/l/ja/user-guide/data-migration/capabilities/field-mapping)
diff --git a/packages/twenty-docs/l/ja/user-guide/data-migration/overview.mdx b/packages/twenty-docs/l/ja/user-guide/data-migration/overview.mdx
index a1ddbce042..19ea88b4c2 100644
--- a/packages/twenty-docs/l/ja/user-guide/data-migration/overview.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/data-migration/overview.mdx
@@ -1,89 +1,89 @@
---
-title: Data Migration
-description: Import and export your CRM data via CSV files or API.
+title: データ移行
+description: CSVファイルまたはAPIを使用してCRMデータをインポートおよびエクスポートできます。
image: /images/user-guide/import-export-data/cloud.png
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-
+
-## Import Methods
+## インポート方法
-Twenty supports two main methods for importing data:
+Twenty では、データのインポート方法として主に次の2つをサポートしています。
-| Method | Best For | Volume Limit |
-| -------------- | ------------------------------------ | ----------------------- |
-| **CSV Import** | Standard migrations, regular updates | 10,000 records per file |
-| **API Import** | Large-scale migrations, automation | Unlimited |
+| メソッド | 最適用途 | 件数上限 |
+| ------------ | ------------- | --------------- |
+| **CSVインポート** | 標準的な移行や定期的な更新 | 1ファイルあたり10,000件 |
+| **APIインポート** | 大規模な移行や自動化 | 無制限 |
-For very large datasets (hundreds of thousands of records), use the API. Our [implementation partners](/l/ja/user-guide/getting-started/capabilities/implementation-services) can help run these scripts if needed.
+非常に大きなデータセット(数十万件のレコード)の場合は、API を使用してください。 必要に応じて、当社の[実装パートナー](/l/ja/user-guide/getting-started/capabilities/implementation-services)がこれらのスクリプトの実行を支援できます。
-## CSV Import Basics
+## CSVインポートの基本
-You can import data for any object using CSV, XLSX, or XLS files. Each file should contain **only one type of object** (e.g., only People records).
+CSV、XLSX、または XLS ファイルを使用して、任意のオブジェクトのデータをインポートできます。 各ファイルには、**1種類のオブジェクトのみ**を含めてください(例:People レコードのみ)。
-**Fields must exist before import.** Uploading a CSV creates records but does not create fields. If you need custom fields, create them first under **Settings → Data Model**.
+**インポート前にフィールドが存在している必要があります。** CSV をアップロードするとレコードは作成されますが、フィールドは作成されません。 カスタムフィールドが必要な場合は、まず**Settings → Data Model**で作成してください。
-### Steps
+### 手順
-1. Navigate to the object where you want to import data
-2. Click the **⋮** icon on the top right (this is the Command Menu) and click on **Import records**
-3. Download the template file to ensure your data is in the expected format
-4. Upload your formatted CSV file
-5. Map your columns to Twenty fields
-6. Review errors (highlighted in yellow) and fix them, directly editing in the UI
-7. Confirm the import
+1. データをインポートする対象のオブジェクトに移動します。
+2. 右上の**⋮**アイコン(コマンドメニュー)をクリックし、**Import records**をクリックします。
+3. テンプレートファイルをダウンロードし、データが想定された形式になっていることを確認します。
+4. フォーマット済みのCSVファイルをアップロードします。
+5. 列を Twenty のフィールドにマッピングします。
+6. エラー(黄色でハイライト)を確認し、UI 上で直接編集して修正します。
+7. インポートを確定します。
-### Importing relations between objects
+### オブジェクト間の関係をインポート
-You can import relations between objects using the csv import function. You need to reference the related object using a unique field from this object: the `id`, the `email` for People and Workspace Members, the `domain` for companies, any other field set as unique in the data model for any other object.
+CSV インポート機能を使用して、オブジェクト間の関係をインポートできます。 関連オブジェクトは、一意のフィールドを使って参照します。使用できる例:`id`、People と Workspace Members では `email`、Companies では `domain`、そのほかのオブジェクトではデータモデルで一意に設定した任意のフィールド。
-**Deleted records count toward uniqueness.** Soft-deleted records (visible under Command Menu → See deleted records) are included in uniqueness checks. If you import a record with the same unique value as a deleted record, the deleted record will be restored.
+**削除済みレコードも一意性に含まれます。** ソフト削除されたレコード(Command Menu → See deleted records で表示可能)も一意性チェックに含まれます。 削除済みレコードと同じ一意値のレコードをインポートすると、その削除済みレコードが復元されます。
- **Import Order Matters!**
+ **インポートの順序が重要です!**
- When importing related objects, upload files in this order:
+ 関連オブジェクトをインポートする場合は、次の順序でファイルをアップロードしてください。
- 1. **Companies** first (the "one" side of relationships)
- 2. **People** second (linked to companies via companyId)
- 3. **Opportunities** third (linked to companies/people)
- 4. **Custom objects** with relations last
+ 1. **Companies** を最初に(リレーションの「one」側)
+ 2. **People** を2番目に(companyId を介して Companies にリンク)
+ 3. **Opportunities** を3番目に(Companies/People にリンク)
+ 4. リレーションのある **Custom objects** は最後に
- Why? The "one" side of a one-to-many relationship must exist before you can reference it. For example, the Company record must exist before you import a Person with that company's ID.
+ なぜですか? 1対多のリレーションでは、「one」側が参照される前に存在している必要があります。 例えば、その会社のIDを持つ Person をインポートする前に、Company レコードが存在している必要があります。
-Please refer to [this article](/l/ja/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv) for a step-by-step guide on how to proceed.
+手順の詳細については、[こちらの記事](/l/ja/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv)を参照してください。
-## Export Data
+## データをエクスポート
-Export your workspace data for backups, reporting, or migration.
+バックアップ、レポーティング、または移行のためにワークスペースのデータをエクスポートします。
-### Steps
+### 手順
-1. Navigate to the object you want to export
-2. Configure the view with the columns you need
-3. Click **⋮** → **Export view**
-4. Save the CSV file
+1. エクスポートしたいオブジェクトに移動します。
+2. 必要な列を含むようにビューを設定します。
+3. **⋮** → **Export view** をクリックします。
+4. CSV ファイルを保存します。
-**Only visible columns are exported.** The CSV file will only contain the columns displayed in your current view. Add or hide columns before exporting to control what data is included.
+**表示されている列のみがエクスポートされます。** CSV ファイルには、現在のビューに表示されている列だけが含まれます。 どのデータを含めるかを制御するために、エクスポート前に列を追加または非表示にしてください。
-**Export limits**: Up to 20,000 records per export.
+**エクスポートの上限**: 1回のエクスポートにつき最大20,000件。
-## Permissions
+## 権限
-Data import and export require specific permissions:
+データのインポートとエクスポートには特定の権限が必要です。
-* **Import**: Requires "Import CSV" permission
-* **Export**: Requires "Export CSV" permission
+* **Import**: "Import CSV" 権限が必要
+* **Export**: "Export CSV" 権限が必要
-Contact your workspace admin if you don't have these permissions.
+これらの権限がない場合は、ワークスペース管理者に連絡してください。
-## Next Steps
+## 次のステップ
-* [Prepare your CSV files](/l/ja/user-guide/data-migration/how-tos/prepare-your-csv-files)
-* [Import relations between objects](/l/ja/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv)
-* [Import via API for large datasets](/l/ja/user-guide/data-migration/how-tos/import-data-via-api)
+* [CSV ファイルの準備](/l/ja/user-guide/data-migration/how-tos/prepare-your-csv-files)
+* [オブジェクト間の関係をインポート](/l/ja/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv)
+* [大規模データセットをAPIでインポート](/l/ja/user-guide/data-migration/how-tos/import-data-via-api)
diff --git a/packages/twenty-docs/l/ja/user-guide/data-model/capabilities/fields.mdx b/packages/twenty-docs/l/ja/user-guide/data-model/capabilities/fields.mdx
index ef477158c2..8a4b5dcc92 100644
--- a/packages/twenty-docs/l/ja/user-guide/data-model/capabilities/fields.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/data-model/capabilities/fields.mdx
@@ -1,122 +1,124 @@
---
-title: Fields
-description: Understand the role of fields and how to manage them.
+title: フィールド
+description: フィールドの役割とその管理方法を理解しましょう。
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-## About Fields
+## フィールドについて
-Fields are like columns in a spreadsheet. They store different types of data like text, numbers, or dates. Fields can be standard (built-in) or custom (the ones you create).
+フィールドはスプレッドシートの列のようなものです。 テキスト、数字、日付などの異なるデータタイプを保存します。 フィールドには、標準(ビルトイン)とカスタム(ユーザー作成)があります。
-### Standard Fields
+### 標準フィールド
-Standard fields come built-in with Twenty to handle common business needs.
+Twenty には、一般的な業務ニーズに対応する標準フィールドがビルトインされています。
-For example, `First Name` and `Last Name` are standard fields in the `People` object. They store text data for individual names.
+たとえば、「名」および「姓」は「人物」オブジェクトの標準フィールドです。 それらは個々の名前のテキストデータを保存します。
-You cannot delete standard fields, but you can deactivate them if you don't need them.
+標準フィールドは削除できませんが、必要がない場合は無効化できます。
-You can also customize the options of the standard `SELECT` type fields, for example the options for the `Stage` on Opportunities.
+標準の `SELECT` 型フィールドのオプションもカスタマイズできます。たとえば、商談の `Stage` のオプションです。
-### Custom Fields
+### カスタムフィールド
-Custom fields can be added to any object. You can store text, numbers, dates, dropdown selections, and more. Use custom fields to track information that's specific to your business.
+カスタムフィールドは任意のオブジェクトに追加できます。 テキスト、数字、日付、ドロップダウンの選択肢などを保存できます。 カスタムフィールドを使用して、ビジネスに特化した情報を追跡します。
-For instance, a custom field for SpaceX could be `Rocket Active Status`, indicating if a rocket is operational.
+たとえば、SpaceX用のカスタムフィールドとして「ロケットの運用状況」を設定できます。これはロケットが稼働中かどうかを示します。
-## Field Types
+## フィールドタイプ
-Twenty supports various field types:
+Twenty はさまざまなフィールドタイプをサポートしています。
-| Type | Description | Example |
-| ------------ | ----------------------------------------------------------------- | ------------------ |
-| Address | Structured address with street, city, state, country, postal code | Office Address |
-| Array | List of text values | Tags |
-| Boolean | True/false checkbox | Is Active |
-| Currency | Monetary value with currency code | Deal Amount (USD) |
-| Date | Date values | Close Date |
-| Date & Time | Date with time | Meeting Time |
-| Domain | Website domain (used for Companies) | acme.com |
-| Email | Email addresses (with primary + additional) | Contact Email |
-| JSON | Structured JSON data | Custom metadata |
-| Links | URLs with labels (primary + secondary) | Website, LinkedIn |
-| Long Text | Multi-line text | Description, Notes |
-| Multi-Select | Multiple choices from a predefined list | Tags, Categories |
-| Number | Numeric values (integers or decimals) | Quantity, Score |
-| Phone | Phone numbers with country code | Work Phone |
-| Rating | Star rating (1-5) | Priority, Score |
-| Relation | Links to records in other objects | Company → People |
-| Select | Single choice from a predefined list | Stage, Status |
-| Text | Single line of text | Name, Title |
+| タイプ | 説明 | 例 |
+| ------ | --------------------------- | ---------------- |
+| 住所 | 通り、都市、州、国、郵便番号を含む構造化された住所 | オフィス住所 |
+| Array | テキスト値のリスト | タグ |
+| ブール型 | 真偽値のチェックボックス | アクティブ |
+| 通貨 | 通貨コード付きの金額 | 商談金額(USD) |
+| 日付 | 日付の値 | 締切日 |
+| 日付と時間 | 時刻付きの日付 | ミーティング時刻 |
+| ドメイン | Web サイトのドメイン(Companies で使用) | acme.com |
+| メール | メールアドレス(主要+追加) | 連絡先メール |
+| JSON | 構造化された JSON データ | カスタムメタデータ |
+| リンク | ラベル付きの URL(主要+サブ) | Web サイト、LinkedIn |
+| 長文テキスト | 複数行テキスト | 説明、メモ |
+| マルチ選択 | あらかじめ定義されたリストから複数選択 | タグ、カテゴリ |
+| 数 | 数値(整数または小数) | 数量、スコア |
+| 電話 | 国番号付きの電話番号 | 勤務先電話 |
+| 評価 | 星評価(1〜5) | 優先度、スコア |
+| リレーション | 他のオブジェクト内のレコードへのリンク | Company → People |
+| 選択 | あらかじめ定義されたリストからの単一選択 | ステージ、ステータス |
+| テキスト | 1 行のテキスト | 名前、タイトル |
-## Create a Custom Field
+## カスタムフィールドを作成する
-To add a custom field to any object, follow these steps:
+任意のオブジェクトにカスタムフィールドを追加するには、次の手順に従います。
-1. Go to `Settings` in the left sidebar.
-2. Go to `Data Model`, then select the object you wish to customize.
-3. Proceed by clicking on `Add Field`.
-4. Choose a field name and type that suits your requirements. Consider adding a field description for better understanding.
+1. 左サイドバーの「設定」に移動します。
+2. 「データモデル」に移動し、カスタマイズしたいオブジェクトを選択します。
+ 3.
+3. 「フィールドを追加」をクリックして続行します。
+ 4.
+4. 要件に合ったフィールド名とタイプを選択してください。 より良い理解のためにフィールドの説明を追加することを検討してください。 より良い理解のためにフィールドの説明を追加することを検討してください。 より良い理解のためにフィールドの説明を追加することを検討してください。
-Your newly created field is now available within the application's fields. To display it on a specific view, click on the options menu, then select `Fields`.
+作成したフィールドはアプリケーションのフィールド内で利用できるようになります。 特定のビューに表示するには、オプションメニューをクリックして「フィールド」を選択します。 特定のビューに表示するには、オプションメニューをクリックして「フィールド」を選択します。
-
+
-**Quick way:** Click the **+** button at the top right of any object table, then select `Customize fields`. This takes you directly to the Data Model settings.
+**簡単な方法:** 任意のオブジェクトテーブルの右上の **+** ボタンをクリックし、「フィールドをカスタマイズ」を選択します。 これにより、データモデルの設定に直接アクセスできます。
-## Deactivate a Field
+## フィールドを無効にする
-You can deactivate a field to hide it from the app without losing your data. Think of it as hiding the field rather than deleting it.
+データを失わずにアプリからフィールドを隠すには、フィールドを無効にすることができます。 これはフィールドを削除するのではなく、隠すようなものです。 これはフィールドを削除するのではなく、隠すようなものです。 これはフィールドを削除するのではなく、隠すようなものです。
-Here's how you can do it:
+以下に方法を示します。
-1. Find the field you want to deactivate in your object settings.
+1. オブジェクト設定で無効化したいフィールドを見つけます。
-2. Click the three dots `⋮` next to the field to open the menu.
+2. フィールドの横にある三点リーダー`⋮`をクリックしてメニューを開きます。
-3. Select `Deactivate` from the dropdown.
+3. ドロップダウンメニューから「無効化」を選択します。
-What happens when you deactivate a field?
+フィールドを無効にするとどうなりますか?
-1. **In the app:** The field disappears and you can't add new values to it.
+1. **アプリ内では:** フィールドが消え、新しい値を追加することができなくなります。
-2. **Existing relationships:** If it's a relation field, existing connections stay but you can't create new ones.
+2. **既存の関係:** それがリレーションフィールドである場合、既存の接続は維持されますが、新しいものを作成することはできません。
-3. **API access:** You can still access the field and its data through the API.
+3. **APIアクセス:** フィールドとそのデータには引き続きAPI経由でアクセスできます。
-You can reactivate Standard and Custom Fields or have the option to permanently delete them.
+標準フィールドとカスタムフィールドを再アクティブ化することができます。また、それらを永久に削除するオプションがあります。
-## Make Fields Unique
+## フィールドをユニークにする
-Make a field unique to ensure distinct records cannot have the same value. For example, email addresses are unique for each person.
+異なるレコードが同じ値を持つことがないように、フィールドをユニークにします。 例えば、メールアドレスは各人物に対してユニークです。 例えば、メールアドレスは各人物に対してユニークです。 例えば、メールアドレスは各人物に対してユニークです。
-If you get an error when setting uniqueness, check for duplicate values in your data (including deleted records).
+ユニーク性を設定する際にエラーが発生した場合、データ内の重複した値(削除されたレコードも含む)を確認してください。
-## Field Configuration Best Practices
+## フィールド構成のベストプラクティス
-### Naming Conventions and Limitations
+### 命名規則と制限
-* **Singular and plural named must be distinct**: Our GraphQL API needs distinct names for mutations
-* **Protected field names**: some names are reserved for system usage (e.g., `Type`, `Application`)
+* **単数形と複数形の名前は独立している必要があります**:私たちのGraphQL APIでは、変換に際して名前の違いが必要です
+* **保護されたフィールド名**:一部の名前はシステムで使用するために予約されています(例:`Type`、`Application`)
-### Currency and Phone Fields
+### 通貨フィールドと電話フィールド
-* **Default currency**: can be configured via the data model
-* **Default country codes**: can be configured for phone fields via the data model
+* **デフォルト通貨**:データモデルを介して設定できます
+* **デフォルト国コード**:データモデルを介して電話フィールドに設定できます
-### Select Fields
+### 選択フィールド
-* **A default option can be selected** for each Select field
+* **各選択フィールドにデフォルトオプションを選択できます**
-### Record Text Fields
+### レコードテキストフィールド
-* **Each object has one main display field**: This field appears in the leftmost column and represents the record when linked to other objects. It must be a text field. For example, People uses `Name` as the main field, so when you link a person to a company, you'll see their name in the company's view.
+* **各オブジェクトには**1つのメイン表示フィールドがあります。このフィールドは左側の列に表示され、他のオブジェクトにリンクされたときにレコードを表します。 これはテキストフィールドである必要があります。 たとえば、Peopleは「名前」をメインフィールドとして使用しているため、人物を会社にリンクすると、会社のビューにその名前が表示されます。 これはテキストフィールドである必要があります。 たとえば、Peopleは「名前」をメインフィールドとして使用しているため、人物を会社にリンクすると、会社のビューにその名前が表示されます。 これはテキストフィールドである必要があります。 たとえば、Peopleは「名前」をメインフィールドとして使用しているため、人物を会社にリンクすると、会社のビューにその名前が表示されます。
diff --git a/packages/twenty-docs/l/ja/user-guide/data-model/capabilities/objects.mdx b/packages/twenty-docs/l/ja/user-guide/data-model/capabilities/objects.mdx
index f2f1105277..8b08dfe3ad 100644
--- a/packages/twenty-docs/l/ja/user-guide/data-model/capabilities/objects.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/data-model/capabilities/objects.mdx
@@ -1,91 +1,91 @@
---
-title: Objects
-description: Learn about standard and custom objects in Twenty.
+title: オブジェクト
+description: Twenty の標準オブジェクトとカスタムオブジェクトについて学びます。
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-## Standard Objects
+## 標準オブジェクト
-Standard objects are predefined entities in your workspace to help you get started. They're part of a shared data model accessible to all users of Twenty. You can use them as-is, customize them or deactivate them.
+標準オブジェクトは、作業を開始するためのワークスペースに予め定義されているエンティティです。 これらは、Twentyの全ユーザーがアクセスできる共有データモデルの一部です。 そのまま使用することも、カスタマイズすることも、無効化することもできます。
-### People
+### "人"
-The `People` object stores your contacts. It includes contact details and interaction history, so you can see all your customer interactions in one place.
+`People` オブジェクトは連絡先を保存します。 連絡先の詳細とやり取りの履歴が含まれており、すべての顧客とのやり取りを一か所で確認できます。
-### Company
+### 会社
-The `Companies` object stores your business accounts. It includes details like industry, size and location. Companies connect to both `People` and `Opportunities` objects.
+`Companies` オブジェクトはビジネスアカウントを保存します。 業界、規模、所在地などの詳細が含まれます。 `People` および `Opportunities` オブジェクトに接続します。
-### Opportunities
+### 商談
-The `Opportunities` object stores deal-related data. It tracks the progression of potential sales, from prospecting to closure, recording stages, deal sizes, associated account, and expected close date. You can view your sales pipeline in a kanban layout.
+`Opportunities` オブジェクトは、取引関連のデータを保存します。 見込み客から成約までの販売の進捗を追跡し、ステージ、取引規模、関連するアカウント、予想終了日に関する記録を残します。 カンバン形式で販売パイプラインを表示できます。
-### Notes
+### ノート
-The `Notes` object stores free-form notes that can be attached to People, Companies, Opportunities, and other records. Use notes to capture meeting summaries, important details, or any contextual information.
+`Notes` オブジェクトは、People、Companies、Opportunities などのレコードに添付できる自由形式のメモを保存します。 メモを使用して、会議の要約、重要な詳細、その他のコンテキスト情報を記録します。
-### Tasks
+### タスク
-The `Tasks` object stores to-dos and action items. Tasks can be linked to People, Companies, Opportunities, and other records. Track due dates, assignees, and completion status to stay on top of your follow-ups.
+`Tasks` オブジェクトは、To-Do やアクション項目を保存します。 タスクは、People、Companies、Opportunities などのレコードに関連付けできます。 期限、担当者、完了状況を追跡して、フォローアップを的確に管理します。
-## Custom Objects
+## カスタムオブジェクト
-Custom objects let you store information that's unique to your organization and that standard objects can't handle. For example, if you're SpaceX, you may want to create a custom object for Rockets and Launches.
+カスタムオブジェクトを使用すると、標準オブジェクトでは対応できない組織独自の情報を保存できます。 例えば、SpaceXであれば、ロケットや打ち上げ用にカスタムオブジェクトを作成することが考えられます。 例えば、SpaceXであれば、ロケットや打ち上げ用にカスタムオブジェクトを作成することが考えられます。 例えば、SpaceXであれば、ロケットや打ち上げ用にカスタムオブジェクトを作成することが考えられます。
-### Creating a New Custom Object
+### 新しいカスタムオブジェクトの作成
-To create a new custom object:
+新しいカスタムオブジェクトを作成するには:
-1. Go to Settings in the sidebar on the left.
-2. Under Workspace, go to Data model. Here you'll be able to see an overview of all your existing Standard and Custom objects (both active and disabled).
+1. 左側のサイドバーの設定に移動します。
+2. ワークスペースの下で、データモデルに移動します。 ここでは、すべての既存の標準およびカスタムオブジェクト(アクティブと非アクティブの両方)の概要を確認できます。 ワークスペースの下で、データモデルに移動します。 ここでは、すべての既存の標準およびカスタムオブジェクト(アクティブと非アクティブの両方)の概要を確認できます。 ここでは、すべての既存の標準およびカスタムオブジェクト(アクティブと非アクティブの両方)の概要を確認できます。
-
+
-3. Click on `+ New object` at the top. Enter the name (both singular and plural), choose an icon, and add a description for your custom object and hit Save (at the top right). Using Listing as an example of custom object, the singular would be "listing" and the plural would be "listings" along with a description like "Listings that hosts created to showcase their property."
+3. 上部の `+ 新しいオブジェクト` をクリックします。 カスタムオブジェクトの名前(単数形と複数形の両方)、アイコンを選択し、説明を追加し、[保存](右上)をクリックします。 上部の `+ 新しいオブジェクト` をクリックします。 カスタムオブジェクトの名前(単数形と複数形の両方)、アイコンを選択し、説明を追加し、[保存](右上)をクリックします。 カスタムオブジェクトの例として、Listingを使用し、単数形は "listing" 、複数形は "listings" 、説明は "ホストがプロパティを紹介するために作成したリスティング" となります。
-4. Your custom object is now created and will appear in your sidebar. You can start adding records to it right away.
+4. カスタムオブジェクトが作成され、サイドバーに表示されます。 すぐにレコードを追加できます。
-## Managing Objects
+## オブジェクトの管理
-### Deactivating Objects
+### オブジェクトの無効化
-If you don't need a standard or custom object:
+標準オブジェクトまたはカスタムオブジェクトが不要な場合:
-1. Go to Settings → Data Model
-2. Find the object you want to deactivate
-3. Click the toggle to deactivate it
-4. The object will be hidden from your workspace but data is preserved
+1. 設定 → データモデル に移動
+2. 無効化したいオブジェクトを見つけます
+3. トグルをクリックして無効化します
+4. オブジェクトはワークスペースから非表示になりますが、データは保持されます。
-### Reactivating Objects
+### オブジェクトの再有効化
-To bring back a deactivated object:
+無効化したオブジェクトを再有効化するには:
-1. Go to Settings → Data Model
-2. Look for deactivated objects (they'll be grayed out)
-3. Click the toggle to reactivate it
-4. The object and all its data will be restored
+1. 設定 → データモデル に移動
+2. 無効化されたオブジェクトを探します(グレー表示になります)。
+3. トグルをクリックして再有効化します
+4. オブジェクトとそのすべてのデータが復元されます。
-## Best Practices
+## ベストプラクティス
-### When to Create Custom Objects
+### カスタムオブジェクトを作成するタイミング
-* **Unique business entities**: Things specific to your industry or process
-* **Complex relationships**: When you need to track connections between multiple entities
-* **Scalable data**: When you might have many instances of something
+* **独自のビジネスエンティティ**: 業界やプロセスに特有のもの
+* **複雑なリレーションシップ**: 複数のエンティティ間の関係を追跡する必要がある場合
+* **スケーラブルなデータ**: 多数のインスタンスが発生する可能性がある場合
-### When to Use Fields Instead
+### 代わりにフィールドを使用するタイミング
-* **Simple attributes**: Properties that describe existing objects
-* **Categories or labels**: Ways to classify existing records
-* **Single values**: Information that doesn't need its own lifecycle
+* **シンプルな属性**: 既存のオブジェクトを記述するプロパティ
+* **カテゴリやラベル**: 既存のレコードを分類する方法
+* **単一の値**: 独自のライフサイクルを必要としない情報
-### Object Naming
+### オブジェクトの命名
-* **Use clear, descriptive names**: Make it obvious what the object represents
-* **Follow conventions**: Use singular for the object name, plural for the collection
-* **Consider your team**: Choose names everyone will understand
+* **明確で説明的な名前を使う**: オブジェクトが何を表すかを一目でわかるようにする
+* **規約に従う**: オブジェクト名は単数形、コレクションは複数形を使用する
+* **チームを考慮する**: 全員が理解できる名前を選ぶ
diff --git a/packages/twenty-docs/l/ja/user-guide/data-model/capabilities/relation-fields.mdx b/packages/twenty-docs/l/ja/user-guide/data-model/capabilities/relation-fields.mdx
index ddcd3c709e..78ec9ec6c1 100644
--- a/packages/twenty-docs/l/ja/user-guide/data-model/capabilities/relation-fields.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/data-model/capabilities/relation-fields.mdx
@@ -1,92 +1,96 @@
---
-title: Relation Fields
-description: Connect records across different objects using relation fields.
+title: リレーションフィールド
+description: リレーションフィールドを使用して、異なるオブジェクト間でレコードをリンクします。
---
-## Types of Relations
+## リレーションの種類
-### One-to-Many
+### 1対多
-One record in Object A can be linked to many records in Object B.
+オブジェクトAの1件のレコードは、オブジェクトBの複数のレコードにリンクできます。
-**Example:** One Company can have many People (employees).
+**例:** 1つの会社には多数の連絡先(従業員)がいます。
-### Many-to-One
+### 多対1
-Many records in Object A can be linked to one record in Object B.
+オブジェクトAの複数のレコードは、オブジェクトBの1件のレコードにリンクできます。
-**Example:** Many People can belong to one Company.
+**例:** 多数の連絡先は1社に所属できます。
-### Relations to Multiple Object Types
+### 複数のオブジェクトタイプへのリレーション
-Some objects can link to multiple object types on one side of the relation.
+一部のオブジェクトは、リレーションの片側で複数のオブジェクトタイプにリンクできます。
-**Example:** A Note can be attached to one Person AND one Company AND one Opportunity simultaneously. The Note is on the "many" side, connecting to multiple "one" sides.
+**例:** メモは、連絡先1件、会社1社、商談1件に同時にリンクできます。 メモは"多"の側にあり、複数の"1"の側にリンクしています。
-Similarly, a Project (on the "one" side) could receive links from multiple People, multiple Companies, and multiple Notes.
+同様に、プロジェクト("1"の側)は、複数の連絡先、複数の会社、複数のメモからリンクを受け取ることができます。
- **Import/Export limitation**: Relations pointing to multiple object types are not yet supported for CSV import/export. This is on our roadmap.
+ **インポート/エクスポートの制限**: 複数のオブジェクトタイプを指すリレーションは、CSV のインポート/エクスポートにはまだ対応していません。 これはロードマップに含まれています。
-### Many-to-Many
+### 多対多
-Many records in Object A can be linked to many records in Object B.
+オブジェクトAの複数のレコードは、オブジェクトBの複数のレコードにリンクできます。
-**Example:** Many People can be linked to many Projects, and vice versa.
+**例:** 多数の連絡先は多数のプロジェクトにリンクでき、その逆も可能です。
+
+多対多のリレーションでは、両側を接続する中間オブジェクトを用いる**ジャンクションオブジェクト**パターンを使用します。 ジャンクションリレーション機能により、Twenty は最終的にリンクされたレコードを直接表示し、中間オブジェクトを UI から隠します。
+
+
- **Many-to-Many is not yet supported.**
-
- This relation type is planned for H1 2026. As a workaround, create an intermediate "junction" object (e.g., "Project Assignments") that has Many-to-One relations to both objects.
+ **ラボ機能**: 使用前に **Settings → Updates → Lab** でジャンクションリレーションを有効化する必要があります。
-## Creating a Relation Field
+完全なステップバイステップのガイドについては、[多対多リレーションの作成方法](/l/ja/user-guide/data-model/how-tos/create-many-to-many-relations) を参照してください。
-1. Go to **Settings → Data Model**
-2. Select the object where you want to add the relation
-3. Click **+ Add Field**
-4. Select **Relation** as the field type
-5. Choose the target object(s) to relate to
-6. Configure the relation settings:
- * **Field name on source object**: The name of the relation field on the object you're editing
- * **Field name on destination object**: The name of the relation field that will appear on the target object
- * Relation type (one-to-many, many-to-one)
-7. Click **Save**
+## リレーションフィールドの作成
-## Standard Relations
+1. **設定 → データモデル** に移動
+2. リレーションを追加したいオブジェクトを選択します
+3. **+ Add Field** をクリック
+4. フィールドタイプとして **Relation** を選択
+5. 関連付け先のオブジェクトを選択します
+6. リレーションの設定を行います:
+ * **ソースオブジェクト上のフィールド名**: 編集しているオブジェクト上のリレーションフィールドの名前
+ * **対象オブジェクト上のフィールド名**: 対象オブジェクトに表示されるリレーションフィールドの名前
+ * リレーションタイプ(1対多、多対1)
+7. **保存**をクリック
-Twenty comes with pre-built relations between standard objects:
+## 標準リレーション
-| From Object | To Object | Relation Type |
-| ------------- | --------- | ------------- |
-| People | Companies | Many-to-One |
-| Opportunities | Companies | Many-to-One |
-| Opportunities | People | Many-to-One |
+Twenty には標準オブジェクト間のあらかじめ用意されたリレーションがあります:
-## Best Practices
+| 元オブジェクト | 宛先オブジェクト | リレーションタイプ |
+| ------- | -------- | --------- |
+| 人物 | 会社 | 多対1 |
+| 商談 | 会社 | 多対1 |
+| 商談 | 人物 | 多対1 |
-### Planning Relations
+## ベストプラクティス
-* **Map your data model**: Plan relations before creating them
-* **Consider direction**: Think about which object "owns" the relationship
-* **Avoid circular dependencies**: Keep your data model clean
+### リレーションの計画
-### Naming Relations
+* **データモデルをマッピング**: 作成前にリレーションを計画する
+* **方向性を検討**: どのオブジェクトがそのリレーションを"所有"するかを考える
+* **循環依存を避ける**: データモデルをクリーンに保つ
-* **Use clear names**: Make it obvious what the relation represents
-* **Be consistent**: Use similar naming patterns across relations
-* **Consider both sides**: Name both sides of the relation appropriately
+### リレーションの命名
-### Performance
+* **明確な名前を使う**: リレーションが何を表すかが一目でわかるようにする
+* **一貫性を保つ**: リレーション全体で似た命名パターンを使用する
+* **両側を考慮する**: リレーションの両側に適切な名前を付ける
-* **Don't over-relate**: Too many relations can slow down your workspace
+### パフォーマンス
-## Limitations
+* **リレーションの作りすぎに注意**: リレーションが多すぎるとワークスペースが遅くなる可能性があります
-* **Deleting relations** removes the link but not the related records
-* **Circular relations** should be avoided for data integrity
+## 制限事項
+
+* **リレーションを削除**するとリンクは削除されますが、関連レコード自体は削除されません。
+* **循環リレーション**はデータの整合性のため避けるべきです
diff --git a/packages/twenty-docs/l/ja/user-guide/data-model/how-tos/create-custom-fields.mdx b/packages/twenty-docs/l/ja/user-guide/data-model/how-tos/create-custom-fields.mdx
index ad22653b85..5c69b8223c 100644
--- a/packages/twenty-docs/l/ja/user-guide/data-model/how-tos/create-custom-fields.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/data-model/how-tos/create-custom-fields.mdx
@@ -13,7 +13,7 @@ Custom fields let you capture information specific to your business. Add them to
4. Choose a **field type** (see [Fields](/l/ja/user-guide/data-model/capabilities/fields) for all types)
5. Enter the **field name** and optional description
6. Configure field-specific settings (see below)
-7. Click **Save**
+7. **保存**をクリック
**Quick method:** Click the **+** at the end of column headers in any table view → **Customize fields**.
diff --git a/packages/twenty-docs/l/ja/user-guide/data-model/how-tos/create-custom-objects.mdx b/packages/twenty-docs/l/ja/user-guide/data-model/how-tos/create-custom-objects.mdx
index 9de7ffaab1..c1b88acc2d 100644
--- a/packages/twenty-docs/l/ja/user-guide/data-model/how-tos/create-custom-objects.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/data-model/how-tos/create-custom-objects.mdx
@@ -1,51 +1,51 @@
---
-title: Create Custom Objects
-description: Step-by-step guide to creating custom objects in Twenty.
+title: カスタムオブジェクトを作成する
+description: Twenty でカスタムオブジェクトを作成するためのステップバイステップガイド。
---
-Custom objects let you store information unique to your business that standard objects don't cover. For example: Projects, Products, Tickets, or Listings.
+カスタムオブジェクトを使用すると、標準オブジェクトでは対応できないビジネス固有の情報を保存できます。 例: プロジェクト、製品、チケット、リスティング。
- **Not sure if you need an object or a field?** See [Understanding Your Data Model](/l/ja/user-guide/data-model/overview) for guidance.
+ **オブジェクトが必要か、フィールドが必要か迷っていますか?** 詳しくは[データモデルの理解](/l/ja/user-guide/data-model/overview)を参照してください。
-## Steps
+## 手順
-1. Go to **Settings → Data Model**
-2. Click **+ New object**
-3. Fill in:
- * **Singular name** (e.g., "Listing")
- * **Plural name** (e.g., "Listings")
- * **Icon**
- * **Description** (optional)
-4. Click **Save**
+1. **設定 → データモデル** に移動
+2. **+ New object** をクリック
+3. 次を入力:
+ * **単数名**(例: "Listing")
+ * **複数名**(例: "Listings")
+ * **アイコン**
+ * **説明**(任意)
+4. **保存**をクリック
-Your object appears in the sidebar immediately.
+作成したオブジェクトはすぐにサイドバーに表示されます。
-## Next: Add Fields
+## 次: フィールドを追加
-New objects start with basic fields. Add custom fields to capture the data you need:
+新しいオブジェクトには基本フィールドがあらかじめ含まれています。 必要なデータを収集するために、カスタムフィールドを追加します:
-1. In **Settings → Data Model**, select your object
-2. Click **+ Add Field**
-3. Choose a field type, configure, and save
+1. **設定 → データモデル** で、対象のオブジェクトを選択します
+2. **+ Add Field** をクリック
+3. フィールドタイプを選択し、設定して保存します
-See [How to Create Custom Fields](/l/ja/user-guide/data-model/how-tos/create-custom-fields) for details on field types and configuration.
+フィールドタイプと設定の詳細は、[カスタムフィールドの作成方法](/l/ja/user-guide/data-model/how-tos/create-custom-fields)を参照してください。
-## Connecting to Other Objects
+## 他のオブジェクトと接続する
-To link your object to People, Companies, or other objects, create a relation field. See [How to Create Relation Fields](/l/ja/user-guide/data-model/how-tos/create-relation-fields).
+オブジェクトを People、Companies、その他のオブジェクトにリンクするには、リレーションフィールドを作成します。 [リレーションフィールドの作成方法](/l/ja/user-guide/data-model/how-tos/create-relation-fields)を参照してください。
-## Deactivating an Object
+## オブジェクトの無効化
-If you no longer need an object:
+オブジェクトが不要になった場合:
-1. Go to **Settings → Data Model**
-2. Toggle the object off
+1. **設定 → データモデル** に移動
+2. オブジェクトをオフに切り替えます
-The object is hidden but data is preserved. You can reactivate or permanently delete later.
+オブジェクトは非表示になりますが、データは保持されます。 後で再有効化することも、完全に削除することもできます。
-## Related
+## 関連
-* [Objects](/l/ja/user-guide/data-model/capabilities/objects) — standard vs custom objects
-* [Data Model FAQ](/l/ja/user-guide/data-model/how-tos/data-model-faq) — common questions
+* [オブジェクト](/l/ja/user-guide/data-model/capabilities/objects) — 標準オブジェクトとカスタムオブジェクト
+* [データモデル FAQ](/l/ja/user-guide/data-model/how-tos/data-model-faq) — よくある質問
diff --git a/packages/twenty-docs/l/ja/user-guide/data-model/how-tos/create-many-to-many-relations.mdx b/packages/twenty-docs/l/ja/user-guide/data-model/how-tos/create-many-to-many-relations.mdx
new file mode 100644
index 0000000000..10e5f7c406
--- /dev/null
+++ b/packages/twenty-docs/l/ja/user-guide/data-model/how-tos/create-many-to-many-relations.mdx
@@ -0,0 +1,180 @@
+---
+title: 多対多リレーションを作成する
+description: ジャンクションオブジェクトを使うことで、両側の多数のレコード同士をリンクできます。
+---
+
+多対多リレーションでは、両側で複数のレコードを相互に接続できます。 例えば、多数の連絡先が多数のプロジェクトで作業でき、各プロジェクトには多数の連絡先が紐づきます。
+
+
+ **ラボ機能**: ジャンクションリレーションは現在 Lab にあります。 このガイドに進む前に、**Settings → Updates → Lab** で有効にしてください。
+
+
+
+ この機能を使うには **詳細モード** も有効にする必要があります(Settings の右下にあるトグルで切り替え)。
+
+
+## 多対多を使うタイミング
+
+関係の両側が複数の接続を持ちうる場合に、多対多を使用します。
+
+| 関係 | 例 |
+| ------------ | -------------------------------------------------- |
+| 連絡先 ↔ プロジェクト | 1 人の連絡先は複数のプロジェクトで作業でき、1 つのプロジェクトには複数のチームメンバーがいます。 |
+| 会社 ↔ タグ | 1 社には複数のタグを付与でき、1 つのタグは複数の会社に適用できます。 |
+| 商品 ↔ 注文 | 1 つの商品は複数の注文に含まれ、1 件の注文には複数の商品が含まれます。 |
+
+## 仕組み
+
+Twenty は多対多リレーションに **ジャンクションオブジェクト** パターンを使用します。 ジャンクションオブジェクトは 2 つのオブジェクトの間に位置し、接続を保持します。
+
+```
+People ←→ Project Assignments ←→ Projects
+```
+
+**Project Assignments** オブジェクト(ジャンクション)には次があります。
+
+* People へのリレーション(多対1)
+* Projects へのリレーション(多対1)
+
+ジャンクションリレーションのトグルを有効にすると、Twenty は中間のジャンクションレコードを表示せず、リンクされたレコードを直接表示します。
+
+## 前提条件
+
+1. **Lab で Junction Relations を有効化**: **Settings → Updates → Lab** に移動し、**Junction Relations** を有効にします
+2. **詳細モードを有効化**: 設定サイドバーの右下にある **Advanced mode** のトグルをオンにします
+3. データモデルを計画する:
+ * どの 2 つのオブジェクトを接続しますか?
+ * ジャンクションオブジェクトの名称は何にしますか?
+
+## ステップ 1: ジャンクションオブジェクトを作成する
+
+まず、接続を保持する中間オブジェクトを作成します。
+
+1. **設定 → データモデル** に移動します
+2. **+ New object** をクリック
+3. わかりやすい名前を付けます(例: "Project Assignment"、"Team Member"、"Product Order")
+4. **保存**をクリック
+
+
+ **命名規則**: "Project Assignment" や "Team Membership" のように、関係を表す名前を使用してください。 これにより、データモデルが理解しやすくなります。
+
+
+## ステップ 2: ジャンクションオブジェクトからリレーションを作成する
+
+ジャンクションオブジェクトから、接続したい両方のオブジェクトへのリレーションフィールドを追加します。
+
+### 最初のリレーション(ジャンクション → オブジェクト A)
+
+1. **Settings → Data Model** でジャンクションオブジェクトを選択します
+2. **+ Add Field** をクリック
+3. フィールドタイプとして **Relation** を選択します
+4. 最初のオブジェクトを選択します(例: "People")
+5. リレーションタイプを **Many-to-One** に設定します(多数の割り当てが 1 人の連絡先にリンクできます)
+6. フィールドに名前を付けます:
+ * ジャンクション側のフィールド: 例: "Person"
+ * People 側のフィールド: 例: "Project Assignments"
+7. **保存**をクリック
+
+### 2 番目のリレーション(ジャンクション → オブジェクト B)
+
+1. 引き続きジャンクションオブジェクトで、**+ Add Field** をクリックします
+2. フィールドタイプとして **Relation** を選択します
+3. 2 番目のオブジェクトを選択します(例: "Projects")
+4. リレーションタイプを **Many-to-One** に設定します
+5. フィールドに名前を付けます:
+ * ジャンクション側のフィールド: 例: "Project"
+ * Projects 側のフィールド: 例: "Team Members"
+6. **保存**をクリック
+
+## ステップ 3: ジャンクションリレーションの表示を設定する
+
+次に、中間のジャンクションオブジェクトを介さずにリンクされたレコードを直接表示するよう、元のオブジェクトを設定します。
+
+1. **設定 → データモデル** に移動します
+2. 最初のオブジェクトを選択します(例: "People")
+3. ジャンクションオブジェクトを指すリレーションフィールド(例: "Project Assignments")を見つけます
+4. クリックしてフィールドを編集します
+5. **"これはジャンクションオブジェクトへのリレーションです"** を有効にします
+6. **Target relation** を選択します(例: "Project" — 反対側を指すジャンクション上のフィールド)
+7. **保存**をクリック
+
+{/* TODO: Add image
+
+*/}
+
+もう一方のオブジェクトでも同様に行います:
+
+1. Data Model で "Projects" を選択します
+2. "Team Members" のリレーションフィールドを編集します
+3. ジャンクションのトグルを有効にします
+4. 対象リレーションとして "Person" を選択します
+5. 保存
+
+## 結果
+
+設定後:
+
+* **Person** レコードでは、"Project Assignments" フィールドに **Projects** が直接表示されます(割り当てレコードではありません)
+* **Project** レコードでは、"Team Members" フィールドに **People** が直接表示されます
+
+ジャンクションオブジェクト自体は存在し接続を保存しますが、UI ではよりすっきりした多対多ビューとして表示されます。
+
+## 例: People ↔ Projects
+
+完全な手順は以下のとおりです:
+
+### ジャンクションオブジェクトを作成する
+
+* 名前: **Project Assignment**
+* 説明: "人と、その人が携わっているプロジェクトを関連付けます"
+
+### リレーションを追加する
+
+1. **Project Assignment → People**
+ * タイプ: 多対1
+ * Assignment 側のフィールド: "Person"
+ * People 側のフィールド: "Project Assignments"
+
+2. **Project Assignment → Projects**
+ * タイプ: 多対1
+ * Assignment 側のフィールド: "Project"
+ * Projects 側のフィールド: "Team Members"
+
+### ジャンクションの表示を設定する
+
+1. **People** オブジェクトで:
+ * "Project Assignments" フィールドを編集
+ * ジャンクションのトグルを有効にする
+ * 対象: "Project"
+
+2. **Projects** オブジェクトで:
+ * "Team Members" フィールドを編集
+ * ジャンクションのトグルを有効にする
+ * 対象: "Person"
+
+### 使ってみる
+
+* Person レコードを開く → 紐づく Projects を直接表示
+* Project レコードを開く → チームメンバーを直接表示
+* どちら側からでも新しい接続を作成できます
+
+## 接続に追加データを持たせる
+
+ジャンクションオブジェクトは実体のあるオブジェクトなので、関係に関する情報を保存するためのカスタムフィールドを追加できます。
+
+* **役割**: "Developer"、"Designer"、"Manager"
+* **開始日**: プロジェクトに参加した日
+* **割り当て時間**: 当該プロジェクトの週あたりの時間
+
+このデータにアクセスするには、ジャンクションオブジェクトに直接移動するか、API 経由でクエリします。
+
+## 制限事項
+
+* **CSV インポート/エクスポート**: 多対多リレーションの直接インポートには対応していません。 代わりに、ジャンクションオブジェクトにレコードをインポートしてください。
+* **フィルター**: 多対多リレーションでのフィルタリングには制限がある場合があります。
+
+## 関連
+
+* [リレーションフィールド](/l/ja/user-guide/data-model/capabilities/relation-fields) — リレーションタイプの解説
+* [カスタムオブジェクトの作成](/l/ja/user-guide/data-model/how-tos/create-custom-objects) — オブジェクトの作成方法
+* [リレーションフィールドを作成](/l/ja/user-guide/data-model/how-tos/create-relation-fields) — 基本的なリレーションの設定
diff --git a/packages/twenty-docs/l/ja/user-guide/data-model/how-tos/create-relation-fields.mdx b/packages/twenty-docs/l/ja/user-guide/data-model/how-tos/create-relation-fields.mdx
index 300a03a75e..04d57686b4 100644
--- a/packages/twenty-docs/l/ja/user-guide/data-model/how-tos/create-relation-fields.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/data-model/how-tos/create-relation-fields.mdx
@@ -1,60 +1,60 @@
---
-title: Create Relation Fields
-description: Step-by-step guide to connecting objects with relation fields.
+title: 関連フィールドの作成
+description: リレーションフィールドでオブジェクトを接続するためのステップバイステップガイド。
---
-Relation fields connect records from different objects—for example, linking People to Companies.
+リレーションフィールドは異なるオブジェクトのレコードを接続します—たとえば、People を Companies にリンクします。
- **Relation names cannot be changed after creation** (they affect the API). Plan your names carefully.
+ **リレーション名は作成後に変更できません**(API に影響するため)。 名前は慎重に計画してください。
-## Before You Start
+## 始める前に
-Decide:
+決めること:
-* Which objects are you connecting? (e.g., People → Companies)
-* Which is the "one" side? (e.g., Company)
-* Which is the "many" side? (e.g., People — many people work at one company)
-* What should the field be named on each side?
+* どのオブジェクトを接続しますか? (例:People → Companies)
+* どちらが「one」側ですか? (例:Company)
+* どちらが「many」側ですか? (例:People — 多くの人が1つの会社で働く)
+* 各側のフィールド名は何にしますか?
-See [Relation Fields](/l/ja/user-guide/data-model/capabilities/relation-fields) for relation types explained.
+リレーションの種類については、[Relation Fields](/l/ja/user-guide/data-model/capabilities/relation-fields) を参照してください。
-## Steps
+## 手順
-1. Go to **Settings → Data Model**
-2. Select the object where you want the relation (typically the "many" side)
-3. Click **+ Add Field**
-4. Select **Relation** as the field type
-5. Choose the **target object**
-6. Select **One-to-Many** or **Many-to-One**
-7. Enter field names for **both sides** of the relation
-8. Click **Save**
+1. **Settings → Data Model** に移動します
+2. リレーションを作成したいオブジェクト(通常は「many」側)を選択します
+3. **+ Add Field** をクリックします
+4. フィールドタイプとして **Relation** を選択します
+5. **対象オブジェクト** を選択します
+6. **One-to-Many** または **Many-to-One** を選択します
+7. リレーションの**両側**のフィールド名を入力します
+8. **保存**をクリック
-## Example: People → Companies
+## 例:People → Companies
-* Go to **Settings → Data Model → People**
-* Add a Relation field
-* Target: **Companies**
-* Type: **Many-to-One**
-* Field on People: **Company**
-* Field on Companies: **Employees**
+* **Settings → Data Model → People** に移動します
+* リレーションフィールドを追加します
+* 対象:**Companies**
+* タイプ:**Many-to-One**
+* People 側のフィールド:**Company**
+* Companies 側のフィールド:**Employees**
-Now each Person can be linked to a Company, and each Company shows its People.
+これで、各 Person は Company にリンクでき、各 Company には People が表示されます。
-## Deleting a Relation
+## リレーションの削除
-1. Go to **Settings → Data Model**
-2. Find the relation field
-3. Click **⋮ → Deactivate**
+1. **Settings → Data Model** に移動します
+2. リレーションフィールドを見つけます
+3. **⋮ → Deactivate** をクリックします
-Links are preserved but hidden. Reactivate to restore.
+リンクは保持されますが非表示になります。 再有効化すると復元されます。
- **Deleting a relation doesn't delete records.** Only the link between them is removed.
+ **リレーションを削除しても、レコードは削除されません。** 削除されるのは、それらの間のリンクだけです。
-## Related
+## 関連
-* [Relation Fields](/l/ja/user-guide/data-model/capabilities/relation-fields) — types and limitations
-* [How to Import Relations](/l/ja/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv) — bulk import linked records
+* [Relation Fields](/l/ja/user-guide/data-model/capabilities/relation-fields) — 種類と制限事項
+* [How to Import Relations](/l/ja/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv) — リンクされたレコードを一括インポート
diff --git a/packages/twenty-docs/l/ja/user-guide/data-model/how-tos/customize-your-data-model.mdx b/packages/twenty-docs/l/ja/user-guide/data-model/how-tos/customize-your-data-model.mdx
index a37cc1ea1a..4c662dec28 100644
--- a/packages/twenty-docs/l/ja/user-guide/data-model/how-tos/customize-your-data-model.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/data-model/how-tos/customize-your-data-model.mdx
@@ -1,22 +1,22 @@
---
-title: Customize Your Data Model
-description: Overview of data model customization options.
+title: データモデルをカスタマイズする
+description: データモデルのカスタマイズオプションの概要。
---
-Twenty's data model is fully customizable. Create objects, fields, and relations to match your business.
+Twentyのデータモデルは完全にカスタマイズ可能です。 ビジネスに合わせて、オブジェクト、フィールド、リレーションを作成できます。
-## Quick Links
+## クイックリンク
-| I want to... | Guide |
-| ------------------------ | -------------------------------------------------------------------------------------- |
-| Create a new object | [How to Create Custom Objects](/l/ja/user-guide/data-model/how-tos/create-custom-objects) |
-| Add fields to an object | [How to Create Custom Fields](/l/ja/user-guide/data-model/how-tos/create-custom-fields) |
-| Connect objects together | [How to Create Relation Fields](/l/ja/user-guide/data-model/how-tos/create-relation-fields) |
+| やりたいこと... | ガイド |
+| ----------------- | ------------------------------------------------------------------------- |
+| 新しいオブジェクトを作成する | [カスタムオブジェクトの作成方法](/l/ja/user-guide/data-model/how-tos/create-custom-objects) |
+| オブジェクトにフィールドを追加する | [カスタムフィールドの作成方法](/l/ja/user-guide/data-model/how-tos/create-custom-fields) |
+| オブジェクト同士を関連付ける | [リレーションフィールドの作成方法](/l/ja/user-guide/data-model/how-tos/create-relation-fields) |
-## Learn More
+## さらに詳しく
-* [Understanding Your Data Model](/l/ja/user-guide/data-model/overview) — key concepts and planning tips
-* [Objects](/l/ja/user-guide/data-model/capabilities/objects) — standard vs custom objects
-* [Fields](/l/ja/user-guide/data-model/capabilities/fields) — all field types
-* [Relation Fields](/l/ja/user-guide/data-model/capabilities/relation-fields) — connecting objects
-* [Data Model FAQ](/l/ja/user-guide/data-model/how-tos/data-model-faq) — common questions
+* [データモデルを理解する](/l/ja/user-guide/data-model/overview) — 重要な概念と計画のヒント
+* [オブジェクト](/l/ja/user-guide/data-model/capabilities/objects) — 標準オブジェクトとカスタムオブジェクト
+* [フィールド](/l/ja/user-guide/data-model/capabilities/fields) — すべてのフィールドタイプ
+* [リレーションフィールド](/l/ja/user-guide/data-model/capabilities/relation-fields) — オブジェクトの関連付け
+* [データモデルFAQ](/l/ja/user-guide/data-model/how-tos/data-model-faq) — よくある質問
diff --git a/packages/twenty-docs/l/ja/user-guide/data-model/how-tos/data-model-faq.mdx b/packages/twenty-docs/l/ja/user-guide/data-model/how-tos/data-model-faq.mdx
index 414a9e4a52..d6187aed7d 100644
--- a/packages/twenty-docs/l/ja/user-guide/data-model/how-tos/data-model-faq.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/data-model/how-tos/data-model-faq.mdx
@@ -1,155 +1,162 @@
---
-title: Data Model FAQ
-description: Frequently asked questions about Twenty's data model.
+title: データモデルFAQ
+description: Twenty のデータモデルに関するよくある質問。
---
-## Object Management
+## オブジェクト管理
-
- Yes, custom objects can be deleted. You can also deactivate them first, which hides the object and its data from the interface while preserving the data.
+
+ はい、カスタムオブジェクトは削除できます。 まず無効化することもできます。無効化すると、データを保持したまま、オブジェクトとそのデータがインターフェースから非表示になります。
-
- No, standard objects cannot be deleted. You can only deactivate them, which hides them from the interface but preserves the data.
+
+ いいえ、標準オブジェクトは削除できません。 無効化のみ可能です。無効化するとインターフェースからは非表示になりますが、データは保持されます。
-
- You can create as many custom objects and fields as you need — the price doesn't change.
+
+ 必要なだけカスタムオブジェクトやフィールドを作成できます—価格は変わりません。
-
- You can rename the label of standard objects (People, Companies, Opportunities), but not their API names. The API names are fixed for consistency across all Twenty workspaces.
+
+ 標準オブジェクト(People、Companies、Opportunities)のラベル名は変更できますが、API 名は変更できません。 API 名は、すべての Twenty ワークスペース間で一貫性を保つため固定されています。
-
- Yes, you can change the icon for both standard and custom objects in **Settings → Data Model**.
+
+ はい、**Settings → Data Model** で標準オブジェクトとカスタムオブジェクトのアイコンを変更できます。
-
- Not yet. Object ordering in the navigation is currently fixed, but this feature is planned for a future release.
+
+ まだできません。
+ まだできません。 ナビゲーションでのオブジェクトの順序は現在固定されていますが、この機能は将来のリリースで予定されています。
-
- All active objects appear in the navigation. You can deactivate objects you don't need under **Settings → Data Model**.
+
+ すべてのアクティブなオブジェクトがナビゲーションに表示されます。
+ すべてのアクティブなオブジェクトがナビゲーションに表示されます。 必須でないオブジェクトは、**設定 → データモデル** から非アクティブ化できます。
+ すべてのアクティブなオブジェクトがナビゲーションに表示されます。 必須でないオブジェクトは、**設定 → データモデル** から非アクティブ化できます。
-## Field Capabilities
+## フィールドの機能
-
- No, field types cannot be changed after creation. If you need a different type, create a new field with the correct type, migrate your data, then deactivate the old field.
+
+ いいえ、作成後にフィールドの型は変更できません。 別の型が必要な場合は、正しい型の新しいフィールドを作成し、データを移行してから、古いフィールドを無効化してください。
-
- Our GraphQL API uses both forms for different operations:
+
+ GraphQL APIは、異なる操作に対し両方の形式を使用します:
- * `createPerson` (singular) for single record actions
- * `createPeople` (plural) for bulk operations
+ * 単一のレコード操作には、`createPerson`(単数形)
+ * 一括操作には、`createPeople`(複数形)
- This creates limitations when singular and plural forms are the same, but it improves the developer experience.
+ 単数形と複数形が同じ場合に制限が発生しますが、開発者の体験を向上させます。
-
- Certain field names like `Type` or `Application` are reserved for system use. Choose alternative names like `Category` or `Classification` instead.
+
+ `Type` や `Application` のようないくつかのフィールド名はシステム用に予約されています。 代わりに`Category`や`Classification`のような代替名を選択してください。
+ 代わりに`Category`や`Classification`のような代替名を選択してください。
-
- * The field is hidden from the interface
- * Existing data is preserved
- * You can still access the field via API
- * Existing relations remain but you can't create new ones
- * You can reactivate the field later
+
+ * そのフィールドはインターフェースから非表示になります
+ * 既存のデータは保持されます
+ * API 経由でそのフィールドに引き続きアクセスできます
+ * 既存のリレーションは維持されますが、新規に作成することはできません
+ * そのフィールドは後で再有効化できます
-
- Currently, you cannot make custom fields required. All fields accept empty values. You can use workflows to enforce required fields by sending alerts or blocking actions when fields are empty.
+
+ 現在、カスタムフィールドを必須にすることはできません。 すべてのフィールドは空の値を受け付けます。 ワークフローを使用して、フィールドが空のときにアラート送信やアクションのブロックを行い、必須を強制できます。
-
- * **Unique**: No two records can have the same value in this field
- * **Required**: The field must have a value (not currently supported for custom fields)
+
+ * **一意**: 2 つのレコードがこのフィールドで同じ値を持つことはできません
+ * **必須**: フィールドには値が必要です(現在、カスタムフィールドではサポートされていません)
-
- Formula fields are coming in **Q1 2026**. In the meantime, you can use workflows to calculate and update field values automatically.
+
+ 数式フィールドは**2026年Q1**に提供されます。
+ 数式フィールドは**2026年Q1**に提供されます。 その間、自動で計算してフィールド値を更新するワークフローを使用できます。
+ 数式フィールドは**2026年Q1**に提供されます。 その間、自動で計算してフィールド値を更新するワークフローを使用できます。
-
- Nested fields are coming in **Q1 2026**. Currently, you can use workflows to bring field values from related objects. For example, to display a company's industry on a Person record, create a custom field on People and use a workflow to synchronize the value.
+
+ ネストされたフィールドは**2026年Q1**に提供されます。 現在、関連オブジェクトからフィールド値を取得するためのワークフローを使用できます。 例えば、人のレコードに会社の業界を表示するには、[People] にカスタムフィールドを作成し、ワークフローを使って値を同期します。
-
- Field reordering will be available with custom layouts in **Q4 2025**. Currently, fields appear in alphabetical order.
+
+ フィールドの並び替えは**2025年Q4**のカスタムレイアウトで利用可能になります。 現在、フィールドはアルファベット順で表示されます。
+ 現在、フィールドはアルファベット順で表示されます。
-## Relations
+## 関連
-
- Yes! Self-referencing relations are supported and recommended for use cases like account hierarchies. For example, create a relation from Companies to Companies to track parent/child accounts.
+
+ はい! 自己参照リレーションはサポートされており、アカウント階層などのユースケースでの使用が推奨されます。 例えば、親子アカウントを追跡するために、Companies 同士のリレーションを作成します。
-
- Many-to-many relationships are coming in **H1 2026**. Currently, create an intermediate object with two one-to-many relationships as a workaround.
+
+ 多対多のリレーションは**2026年上半期**に提供予定です。 現在は、回避策として、1 対多のリレーションを 2 つ持つ中間オブジェクトを作成してください。
- For example, to link People and Projects (many-to-many), create a "Project Assignments" object with:
+ 例えば、People と Projects(多対多)を関連付けるには、"Project Assignments" オブジェクトを作成し、次の構成にします:
- * A relation to People (many assignments → one person)
- * A relation to Projects (many assignments → one project)
+ * People へのリレーション(多数の割り当て → 1 人)
+ * Projects へのリレーション(多数の割り当て → 1 プロジェクト)
-
- These allow one object to relate to multiple different object types through a single field. For example, Notes can be attached to People AND Companies AND Opportunities simultaneously.
+
+ これは、1 つのフィールドを通じて 1 つのオブジェクトが複数の異なるオブジェクトタイプに関連付けられるようにするものです。 例えば、メモは People と Companies と Opportunities に同時に添付できます。
- Each Note links to one Person, one Company, and one Opportunity at the same time.
+ 各メモは、連絡先 1 名、会社 1 社、商談 1 件に同時にリンクします。
- Learn more in [Relation Fields](/l/ja/user-guide/data-model/capabilities/relation-fields).
+ 詳しくは [リレーションフィールド](/l/ja/user-guide/data-model/capabilities/relation-fields) をご覧ください。
-
- Yes, you can create multiple relations between the same two objects. For example, a Company could have both a "Primary Contact" and "Billing Contact" relation to People.
+
+ はい、同じ 2 つのオブジェクト間に複数のリレーションを作成できます。 例えば、Company は People に対して "Primary Contact" リレーションと "Billing Contact" リレーションの両方を持つことができます。
-
- When you delete a record, the relation link is removed from the related records. The related records themselves are not deleted.
+
+ レコードを削除すると、関連レコードからそのリレーションのリンクが削除されます。 関連レコード自体は削除されません。
-
- While technically possible, circular relations (A → B → C → A) should be avoided as they can cause confusion and potential performance issues.
+
+ 技術的には可能ですが、循環リレーション(A → B → C → A)は混乱を招き、パフォーマンス上の問題を引き起こす可能性があるため、避けるべきです。
-## Access and Permissions
+## アクセスと権限
-
- Go to **Settings → Data Model** to view and edit all your objects and fields.
+
+ **Settings → Data Model** に移動すると、すべてのオブジェクトとフィールドを表示および編集できます。
-
- Reach out to your workspace administrator. Data model access is usually restricted to administrators only.
+
+ ワークスペースの管理者にお問い合わせください。 データモデルへのアクセスは通常、管理者に制限されています。
-## Data Management
+## データ管理
-
- There's no hard limit on record counts. However, very large datasets may impact performance in some views. Use filters and views to manage large datasets effectively.
+
+ レコード数に厳密な上限はありません。 ただし、非常に大きなデータセットは、一部のビューでパフォーマンスに影響を与える可能性があります。 フィルターやビューを活用して、大規模なデータセットを効率的に管理してください。
-
- Yes, you can import CSV data into any object, including custom objects. The import process supports field mapping for custom fields. See [How to Prepare Your CSV Files](/l/ja/user-guide/data-migration/how-tos/prepare-your-csv-files).
+
+ はい、カスタムオブジェクトを含む任意のオブジェクトに CSV データをインポートできます。 インポートプロセスでは、カスタムフィールドのフィールドマッピングをサポートしています。 詳しくは [CSV ファイルの準備方法](/l/ja/user-guide/data-migration/how-tos/prepare-your-csv-files) をご覧ください。
-
- Currently, there's no built-in export for data model configuration. Contact support if you need to migrate your data model between workspaces.
+
+ 現在、データモデル設定の組み込みエクスポート機能はありません。 ワークスペース間でデータモデルを移行する必要がある場合は、サポートにお問い合わせください。
-## Need More Help?
+## さらなるヘルプが必要ですか?
-Check our [Implementation Services](/l/ja/user-guide/getting-started/capabilities/implementation-services) for help with complex data model design.
+複雑なデータモデル設計の支援については、[実装サービス](/l/ja/user-guide/getting-started/capabilities/implementation-services)をご覧ください。
diff --git a/packages/twenty-docs/l/ja/user-guide/data-model/overview.mdx b/packages/twenty-docs/l/ja/user-guide/data-model/overview.mdx
index 39c288f112..3414262d3c 100644
--- a/packages/twenty-docs/l/ja/user-guide/data-model/overview.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/data-model/overview.mdx
@@ -1,180 +1,180 @@
---
-title: Data Model
-description: Learn what a data model is and how to design one that fits your business.
+title: データモデル
+description: データモデルとは何か、ビジネスに適したデータモデルの設計方法を学びましょう。
image: /images/user-guide/fields/custom_data_model.png
---
-
+
-## What is a Data Model?
+## データモデルとは何ですか?
-A data model is the structure that defines how information is organized in your CRM. Think of it as the **blueprint** of your customer data — you design it once, then fill it with your actual data.
+データモデルは、CRMにおける情報がどのように整理されるかを定義する構造です。 それは、どのオブジェクトが存在するか(会社、人、機会など)、それらが持つプロパティ(フィールド)が何か、そしてそれらがどのように関連しているかを決定します。 それを顧客データの地図として考えることができます。 それは、どのオブジェクトが存在するか(会社、人、機会など)、それらが持つプロパティ(フィールド)が何か、そしてそれらがどのように関連しているかを決定します。 それを顧客データの地図として考えることができます。 それは、どのオブジェクトが存在するか(会社、人、機会など)、それらが持つプロパティ(フィールド)が何か、そしてそれらがどのように関連しているかを決定します。 それを顧客データの地図として考えることができます。 それは、どのオブジェクトが存在するか(会社、人、機会など)、それらが持つプロパティ(フィールド)が何か、そしてそれらがどのように関連しているかを決定します。 それを顧客データの地図として考えることができます。 それは、どのオブジェクトが存在するか(会社、人、機会など)、それらが持つプロパティ(フィールド)が何か、そしてそれらがどのように関連しているかを決定します。 それを顧客データの地図として考えることができます。 それは、どのオブジェクトが存在するか(会社、人、機会など)、それらが持つプロパティ(フィールド)が何か、そしてそれらがどのように関連しているかを決定します。 それを顧客データの地図として考えることができます。 顧客データの**設計図**だと考えてください—一度設計したら、実際のデータで埋めていきます。
-## Key Concepts
+## 主要な概念
-### Objects
+### オブジェクト
-**Objects** are the main categories of data in your CRM. Each object represents a type of thing you want to track.
+**オブジェクト**は、CRMにおけるデータの主要なカテゴリです。 各オブジェクトは、追跡したい対象の種類を表します。
-Twenty comes with standard objects:
+Twenty には標準オブジェクトがあります:
-* **People** — individuals (contacts, leads, partners)
-* **Companies** — organizations
-* **Opportunities** — deals or sales
-* **Notes** — attached notes on records
-* **Tasks** — to-dos linked to records
+* **People** — 個人(連絡先、リード、パートナー)
+* **Companies** — 組織
+* **Opportunities** — 商談または売上
+* **Notes** — レコードに添付されたメモ
+* **Tasks** — レコードに関連付けられたToDo
-You can also create **custom objects** for anything specific to your business (e.g., Projects, Subscriptions, Events).
+あなたのビジネス固有のあらゆるもの向けに**カスタムオブジェクト**を作成することもできます(例:Projects、Subscriptions、Events)。
-### Fields
+### フィールド
-**Fields** are the properties or attributes that describe each object. They store the actual information.
+**フィールド**は、各オブジェクトを記述するプロパティ(属性)です。 実際の情報を保存します。
-For example, the **People** object has fields like:
+例えば、**People** オブジェクトには次のようなフィールドがあります:
-* Name
-* Email
-* Phone
-* Job Title
-* Company (a relation to the Companies object)
+* 名前
+* メール
+* 電話
+* 職種
+* Company(Companies オブジェクトへのリレーション)
-Fields have different **types**: text, number, date, select, multi-select, relation, and more. You can add custom fields to any object.
+フィールドにはさまざまな**タイプ**があります: テキスト、数値、日付、セレクト、マルチセレクト、リレーションなど。 任意のオブジェクトにカスタムフィールドを追加できます。
-### Records
+### レコード
-**Records** are the individual entries within an object — the actual data you create and manage.
+**レコード**は、オブジェクト内の個別のエントリであり、あなたが作成・管理する実データです。
-For example:
+例えば:
-* "John Smith" is a **record** in the People object
-* "Acme Corp" is a **record** in the Companies object
+* "John Smith" は People オブジェクトの**レコード**です
+* "Acme Corp" は Companies オブジェクトの**レコード**です
-**An analogy:**
+**例え:**
-| Data Model Concept | Real-World Analogy |
-| ------------------ | ------------------------------------------ |
-| **Objects** | Sections in a book (the categories) |
-| **Fields** | Columns in a spreadsheet (the properties) |
-| **Records** | Rows in a spreadsheet (the actual entries) |
+| データモデルの概念 | 実世界のたとえ |
+| ---------- | ------------------- |
+| **オブジェクト** | 本のセクション(カテゴリ) |
+| **フィールド** | スプレッドシートの列(プロパティ) |
+| **レコード** | スプレッドシートの行(実際のエントリ) |
-You design the data model (objects + fields) once, then create many records within that structure.
+データモデル(オブジェクト + フィールド)は一度設計し、その構造の中で多数のレコードを作成します。
-## Why Customize Your Data Model?
+## データモデルをカスタマイズする理由
-Every business works differently. Customizing your data model means you can shape Twenty around **your** processes instead of forcing yours into a rigid system.
+すべてのビジネスは違った方法で動作します。 データモデルをカスタマイズすれば、硬直的なシステムに自分のプロセスを押し込めるのではなく、Twenty を**あなたの**プロセスに合わせて形作れます。
-Twenty offers full flexibility:
+Twenty は高い柔軟性を提供します:
-* Create as many custom objects as you need
-* Add unlimited custom fields
-* The price doesn't change based on customization
+* 必要なだけカスタムオブジェクトを作成できます
+* 無制限にカスタムフィールドを追加できます
+* カスタマイズしても価格は変わりません
-## Tips to Design Your Data Model
+## データモデルを設計するためのヒント
-### 1. Start with Your Core Objects
+### 1. コアとなるオブジェクトから始める
-Identify the main concepts you work with. Twenty already provides:
+取り扱う主要な概念を特定しましょう。 Twenty にはすでに次のものが用意されています:
-* **People** — your contacts
-* **Companies** — your accounts
-* **Opportunities** — your deals
+* **People** — 連絡先
+* **Companies** — 取引先
+* **Opportunities** — 商談
-Think about what else you might need:
+他に何が必要か考えてみましょう:
-* Stripe would need a `Subscriptions` object
-* Airbnb would need a `Trips` object
-* An accelerator would need a `Batches` object
+* Stripe には `Subscriptions` オブジェクトが必要になるでしょう
+* Airbnb には `Trips` オブジェクトが必要になるでしょう
+* アクセラレーターには `Batches` オブジェクトが必要になるでしょう
-### 2. Use Fields for Variations, Not New Objects
+### 2. バリエーションには新規オブジェクトではなくフィールドを使う
-If something is just a characteristic of an existing object, make it a **field**.
+既存オブジェクトの単なる特性であれば、**フィールド**にしましょう。
-**Use fields for:**
+**フィールドを使うケース:**
-* Categories and labels (e.g., `Industry` for Companies)
-* Status values (e.g., `Stage` for Opportunities)
-* Attributes and properties
+* カテゴリやラベル(例:Companies の `Industry`)
+* ステータス値(例:Opportunities の `Stage`)
+* 属性やプロパティ
-### 3. Create an Object When It Stands on Its Own
+### 3. 独立して成立する場合はオブジェクトを作成する
-If the concept has its own lifecycle, properties, or relationships, it deserves an object.
+その概念に固有のライフサイクル、プロパティ、またはリレーションシップがあるなら、オブジェクトにする価値があります。
-**Create an object for:**
+**オブジェクトを作成する対象:**
-* **Projects** — have deadlines, owners, and tasks
-* **Subscriptions** — connect companies, products, and invoices
-* **Events** — involve attendees and follow-up actions
+* **Projects** — 期限、所有者、タスクを持つもの
+* **Subscriptions** — 会社、製品、請求書を結びつけるもの
+* **Events** — 参加者とフォローアップアクションを伴うもの
-These go beyond a single field because they carry their own data and relationships.
+これらは単一のフィールドを超えており、独自のデータと関係を有しています。
-### 4. Create an Object When Records Are Open-Ended
+### 4. レコード数が不定の場合はオブジェクトを作成する
-If something can be linked multiple times and you don't know how many, use an object.
+関連付け回数が複数で、どれだけになるかわからない場合は、オブジェクトを使用します。
-**Bad approach:**
-Creating fields like `Product 1`, `Product 2`, `Product 3`...
+**悪いアプローチ:**
+`Product 1`、`Product 2`、`Product 3` のようなフィールドを作成する...
-**Good approach:**
-Create a `Products` object and relate it to records. This supports one, two, or a hundred products without changing your model.
+**良いアプローチ:**
+`Products` オブジェクトを作成してレコードに関連付ける。 こうすることで、製品が1つでも100でも、モデルを変更せずに対応できます。
-### 5. Keep It Simple First
+### 5. まずはシンプルに
-Start with fields. Move to new objects only when you feel the limits:
+まずはフィールドから始めましょう。 限界を感じたときにのみ新しいオブジェクトへ移行しましょう:
-* Too many fields on one object
-* Repeated records that should be separate
-* Relationships that don't fit neatly
+* 1つのオブジェクトにフィールドが多すぎる
+* 別々にすべきレコードが繰り返されている
+* リレーションがうまく収まらない
-## Special Note on People, Companies, and Opportunities
+## 人、会社、機会に関する特別な注意事項
- **Email and calendar sync only works with People, Companies, and Opportunities.**
+ **メールとカレンダーの同期は、人、会社、機会でのみ機能します。**
- These are the only objects where you can access synchronized emails and meetings from your mailbox/calendar. We recommend using them as much as possible.
+ メールボックス/カレンダーから同期済みのメールやミーティングにアクセスできるのは、これらのオブジェクトだけです。 可能な限りこれらを使用することを推奨します。
-**Best practices:**
+**ベストプラクティス:**
-* If you need categories of People, use fields (not new objects)
-* Example: Use a `Person Type` field with values "Prospect" and "Partner" instead of creating separate objects
-* Create different **views** to filter: one showing partners, another showing prospects
+* 「人」のカテゴリが必要な場合は、新しいオブジェクトではなくフィールドを使用してください
+* 例: 別々のオブジェクトを作成するのではなく、値として「見込み客」と「パートナー」を持つ `Person Type` フィールドを使用します
+* フィルター用に別々の**ビュー**を作成します: 1つはパートナーを表示し、もう1つは見込み客を表示します
-**It's okay to have fields that don't apply to every record.** For example, a `Referral Link` field on People that only applies when `Person Type = Partner`. Hide this field from views where it's not relevant.
+**すべてのレコードに当てはまらないフィールドがあっても問題ありません。** 例えば、`Person Type = Partner` の場合にのみ適用される、「人」オブジェクトの `Referral Link` フィールド。 関連しないビューではこのフィールドを非表示にします。
-## Questions to Guide Your Choice
+## 選択を導くための質問
-Ask yourself:
+自問してください:
-Is this just a property of something I already have, or does it need its own properties?
-Will I ever need to track multiple of these per record, without knowing how many?
-Does this concept connect to several different objects, not just one?
-Will it have its own lifecycle (stages, start/end dates)?
+これは、すでに持っているものの単なるプロパティですか、それとも独自のプロパティが必要ですか?
+各レコードで、その数を事前に知らずに複数を追跡する必要がありますか?
+この概念は、1つだけでなく複数の異なるオブジェクトに関連しますか?
+それは独自のライフサイクル(ステージ、開始/終了日)を持ちますか?
-If the answer is "yes" to one or more, it's probably time for a new object.
+1つ以上に "はい" と答えるなら、新しいオブジェクトにする時期かもしれません。
-## Accessing Your Data Model
+## データモデルへのアクセス
-1. Go to **Settings** in the left sidebar
-2. Click **Data Model**
-3. View all your objects (standard and custom)
-4. Click any object to see and edit its fields
+1. 左サイドバーの**設定**に移動します
+2. **データモデル**をクリックします
+3. すべてのオブジェクト(標準およびカスタム)を表示します
+4. 任意のオブジェクトをクリックして、そのフィールドを表示・編集します
- **Don't see Data Model in Settings?**
+ **設定にデータモデルが見当たりませんか?**
- Access to the data model is usually restricted to administrators. Contact your workspace admin if you need access.
+ データモデルへのアクセスは通常、管理者に制限されています。 アクセスが必要な場合は、ワークスペース管理者に連絡してください。
-## Next Steps
+## 次のステップ
-Once you've planned your data model:
+データモデルの計画が完了したら:
-* [How to Create Custom Objects](/l/ja/user-guide/data-model/how-tos/create-custom-objects)
-* [How to Create Custom Fields](/l/ja/user-guide/data-model/how-tos/create-custom-fields)
-* [How to Create Relation Fields](/l/ja/user-guide/data-model/how-tos/create-relation-fields)
+* [カスタムオブジェクトの作成方法](/l/ja/user-guide/data-model/how-tos/create-custom-objects)
+* [カスタムフィールドの作成方法](/l/ja/user-guide/data-model/how-tos/create-custom-fields)
+* [リレーションフィールドの作成方法](/l/ja/user-guide/data-model/how-tos/create-relation-fields)
-## Need Help?
+## ヘルプが必要ですか?
-Our team can help you design and create the data model you need. Discover our [Implementation Services](/l/ja/user-guide/getting-started/capabilities/implementation-services).
+当社のチームが、必要なデータモデルの設計と作成を支援します。 当社の[実装サービス](/l/ja/user-guide/getting-started/capabilities/implementation-services)をご覧ください。
diff --git a/packages/twenty-docs/l/ja/user-guide/getting-started/capabilities/glossary.mdx b/packages/twenty-docs/l/ja/user-guide/getting-started/capabilities/glossary.mdx
index 71ac91622f..315e0c4dd3 100644
--- a/packages/twenty-docs/l/ja/user-guide/getting-started/capabilities/glossary.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/getting-started/capabilities/glossary.mdx
@@ -1,108 +1,104 @@
---
-title: Glossary
-description: Get familiar with essential terminology used in Twenty.
+title: 用語集
+description: Twentyで使用される基本的な用語に慣れましょう。
---
## API
-API (Application Programming Interface) allows you to connect Twenty with other software systems and build custom integrations.
+API(アプリケーションプログラミングインターフェース)は、Twentyを他のソフトウェアシステムと接続し、カスタム統合を構築することを可能にします。
-## Apps
+## アプリ
-Apps are custom extensions built as code that can define data models and serverless functions. They enable developers to create reusable customizations that can be deployed across multiple workspaces.
+アプリは、データモデルやサーバーレス関数を定義できる、コードとして構築されたカスタム拡張機能です。 これにより、開発者は複数のワークスペースにデプロイ可能な再利用可能なカスタマイズを作成できます。
-## Code Actions
+## コードアクション
-Code Actions are workflow steps that let you write custom JavaScript to transform data, make calculations, or perform complex logic that isn't possible with built-in actions.
+コードアクションは、データの変換、計算、組み込みアクションでは実現できない複雑なロジックの実行のために、カスタムの JavaScript を記述できるワークフローのステップです。
-## Command Menu
+## コマンドメニュー
-The Command Menu is a quick-access interface (opened with `Cmd + K` on Mac and `Ctrl + K` on Windows) that lets you perform actions, create records, and navigate your workspace efficiently.
+コマンドメニューは、`Cmd + K`(Macの場合)、`Ctrl + K`(Windowsの場合)で開くことができるクイックアクセスインターフェースであり、操作を実行したり、レコードを作成したり、ワークスペースを効率的に移動したりすることを可能にします。
-## Company & People
+## Company と People
-The CRM has two fundamental types of records:
+CRMには基本的な2つの種類のレコードがあります:
-* A `Company` represents a business or organization.
-* `People` represent your company's current and prospective customers or clients.
+* `Company`は企業や組織を表します。
+* `People`はあなたの企業の現在および潜在的な顧客を表します。
-## Custom Fields
+## カスタムフィールド
-Custom Fields are data fields you create to capture information specific to your business needs and processes.
+カスタムフィールドは、ビジネスのニーズとプロセスに特化した情報をキャプチャするために作成されたデータフィールドです。
-## Data Model
+## データモデル
-A Data Model is the structure that defines how information is organized in your CRM, including what objects exist, their properties (fields), and how they relate to each other.
+データモデルとは、CRMで情報がどのように編成されているかを定義する構造であり、どのオブジェクトが存在するか、それらのプロパティ(フィールド)、およびそれらがどのように関連しているかを含みます。
-## Favorites
+## お気に入り
-Favorites are records you've marked for quick access, appearing in your sidebar for instant navigation to important data.
+お気に入りとは、すぐにアクセスできるようにマークされたレコードであり、サイドバーに表示され、重要なデータへの即時ナビゲーションを可能にします。
-## Field
+## フィールド
-A field refers to a specific area where particular data is stored for an entity.
+フィールドとは、エンティティに特定のデータが保存される特定の領域を指します。
-## Integration
+## イテレータ
-Integrations are built-in tools that allow you to link Twenty with other software or systems.
+イテレーターは、アイテムの配列をループし、リスト内の各アイテムに対して後続のアクションを実行するワークフローアクションです。
-## Iterator
+## カンバン
-An Iterator is a workflow action that loops through an array of items, executing subsequent actions for each item in the list.
+`Kanban`は、カードと列を使ってビジネスプロセスを視覚的に追跡する方法です。 各列はプロセスの各ステージ(例:新規、進行中、成約、失注)を表し、進行に応じてレコードをこれらのステージへ移動します。
-## Kanban
+## オブジェクト
-A `Kanban` is a visual way to track your business processes using cards and columns. Each column represents a stage in your process (for example: new, ongoing, won, lost), and you move records through these stages as they progress.
+オブジェクトは、CRMで特定の種類のエンティティを表すデータ構造です(例:People、Companies、Opportunities)。 オブジェクトには、標準(ビルトイン)とカスタム(ユーザー作成)があります。
-## Object
+## 商談
-An Object is a data structure that represents a specific type of entity in your CRM (like People, Companies, or Opportunities). Objects can be standard (built-in) or custom (created by you).
+Twenty CRMの商談は、アカウントや連絡先との潜在的な取引や販売を指します。
-## Opportunities
+## レコード
-Opportunities in Twenty CRM are potential deals or sales with accounts or contacts.
+レコードとは、特定のオブジェクトのインスタンスを示します。例:特定のアカウントまたは連絡先。
-## Record
+## リレーションフィールド
-A Record indicates an instance of an object, like a specific account or contact.
+リレーションフィールドは異なるオブジェクト間の接続を作成し、レコード同士をリンクできます(例:人を会社に関連付ける)。
-## Relation Fields
+## 標準フィールド
-Relation Fields create connections between different objects, allowing you to link records together (like connecting a Person to a Company).
+標準フィールドは、デフォルトでオブジェクトに付属する事前に構築されたデータフィールドであり、すべてのワークスペースで共通の機能を提供します。
-## Standard Fields
+## タスク
-Standard Fields are pre-built data fields that come with objects by default and provide common functionality across all workspaces.
+Twenty CRMのタスクは、連絡先、アカウント、または商談に関連する、担当者に割り当てられるアクティビティです。
-## Tasks
+## トリガー
-Tasks in Twenty CRM are assigned activities relating to contacts, accounts, or opportunities.
+トリガーはワークフローの開始点、すなわち自動化を開始するイベントまたは条件です。 例としては、レコードの作成、レコードの更新、Webhook、スケジュールされた時刻などがあります。
-## Triggers
+## ビュー
-Triggers are the starting point of a workflow — the event or condition that initiates the automation. Examples include record creation, record updates, webhooks, or scheduled times.
+ビューを使用してレコードの表示をカスタマイズし、フィルター、レイアウト、並べ替えオプションを各ビューに設定することができます。
-## Views
+## アップサート
-You can customize the display of your records using views, setting different filters, layouts and sorting options for each view.
+アップサートは「update」と「insert」を組み合わせた操作で、一致が見つかった場合は既存のレコードを更新し、一致が存在しない場合は新しいレコードを作成します。
-## Upsert
+## ウェブフック
-Upsert is an operation that combines "update" and "insert" — it updates an existing record if a match is found, or creates a new record if no match exists.
+ウェブフックは、特定のイベントが発生したときにTwentyから他のアプリケーションへ送信される自動メッセージで、リアルタイムのデータ同期を可能にします。
-## Webhooks
+## ワークフロー
-Webhooks are automated messages sent from Twenty to other applications when specific events occur, enabling real-time data synchronization.
+ワークフローは特定の条件に基づいてアクションをトリガーする自動プロセスであり、繰り返しのタスクやビジネスプロセスを自動化するのに役立ちます。
-## Workflows
+## ワークスペース
-Workflows are automated processes that trigger actions based on specific conditions, helping you automate repetitive tasks and business processes.
+`Workspace`は通常、Twentyを使用している企業を表します。 そこには、あなたやチームメンバーがTwentyに追加したすべてのレコードとデータが保存されます。
+ワークスペースには、通常、従業員のメールアドレスに使われる会社のドメイン名が1つ設定されています。
-## Workspace
+## ワークスペースメンバー
-A `Workspace` typically represents a company using Twenty. It holds all the records and data that you and your team members add to Twenty.
-It has a single domain name, which is typically the domain name your company uses for employee email addresses.
-
-## Workspace Members
-
-Workspace Members are the Twenty users from your team who have access to your workspace. They can be assigned as owners or assignees for records.
+ワークスペースメンバーは、ワークスペースにアクセスできるあなたのチームのTwentyユーザーです。 レコードの所有者または担当者として割り当てることができます。
diff --git a/packages/twenty-docs/l/ja/user-guide/getting-started/capabilities/implementation-services.mdx b/packages/twenty-docs/l/ja/user-guide/getting-started/capabilities/implementation-services.mdx
index 706de4d2a0..dd90a7cc4d 100644
--- a/packages/twenty-docs/l/ja/user-guide/getting-started/capabilities/implementation-services.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/getting-started/capabilities/implementation-services.mdx
@@ -1,16 +1,16 @@
---
-title: Implementation Services
-description: Whether you need help getting started or creating advanced customizations, we have a solution.
+title: 導入サービス
+description: 開始の手助けや高度なカスタマイズの作成が必要な場合にも、私たちは解決策を提供します。
---
-## Onboarding Packs
+## オンボーディングパック
-Get help from our core team to set up your Twenty workspace with our 4-hour Onboarding packs:
+4時間のオンボーディングパックで、Twenty のワークスペースのセットアップをコアチームがサポートします:
-* **Data Model Design**: Design and create your custom data model with objects, fields, and relationships
-* **Data Migration**: Migrate your existing data from your current CRM to Twenty
-* **Workflow Creation**: Create custom workflows to support your business processes
+* **データモデルの設計**:オブジェクト、フィールド、および関係を含むカスタムデータモデルを設計および作成。
+* **データマイグレーション**:現在のCRMからTwentyへの既存データの移行
+* **ワークフローの作成**:ビジネスプロセスをサポートするためのカスタムワークフローの作成
-## Implementation Partners
+## 実装パートナー
-Work with certified Twenty partners for more advanced customizations and integrations. Reach out to our team via [contact@twenty.com](mailto:contact@twenty.com) to be matched with our partners.
+詳細なカスタマイズと統合のために認定されたTwentyパートナーと協力します。 パートナーとのマッチングをご希望の方は、[contact@twenty.com](mailto:contact@twenty.com) まで当社のチームにご連絡ください。
diff --git a/packages/twenty-docs/l/ja/user-guide/getting-started/capabilities/what-is-twenty.mdx b/packages/twenty-docs/l/ja/user-guide/getting-started/capabilities/what-is-twenty.mdx
index c8158a1b9d..b6c8f134ad 100644
--- a/packages/twenty-docs/l/ja/user-guide/getting-started/capabilities/what-is-twenty.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/getting-started/capabilities/what-is-twenty.mdx
@@ -3,40 +3,44 @@ title: What is Twenty
description: Twenty is an open-source CRM that gives you the building blocks to create exactly what your business needs.
---
-## Vision
+## ビジョン
-Creating a good CRM is hard because it's a balancing act.
-For each business, the requirements seem straightforward, yet everyone's needs are distinct.
-The result is a CRM that's either too basic, or one that's attempting to be a jack-of-all-trades but ending up as a master of none.
+優れたCRMを作成するのは難しいのです。それはバランスを取る行為だからです。
+各ビジネスの要件は一見単純に見えますが、それぞれのニーズは異なります。
+結果として、CRMは基本すぎるか、すべてをこなすが何事にも秀でていないものになります。
+各ビジネスの要件は一見単純に見えますが、それぞれのニーズは異なります。
+結果として、CRMは基本すぎるか、すべてをこなすが何事にも秀でていないものになります。
+各企業の要件は明確に見えますが、皆のニーズは異なります。
+その結果、CRMはあまりにも基本的なものか、万能選手を目指して結果的にどれも得意でないものになります。
-At first, Twenty looks like most CRMs you already know: you can track deals, organize contacts, manage tasks and notes.
+最初は、トゥエンティはあなたが既に知っているほとんどのCRMと同じように見えます:取引の追跡、連絡先の整理、タスクやノートの管理ができます。
**But what sets it apart is our approach to extensibility. We are building an open platform that provides the building blocks for you to solve your unique business problems.**
-We prioritize universal principles and common patterns over feature lists.
-We don't try to have all the answers and instead empower users to find what works best for them.
-Open-source is the bedrock of our approach, ensuring that Twenty evolves with its community, for its community.
+我々は機能リストよりも、普遍的な原則と共通のパターンを優先します。
+すべての答えを出そうとはせず、代わりにユーザーが最も効果的な方法を見つけるのを助けます。
+オープンソースは我々のアプローチの基盤です、それはトゥエンティがコミュニティとともに、ために進化していくことを保証します。
-## Benefits
+## 利点
-**Customizable:** Designed to fit your business needs.
+**カスタマイズ可能:** あなたのビジネスニーズに合わせて設計されています。
-**Community-driven:** Built and maintained by a large open-source community.
+**コミュニティ主導:** 大きなオープンソースコミュニティによって構築され、維持されています。
-**Cost-effective:** You'll never be vendor-locked, because you can always self-host.
+**コスト効果:** 自己ホストが常に可能なので、ベンダーロックされることはありません。
-## Main Features
+## 主な機能
-* **Calendar & Emails:** Sync your mailbox and calendar to see all communications on your CRM records. [Learn more](/l/ja/user-guide/calendar-emails/overview).
+* **Calendar & Emails:** Sync your mailbox and calendar to see all communications on your CRM records. [詳細はこちら](/l/ja/user-guide/calendar-emails/overview).
* **Data Model:** Create custom objects and fields to match your unique business processes. [Explore](/l/ja/user-guide/data-model/overview).
-* **Data Migration:** Import and export your data via CSV or API. [Get started](/l/ja/user-guide/data-migration/overview).
+* **Data Migration:** Import and export your data via CSV or API. [始める](/l/ja/user-guide/data-migration/overview).
* **Views & Pipelines:** Organize your data with table views, kanban boards, and sales pipelines. [Discover](/l/ja/user-guide/views-pipelines/overview).
* **Workflows:** Automate your business processes and integrate with external tools. [Build automations](/l/ja/user-guide/workflows/overview).
-* **AI:** Enhance your CRM with AI-powered features and agents. [Explore AI](/l/ja/user-guide/ai/overview).
-* **Dashboards:** Track performance with custom reports and visualizations. [View dashboards](/l/ja/user-guide/dashboards/overview).
-* **Permissions & Access:** Control who can view, edit, and manage your data with role-based permissions. [Configure access](/l/ja/user-guide/permissions-access/overview).
-* **Notes & Tasks:** Create notes and tasks linked to your records for better collaboration.
-* **API & Webhooks:** Connect to other apps and build custom integrations. [Start integrating](/l/ja/developers/extend/capabilities/apis).
+* **AI:** AI搭載の機能やエージェントでCRMを強化します。 [AIを詳しく見る](/l/ja/user-guide/ai/overview)。
+* **ダッシュボード:** カスタムレポートや可視化でパフォーマンスを追跡します。 [ダッシュボードを表示](/l/ja/user-guide/dashboards/overview)。
+* **権限とアクセス:** ロールベースの権限で、誰がデータを閲覧、編集、管理できるかを制御します。 [アクセスを設定](/l/ja/user-guide/permissions-access/overview)。
+* **ノートとタスク:** より良いコラボレーションのために、レコードに関連付けられたノートやタスクを作成します。
+* **APIおよびWebhooks:** 他のアプリと接続し、カスタム統合を構築します。 [統合を開始](/l/ja/developers/extend/capabilities/apis).
-## Join now
+## 今すぐ参加
-[Register here](https://app.twenty.com) or [become a contributor on GitHub](https://github.com/twentyhq/twenty).
+[こちらで登録](https://app.twenty.com)または[GitHubで貢献者になる](https://github.com/twentyhq/twenty)。
diff --git a/packages/twenty-docs/l/ja/user-guide/getting-started/how-tos/configure-your-workspace.mdx b/packages/twenty-docs/l/ja/user-guide/getting-started/how-tos/configure-your-workspace.mdx
index 8fe48a7db9..d411929ac0 100644
--- a/packages/twenty-docs/l/ja/user-guide/getting-started/how-tos/configure-your-workspace.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/getting-started/how-tos/configure-your-workspace.mdx
@@ -1,77 +1,80 @@
---
-title: Configure Your Workspace
-description: Every business works differently. Start with these 3 steps to shape Twenty around your needs.
+title: ワークスペースを構成する
+description: すべてのビジネスは違った方法で動作します。 ニーズに合わせて Twenty を整えるために、まずは次の3つのステップから始めましょう。
---
-**Quick Win**: Start with connecting your mailbox. This gives you immediate value and helps your team see Twenty in action with real data. You can do so under Settings → Accounts.
+**クイックウィン**: まずはメールボックスを接続しましょう。 これは即座に価値を提供し、チームが実際のデータでTwentyを行動しているところを確認するのに役立ちます。 設定 → アカウントで行えます。
-## 1. Customize your data model
+## 1. データモデルをカスタマイズする
-Twenty offers the flexibility you need to shape the data model that will best support your day-to-day.
-Create objects and fields of any type, including relations between your different objects. You can do so under Settings → Data Model.
-Here are a few tips:
+Twentyは、日常をサポートする最適なデータモデルを形成するために必要な柔軟性を提供します。
+異なるオブジェクト間の関係を含む、任意のタイプのオブジェクトとフィールドを作成できます。 You can do so under Settings → Data Model.
+異なるオブジェクト間の関係を含む、任意のタイプのオブジェクトとフィールドを作成できます。 You can do so under Settings → Data Model. 設定 → データモデルで行えます。
+ここにいくつかのヒントがあります:
-* **You are not limited in the number of custom fields nor custom objects**. Adding custom objects and fields will not lead to upgrading your plan.
-* **People, Companies and Opportunities are the three objects from where you can access the emails and meetings synchronized from your mailbox and calendar**. We recommend using those as much as possible, adding fields to categorize your records if need be. Here is an example:
- * It is best to use the People object for your prospects and partners, creating a field on the People object named `Person Type`, instead of creating a Partner custom object. Because you would not be able to access the emails exchanged with this person from the Partner records.
- * Create different views under People, one to display partners and one to display prospects.
-* Two People cannot have the same email address. Two Companies cannot have the same domain.
-* You can deactivate standard fields and objects you do not want to use.
-* You can hide fields from views: don't be afraid of creating fields, you won't have to display all of them.
+* **カスタムフィールドやカスタムオブジェクトの数には制限がありません**。 カスタムオブジェクトやフィールドを追加しても、プランをアップグレードする必要はありません。 **カスタムフィールドやカスタムオブジェクトの数には制限がありません**。 カスタムオブジェクトやフィールドを追加しても、プランをアップグレードする必要はありません。 カスタムオブジェクトやフィールドを追加しても、プランをアップグレードする必要はありません。
+* **メールボックスやカレンダーから同期されたメールと会議には、「人」「会社」「機会」の3つのオブジェクトからアクセスできます。** 可能な限りそれらを使用し、記録を整理するためにフィールドを追加することをお勧めします。 こちらは例です: こちらは例です: こちらは例です:
+ * 「人」オブジェクトを見込み客やパートナーに使用し、代わりに「パートナー」カスタムオブジェクトを作成するのではなく、「人」オブジェクトに「人物タイプ」というフィールドを作成するのが最良です。 なぜなら、この人物と交換されたメールを「パートナー」記録からアクセスすることはできないからです。 「人」オブジェクトを見込み客やパートナーに使用し、代わりに「パートナー」カスタムオブジェクトを作成するのではなく、「人」オブジェクトに「人物タイプ」というフィールドを作成するのが最良です。 なぜなら、この人物と交換されたメールを「パートナー」記録からアクセスすることはできないからです。 なぜなら、この人物と交換されたメールを「パートナー」記録からアクセスすることはできないからです。
+ * 「人」カテゴリの中でパートナーを表示するためのビュー、見込み客を表示するためのビューを作成します。
+* 2人の「人」は同じメールアドレスを持つことはできません。 2つの会社は同じドメインを持つことはできません。 2つの会社は同じドメインを持つことはできません。 2つの会社は同じドメインを持つことはできません。
+* 使用したくない標準フィールドとオブジェクトを無効化できます。
+* ビューからフィールドを隠すことができます:フィールドを作成することを恐れないでください、それらすべてを表示する必要はありません。
-Read [this article](/l/ja/user-guide/data-model/overview) to learn how to design your data model.
+データモデルの設計方法についてもっと学ぶには、[この記事](/l/ja/user-guide/data-model/overview)をお読みください。
-## 2. Bring your data in
+## 2. データを導入する
-Bringing your existing data into Twenty gives your team context from the start.
+既存のデータをTwentyに導入すると、チームが最初からコンテキストを得ることができます。
-### Connect your mailbox
+### メールボックスを接続する
-If you have not done so when creating your workspace, connect your **Google or Microsoft account** under Settings → Accounts. This allows Twenty to:
+ワークスペースの作成時に行っていない場合は、設定 → アカウントで **Google または Microsoft アカウント** を接続してください。 これにより、Twentyが次のことを行えるようになります:
-* Import your messages and meetings
-* Auto-create contacts based on interactions (optional)
-* Keep communication history visible for your team
+* メッセージと会議のインポート
+* インタラクションに基づく自動連絡先作成(オプション)
+* チームにコミュニケーション履歴を表示し続ける
-**Using another provider?**
-You can add another mailbox via SMTP or another calendar via CalDAV. You will need to activate the feature under Settings → Releases → Lab, and then go back to the Settings → Accounts tab.
+**他のプロバイダーを使用していますか?**
+SMTP経由で別のメールボックスを追加するか、CalDAV経由で別のカレンダーを追加できます。 [設定] → [リリース] → [ラボ]で機能を有効にしてから、[設定] → [アカウント]タブに戻る必要があります。 [設定] → [リリース] → [ラボ]で機能を有効にしてから、[設定] → [アカウント]タブに戻る必要があります。 設定するには、**設定 → アカウント** に移動します。
-### Import data via csv
+### csvファイルでデータをインポートする
-Use the Command menu (`Cmd + K` or `Ctrl + K`) to import People, Companies, Opportunities, or any custom objects via CSV.
+コマンドメニュー(`Cmd + K`または`Ctrl + K`)を使用して、CSV経由で人、会社、機会、または任意のカスタムオブジェクトをインポートします。
-**Key guidelines**:
+**重要なガイドライン**:
-* Download the sample file to understand the expected format
-* Limit each file to 10k records
-* Remove duplicate emails for People or duplicate domains for Companies
-* Review and fix errors (highlighted in yellow) before importing
+* サンプルファイルをダウンロードして予想される形式を理解します
+* 各ファイルを10kレコードまで制限する
+* 人の重複メール、会社の重複ドメインを削除する
+* インポート前にエラー(黄色でハイライト)をレビューして修正する
-Read [this article](/l/ja/user-guide/data-migration/overview) to learn more about data import.
+データインポートについてさらに学ぶには、[この記事](/l/ja/user-guide/data-migration/overview)を読んでください。
-## 3. Create your first view
+## 3. 最初のビューを作成する
-Creating different views is key to make the data actionable for your team.
-Here is how to proceed:
+異なるビューを作成することは、チームに対してデータを実行可能にする鍵です。
+進め方はこちらです:
+進め方はこちらです:
+進め方はこちらです:
-* **Add or hide columns**
- Manage the fields visible in a given view clicking on Options → Fields (from the top right). You can show/hide fields from there.
+* **列を追加または非表示にする**
+ オプション → フィールド(右上から)をクリックして、特定のビューで表示されるフィールドを管理します。 そこからフィールドを表示/非表示にできます。 そこからフィールドを表示/非表示にできます。 そこからフィールドを表示/非表示にできます。
-* **Reorder fields**
- Reorder the fields from a given view clicking on Options → Fields (from the top right). Drag and drop the fields to reorder them.
+* **フィールドを並べ替える**
+ オプション → フィールド(右上から)をクリックして、特定のビューのフィールドを並べ替えます。 ドラッグアンドドロップでフィールドを並べ替えます。
-* **Filter your view**
- Narrow down the records displayed using the Filters from the top right.
+* **ビューをフィルタリングする**
+ 右上のフィルターを使用して表示されるレコードを絞り込みます。
-* **Sort records**
- Reorder records displayed using the Sort function from the top right, or by clicking directly on the column name.
+* **レコードを並び替える**
+ 右上の並び替え機能を使用するか、列名を直接クリックして表示されるレコードを並び替えます。
-* **Choose the layout**
- You can switch to a **Kanban layout** or a list **Group By** layout, as long as the object has a `Stage` or similar select-type field.
+* **レイアウトを選択する**
+ オブジェクトに「ステージ」または同様の選択タイプフィールドがある限り、**カンバンレイアウト**または**グループ化**レイアウトに切り替えることができます。
-* **Save your view as Favorites**
- This can be done using the dropdown menu showing the different views.
+* **ビューをお気に入りとして保存する**
+ これは、異なるビューを表示するドロップダウンメニューを使用して行うことができます。
-## What's next?
+## 次は何をしますか?
-Start creating automations using [workflows](/l/ja/user-guide/workflows/overview).
+[ワークフロー](/l/ja/user-guide/workflows/overview)を使用して自動化を開始してください。
diff --git a/packages/twenty-docs/l/ja/user-guide/getting-started/how-tos/create-workspace.mdx b/packages/twenty-docs/l/ja/user-guide/getting-started/how-tos/create-workspace.mdx
index f93617f83f..5c6d19f5e2 100644
--- a/packages/twenty-docs/l/ja/user-guide/getting-started/how-tos/create-workspace.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/getting-started/how-tos/create-workspace.mdx
@@ -1,48 +1,48 @@
---
-title: Create a Workspace
-description: Follow a step-by-step guide on how to register on Twenty, choose a subscription plan, and set up your account.
+title: ワークスペースを作成する
+description: Twenty に登録し、サブスクリプションプランを選択して、アカウントを設定するためのステップバイステップガイドに従ってください。
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-## Step 1: Registration
+## ステップ1: 登録
-1. Navigate to [Twenty Sign Up](https://app.twenty.com).
-2. Select your preferred sign-up method:
- * **Continue with Google** for Google account registration.
- * **Continue with Microsoft** for Microsoft account registration.
- * Or, **Continue With Email** for email registration.
+1. [Twentyへのサインアップ](https://app.twenty.com)に移動します。
+2. ご希望のサインアップ方法を選択してください:
+ * Googleアカウントでの登録には、**Googleで続行** を選択してください。
+ * Microsoftアカウントでの登録には、**Microsoftで続行** を選択してください。
+ * または、メールでの登録には **メールで続行** を選択してください。
-
+
-## Step 2: Choosing a Trial Period
+## ステップ 2: トライアル期間の選択
-Choose between two trial periods:
+2 つのトライアル期間から選択:
-### 30 days
+### 30 日間
-With credit card
+クレジットカードで
-### 7 days
+### 7 日間
-Without credit card
+クレジットカードなしで
-Both trials include:
+どちらのトライアルも含まれます:
-* Full access
-* Unlimited contacts
-* Email integration
-* Custom objects
+* フルアクセス
+* 連絡先無制限
+* メール統合
+* カスタムオブジェクト
* API & Webhooks
-You can click on "Change plan" to choose a different plan or billing interval.
+「プランの変更」をクリックして、別のプランや請求間隔を選択できます。
-## Step 3: Payment Confirmation & Account Setup
+## ステップ 3: 支払い確認 & アカウント設定
-Post payment approval via Stripe, you're directed to create your workspace and user profile. Remember that you can cancel your subscription anytime.
+Stripe での支払い承認後、ワークスペースとユーザープロフィールの作成に進みます。 サブスクリプションはいつでもキャンセルできます。 サブスクリプションはいつでもキャンセルできます。
-## Support
+## サポート
-For queries or help, connect with the dedicated support team at [contact@twenty.com](mailto:contact@twenty.com) or send a message on [Discord](https://discord.gg/cx5n4Jzs57).
+ご質問やサポートが必要な場合は、[contact@twenty.com](mailto:contact@twenty.com) または [Discord](https://discord.gg/cx5n4Jzs57) で専属のサポートチームに連絡してください。
diff --git a/packages/twenty-docs/l/ja/user-guide/getting-started/how-tos/navigate-around-twenty.mdx b/packages/twenty-docs/l/ja/user-guide/getting-started/how-tos/navigate-around-twenty.mdx
index 8071decfd3..24bae7b765 100644
--- a/packages/twenty-docs/l/ja/user-guide/getting-started/how-tos/navigate-around-twenty.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/getting-started/how-tos/navigate-around-twenty.mdx
@@ -1,83 +1,84 @@
---
-title: Navigate Around Twenty
-description: Get a quick overview of how to navigate through the platform and where to take different types of actions.
+title: Twenty の操作方法
+description: プラットフォームのナビゲーション方法や、さまざまなアクションを実行する場所の概要を素早く把握できます。
---
-## The Main Layout
+## メインレイアウト
-The center of the screen is **where your records live**: people, companies, opportunities, tasks, notes, dashboards, workflows and any other object you created. This is where the day-to-day work happens.
-You can **view, edit, delete records** from there as well as **creating new views**.
+画面の中央は、**あなたのレコードが存在する場所**です。人物、企業、商談、タスク、メモ、ダッシュボード、ワークフロー、そしてあなたが作成したその他のオブジェクトがここにあります。 ここで日常業務が行われます。
+そこから**レコードを表示、編集、削除**を行い、新しいビューを**作成**できます。
-## The Navigation Bar
+## ナビゲーションバー
-On the left side, from the top to the bottom, you'll be able to:
+左側では、上から下にかけて次のことができます:
-* Switch between your **several workspaces** using the dropdown menu or create a new workspace
-* Use the **search bar** (press `/` to focus on it instantly)
-* Open the **Settings** section
-* Have direct access to your **Favourites views**. Favourites are unique for each user.
-* Switch between different objects
-* **Create automations** using workflows
-* Reach out to Support and open our User Guide.
+* ドロップダウンメニューを使用して**複数のワークスペース**を切り替える、または新しいワークスペースを作成する
+* **検索バー**を使用(`/` を押すとすぐにフォーカスできます)
+* **設定**セクションを開く
+* **お気に入りのビュー**に直接アクセスできます。 お気に入りはユーザーごとに固有です。
+* 異なるオブジェクトを切り替える
+* ワークフローを使用して**自動化を作成**
-## The Command Menu
+## コマンドメニュー
-The command menu gives you **quick access to actions** in Twenty. You can access it in two ways:
+コマンドメニューは、Twenty における**アクションへのクイックアクセス**を提供します。 アクセス方法は2通りあります:
-* **Keyboard shortcut**: Press `Cmd + K` (Mac) or `Ctrl + K` (Windows)
-* **Mouse**: Click the three dots in the top right corner
- From there, you can:
-* Create new records
-* **Import and export data via csv**
-* Create new views
-* Access deleted records (Twenty supports soft and hard deletes)
-* See the keyboard shortcuts to quickly access objects in your workspace
+* **キーボードショートカット**:`Cmd + K`(Mac)または`Ctrl + K`(Windows)を押します
+* **マウス**:右上の三点メニューをクリック
+ そこから次の操作ができます:
+* 新しいレコードを作成
+* **CSVでデータをインポートおよびエクスポート**
+* 新しいビューを作成
+* 削除されたレコードにアクセスできます(Twenty はソフト削除とハード削除をサポートしています)
+* ワークスペース内のオブジェクトに素早くアクセスするためのキーボードショートカットを確認
-## The Search Bar
+## 検索バー
-The search bar is accesible via the Command Menu, at the top of your navigation bar, or by pressing `/` to focus on it instantly. Search works across all object.
+検索バーには、コマンドメニュー、ナビゲーションバー上部、または `/` を押して即座にフォーカスすることでアクセスできます。 検索はすべてのオブジェクトを横断して機能します。
-## The Side Panel
+## サイドパネル
-When you click on a record, the side panel appears on the right. This gives you a quick overview of the record's key information, without bringing you to another page. From there, you can decide to close this overview or to get additional information about this record, clicking on the Open button.
+レコードをクリックすると、右側にサイドパネルが表示されます。 これにより、別のページに移動することなく、そのレコードの主要な情報の概要をすばやく確認できます。 そこから、この概要を閉じるか、Open ボタンをクリックしてこのレコードの追加情報を表示することができます。
-## Views
+## ビュー
-Every object (like Opportunities or People) supports multiple views. You're not limited in the number of views per object.
+すべてのオブジェクト(例:商談や人物)は複数のビューをサポートしています。 オブジェクトごとのビュー数に制限はありません。
-Use the dropdown menu at the top left of the main layout to switch between the different views. For example:
+メインレイアウトの左上にあるドロップダウンメニューを使用して、さまざまなビューを切り替えます。 例えば:
-* Use a Kanban view to track opportunities by stage
-* Use Group By view to create sections and improve efficiency
-* Use filters to focus on specific records (e.g. leads created last week)
-* Save filtered views to reuse them later
-* Favourite views for fast access
+* ステージごとの商談を追跡するためにカンバンビューを使用
+* セクションを作成し効率を向上させるためにグループ化ビューを使用
+* 特定のレコードに焦点を当てるためにフィルターを使用します(例:先週作成されたリード)
+* フィルターされたビューを保存して後で再利用
+* 迅速なアクセスのためにビューをお気に入りに登録
-If you're new to Views, read our [Views & Pipelines guide](/l/ja/user-guide/views-pipelines/overview) to learn how to create and customize them.
+Views を初めて利用する場合は、[ビューとパイプラインのガイド](/l/ja/user-guide/views-pipelines/overview)を読んで、作成とカスタマイズの方法を学んでください。
-## Settings
+## 設定
-Open your Settings from the top left to:
+左上から設定を開いて次のことを行います:
-* **Connect your mailbox and calendar** accounts for seamless email and calendar sync
-* Customize your **data model**: create custom objects, fields, and relationships
-* **Access the API playground and configure webhooks**
-* **Manage user permissions** and workspace access controls
-* Invite team members and manage user roles
-* Edit your profile and workspace preferences
-* Configure billing and monitor workflow credits usage
-* Discover the latest releases and upcoming features (under Releases → Lab tab)
+* **メールボックスとカレンダーのアカウントを接続**し、メールとカレンダーをシームレスに同期
+* **データモデルをカスタマイズ**:カスタムオブジェクト、フィールド、リレーションシップを作成
+* **APIプレイグラウンドにアクセスし、ウェブフックを設定**
+* **ユーザー権限を管理**し、ワークスペースのアクセス制御を行う
+* チームメンバーを招待し、ユーザーロールを管理
+* プロフィールとワークスペースの環境設定を編集
+* 請求を設定し、ワークフロー クレジットの使用状況を監視
+* 近日公開の機能を確認して有効化(Updates → Early Access 内)
+* **サポートにアクセス**してライブチャットで問い合わせる
+* **ドキュメントを開く**と、ユーザーガイドおよび開発者ドキュメントを閲覧できます
-If you do not see all those sections under Settings, reach out to your workspace administrator - some of them have restricted access.
+設定でこれらのセクションがすべて表示されない場合は、ワークスペース管理者にお問い合わせください。一部のセクションにはアクセス制限があります。
diff --git a/packages/twenty-docs/l/ja/user-guide/introduction.mdx b/packages/twenty-docs/l/ja/user-guide/introduction.mdx
index 24b7b3ccb3..932feb5ac7 100644
--- a/packages/twenty-docs/l/ja/user-guide/introduction.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/introduction.mdx
@@ -1,63 +1,63 @@
---
-title: Discover Twenty
-description: Welcome to Twenty User Guide, your resources for advanced configurations and best practices.
+title: Twenty を知る
+description: Twenty ユーザーガイドへようこそ。高度な設定やベストプラクティスのためのリソースです。
---
import { CardTitle } from "/snippets/card-title.mdx"
- Discover Twenty
- Learn what Twenty is and how it can help your business.
+ Twenty を知る
+ Twenty とは何か、ビジネスにどのように役立つかを学びましょう。
- Data Model
- Customize your data model to fit your business processes.
+ データモデル
+ 固有のビジネスプロセスに合わせてデータモデルをカスタマイズします。
- Data Migration
- Import and export your data via CSV or API.
+ データ移行
+ CSV または API でデータをインポート/エクスポートします。
- Calendar & Emails
- Centralize your team's meetings and emails.
+ カレンダーとメール
+ チームの会議やメールを一元管理します。
- Workflows
- Automate processes and integrate with external tools.
+ ワークフロー
+ プロセスを自動化し、外部ツールと統合します。
AI
- Enhance your team with AI agents.
+ AI エージェントでチームを強化します。
- Views & Pipelines
- Organize your data with actionable views and pipelines.
+ ビューとパイプライン
+ 実行可能なビューとパイプラインでデータを整理します。
- Dashboards
- Real-time insights to track performance.
+ ダッシュボード
+ パフォーマンスを追跡するためのリアルタイムなインサイトを提供します。
- Permissions & Access
- Manage roles and access to Twenty.
+ 権限とアクセス
+ Twenty へのロールおよびアクセス権を管理します。
- Billing
- Understand how Twenty pricing and billing works.
+ 請求
+ Twenty の料金と請求の仕組みを理解します。
- Settings
- Configure your workspace preferences.
+ 設定
+ ワークスペースの設定を行います。
diff --git a/packages/twenty-docs/l/ja/user-guide/permissions-access/capabilities/permissions.mdx b/packages/twenty-docs/l/ja/user-guide/permissions-access/capabilities/permissions.mdx
index a5d614b008..8787b90f21 100644
--- a/packages/twenty-docs/l/ja/user-guide/permissions-access/capabilities/permissions.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/permissions-access/capabilities/permissions.mdx
@@ -1,198 +1,198 @@
---
-title: Permissions
-description: Control access to objects, fields, and settings with role-based permissions.
+title: 権限
+description: ロールベースの権限でオブジェクト、フィールド、設定へのアクセスを制御します。
image: /images/user-guide/permissions/permissions.png
---
-Twenty's permission system allows you to control access to three main areas:
+Twentyの権限システムにより、3つの主要な領域へのアクセスを制御できます:
-* **Objects and Fields**: Control who can view, edit, or delete records and individual fields
-* **Settings**: Manage access to workspace configuration and administrative functions
-* **Actions**: Control general workspace actions like importing data or sending emails
+* **オブジェクトとフィールド**: レコードと個々のフィールドを表示、編集、削除できる人を制御する
+* **設定**: ワークスペースの構成および管理機能へのアクセスを管理する
+* **アクション**: データのインポートやメールの送信など一般的なワークスペースアクションを制御する
-## Create a Role
+## ロールの作成
-To create a new role:
+新しい役割を作成するには:
-1. Go to **Settings → Roles**
-2. Under **All Roles**, click on **+ Create Role**
-3. Enter a role name
-4. In the default **Permissions** tab, [configure permissions](#customize-permissions)
-5. Click **Save** to finish
+1. **設定 → 役割** に移動
+2. **すべての役割** で、 **+ 役割を作成** をクリック
+3. 役割名を入力
+4. デフォルトの**権限**タブで、[権限を設定](#customize-permissions)
+5. **保存**をクリックして完了します
-## Delete a Role
+## 役割を削除する
-To delete a role:
+役割を削除するには:
-1. Go to **Settings → Roles**
-2. Click on the role you want to remove
-3. Open the **Settings** tab, then click **Delete Role**
-4. Click **Confirm** in the modal
+1. **設定 → 役割** に移動
+2. 削除したい役割をクリック
+3. **設定** タブを開き、 **役割を削除** をクリック
+4. モーダルで **確認** をクリック
- If a role is deleted, any workspace member assigned to it will be automatically reassigned to the default role. All except the **Admin** role can be deleted. There must always be at least one member assigned to the **Admin** role.
+ ロールが削除されると、そのロールに割り当てられていたワークスペースメンバーは自動的にデフォルトのロールに再割り当てされます。 **Admin**ロール以外はすべて削除できます。 **管理者** 役割には常に少なくとも1人のメンバーが割り当てられている必要があります。
-## Assign Roles to Members
+## メンバーに役割を割り当てる
-### View Current Assignments
+### 現在の割り当てを表示
-* Go to **Settings → Roles**
-* See all roles and how many members are assigned to each
-* View which members have which roles
+* **設定 → 役割** に移動
+* すべての役割と各役割に割り当てられているメンバー数を確認
+* どのメンバーがどの役割を持っているかを表示
-### Assign a Role to a Member
+### メンバーに役割を割り当てる
-1. Go to **Settings → Roles**
-2. Click on the role you want to assign
-3. Open the **Assignment** tab
-4. Click **+ Assign to member**
-5. Select the workspace member from the list
-6. Confirm the assignment
+1. **設定 → 役割** に移動
+2. 割り当てたい役割をクリック
+3. **割り当て** タブを開く
+4. **+ メンバーに割り当てる** をクリック
+5. リストからワークスペースメンバーを選択
+6. 割り当てを確認する
-### Set Default Role
+### デフォルトの役割を設定する
-1. Go to **Settings → Roles**
-2. In the **Options** section, find **Default Role**
-3. Select which role new members should automatically receive
-4. New workspace members will be assigned this role when they join
+1. **設定 → 役割** に移動
+2. **オプション** セクションで **デフォルトの役割** を見つける
+3. 新しいメンバーが自動的に受け取る役割を選択
+4. 新しいワークスペースメンバーが参加するとき、この役割が割り当てられます
- You can only assign roles to existing workspace members. To invite new members, use [Member Management](/l/ja/user-guide/settings/capabilities/member-management).
+ ロールは既存のワークスペースメンバーにのみ割り当てできます。 新しいメンバーを招待するには、[メンバー管理](/l/ja/user-guide/settings/capabilities/member-management)を使用します。
-## Customize Permissions
+## 権限をカスタマイズする
-Permissions determine what each role can access or modify within your workspace, including workspace objects records, settings, and actions.
+権限は、ワークスペース内で各役割がアクセスまたは変更できるものを決定し、ワークスペースオブジェクトのレコード、設定、およびアクションを含みます。
-### Object Permissions
+### オブジェクトの権限
-The **Objects** section controls what this role can do with records across your workspace.
+**オブジェクト**セクションでは、このロールがワークスペース全体のレコードに対して何ができるかを制御します。
-#### Set Default Permissions (All Objects)
+#### デフォルトの権限を設定(すべてのオブジェクト)
-First, configure the baseline permissions that apply to **all objects** by default:
+まず、デフォルトで**すべてのオブジェクト**に適用されるベースライン権限を設定します。
-| Permission | Description |
-| ---------------------------------- | -------------------------------------- |
-| **See Records on All Objects** | View records in lists and detail pages |
-| **Edit Records on All Objects** | Modify existing records |
-| **Delete Records on All Objects** | Soft-delete records (can be restored) |
-| **Destroy Records on All Objects** | Permanently delete records |
+| 権限 | 説明 |
+| --------------------- | ------------------- |
+| **全オブジェクトでレコードを表示する** | リストおよび詳細ページでレコードを表示 |
+| **全オブジェクトでレコードを編集する** | 既存のレコードを変更 |
+| **全オブジェクトでレコードを削除する** | レコードをソフト削除(復元可能) |
+| **全オブジェクトでレコードを破棄する** | レコードを完全に削除 |
-Select or unselect based on what should be the default behavior for this role.
+このロールのデフォルトの動作にすべき内容に基づいて選択または選択解除します。
- **Example — Intern role**: An intern should be able to see all objects but not edit them by default. Enable "See Records on All Objects" but leave "Edit Records on All Objects" unchecked.
+ **例 — インターン ロール**: インターンは、デフォルトではすべてのオブジェクトを閲覧できるが編集はできないようにします。 "すべてのオブジェクトでレコードを表示"を有効にし、"すべてのオブジェクトでレコードを編集"は未選択のままにします。
-#### Add Object-Level Exceptions
+#### オブジェクトレベルの例外を追加
-After setting defaults, use the **Object-Level** sub-section to add rules that override the defaults for specific objects.
+デフォルトを設定したら、**オブジェクトレベル**のサブセクションで特定のオブジェクトに対してデフォルトを上書きするルールを追加します。
-Click **+ Add rule** and select an object to create an exception.
+**+ ルールを追加**をクリックし、オブジェクトを選択して例外を作成します。
-**Example rules for an Intern role:**
+**インターン ロールのルール例:**
-| Rule | Effect |
-| ------------------------------------- | ------------------------------------------------------ |
-| Opportunities → disable "See Records" | Intern cannot see the Opportunities object at all |
-| People → enable "Edit Records" | Intern can edit People records (but not other objects) |
+| ルール | 効果 |
+| ----------------------------- | ------------------------------------- |
+| Opportunities → "レコードを表示"を無効化 | インターンはOpportunitiesオブジェクトをまったく閲覧できません |
+| People → "レコードを編集"を有効化 | インターンはPeopleのレコードを編集できます(他のオブジェクトは不可) |
-### Field Permissions
+### フィールドの権限
-Within each object-level rule, you can go further and configure **field-level permissions** to control access to specific fields.
+各オブジェクトレベルのルール内で、さらに踏み込んで特定のフィールドへのアクセスを制御するための**フィールドレベルの権限**を設定できます。
-| Permission | Description |
-| -------------- | -------------------------- |
-| **See Field** | View the field value |
-| **Edit Field** | Modify the field value |
-| **No Access** | Field is completely hidden |
+| 権限 | 説明 |
+| ------------ | ------------ |
+| **フィールドを表示** | フィールド値を表示 |
+| **フィールドを編集** | フィールド値を変更 |
+| **アクセス不可** | フィールドは完全に非表示 |
-**Example — Restrict sensitive fields:**
+**例 — 機微なフィールドの制限:**
-For the Intern role with People edit access, you might want to restrict certain fields:
+Peopleの編集権限を持つインターン ロールでは、特定のフィールドを制限したい場合があります。
-* People → Email → **See Field** only (cannot edit)
-* People → Address → **No Access** (completely hidden)
+* People → Email → **フィールドを表示**のみ(編集不可)
+* People → Address → **アクセス不可**(完全に非表示)
-This allows the intern to edit most People fields while protecting sensitive information.
+これにより、インターンはPeopleのほとんどのフィールドを編集できる一方、機微情報は保護されます。
-### How Permission Inheritance Works
+### 権限の継承のしくみ
-Permissions cascade from general to specific:
+権限は一般から個別へと段階的に適用されます。
-1. **All Objects** → sets the baseline for all objects
-2. **Object-Level rules** → override the baseline for specific objects
-3. **Field-Level rules** → override the object setting for specific fields
+1. **すべてのオブジェクト** → すべてのオブジェクトに対するベースラインを設定
+2. **オブジェクトレベルのルール** → 特定のオブジェクトのベースラインを上書き
+3. **フィールドレベルのルール** → 特定のフィールドについてオブジェクトの設定を上書き
-More specific settings always take precedence.
+より具体的な設定が常に優先されます。
-### Managing Permission Overrides
+### 権限オーバーライドを管理する
-To override inherited permissions:
+継承された権限を上書きするには:
-1. Click **X** to remove the inherited rule
-2. Select the specific permissions you want
-3. Click the orange **Undo** icon (circular arrow) to revert changes
+1. 継承されたルールを削除するには **X** をクリック
+2. 必要な特定の権限を選択
+3. 変更を元に戻すには、オレンジ色の **元に戻す** アイコン(円形の矢印)をクリック
-When done, click **Finish**, then **Save** once redirected to the role page.
+完了したら、役割ページにリダイレクトされたら **終了** をクリックし、**保存** をクリック。
-### Workspace Settings Permissions
+### ワークスペース設定の権限
-Control access to workspace settings in two ways:
+ワークスペース設定へのアクセスを2つの方法で制御する:
-* Toggle **Settings All Access** to grant full access
-* Or enable specific permissions (e.g., API key generation, workspace preferences, role assignment, data model configuration, security settings, and workflow management)
+* **すべてのアクセスを設定** を切り替えて完全アクセスを許可する
+* あるいは、特定の権限(例えば、APIキー生成、ワークスペース設定、役割割り当て、データモデル構成、セキュリティ設定、ワークフロー管理)を有効にする
- **Current limitation**: Access to workflow management is currently required to manually trigger workflows. This behavior may change in future releases.
+ **現在の制限**: ワークフローを手動でトリガーするには、現在、ワークフロー管理へのアクセスが必要です。 この動作は今後のリリースで変更される可能性があります。
-### Workspace Action Permissions
+### ワークスペースアクションの権限
-Control access to general workspace actions:
+一般的なワークスペースアクションへのアクセスを制御する:
-* Toggle **Application All Access** to grant full permissions
-* Or enable individual actions such as **Send Email**, **Import CSV**, and **Export CSV**
+* **すべてのアプリケーションのアクセス** を切り替えて完全な権限を与える
+* あるいは、 **メール送信**, **CSVインポート**, **CSVエクスポート** などの個別のアクションを有効にする
-## Assigning Roles to API Keys and AI Agents
+## API キーおよびAI エージェントへのロール割り当て
-Beyond workspace members, roles can also be assigned to **API Keys** and **AI Agents**. This is particularly helpful for teams who want to control exactly "who" can do what in their workspace—including automated processes and integrations.
+ワークスペースメンバー以外にも、**API キー**や**AI エージェント**にロールを割り当てることができます。 これは、ワークスペース内で誰が何をできるかを正確に制御したいチーム、特に自動化プロセスや連携を含む場合に有用です。
-### Why Assign Roles to API Keys and AI Agents?
+### API キーとAI エージェントにロールを割り当てる理由
-* **Security**: Limit what automated processes can access or modify
-* **Compliance**: Ensure integrations only touch the data they need
-* **Control**: Prevent accidental data changes from misconfigured automations
-* **Auditability**: Track which actions were performed by which integration or agent
+* **セキュリティ**: 自動化プロセスがアクセスまたは変更できる範囲を制限
+* **コンプライアンス**: 連携が必要なデータのみに触れるようにする
+* **制御**: 誤設定された自動化による偶発的なデータ変更を防止
+* **監査可能性**: どの連携またはエージェントがどの操作を実行したかを追跡
-### Assign a Role to an API Key
+### API キーにロールを割り当てる
-1. Go to **Settings → Roles**
-2. Click on the role you want to assign
-3. Open the **Assignment** tab
-4. Under **API Keys**, click **+ Assign to API key**
-5. Select the API key from the list
-6. Confirm the assignment
+1. **設定 → 役割** に移動
+2. 割り当てたい役割をクリック
+3. **割り当て** タブを開く
+4. **API キー**セクションで、**+ API キーに割り当て**をクリック
+5. リストからAPI キーを選択
+6. 割り当てを確認する
-The API key will now inherit all permissions defined by that role. Any API calls made with this key will be restricted accordingly.
+そのAPI キーは、割り当てたロールで定義されたすべての権限を継承します。 このキーで行われるAPI 呼び出しは、それに応じて制限されます。
- API keys without an assigned role use default permissions. For tighter security, always assign a specific role to production API keys.
+ ロールが割り当てられていないAPI キーはデフォルトの権限を使用します。 より厳格なセキュリティのため、本番のAPI キーには必ず特定のロールを割り当ててください。
-### Assign a Role to an AI Agent
+### AI エージェントにロールを割り当てる
-1. Go to **Settings → Roles**
-2. Click on the role you want to assign
-3. Open the **Assignment** tab
-4. Under **AI Agents**, click **+ Assign to AI agent**
-5. Select the AI agent from the list
-6. Confirm the assignment
+1. **設定 → 役割** に移動
+2. 割り当てたい役割をクリック
+3. **割り当て** タブを開く
+4. **AI エージェント**セクションで、**+ AI エージェントに割り当て**をクリック
+5. リストからAI エージェントを選択
+6. 割り当てを確認する
-The AI agent will only be able to access data and perform actions allowed by its assigned role.
+AI エージェントは、割り当てられたロールで許可されたデータへのアクセスと操作のみ実行できます。
- For AI agents running within workflows, this ensures the agent cannot access or modify data outside its intended scope—even if the workflow has broader permissions.
+ ワークフロー内で実行されるAI エージェントについては、ワークフローにより広い権限があっても、意図した範囲外のデータにアクセスまたは変更できないことを保証します。
diff --git a/packages/twenty-docs/l/ja/user-guide/permissions-access/capabilities/sso-configuration.mdx b/packages/twenty-docs/l/ja/user-guide/permissions-access/capabilities/sso-configuration.mdx
index 310c161605..c8193d5a9d 100644
--- a/packages/twenty-docs/l/ja/user-guide/permissions-access/capabilities/sso-configuration.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/permissions-access/capabilities/sso-configuration.mdx
@@ -1,125 +1,125 @@
---
-title: SSO Configuration
-description: Configure Single Sign-On for secure enterprise authentication.
+title: SSO構成
+description: 安全なエンタープライズ認証のためにシングルサインオンを構成します。
---
-## About SSO
+## SSO について
-Single Sign-On (SSO) allows your team members to log into Twenty using your organization's identity provider. This provides:
+シングルサインオン(SSO)により、組織の ID プロバイダーを使用してチームメンバーが Twenty にログインできます。 これにより、次のことが可能になります:
-* **Centralized access control**: Manage access from one place
-* **Enhanced security**: Leverage your existing security policies
-* **Better user experience**: One set of credentials for all tools
+* **一元的なアクセス制御**: 1 か所からアクセスを管理
+* **強化されたセキュリティ**: 既存のセキュリティポリシーを活用
+* **優れたユーザー体験**: すべてのツールで 1 組の認証情報を使用
-## Supported Providers
+## サポート対象のプロバイダー
-Twenty supports SSO with:
+Twenty は次の SSO をサポートしています:
-* **SAML 2.0**: Works with most enterprise identity providers
-* **Google Workspace**: For organizations using Google
-* **Microsoft Entra ID**: (formerly Azure AD) For Microsoft environments
+* **SAML 2.0**: ほとんどのエンタープライズ ID プロバイダーで動作
+* **Google Workspace**: Google を利用する組織向け
+* **Microsoft Entra ID**: (旧称 Azure AD)Microsoft 環境向け
-## Setting Up SSO
+## SSO のセットアップ
-### Prerequisites
+### 前提条件
-* Organization plan (cloud and self-hosted workspaces)
-* Admin access to your identity provider
-* Admin access to Twenty workspace
+* Organization プラン(クラウドおよびセルフホストのワークスペース)
+* ID プロバイダーへの管理者アクセス権
+* Twenty ワークスペースへの管理者アクセス権
- **For self-hosting users willing to set up SSO**, reach out to contact@twenty.com
+ **SSO をセットアップしたいセルフホストユーザーの方は**、contact@twenty.com までご連絡ください
-### Configuration Steps
+### 構成手順
-#### 1. Access SSO Settings
+#### 1. SSO 設定にアクセス
-1. Go to **Settings → Security**
-2. Find the **SSO Configuration** section
-3. Click **Configure SSO**
+1. **設定 → セキュリティ** に移動します
+2. **SSO 構成** セクションを見つけます
+3. **SSO を構成** をクリック
-#### 2) Choose Your Provider
+#### 2) プロバイダーを選択
-Select your identity provider from the list or choose "Custom SAML" for other providers.
+一覧から ID プロバイダーを選択するか、その他のプロバイダーの場合は「Custom SAML」を選択します。
-#### 3. Configure Your Identity Provider
+#### 3. ID プロバイダーを構成
-You'll need to configure your identity provider with:
+ID プロバイダーで次を設定する必要があります:
-* **Entity ID**: Provided by Twenty
-* **ACS URL**: The callback URL for authentication
-* **Certificate**: For secure communication
+* **エンティティ ID**: Twenty が提供
+* **ACS URL**: 認証用のコールバック URL
+* **証明書**: セキュアな通信のため
-#### 4. Enter Provider Details in Twenty
+#### 4. Twenty にプロバイダーの詳細を入力
-* **SSO URL**: Login URL from your provider
-* **Entity ID**: Your provider's identifier
-* **Certificate**: X.509 certificate from your provider
+* **SSO URL**: プロバイダーのログイン URL
+* **エンティティ ID**: プロバイダーの識別子
+* **証明書**: プロバイダーの X.509 証明書
-#### 5. Test and Enable
+#### 5. テストして有効化
-1. Click **Test Configuration** to verify setup
-2. Enable SSO when testing is successful
-3. Configure user provisioning preferences
+1. セットアップを確認するには **構成をテスト** をクリック
+2. テストが成功したら SSO を有効化します
+3. ユーザー プロビジョニングの設定を行います
-## User Provisioning
+## ユーザー プロビジョニング
-### Just-in-Time (JIT) Provisioning
+### ジャストインタイム(JIT)プロビジョニング
-* Users are created automatically on first login
-* Assigned default role automatically
-* No manual user creation needed
+* 初回ログイン時にユーザーが自動作成されます
+* デフォルトのロールが自動的に割り当てられます
+* 手動でユーザーを作成する必要はありません
-### Manual Provisioning
+### 手動プロビジョニング
-* Invite users before they can log in
-* Pre-assign specific roles
-* More control over who can access
+* ログイン可能になる前にユーザーを招待します
+* 特定のロールを事前に割り当てます
+* アクセス可能なユーザーをより詳細に制御できます
-## Managing SSO Users
+## SSO ユーザーの管理
-### Role Assignment
+### ロールの割り当て
-SSO users can be assigned roles like regular users:
+SSO ユーザーには、通常のユーザーと同様にロールを割り当てられます:
-1. Go to **Settings → Members**
-2. Find the user
-3. Change their role as needed
+1. **設定 → メンバー** に移動
+2. ユーザーを見つけます
+3. 必要に応じてロールを変更します
-### Access Revocation
+### アクセスの取り消し
-To remove access for SSO users:
+SSO ユーザーのアクセスを削除するには:
-* Remove them from your identity provider, or
-* Remove them from the Twenty workspace
+* ID プロバイダーから削除する、または
+* Twenty のワークスペースから削除します
-## Best Practices
+## ベストプラクティス
-### Security
+### セキュリティ
-* **Require SSO**: Disable password login for SSO users
-* **Regular audits**: Review access periodically
-* **Strong IdP policies**: Enforce MFA at the identity provider
+* **SSO を必須にする**: SSO ユーザーのパスワードログインを無効化
+* **定期的な監査**: 定期的にアクセスを見直す
+* **強力な IdP ポリシー**: ID プロバイダーで MFA を強制
-### User Management
+### ユーザー管理
-* **Clear naming**: Use consistent naming from your directory
-* **Group mapping**: Map IdP groups to Twenty roles (if available)
-* **Offboarding process**: Include Twenty in your deprovisioning workflow
+* **明確な命名**: ディレクトリで一貫した命名を使用
+* **グループ マッピング**: IdP のグループを Twenty のロールにマッピング(可能な場合)
+* **オフボーディング プロセス**: デプロビジョニングのワークフローに Twenty を含める
-## Troubleshooting
+## トラブルシューティング
-### Common Issues
+### 一般的な問題
-* **Certificate errors**: Ensure certificate hasn't expired
-* **URL mismatches**: Verify ACS URL matches exactly
-* **User not found**: Check JIT provisioning settings
+* **証明書エラー**: 証明書の有効期限が切れていないことを確認
+* **URL の不一致**: ACS URL が完全に一致していることを確認
+* **ユーザーが見つからない**: JIT プロビジョニングの設定を確認
-### Getting Help
+### サポートを受ける
-If you encounter issues, contact support with:
+問題が発生した場合は、次の情報を添えてサポートにお問い合わせください:
-* Error messages received
-* Identity provider being used
-* Configuration details (without sensitive data)
+* 受信したエラーメッセージ
+* 使用している ID プロバイダー
+* 構成の詳細(機微なデータを除く)
diff --git a/packages/twenty-docs/l/ja/user-guide/permissions-access/how-tos/permissions-faq.mdx b/packages/twenty-docs/l/ja/user-guide/permissions-access/how-tos/permissions-faq.mdx
index 6700b48297..96b9b18aff 100644
--- a/packages/twenty-docs/l/ja/user-guide/permissions-access/how-tos/permissions-faq.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/permissions-access/how-tos/permissions-faq.mdx
@@ -1,126 +1,126 @@
---
-title: Permissions FAQ
-description: Frequently asked questions about roles and permissions.
+title: 権限に関するFAQ
+description: ロールと権限に関するよくある質問。
---
-## Roles
+## 役割
-
- Twenty comes with an **Admin** and **Member** roles by default. You can create additional custom roles based on your team's needs (e.g., Sales Rep, Manager, Read-Only User).
+
+ Twenty にはデフォルトで **Admin** と **Member** のロールが用意されています。 チームのニーズに基づいて、追加のカスタムロールを作成できます(例: 営業担当、マネージャー、閲覧専用ユーザー)。
-
- No, the Admin role cannot be deleted. There must always be at least one member assigned to the Admin role.
+
+ いいえ、Admin ロールは削除できません。 Admin ロールには、常に少なくとも1人のメンバーが割り当てられている必要があります。
-
- Any workspace member assigned to that role will be automatically reassigned to the default role.
+
+ そのロールに割り当てられているワークスペースメンバーは、自動的にデフォルトのロールに再割り当てされます。
-
- Go to **Settings → Roles**, find the **Default Role** option, and select which role new members should automatically receive when they join.
+
+ **Settings → Roles** に移動し、**Default Role** オプションを見つけ、参加時に新規メンバーが自動的に付与されるロールを選択します。
-
- No, each user can only have one role at a time. Create a custom role if you need a combination of permissions.
+
+ いいえ、各ユーザーが同時に持てるロールは1つだけです。 権限の組み合わせが必要な場合は、カスタムロールを作成してください。
-## Permissions
+## 権限
-
- * **Object permissions**: Control access to entire records (e.g., can see/edit/delete People records)
- * **Field permissions**: Control access to specific fields within an object (e.g., can see but not edit the Salary field)
+
+ * **オブジェクト権限**: レコード全体へのアクセスを制御します(例: People レコードの閲覧/編集/削除が可能)
+ * **フィールド権限**: オブジェクト内の特定のフィールドへのアクセスを制御します(例: Salary フィールドは閲覧のみで編集不可)
- Field permissions allow more granular control over sensitive data.
+ フィールド権限により、機密データをより細かく制御できます。
-
- Permissions cascade from global to specific:
+
+ 権限はグローバルから個別へと段階的に適用されます:
- 1. **All Objects** sets the baseline for all objects
- 2. **Object-Level Permissions** can override the global setting for specific objects
- 3. **Field-Level Permissions** can override the object setting for specific fields
+ 1. **All Objects** はすべてのオブジェクトの基準を設定します
+ 2. **Object-Level Permissions** は、特定のオブジェクトに対してグローバル設定を上書きできます
+ 3. **Field-Level Permissions** は、特定のフィールドに対してオブジェクト設定を上書きできます
- More specific settings always take precedence.
+ より具体的な設定が常に優先されます。
-
- For objects:
+
+ オブジェクトの場合:
- * **See Records**: View records in lists and detail pages
- * **Edit Records**: Modify existing records
- * **Delete Records**: Soft-delete records (can be restored)
- * **Destroy Records**: Permanently delete records
+ * **See Records**: リストや詳細ページでレコードを閲覧
+ * **Edit Records**: 既存のレコードを編集
+ * **Delete Records**: レコードをソフト削除(復元可能)
+ * **Destroy Records**: レコードを完全に削除
- For fields:
+ フィールドの場合:
- * **See Field**: View the field value
- * **Edit Field**: Modify the field value
- * **No Access**: Field is completely hidden
+ * **See Field**: フィールド値を閲覧
+ * **Edit Field**: フィールド値を編集
+ * **No Access**: フィールドは完全に非表示
-
- Row-level permissions will be available on the **Organization** plan by Q1 2026. This allows you to restrict access to specific records based on criteria (e.g., only see your own opportunities).
+
+ 行レベル権限は、2026年第1四半期までに **Organization** プランで利用可能になります。 これにより、条件に基づいて特定のレコードへのアクセスを制限できます(例: 自分の商談のみを閲覧)。
-
- 1. Go to **Settings → Roles**
- 2. Select the role
- 3. Navigate to the object containing the field
- 4. Set the field permission to **See Field** (without Edit Field)
+
+ 1. **設定 → 役割** に移動
+ 2. ロールを選択
+ 3. 該当フィールドを含むオブジェクトに移動
+ 4. フィールド権限を **See Field** に設定します(Edit Field は付与しない)
-## Settings & Actions
+## 設定とアクション
-
- You can control access to:
+
+ 次の項目へのアクセスを制御できます:
- * API key generation
- * Workspace preferences
- * Role assignment
- * Data model configuration
- * Security settings
- * Workflow management
+ * API キーの生成
+ * ワークスペースの設定
+ * ロールの割り当て
+ * データモデルの設定
+ * セキュリティ設定
+ * ワークフロー管理
- Use **Settings All Access** to grant full access, or enable specific permissions.
+ **Settings All Access** を使ってフルアクセスを付与するか、特定の権限のみを有効にします。
-
- You can control:
+
+ 次の項目を制御できます:
- * **Send Email**: Ability to send emails from Twenty
- * **Import CSV**: Ability to import data via CSV
- * **Export CSV**: Ability to export data to CSV
+ * **Send Email**: Twenty からメールを送信できる
+ * **Import CSV**: CSV でデータをインポートできる
+ * **Export CSV**: データを CSV にエクスポートできる
- Use **Application All Access** to grant all actions, or enable specific ones.
+ **Application All Access** を使ってすべてのアクションを付与するか、必要なものだけを有効にします。
## SSO
-
- No, SSO is a Premium feature available on the **Organization** plan only.
+
+ いいえ、SSO は **Organization** プランでのみ利用可能なプレミアム機能です。
-
- Twenty supports:
+
+ Twenty は次のものをサポートしています:
- * **SAML 2.0** (works with most enterprise identity providers)
+ * **SAML 2.0**(多くのエンタープライズ向けアイデンティティプロバイダーで動作)
* **Google Workspace**
- * **Microsoft Entra ID** (formerly Azure AD)
+ * **Microsoft Entra ID**(旧 Azure AD)
-
- With JIT provisioning, user accounts are automatically created in Twenty when someone logs in via SSO for the first time. They're assigned the default role automatically.
+
+ JIT プロビジョニングでは、ユーザーが初めて SSO でログインした際に、Twenty にユーザーアカウントが自動作成されます。 デフォルトのロールが自動的に割り当てられます。
-
- Yes, once SSO is configured, you can disable password login for SSO users to enforce authentication through your identity provider.
+
+ はい、SSO を設定すると、SSO ユーザーのパスワードログインを無効化し、アイデンティティプロバイダーを通じた認証を強制できます。
diff --git a/packages/twenty-docs/l/ja/user-guide/permissions-access/overview.mdx b/packages/twenty-docs/l/ja/user-guide/permissions-access/overview.mdx
index 60e01e45ac..b50e2a9422 100644
--- a/packages/twenty-docs/l/ja/user-guide/permissions-access/overview.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/permissions-access/overview.mdx
@@ -1,40 +1,40 @@
---
-title: Permissions & Access
-description: Manage roles, permissions, and access control in your workspace.
+title: 権限とアクセス
+description: ワークスペースでロール、権限、アクセス制御を管理します。}, {
---
-
+
-Twenty's permission system lets you control who can access and modify data in your workspace. Create roles, assign permissions, and configure SSO for secure access.
+Twentyの権限システムは、ワークスペース内のデータに誰がアクセスし、変更できるかを制御できます。 ロールを作成し、権限を割り当て、安全なアクセスのためにSSOを構成します。
-## What's in this section
+## このセクションの内容
-
- Create roles and configure object, field, and settings permissions.
+
+ ロールを作成し、オブジェクト、フィールド、設定の権限を構成します。
-
- Set up Single Sign-On with your identity provider.
+
+ アイデンティティプロバイダーでシングルサインオンを設定します。
-
- Common questions about roles, permissions, and SSO.
+
+ ロール、権限、SSOに関するよくある質問。
-## Key features
+## 主な機能
-* **Role-based access**: Create custom roles with specific permissions
-* **Object permissions**: Control who can view, edit, or delete records
-* **Field permissions**: Restrict access to sensitive fields
-* **Settings permissions**: Control access to workspace configuration
-* **SSO integration**: Configure single sign-on for enterprise security (Organization plan)
+* **ロールベースのアクセス**: 特定の権限を持つカスタムロールを作成
+* **オブジェクト権限**: レコードを表示、編集、または削除できるユーザーを制御
+* **フィールド権限**: 機微なフィールドへのアクセスを制限
+* **設定権限**: ワークスペースの構成へのアクセスを制御
+* **SSO統合**: エンタープライズセキュリティのためにシングルサインオンを構成(Organization プラン)
-## Quick links
+## クイックリンク
-* [Create a role](/l/ja/user-guide/permissions-access/capabilities/permissions#create-a-role)
-* [Configure SSO](/l/ja/user-guide/permissions-access/capabilities/sso-configuration)
-* [Manage team members](/l/ja/user-guide/settings/capabilities/member-management)
+* [ロールを作成](/l/ja/user-guide/permissions-access/capabilities/permissions#create-a-role)
+* [SSOを構成](/l/ja/user-guide/permissions-access/capabilities/sso-configuration)
+* [チームメンバーを管理](/l/ja/user-guide/settings/capabilities/member-management)
diff --git a/packages/twenty-docs/l/ja/user-guide/settings/capabilities/domains-settings.mdx b/packages/twenty-docs/l/ja/user-guide/settings/capabilities/domains-settings.mdx
index b2c49c5ae2..88461f34cf 100644
--- a/packages/twenty-docs/l/ja/user-guide/settings/capabilities/domains-settings.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/settings/capabilities/domains-settings.mdx
@@ -1,47 +1,47 @@
---
-title: Domain Settings
-description: Configure workspace domain, approved access domains, and public domains.
+title: ドメイン設定
+description: ワークスペースのドメイン、承認済みアクセスドメイン、およびパブリックドメインを構成します。
---
-Configure domain settings under **Settings → Domains**.
+**設定 → ドメイン** でドメイン設定を構成します。
-## Workspace Domain
+## ワークスペースドメイン
-Edit your subdomain name or set a custom domain for your workspace.
+サブドメイン名を編集するか、ワークスペース用にカスタムドメインを設定します。
-### Customize Domain
+### ドメインをカスタマイズ
-1. Click **Customize Domain**
-2. Edit your subdomain (e.g., `yourcompany.twenty.com`)
-3. Or set up a custom domain (e.g., `crm.yourcompany.com`)
+1. **Customize Domain** をクリック
+2. サブドメインを編集します(例: `yourcompany.twenty.com`)
+3. またはカスタムドメインを設定します(例: `crm.yourcompany.com`)
-For custom domains, you'll need to configure DNS settings with your domain provider.
+カスタムドメインの場合は、ドメインプロバイダー側で DNS 設定を構成する必要があります。
-## Approved Domains
+## 承認されたドメイン
-Anyone with an email address at these domains is allowed to sign up for this workspace automatically.
+これらのドメインのメールアドレスを持つユーザーは、このワークスペースに自動的にサインアップできます。
-### Add Approved Access Domain
+### 承認されたアクセスドメインを追加
-1. Click **Add Approved Access Domain**
-2. Enter your company domain (e.g., `yourcompany.com`)
-3. Save
+1. **Add Approved Access Domain** をクリック
+2. 会社のドメインを入力します(例: `yourcompany.com`)
+3. 保存
-Once configured, anyone with an email address at that domain can join your workspace without needing a direct invitation.
+設定が完了すると、そのドメインのメールアドレスを持つユーザーは、直接の招待なしにあなたのワークスペースに参加できます。
- This is useful for allowing your entire team to self-register while keeping the workspace restricted to your organization.
+ これにより、ワークスペースを組織内に限定したまま、チーム全体が自己登録できるため便利です。
-## Public Domains
+## パブリックドメイン
-Provision a complete and secure hosting environment on these domains.
+これらのドメインに完全で安全なホスティング環境を提供します。
-### Add Public Domain
+### パブリックドメインを追加
-1. Click **Add Public Domain**
-2. Enter the domain you want to use
-3. Configure DNS settings as instructed
-4. Verify the domain
+1. **Add Public Domain** をクリック
+2. 使用したいドメインを入力します
+3. 指示に従って DNS 設定を構成します
+4. ドメインを検証します
-SSL certificates are automatically provisioned for public domains.
+パブリックドメインには SSL 証明書が自動的にプロビジョニングされます。
diff --git a/packages/twenty-docs/l/ja/user-guide/settings/capabilities/experience-settings.mdx b/packages/twenty-docs/l/ja/user-guide/settings/capabilities/experience-settings.mdx
index e279f7d88b..8cb2fa89fc 100644
--- a/packages/twenty-docs/l/ja/user-guide/settings/capabilities/experience-settings.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/settings/capabilities/experience-settings.mdx
@@ -1,38 +1,38 @@
---
-title: Experience Settings
-description: Customize your interface theme and regional preferences.
+title: エクスペリエンス設定
+description: インターフェーステーマや地域の設定をカスタマイズします。
---
-Personalize your Twenty experience under **Settings → Experience**.
+**設定 → エクスペリエンス** で、Twenty のエクスペリエンスをパーソナライズできます。
-## Appearance
+## 外観
-Choose your visual theme:
+ビジュアルテーマを選択してください:
-* **Light**: Clean, bright interface
-* **Dark**: Easier on the eyes in low-light conditions
-* **System settings**: Automatically matches your device's theme
+* **ライト**:クリーンで明るいインターフェース
+* **ダーク**:光が少ない条件で目に優しい
+* **システム設定**:デバイスのテーマに自動的に合わせます
-## Language
+## 言語
-Select your preferred language for the Twenty interface from the dropdown menu.
+Twenty インターフェースの表示言語をドロップダウンメニューから選択してください。
-## Formats
+## 形式
-Configure date, time, number, timezone, and calendar start day.
+日付、時間、数値、タイムゾーン、カレンダーの開始日を設定します。
-| Setting | Description |
-| ---------------------- | ---------------------------------------------------------- |
-| **Time zone** | Your local timezone for accurate timestamps and scheduling |
-| **Date format** | How dates appear (e.g., Dec 12, 2025) |
-| **Time format** | 12-hour (7:22 PM) or 24-hour format |
-| **Number format** | Decimal and thousands separators (e.g., 1,234.56) |
-| **Calendar start day** | First day of the week (Sunday or Monday) |
+| 設定 | 説明 |
+| ------------- | ------------------------------- |
+| **タイムゾーン** | 正確なタイムスタンプとスケジュールのためのローカルタイムゾーン |
+| **日付形式** | 日付の表示形式(例:Dec 12, 2025) |
+| **時間形式** | 12時間制(午後7:22)または24時間制 |
+| **数字の形式** | 小数点と桁区切り(例:1,234.56) |
+| **カレンダーの開始日** | 週の開始曜日(日曜日または月曜日) |
-Each setting can be set to **System settings** to automatically match your device preferences, or you can choose a specific format.
+各設定は**システム設定**にするとデバイスの設定に自動的に合わせられます。特定の形式を選択することもできます。
-## How to Update
+## 更新方法
-1. Go to **Settings → Experience**
-2. Adjust your preferences in each section
-3. Changes save automatically
+1. **設定 → エクスペリエンス** へ移動
+2. 各セクションで好みを調整します
+3. 変更は自動的に保存されます
diff --git a/packages/twenty-docs/l/ja/user-guide/settings/capabilities/member-management.mdx b/packages/twenty-docs/l/ja/user-guide/settings/capabilities/member-management.mdx
index f57d107697..0556a93943 100644
--- a/packages/twenty-docs/l/ja/user-guide/settings/capabilities/member-management.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/settings/capabilities/member-management.mdx
@@ -1,87 +1,87 @@
---
-title: Member Management
-description: Invite team members and manage workspace access.
+title: メンバー管理
+description: チームメンバーを招待し、ワークスペースのアクセスを管理します。
---
-Manage who has access to your workspace under **Settings → Members**.
+**設定 → メンバー** で、ワークスペースにアクセスできるユーザーを管理します。
-## Invite New Members
+## 新規メンバーを招待
-### Using Email Invitation
+### メール招待を使用する
-1. Go to **Settings → Members**
-2. Click **+ Invite**
-3. Enter the person's email address
-4. Select a role for the new member
-5. Click **Send invite**
+1. **設定 → メンバー** に移動
+2. **+ 招待** をクリック
+3. その人のメールアドレスを入力
+4. 新しいメンバーのロールを選択します。
+5. **招待を送信** をクリック
-The invited person will receive an email with a link to join your workspace.
+招待されたユーザーには、ワークスペースに参加するためのリンクが記載されたメールが届きます。
-### Using Invite Link
+### 招待リンクを使用する
-1. Go to **Settings → Members**
-2. Copy the workspace invite link
-3. Share the link with new team members
-4. They'll receive access once they sign up
+1. **設定 → メンバー** に移動
+2. ワークスペースの招待リンクをコピー
+3. 新しいチームメンバーにリンクを共有
+4. サインアップするとアクセスできるようになります
-## View and Manage Members
+## メンバーの表示と管理
-### View All Members
+### すべてのメンバーを表示
-Go to **Settings → Members** to see:
+**設定 → メンバー** に移動すると、次を確認できます:
-* All active members
-* Pending invitations
+* すべてのアクティブなメンバー
+* 保留中の招待
-### Edit a Member's Profile
+### メンバーのプロフィールを編集
-Click on a member to open their profile page. As an admin, you can:
+メンバーをクリックしてプロフィールページを開きます。 管理者として、以下が可能です:
-* Edit their **name**
-* Update their **profile picture**
-* **Impersonate** their account (useful for troubleshooting)
-* **Delete** their account
+* **名前** を編集
+* **プロフィール画像** を更新
+* **代理ログイン** でそのアカウントとして操作 (トラブルシューティングに便利)
+* そのアカウントを **削除**
-### Change a Member's Role
+### メンバーのロールを変更
-On the member's profile page:
+メンバーのプロフィールページで:
-1. Open the **Permissions** tab
-2. View the currently assigned role
-3. Select a different role from the dropdown
-4. The change takes effect immediately
+1. **権限** タブを開く
+2. 現在割り当てられているロールを表示
+3. ドロップダウンメニューから別のロールを選択します。
+4. 変更は即時に反映されます
-→ [Learn more about roles and permissions](/l/ja/user-guide/permissions-access/capabilities/permissions)
+→ [ロールと権限の詳細](/l/ja/user-guide/permissions-access/capabilities/permissions)
-### Remove a Member
+### メンバーを削除
-1. Click on the member to open their profile
-2. Click **Delete** to remove them from the workspace
+1. メンバーをクリックしてプロフィールを開きます。
+2. ワークスペースから削除するには **削除** をクリックします。
- Removed members lose access immediately. Their data (records, notes, tasks) remains in the workspace.
+ 削除されたメンバーは直ちにアクセス権を失います。 そのデータ(レコード、メモ、タスク)はワークスペースに残ります。
- **Email sync is also removed.** If the deleted user was the only one who synced certain emails, those emails will be permanently removed from the workspace.
+ **メール同期も削除されます。** もし削除されたユーザーだけが特定のメールを同期していた場合、そのメールはワークスペースから完全に削除されます。
-## Pending Invitations
+## 保留中の招待
-Manage invitations that haven't been accepted:
+未承諾の招待を管理します:
-* **Resend**: Send the invitation email again
-* **Cancel**: Revoke the invitation before it's accepted
+* **再送**: 招待メールを再送します
+* **キャンセル**: 承諾前の招待を取り消します
-## Approved Access Domains
+## 承認されたアクセスドメイン
-Allow team members to join automatically based on their email domain:
+メールドメインに基づき、チームメンバーが自動参加できるようにします:
-1. Go to **Settings → Domains**
-2. Add your company domain (e.g., `yourcompany.com`)
-3. Anyone with that email domain can join without an invitation
+1. **設定 → ドメイン** に移動する
+2. 会社のドメインを追加します(例: `yourcompany.com`)
+3. そのメールドメインを持つユーザーは、招待なしで参加できます。
-## Related
+## 関連
-* [Permissions](/l/ja/user-guide/permissions-access/capabilities/permissions) — configure what each role can do
-* [Domains Settings](/l/ja/user-guide/settings/capabilities/domains-settings) — configure approved domains
+* [権限](/l/ja/user-guide/permissions-access/capabilities/permissions) — 各ロールでできることを設定
+* [ドメイン設定](/l/ja/user-guide/settings/capabilities/domains-settings) — 承認済みドメインを設定
diff --git a/packages/twenty-docs/l/ja/user-guide/settings/capabilities/profile-settings.mdx b/packages/twenty-docs/l/ja/user-guide/settings/capabilities/profile-settings.mdx
index febfa4a86f..6c53cc3288 100644
--- a/packages/twenty-docs/l/ja/user-guide/settings/capabilities/profile-settings.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/settings/capabilities/profile-settings.mdx
@@ -1,43 +1,44 @@
---
-title: Profile Settings
-description: Manage your personal profile and security settings.
+title: プロフィール設定
+description: 個人プロフィールとセキュリティ設定を管理します。
---
-## Personal Information
+## 個人情報
-### Name and Email
+### 名前とメールアドレス
-* **Display Name**: Update how your name appears to other workspace members
-* **Email Address**: Change your login email (requires verification)
-* **Profile Picture**: Upload a custom avatar or use your initials
+* **表示名**: 他のワークスペースメンバーに見える名前を更新する
+* **メールアドレス**: ログインメールを変更する(確認が必要)
+* **プロフィール画像**: カスタムアバターをアップロードするか、イニシャルを使用します
-## Security Settings
+## セキュリティ設定
-### Two-Factor Authentication (2FA)
+### 二要素認証 (2FA)
-Enable 2FA to add an extra layer of security to your account:
+アカウントに追加のセキュリティ層を追加するために2FAを有効にします:
-1. Go to **Settings → Profile Settings**
-2. Click **Enable 2FA**
-3. Scan the QR code with your authenticator app
-4. Enter the verification code to confirm
+1. **設定 → プロフィール設定** へ移動
+2. **2FA有効化**をクリック
+3. 認証アプリでQRコードをスキャンします
+4. 確認するために認証コードを入力します
-### Password Management
+### パスワード管理
-* **Change Password**: Update your current password
-* **Password Requirements**: Must be at least 8 characters long
+* **パスワードを変更**: 現在のパスワードを更新
+* **パスワードの要件**: 少なくとも8文字である必要があります
-## Profile Management
+## プロフィール管理
-### Delete Account
+### アカウント削除
- Deleting your account will permanently remove your access to all workspaces. This action cannot be undone, you'll lose access to all workspaces where you're a member, and you should consider leaving individual workspaces instead if you only want to exit specific teams.
+ アカウントを削除すると、すべてのワークスペースへのアクセスが永続的に削除されます。 この操作は元に戻すことができず、メンバーであるすべてのワークスペースへのアクセスを失います。特定のチームからのみ退出したい場合は、代わりに個別のワークスペースを退出することを検討してください。
+ この操作は元に戻すことができず、メンバーであるすべてのワークスペースへのアクセスを失います。特定のチームからのみ退出したい場合は、代わりに個別のワークスペースを退出することを検討してください。
-To delete your account:
+アカウントを削除するには:
-1. Go to **Settings → Profile Settings**
-2. Scroll to **Danger Zone**
-3. Click **Delete Account**
-4. Confirm by typing your email address
+1. **設定 → プロフィール設定** へ移動
+2. **危険地帯**までスクロールします
+3. **アカウント削除**をクリックします
+4. メールアドレスを入力して確認します
diff --git a/packages/twenty-docs/l/ja/user-guide/settings/capabilities/updates-settings.mdx b/packages/twenty-docs/l/ja/user-guide/settings/capabilities/updates-settings.mdx
new file mode 100644
index 0000000000..43fc6e4591
--- /dev/null
+++ b/packages/twenty-docs/l/ja/user-guide/settings/capabilities/updates-settings.mdx
@@ -0,0 +1,36 @@
+---
+title: アップデート設定
+description: Twenty で早期アクセス機能を有効にします。
+---
+
+## アップデート設定について
+
+「アップデート」セクションでは、一般提供前の早期アクセス機能を有効化できます。
+
+## 早期アクセス機能
+
+早期アクセス機能は、一般提供に先立って検証中の機能です。
+
+**現在早期アクセス中:**
+
+* **Dashboards** — ビジュアルなレポート作成と分析
+
+### 早期アクセス機能を有効にする方法
+
+1. **設定 → アップデート** に移動します
+2. 「**早期アクセス**」セクションに移動します
+3. 有効にしたい機能を見つけます
+4. オンに切り替えます
+5. 機能はすぐに利用可能になります
+
+
+ 早期アクセス機能は、ユーザーからのフィードバックに基づいて変更される場合があります。 皆さまのフィードバックは Twenty の改善に役立ちます!
+
+
+## 機能のフィードバック
+
+皆さまのフィードバックは Twenty の改善に役立ちます:
+
+* 早期アクセス機能の問題を報告します
+* 新機能をどのように使っているかを共有します
+* コミュニティの Discord で改善案を提案します
diff --git a/packages/twenty-docs/l/ja/user-guide/settings/capabilities/workspace-settings.mdx b/packages/twenty-docs/l/ja/user-guide/settings/capabilities/workspace-settings.mdx
index f72f71a814..f5f30873d6 100644
--- a/packages/twenty-docs/l/ja/user-guide/settings/capabilities/workspace-settings.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/settings/capabilities/workspace-settings.mdx
@@ -1,30 +1,30 @@
---
-title: Workspace Settings
-description: Customize your workspace name and branding.
+title: ワークスペース設定
+description: ワークスペースの名前とブランディングをカスタマイズする。
---
-Those are accessible under **Settings → General**.
+それらは**Settings → General**からアクセスできます。
-## Workspace Picture
+## ワークスペースの画像
-* **Upload Logo**: Add a custom workspace logo
-* **Supported formats**: PNG, JPEG, and GIF files under 10MB
-* **Remove**: Delete the current workspace logo
+* **ロゴをアップロード**: カスタムワークスペースのロゴを追加する
+* **対応形式**: 10MB以下のPNG、JPEG、GIFファイル
+* **削除**: 現在のワークスペースロゴを削除する
-## Workspace Name
+## ワークスペース名
-* **Name**: Change your workspace display name
-* This name appears to all workspace members
+* **名前**: ワークスペースの表示名を変更する
+* この名前は全てのワークスペースメンバーに表示されます
-## Danger Zone
+## 危険ゾーン
- Deleting your workspace permanently removes all data and cannot be undone. All workspace data will be lost forever, all members will lose access immediately, and this action cannot be reversed.
+ ワークスペースを削除すると、すべてのデータが永久に削除され、元に戻すことはできません。 すべてのワークスペースデータは永遠に失われ、すべてのメンバーは即座にアクセスを失い、この操作は取り消せません。
-To delete your workspace:
+ワークスペースを削除するには:
-1. Click **Delete workspace** button
-2. Confirm the deletion when prompted
+1. **ワークスペースを削除**ボタンをクリックする
+2. プロンプトが表示されたら削除を確認する
-**Note**: Only workspace administrators can delete workspaces.
+**注**: ワークスペースを削除できるのは、ワークスペース管理者だけです。
diff --git a/packages/twenty-docs/l/ja/user-guide/settings/how-tos/settings-faq.mdx b/packages/twenty-docs/l/ja/user-guide/settings/how-tos/settings-faq.mdx
index 19aa50e5a0..574d6819ed 100644
--- a/packages/twenty-docs/l/ja/user-guide/settings/how-tos/settings-faq.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/settings/how-tos/settings-faq.mdx
@@ -1,171 +1,171 @@
---
-title: Settings FAQ
-description: Frequently asked questions about Twenty settings.
+title: 設定FAQ
+description: Twenty の設定に関するよくある質問。
image: /images/user-guide/setup/settings.png
---
-## Workspace Settings
+## ワークスペース設定
-
- 1. Go to **Settings → General**
- 2. Find the Workspace Name field
- 3. Enter your new name
- 4. Changes save automatically
+
+ 1. **設定 → 一般** に移動
+ 2. ワークスペース名の項目を見つけます
+ 3. 新しい名前を入力します
+ 4. 変更は自動的に保存されます
-
- 1. Go to **Settings → General**
- 2. Click on the current logo or upload area
- 3. Select an image file (PNG, JPEG, or GIF under 10MB)
- 4. The logo updates immediately
+
+ 1. **設定 → 一般** に移動
+ 2. 現在のロゴまたはアップロードエリアをクリックします
+ 3. 画像ファイル(PNG、JPEG、または 10MB 未満の GIF)を選択します
+ 4. ロゴはすぐに更新されます
-
- Yes, you can create and be a member of multiple workspaces. Each workspace has its own data, settings, and subscription.
+
+ はい、複数のワークスペースを作成し、メンバーになることができます。 各ワークスペースは独自のデータ、設定、サブスクリプションを持ちます。
-
- 1. Go to **Settings → General**
- 2. Scroll to Danger Zone
- 3. Click **Delete workspace**
- 4. Confirm the deletion
+
+ 1. **設定 → 一般** に移動
+ 2. 危険地帯までスクロールします
+ 3. **ワークスペースを削除**をクリックします
+ 4. 削除を確認します
- Note: This permanently deletes all data and cannot be undone.
+ 注意:これによりすべてのデータが永久に削除され、元に戻せません。
-
- Delete the workspaces you no longer need under **Settings → General → Delete workspace**.
+
+ 不要なワークスペースは **設定 → 一般 → ワークスペースを削除**から削除してください。
- Do not delete your **account** (accessible under Settings → Profile): your account is shared among all your workspaces. Deleting your account removes access to ALL workspaces.
+ **アカウント**を削除しないでください(設定 → プロフィールからアクセス可能):アカウントはすべてのワークスペースで共有されています。 アカウントを削除すると、すべてのワークスペースへのアクセスを失います。
-
- If you want to temporarily disable your workspace (not permanently delete it), go to **Settings → Billing** and click **Cancel Plan**. Your data will be preserved for a grace period.
+
+ ワークスペースを一時的に無効にしたい場合(完全に削除するのではなく)、**設定 → 請求** に移動して**プランをキャンセル**をクリックします。 データは猶予期間中保持されます。
-## Profile Settings
+## プロフィール設定
-
- 1. Go to **Settings → Profile**
- 2. Find the Password section
- 3. Enter your current password
- 4. Enter your new password
- 5. Save changes
+
+ 1. **設定 → プロフィール** に移動
+ 2. **パスワード** セクションを見つけます
+ 3. 現在のパスワードを入力します
+ 4. 新しいパスワードを入力します
+ 5. 変更を保存します
-
- 1. Go to **Settings → Profile**
- 2. Find the 2FA section
- 3. Click **Enable 2FA**
- 4. Scan the QR code with your authenticator app
- 5. Enter the verification code
+
+ 1. **設定 → プロフィール** に移動
+ 2. **2FA** セクションを見つけます
+ 3. **2FA有効化**をクリック
+ 4. 認証アプリでQRコードをスキャンします
+ 5. 認証コードを入力します
-
- To change your email address, please reach out to [contact@twenty.com](mailto:contact@twenty.com).
+
+ メールアドレスの変更をご希望の場合は、[contact@twenty.com](mailto:contact@twenty.com) までご連絡ください。
-
- 1. Go to **Settings → Profile**
- 2. Scroll to Danger Zone
- 3. Click **Delete Account**
- 4. Confirm by typing your email
+
+ 1. **設定 → プロフィール** に移動
+ 2. 危険地帯までスクロールします
+ 3. **アカウント削除**をクリックします
+ 4. メールアドレスを入力して確認します
- Note: This removes your access to all workspaces and deletes all emails synced from your connected accounts.
+ 注意:これにより、すべてのワークスペースへのアクセスが削除され、接続済みアカウントから同期されたすべてのメールが削除されます。
-## Experience Settings
+## エクスペリエンス設定
-
- 1. Go to **Settings → Experience**
- 2. Find the Theme section
- 3. Select Light, Dark, or System
+
+ 1. **設定 → エクスペリエンス** に移動
+ 2. **テーマ** セクションを見つけます
+ 3. ライト、ダーク、またはシステムを選択します
-
- 1. Go to **Settings → Experience**
- 2. Find Date Format
- 3. Select your preferred format
- 4. Changes apply immediately
+
+ 1. **設定 → エクスペリエンス** に移動
+ 2. 日付形式を見つけます
+ 3. 希望の形式を選択します
+ 4. 変更はすぐに反映されます
-
- 1. Go to **Settings → Experience**
- 2. Find Time Zone
- 3. Select your local time zone
- 4. All timestamps will adjust
+
+ 1. **設定 → エクスペリエンス** に移動
+ 2. タイムゾーンを見つけます
+ 3. 自分の地域のタイムゾーンを選択します
+ 4. すべてのタイムスタンプが調整されます
-
- 1. Go to **Settings → Experience**
- 2. Find Language
- 3. Select from available languages
- 4. The interface updates to your selection
+
+ 1. **設定 → エクスペリエンス** に移動
+ 2. 言語を見つけます
+ 3. 利用可能な言語から選択します
+ 4. インターフェースは選択に合わせて更新されます
-## Account Settings
+## アカウント設定
-
- 1. Go to **Settings → Accounts**
- 2. Click **Add account**
- 3. Choose Google or Microsoft
- 4. Authorize access
- 5. Configure sync settings
+
+ 1. **設定 → アカウント** に移動します
+ 2. **アカウントを追加**をクリックします
+ 3. Google または Microsoft を選択します
+ 4. アクセスを承認します
+ 5. 同期設定を構成します
-
- Yes, you can connect multiple email accounts. Go to **Settings → Accounts** and add additional accounts as needed.
+
+ はい、複数のメールアカウントを接続できます。 **設定 → アカウント** に移動し、必要に応じてアカウントを追加してください。
-
- 1. Go to **Settings → Accounts**
- 2. Find the account to remove
- 3. Click **Disconnect**
- 4. Confirm the action
+
+ 1. **設定 → アカウント** に移動します
+ 2. 接続を解除するアカウントを見つけます
+ 3. **接続を解除**をクリックします
+ 4. 操作を確認します
-## Domains
+## ドメイン
-
- Yes! Go to **Settings → Domains** and click **Customize Domain**. You have two options:
+
+ はい! **設定 → ドメイン** に移動し、**ドメインをカスタマイズ**をクリックします。 次の 2 つの選択肢があります:
- * **Subdomain**: Use a Twenty subdomain like `yourcompany.twenty.com`
- * **Custom domain**: Use your own domain like `crm.yourcompany.com` (requires DNS configuration)
+ * **サブドメイン**:`yourcompany.twenty.com` のような Twenty のサブドメインを使用します
+ * **カスタムドメイン**:`crm.yourcompany.com` のような独自ドメインを使用します(DNS の設定が必要)
- A subdomain is quick to set up, while a custom domain provides a fully branded experience for your team.
+ サブドメインはすぐに設定できますが、カスタムドメインはチーム向けに完全なブランド体験を提供します。
-
- You can configure approved access domains so team members with company email addresses can automatically join your workspace. Go to **Settings → Domains** and add your company domain (e.g., `yourcompany.com`).
+
+ 会社のメールアドレスを持つチームメンバーが自動的にあなたのワークスペースに参加できるよう、承認されたアクセスドメインを構成できます。 **設定 → ドメイン** に移動し、会社のドメイン(例:`yourcompany.com`)を追加します。
-## Lab Features
+## 早期アクセス機能
-
- Lab features are experimental capabilities being tested before general release. They may change or be removed without notice.
+
+ 早期アクセス機能は、一般提供に先立って検証中の機能です。 現在、早期アクセスの対象は **ダッシュボード** のみです。 ユーザーからのフィードバックに基づいて変更される場合があります。
-
- Lab features are functional but may have bugs or unexpected behavior. Use them cautiously in production environments.
+
+ 早期アクセス機能は正常に動作しますが、ユーザーからのフィードバックに基づいて変更される場合があります。 安全に使用できますが、一般提供前に変更される可能性があります。
-
- 1. Go to **Settings → Releases → Lab**
- 2. Find the feature you want
- 3. Toggle it on
- 4. The feature becomes available immediately
+
+ 1. **設定 → 更新 → 早期アクセス**に移動します
+ 2. 有効にしたい機能を見つけます
+ 3. オンに切り替えます
+ 4. 機能はすぐに利用可能になります
diff --git a/packages/twenty-docs/l/ja/user-guide/settings/overview.mdx b/packages/twenty-docs/l/ja/user-guide/settings/overview.mdx
index afe8173625..6cd6cbb150 100644
--- a/packages/twenty-docs/l/ja/user-guide/settings/overview.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/settings/overview.mdx
@@ -1,67 +1,67 @@
---
-title: Settings
-description: Set up your Twenty workspace with essential configurations.
+title: 設定
+description: 必須の設定を行い、Twenty のワークスペースをセットアップします。
image: /images/user-guide/setup/settings.png
---
-
+
-## Initial Setup
+## 初期セットアップ
-When you first create your workspace, there are several key settings to configure.
+ワークスペースを初めて作成するとき、設定すべき重要な項目がいくつかあります。
-### Workspace Name and Logo
+### ワークスペース名とロゴ
-1. Go to **Settings → General**
-2. Update your workspace name
-3. Upload your company logo
-4. Save your changes
+1. **設定 → 一般** に移動
+2. ワークスペース名を更新します
+3. 会社のロゴをアップロードします
+4. 変更を保存します
-### Time Zone and Date Format
+### タイムゾーンと日付形式
-1. Go to **Settings → Experience**
-2. Select your time zone
-3. Choose your preferred date format
-4. Save your changes
+1. **設定 → エクスペリエンス** に移動
+2. タイムゾーンを選択します
+3. 希望の日付形式を選択します
+4. 変更を保存します
-## Essential Configurations
+## 基本設定
-### Connect Email and Calendar
+### メールとカレンダーの連携
-Set up email and calendar sync:
+メールとカレンダーの同期:
-1. Go to **Settings → Accounts**
-2. Click **Add account**
-3. Connect your Google or Microsoft account
-4. Configure sync settings
+1. **設定 → アカウント** に移動します
+2. **アカウントを追加**をクリックします
+3. Google または Microsoft アカウントを接続します
+4. 同期設定を構成します
-→ [Complete email & calendar setup guide](/l/ja/user-guide/calendar-emails/overview)
+→ [メールとカレンダー設定の完全ガイド](/l/ja/user-guide/calendar-emails/overview)
-### Invite Your Team
+### チームを招待
-Add team members to your workspace:
+ワークスペースにチームメンバーを追加します:
-1. Go to **Settings → Members**
-2. Click **+ Invite**
-3. Enter email addresses
-4. Assign appropriate roles
+1. **設定 → メンバー** に移動
+2. **+ 招待** をクリック
+3. メールアドレスを入力します
+4. 適切なロールを割り当てます
- Before inviting your team, check the default role under **Settings → Roles**. New members are automatically assigned this role when they join.
+ チームを招待する前に、**設定 → ロール** でデフォルトのロールを確認してください。 新しいメンバーが参加すると、このロールが自動的に割り当てられます。
-## Workspace Settings Checklist
+## ワークスペース設定チェックリスト
-* Workspace name and logo configured
-* Time zone and date format set
-* Email and calendar connected
-* Team members invited
-* Roles and permissions configured
+* ワークスペース名とロゴを設定済み
+* タイムゾーンと日付形式を設定済み
+* メールとカレンダーを連携済み
+* チームメンバーを招待済み
+* ロールと権限を設定済み
-## Next Steps
+## 次のステップ
-* [Workspace settings](/l/ja/user-guide/settings/capabilities/workspace-settings)
-* [Profile settings](/l/ja/user-guide/settings/capabilities/profile-settings)
-* [Experience settings](/l/ja/user-guide/settings/capabilities/experience-settings)
+* [ワークスペース設定](/l/ja/user-guide/settings/capabilities/workspace-settings)
+* [プロフィール設定](/l/ja/user-guide/settings/capabilities/profile-settings)
+* [エクスペリエンス設定](/l/ja/user-guide/settings/capabilities/experience-settings)
diff --git a/packages/twenty-docs/l/ja/user-guide/views-pipelines/capabilities/calendar-view.mdx b/packages/twenty-docs/l/ja/user-guide/views-pipelines/capabilities/calendar-view.mdx
index 5dce426eb7..51916b8b15 100644
--- a/packages/twenty-docs/l/ja/user-guide/views-pipelines/capabilities/calendar-view.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/views-pipelines/capabilities/calendar-view.mdx
@@ -1,46 +1,46 @@
---
-title: Calendar View
-description: Display records with date fields on a calendar.
+title: カレンダー表示
+description: 日付フィールドのあるレコードをカレンダーに表示します。
---
-## About Calendar View
+## カレンダービューについて
-Calendar view displays your records on a calendar based on a date field. Each record appears as an event on the corresponding date.
+カレンダービューは、日付フィールドに基づいてレコードをカレンダー上に表示します。 各レコードは、対応する日付にイベントとして表示されます。
-## Creating a Calendar View
+## カレンダービューの作成
-1. Navigate to an object with date fields
-2. Click the view dropdown → **+ Add view**
-3. Name your view and click **Create**
-4. Open the **Options** on the right
-5. Select **Calendar** as the layout
-6. Choose the **date field** to use for positioning records
-7. Click **Update view**
+1. 日付フィールドのあるオブジェクトに移動します
+2. ビューのドロップダウンをクリックし、**+ ビューを追加**を選択します
+3. ビューに名前を付け、**作成**をクリックします
+4. 右側の**オプション**を開きます
+5. レイアウトとして**カレンダー**を選択します
+6. レコードの配置に使用する**日付フィールド**を選択します
+7. **ビューを更新**をクリックします
-## Configuring the Calendar
+## カレンダーの設定
-### Choose the Date Field
+### 日付フィールドを選択
-Under **Options**, select which date field determines where records appear on the calendar.
+**オプション**で、カレンダー上の表示位置を決定する日付フィールドを選択します。
-### Display Fields
+### 表示するフィールド
-Configure which fields show on each calendar event:
+各カレンダーイベントに表示するフィールドを設定します:
-1. Click **Options → Fields**
-2. Toggle fields on/off
-3. Drag to reorder
+1. **オプション → フィールド**をクリックします
+2. フィールドのオン/オフを切り替えます
+3. ドラッグして並べ替えます
-## Use Cases
+## ユースケース
-* **Meetings and calls**: View upcoming appointments
-* **Deadlines**: Track due dates and close dates
-* **Events**: Plan and visualize scheduled activities
-* **Follow-ups**: See when tasks are due
+* **会議と通話**: 今後の予定を表示
+* **期限**: 期日やクローズ日を追跡
+* **イベント**: 予定された活動の計画と可視化
+* **フォローアップ**: タスクの期日を確認
-## Related
+## 関連
-* [Views Overview](/l/ja/user-guide/views-pipelines/overview) — creating and managing views
-* [Filters and Sorting](/l/ja/user-guide/views-pipelines/capabilities/filters-and-sorting) — filtering calendar data
+* [ビューの概要](/l/ja/user-guide/views-pipelines/overview) — ビューの作成と管理
+* [フィルターと並べ替え](/l/ja/user-guide/views-pipelines/capabilities/filters-and-sorting) — カレンダーデータのフィルタリング
diff --git a/packages/twenty-docs/l/ja/user-guide/views-pipelines/capabilities/fields-and-columns.mdx b/packages/twenty-docs/l/ja/user-guide/views-pipelines/capabilities/fields-and-columns.mdx
index 22334f8a19..a2baf4b530 100644
--- a/packages/twenty-docs/l/ja/user-guide/views-pipelines/capabilities/fields-and-columns.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/views-pipelines/capabilities/fields-and-columns.mdx
@@ -1,52 +1,52 @@
---
-title: Fields & Columns
-description: Choose which fields to display and how to organize them.
+title: フィールドと列
+description: 表示するフィールドと整理方法を選択します。
---
-## Selecting Fields to Display
+## 表示するフィールドの選択
-Each view can show a different set of fields. Customize what's visible to focus on the information that matters.
+各ビューは異なるフィールドセットを表示できます。 表示内容をカスタマイズして、重要な情報に集中できます。
-### Show or Hide Fields
+### フィールドの表示/非表示
-1. Click **Options** in the top right
-2. Click **Fields**
-3. Click the **eye icon** next to each field to show/hide it
+1. 右上の **Options** をクリックします
+2. **Fields** をクリックします
+3. 各フィールドの横にある **目のアイコン** をクリックして表示/非表示を切り替えます
-### Reorder Fields
+### フィールドの並べ替え
-Change the order fields appear in your view:
+ビュー内でのフィールドの表示順を変更します:
-1. Click **Options → Fields**
-2. Drag fields up or down
-3. Changes save automatically
+1. **Options → Fields** をクリックします
+2. フィールドを上下にドラッグします
+3. 変更は自動的に保存されます
-## Field Display by View Type
+## ビュータイプ別のフィールド表示
-### Table Views
+### テーブルビュー
-* Fields appear as columns
-* Resize columns by dragging borders
+* フィールドは列として表示されます
+* 列の境界をドラッグしてサイズを変更します
-### Kanban Views
+### カンバンビュー
-* Fields appear on cards
-* Reorder via Options → Fields
-* Use Compact view to hide all fields
+* フィールドはカード上に表示されます
+* Options → Fields で並べ替えます
+* Compact ビューを使用してすべてのフィールドを非表示にします
-### Calendar Views
+### カレンダー表示
-* Selected fields show on calendar events
-* Configure via Options → Fields
+* 選択したフィールドがカレンダーイベントに表示されます
+* Options → Fields で設定します
-## Best Practices
+## ベストプラクティス
-* **Show only what's needed** — too many fields clutters the view
-* **Put important fields first** — most-used columns on the left
-* **Create multiple views** — different field sets for different purposes
-* **Use field visibility per view** — same object, different focus
+* **必要なものだけを表示** — フィールドが多すぎるとビューが散らかります
+* **重要なフィールドを先頭に** — よく使う列を左側に
+* **複数のビューを作成** — 用途に応じて異なるフィールドセットを用意できます
+* **ビューごとにフィールドの表示を設定** — 同じオブジェクトでもフォーカスを変えられます
-## Related
+## 関連
-* [Table Views](/l/ja/user-guide/views-pipelines/capabilities/table-views) — list view features
-* [Kanban Views](/l/ja/user-guide/views-pipelines/capabilities/kanban-views) — card-based views
+* [テーブルビュー](/l/ja/user-guide/views-pipelines/capabilities/table-views) — リストビューの機能
+* [カンバンビュー](/l/ja/user-guide/views-pipelines/capabilities/kanban-views) — カードベースのビュー
diff --git a/packages/twenty-docs/l/ja/user-guide/views-pipelines/capabilities/filters-and-sorting.mdx b/packages/twenty-docs/l/ja/user-guide/views-pipelines/capabilities/filters-and-sorting.mdx
index 7dabbec528..9bfba87406 100644
--- a/packages/twenty-docs/l/ja/user-guide/views-pipelines/capabilities/filters-and-sorting.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/views-pipelines/capabilities/filters-and-sorting.mdx
@@ -1,78 +1,78 @@
---
-title: Filters & Sorting
-description: Filter and sort records to find exactly what you need.
+title: フィルターと並べ替え
+description: 必要なものを正確に見つけるために、レコードをフィルターし、並べ替えます。
---
-## Filtering Data
+## データのフィルタリング
-Filters help you focus on specific records by showing only those that match your criteria.
+フィルターは、条件に一致するレコードだけを表示することで、特定のレコードに集中できるようにします。
-### Adding a Filter
+### フィルターの追加
-1. Click the **Filter** button in the toolbar
-2. Select the field to filter by
-3. Choose the operator (equals, contains, etc.)
-4. Enter the filter value
-5. Click **Apply**
+1. ツールバーの **Filter** ボタンをクリックします。
+2. フィルター対象のフィールドを選択します。
+3. 演算子(等しい、含むなど)を選択します。
+4. フィルターの値を入力します。
+5. **Apply** をクリックします。
-### Filter Operators
+### フィルター演算子
-| Field Type | Available Operators |
-| ---------- | -------------------------------------------------- |
-| Text | Equals, Contains, Starts with, Ends with, Is empty |
-| Number | Equals, Greater than, Less than, Between, Is empty |
-| Date | Equals, Before, After, Between, Is empty |
-| Select | Equals, Is any of, Is empty |
-| Checkbox | Is true, Is false |
-| Relation | Equals, Is empty |
+| フィールドタイプ | 利用可能な演算子 |
+| -------- | ----------------------- |
+| テキスト | 等しい、含む、で始まる、で終わる、空である |
+| 数 | 等しい、より大きい、より小さい、の間、空である |
+| 日付 | 等しい、以前、以後、の間、空である |
+| 選択 | 等しい、いずれかに一致する、空である |
+| チェックボックス | 真である、偽である |
+| リレーション | 等しい、空である |
-### Multiple Filters
+### 複数のフィルター
-Combine multiple filters to narrow down results:
+複数のフィルターを組み合わせて結果を絞り込みます:
-* All filters are applied with AND logic
-* Each additional filter further restricts results
+* すべてのフィルターは AND ロジックで適用されます
+* フィルターを追加するたびに結果がさらに絞り込まれます
-### Removing Filters
+### フィルターの削除
-* Click the **X** on individual filter chips
-* Click **Clear all** to remove all filters
+* 各フィルターチップの **X** をクリックします。
+* **Clear all** をクリックしてすべてのフィルターを削除します。
-## Sorting Data
+## データの並べ替え
-Sorting determines the order records appear.
+並べ替えにより、レコードの表示順が決まります。
-### Adding a Sort
+### 並べ替えの追加
-1. Click the **Sort** button in the toolbar
-2. Select the field to sort by
-3. Choose ascending (A-Z, 0-9) or descending (Z-A, 9-0)
-4. Click **Apply**
+1. ツールバーの **Sort** ボタンをクリックします。
+2. 並べ替え対象のフィールドを選択します。
+3. 昇順 (A-Z, 0-9) または降順 (Z-A, 9-0) を選択します。
+4. **Apply** をクリックします。
-### Multiple Sorts
+### 複数の並べ替え
-Add multiple sort levels:
+複数の並べ替えレベルを追加します:
-* First sort is primary
-* Subsequent sorts apply within groups of equal values
+* 最初の並べ替えが優先されます
+* 以降の並べ替えは同一値のグループ内で適用されます
-### Quick Column Sorting
+### 列のクイック並べ替え
-Click any column header to sort:
+列ヘッダーをクリックして並べ替えます:
-* First click: Ascending
-* Second click: Descending
-* Third click: Remove sort
+* 1回目のクリック: 昇順
+* 2回目のクリック: 降順
+* 3回目のクリック: 並べ替えを解除
-## Saving Filter and Sort Settings
+## フィルターと並べ替えの設定を保存
-Filters and sorts are saved with the view:
+フィルターと並べ替えはビューと一緒に保存されます:
-1. Configure your filters and sorts
-2. Click **Save** to update the current view
-3. Or click **Save as new view** to create a variant
+1. フィルターと並べ替えを設定します
+2. 現在のビューを更新するには **Save** をクリックします。
+3. または **Save as new view** をクリックして別バージョンを作成します。
-## Related
+## 関連
-* [Table Views](/l/ja/user-guide/views-pipelines/capabilities/table-views) — group by feature
-* [Views Overview](/l/ja/user-guide/views-pipelines/overview) — building and managing views
+* [テーブルビュー](/l/ja/user-guide/views-pipelines/capabilities/table-views) — グループ化機能
+* [ビューの概要](/l/ja/user-guide/views-pipelines/overview) — ビューの作成と管理
diff --git a/packages/twenty-docs/l/ja/user-guide/views-pipelines/capabilities/kanban-views.mdx b/packages/twenty-docs/l/ja/user-guide/views-pipelines/capabilities/kanban-views.mdx
index fa616d2f3d..d1d3a15832 100644
--- a/packages/twenty-docs/l/ja/user-guide/views-pipelines/capabilities/kanban-views.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/views-pipelines/capabilities/kanban-views.mdx
@@ -1,99 +1,99 @@
---
-title: Kanban Board Views
-description: Learn how to use Kanban views to visualize and manage your workflows.
+title: カンバンボードビュー
+description: カンバンビューを使用してワークフローを可視化し、管理する方法を学びましょう。
image: /images/user-guide/kanban-views/kanban.png
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-## About Kanban Views
+## カンバンビューについて
-Kanban views visually map out process flows, where each column stands for a distinct stage and each card represents a record.
+カンバンビューはプロセスフローを視覚的にマッピングするもので、各列がそれぞれ異なるステージを表し、各カードがレコードを表します。
-## Move Cards between Stages
+## カードをステージ間で移動
-You can move each card between stages as it goes through your workflow by dragging and dropping. To proceed, hold your click on a card and move it to the next stage.
+カードはワークフローの進行に合わせて、ドラッグ&ドロップでステージ間を移動できます。 続行するには、カードをクリックしたまま次のステージに移動します。
-
+
-## Add and Delete Stages
+## ステージの追加と削除
-You can tailor your workflow to suit your needs using stages, which represent a value in a Select Field:
+ステージ(セレクトフィールドの値を表します)を使って、ニーズに合わせてワークフローを調整できます:
-### Add Stages
+### ステージを追加する
-To add a stage, access the Select field settings by navigating to Settings > Data Model, selecting your object, and then the field your Kanban board depends on.
+ステージを追加するには、「設定 > データモデル」に移動し、オブジェクトを選択し、カンバンボードが依存するフィールドを選択して、セレクトフィールド設定にアクセスします。
-
+
-### Remove Stages
+### ステージを削除する
-To remove a stage, hover the stage name or the `⋮` icon, click `Edit from settings` in the Select field settings, and then click **Delete** next to the relevant stage.
+ステージを削除するには、ステージ名または `⋮` アイコンにカーソルを合わせ、セレクトフィールド設定で `Edit from settings` をクリックし、該当ステージの横にある **削除** をクリックします。
-## Display Fields
+## 表示するフィールド
-You can configure your Kanban board to display some fields and hide others. To hide a field, click on **Options** on the top right, then on **Fields** to bring up the list of options. Look for the field needed in the Hidden Fields section and click on the eye button to display the field.
+カンバンボードを構成し、いくつかのフィールドを表示または隠すことができます。 フィールドを非表示にするには、右上の **Options** をクリックし、続いて **Fields** をクリックしてオプションの一覧を表示します。 Hidden Fields セクションで必要なフィールドを探し、目のアイコンをクリックしてそのフィールドを表示します。
-You can also rearrange the order of fields by holding down the field name and dragging it to where you want it.
+フィールドの順序を並べ替える場合は、フィールド名を押し続けて、希望の場所にドラッグします。
-## Compact View
+## コンパクトビュー
-You can hide all the fields and get an overview of all records at a glance. To enable:
+すべてのフィールドを非表示にして、一目で全レコードの概要を把握できます。 有効にするには:
-1. Click **Options** on the top right
-2. Turn on the toggle for **Compact view**
+1. 右上の **Options** をクリックします
+2. **Compact view** のトグルをオンにします
-## Column Aggregations
+## 列の集計
-Each column in a Kanban view can display aggregated values at the top, helping you understand your data at a glance.
+カンバンビューの各列では上部に集計値を表示でき、一目でデータを把握できます。
-### Available Aggregations
+### 利用可能な集計
-| Aggregation | Description |
-| ----------- | --------------------------------------------- |
-| **Count** | Number of records in the column |
-| **Sum** | Total of a numeric field (e.g., deal amounts) |
-| **Average** | Average value of a numeric field |
-| **Min** | Lowest value |
-| **Max** | Highest value |
+| 集計 | 説明 |
+| -------- | ------------------ |
+| **カウント** | 列内のレコード数 |
+| **合計** | 数値フィールドの合計(例:商談金額) |
+| **平均** | 数値フィールドの平均値 |
+| **最小** | 最小値 |
+| **最大** | 最大値 |
-### Configuring Aggregations
+### 集計の設定
-1. Click on the number displayed next to the Stage value, at the top of a column
-2. Select the aggregation type
-3. Choose the field to aggregate
+1. 列の上部にあるステージ値の横に表示されている数値をクリックします
+2. 集計タイプを選択します
+3. 集計するフィールドを選択します
-**Example:** Show total deal value per stage by aggregating the Amount field with Sum.
+**例:** Amount フィールドを合計で集計し、ステージごとの商談総額を表示します。
-## When to Use Kanban Views
+## カンバンビューを使うタイミング
-Kanban views are ideal for:
+カンバンビューは次の用途に最適です:
-* **Sales pipelines**: Track deals through stages from lead to close
-* **Project management**: Monitor tasks through workflow states
-* **Recruitment**: Track candidates through hiring stages
-* **Any staged process**: Visualize any workflow with defined stages
+* **営業パイプライン**: リードからクローズまで、ステージごとに商談を追跡
+* **プロジェクト管理**: ワークフローの状態ごとにタスクを追跡
+* **採用**: 採用ステージごとに候補者を追跡
+* **ステージを持つあらゆるプロセス**: 定義済みステージでワークフローを可視化
-## Best Practices
+## ベストプラクティス
-### Organize Your Stages
+### ステージを整理する
-* **Limit stages**: 5-7 stages is ideal for visibility
-* **Clear naming**: Use descriptive stage names
-* **Logical order**: Arrange stages in process order
+* **ステージ数を絞る**: 可視性の観点では 5~7 ステージが理想的
+* **明確な命名**: 説明的なステージ名を使用
+* **論理的な順序**: プロセス順にステージを並べる
-### Optimize Card Display
+### カード表示を最適化
-* **Show key fields**: Display only the most important information
-* **Use compact view**: For high-level overviews
-* **Color coding**: Use stage colors to quickly identify status
+* **主要フィールドを表示**: 最重要情報のみを表示
+* **コンパクトビューを使用**: 俯瞰的な概要に最適
+* **色分け**: ステージの色でステータスを素早く識別
-### Maintain Data Quality
+### データ品質を維持
-* **Update regularly**: Keep cards moving through stages
-* **Archive completed**: Move closed items out of active view
-* **Review stale cards**: Follow up on cards stuck in stages
+* **定期的に更新**: カードがステージを移動し続けるようにする
+* **完了をアーカイブ**: クローズ済みの項目をアクティブビューから移動
+* **滞留カードを見直す**: ステージで停滞しているカードをフォローアップする
diff --git a/packages/twenty-docs/l/ja/user-guide/views-pipelines/capabilities/table-views.mdx b/packages/twenty-docs/l/ja/user-guide/views-pipelines/capabilities/table-views.mdx
index 90c793efe9..0abd8cf6b3 100644
--- a/packages/twenty-docs/l/ja/user-guide/views-pipelines/capabilities/table-views.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/views-pipelines/capabilities/table-views.mdx
@@ -1,64 +1,64 @@
---
-title: Table Views
-description: Display your data in a spreadsheet-like list format.
+title: テーブルビュー
+description: データをスプレッドシートのような一覧形式で表示します。
---
-## About Table Views
+## テーブルビューについて
-Table views display records in rows with customizable columns—like a spreadsheet. This is the default view type for most objects.
+テーブルビューはスプレッドシートのように、カスタマイズ可能な列を持つ行でレコードを表示します。 これは、ほとんどのオブジェクトのデフォルトのビュータイプです。
-## Features
+## 機能
-### Column Configuration
+### 列の設定
-* Show or hide columns (fields)
-* Resize column widths
-* Reorder columns by dragging
+* 列(フィールド)の表示/非表示
+* 列の幅を変更します
+* ドラッグして列の順序を変更します
-### Group By a Select Field
+### 選択フィールドでグループ化
-Organize records into collapsible groups based on a field of select type.
+選択タイプのフィールドに基づいて、レコードを折りたたみ可能なグループに整理します。
-1. Click **Options**
-2. Select **Group**
-3. Choose a Select field
-4. Configure group order under **Options → Group → Sort**:
- * **Alphabetical** or **Reverse alphabetical**
- * **Manual order**: Drag groups under "Visible groups" to reorder
- * Click the **eye icon** next to a group to hide it
+1. **オプション** をクリックします
+2. **グループ** を選択します
+3. 選択フィールドを選択します
+4. **オプション → グループ → 並べ替え** でグループの順序を設定します:
+ * **アルファベット順** または **逆アルファベット順**
+ * **手動の順序**: 「表示グループ」内でグループをドラッグして並べ替えます
+ * グループの横にある **目のアイコン** をクリックして非表示にします
-**Use cases:**
+**ユースケース:**
-* Group Company by Type
-* Group Opportunities by Stage
-* Group Tasks by Status
+* 会社をタイプ別にグループ化
+* 案件をステージ別にグループ化
+* タスクをステータス別にグループ化
- **For best performance, limit to 10-15 visible groups per view.** If you need more groups, consider using a Dashboard instead.
+ **最適なパフォーマンスのため、1つのビューで表示するグループは10〜15に制限してください。** それ以上が必要な場合は、代わりにダッシュボードの使用を検討してください。
-### Column Widths
+### 列の幅
-Resize columns to show more or less content:
+表示内容を増減できるように列のサイズを変更します:
-1. Hover between two column headers
-2. Click and drag the column border
-3. Release to set the new width
+1. 2つの列ヘッダーの間にカーソルを置きます
+2. 列の境界をクリックしてドラッグします
+3. 離して新しい幅を確定します
-## When to Use Table Views
+## テーブルビューを使うタイミング
-Table views work best for:
+テーブルビューが最適なのは次の場合です:
-* **Browsing large datasets** — scan many records quickly
-* **Data entry** — edit multiple records efficiently
-* **Detailed analysis** — see many fields at once
-* **Sorting and filtering** — find specific records
+* **大規模データセットの閲覧** — 多数のレコードを素早く確認できます
+* **データ入力** — 複数のレコードを効率的に編集できます
+* **詳細な分析** — 多くのフィールドを一度に確認できます
+* **並べ替えとフィルタリング** — 特定のレコードを見つけることができます
-## Related
+## 関連
-* [Fields and Columns](/l/ja/user-guide/views-pipelines/capabilities/fields-and-columns) — configuring which fields to display
-* [Filters and Sorting](/l/ja/user-guide/views-pipelines/capabilities/filters-and-sorting) — narrowing down records
+* [フィールドと列](/l/ja/user-guide/views-pipelines/capabilities/fields-and-columns) — 表示するフィールドの設定
+* [フィルターと並べ替え](/l/ja/user-guide/views-pipelines/capabilities/filters-and-sorting) — レコードの絞り込み
diff --git a/packages/twenty-docs/l/ja/user-guide/views-pipelines/capabilities/view-settings.mdx b/packages/twenty-docs/l/ja/user-guide/views-pipelines/capabilities/view-settings.mdx
index 89318845df..2eeb7d4a05 100644
--- a/packages/twenty-docs/l/ja/user-guide/views-pipelines/capabilities/view-settings.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/views-pipelines/capabilities/view-settings.mdx
@@ -1,74 +1,74 @@
---
-title: View Settings
-description: Manage view visibility, naming, icons, and organization.
+title: 表示設定
+description: ビューの表示範囲、名称、アイコン、整理を管理します。
---
-## View Visibility
+## ビューの可視性
-Control who can see your custom views.
+カスタムビューを誰が閲覧できるかを管理します。
-### Visibility Options
+### 表示範囲のオプション
-| Setting | Who Can See |
-| ------------- | --------------------- |
-| **Workspace** | All workspace members |
-| **Unlisted** | Only you |
+| 設定 | 誰が閲覧できるか |
+| ----------- | ------------- |
+| **ワークスペース** | ワークスペースの全メンバー |
+| **非公開** | 自分のみ |
-### Changing Visibility
+### 表示範囲を変更する
-1. Open the view
-2. Click **Options → Visibility**
-3. Select **Workspace** or **Unlisted**
+1. ビューを開きます
+2. **オプション → 表示範囲**をクリックします
+3. **ワークスペース** または **非公開** を選択します
- The default "All [Object Name]" views cannot have their visibility changed.
+ デフォルトの "All [Object Name]" ビューは表示範囲を変更できません。
-## Rename a View
+## ビューの名前を変更する
-1. Open the view dropdown
-2. Click the **⋮** menu next to the view
-3. Select **Edit**
-4. Enter the new name
+1. ビュードロップダウンを開きます
+2. ビューの横にある **⋮** メニューをクリックします
+3. **編集** を選択します
+4. 新しい名前を入力します
-## Change View Icon
+## ビューのアイコンを変更する
-1. Open the view dropdown
-2. Click the **⋮** menu next to the view
-3. Select **Edit**
-4. Click the icon to change it
+1. ビュードロップダウンを開きます
+2. ビューの横にある **⋮** メニューをクリックします
+3. **編集** を選択します
+4. アイコンをクリックして変更します
-## Reorder Views
+## ビューを並べ替える
-Change the order views appear in the dropdown:
+ドロップダウンに表示されるビューの順序を変更します:
-1. Open the view dropdown
-2. Drag views by their handle
-3. Drop in the desired position
-4. Order saves automatically
+1. ビュードロップダウンを開きます
+2. ハンドルを使ってビューをドラッグします
+3. 目的の位置にドロップします
+4. 順序は自動的に保存されます
-## Favorites
+## お気に入り
-Pin frequently used views for quick access:
+頻繁に使用するビューをピン留めして、すばやくアクセスできるようにします:
-1. Open the view dropdown
-2. Click the **⋮** menu next to a view
-3. Select **Add to favorites**
+1. ビュードロップダウンを開きます
+2. ビューの横にある **⋮** メニューをクリックします
+3. **お気に入りに追加** を選択します
-Favorited views appear in a dedicated section for easy access.
+お気に入りに追加したビューは、簡単にアクセスできる専用セクションに表示されます。
-## Delete a View
+## ビューを削除する
-1. Open the view dropdown
-2. Click the **⋮** menu next to the view
-3. Select **Delete**
-4. Confirm deletion
+1. ビュードロップダウンを開きます
+2. ビューの横にある **⋮** メニューをクリックします
+3. **削除** を選択します
+4. 削除を確認します
- Deleted views cannot be recovered.
+ 削除したビューは復元できません。
-## Related
+## 関連
-* [Views Overview](/l/ja/user-guide/views-pipelines/overview) — creating views
-* [How to Restrict Access](/l/ja/user-guide/views-pipelines/how-tos/restrict-access-to-your-view) — step-by-step guide
+* [ビューの概要](/l/ja/user-guide/views-pipelines/overview) — ビューの作成
+* [アクセス制限の方法](/l/ja/user-guide/views-pipelines/how-tos/restrict-access-to-your-view) — ステップバイステップガイド
diff --git a/packages/twenty-docs/l/ja/user-guide/views-pipelines/how-tos/create-a-calendar-view-for-tasks-due.mdx b/packages/twenty-docs/l/ja/user-guide/views-pipelines/how-tos/create-a-calendar-view-for-tasks-due.mdx
index 43fb38f691..af8e92d816 100644
--- a/packages/twenty-docs/l/ja/user-guide/views-pipelines/how-tos/create-a-calendar-view-for-tasks-due.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/views-pipelines/how-tos/create-a-calendar-view-for-tasks-due.mdx
@@ -1,61 +1,61 @@
---
-title: Create a Calendar View for Tasks Due
-description: Visualize your tasks and deadlines on a calendar.
+title: 期限付きタスクのカレンダービューを作成
+description: タスクと期限をカレンダー上で可視化します。
---
-## Prerequisites
+## 前提条件
-Your Tasks object needs a **Due Date** field (Date or Date & Time type).
+タスク オブジェクトには、**期限日** フィールド(「日付」または「日付と時刻」タイプ)が必要です。
-## Steps
+## 手順
-1. Navigate to **Tasks**
-2. Click the view dropdown → **+ Add view**
-3. Name your view (e.g., "Tasks Calendar")
-4. Click **Create**
-5. Click **Options** and select **Calendar** as the layout
-6. Choose **Due Date** as the date field
-7. Click **Save**
+1. **タスク** に移動します
+2. ビューのドロップダウンをクリックし、**+ ビューを追加**を選択します
+3. ビューに名前を付けます(例: "タスク カレンダー")。
+4. **作成** をクリックします
+5. **オプション** をクリックし、レイアウトとして **カレンダー** を選択します
+6. 日付フィールドとして **期限日** を選択します
+7. **保存**をクリック
-## Configure Your Calendar
+## カレンダーの設定
-### Display Fields on Events
+### イベントにフィールドを表示
-1. Click **Options → Fields**
-2. Click the **eye icon** to show/hide fields
-3. Drag to reorder
+1. **オプション → フィールド**をクリックします
+2. フィールドの表示/非表示を切り替えるには、**目のアイコン**をクリックします
+3. ドラッグして並べ替えます
-Recommended fields to display:
+表示を推奨するフィールド:
-* **Title** — task name
-* **Assignee** — who's responsible
-* **Status** — current progress
+* **タイトル** — タスク名
+* **担当者** — 誰が担当か
+* **ステータス** — 現在の進捗
-### Filter Your Calendar
+### カレンダーを絞り込む
-Create focused views:
+目的別のビューを作成:
-* **My Tasks**: Filter by Assignee = Me
-* **This Week**: Filter by Due Date = This week
-* **Overdue**: Filter by Due Date < Today, Status ≠ Done
+* **自分のタスク**: 担当者 = 自分 でフィルター
+* **今週**: 期日 = 今週 でフィルター
+* **期限超過**: 期日 < 今日、ステータス ≠ 完了でフィルタリング
-## Other Calendar Use Cases
+## その他のカレンダーのユースケース
-| Object | Date Field | Purpose |
-| ------------- | ---------- | ------------------------- |
-| Opportunities | Close Date | Track expected closes |
-| Custom Events | Event Date | Plan activities |
-| Projects | Deadline | Monitor project timelines |
+| オブジェクト | 日付フィールド | 目的 |
+| -------- | ------- | ------------------ |
+| 商談 | 締切日 | 予定される締切を追跡する |
+| カスタムイベント | イベント日 | アクティビティを計画する |
+| プロジェクト | 期限 | プロジェクトのタイムラインを監視する |
-## Tips
+## ヒント
-* **Review weekly**: Start each week by checking your calendar view
-* **Combine with table view**: Use calendar for overview, table for details
-* **Set visibility**: Keep personal task calendars as Unlisted
+* **毎週見直す**: 毎週の始めにカレンダービューを確認する
+* **テーブルビューと組み合わせる**: 概要はカレンダー、詳細はテーブルを使用する
+* **可視性を設定**: 個人タスクのカレンダーは Unlisted のままにする
-## Related
+## 関連
-* [Calendar View](/l/ja/user-guide/views-pipelines/capabilities/calendar-view) — all calendar features
-* [Filters and Sorting](/l/ja/user-guide/views-pipelines/capabilities/filters-and-sorting) — filter your calendar
+* [カレンダービュー](/l/ja/user-guide/views-pipelines/capabilities/calendar-view) — カレンダービューのすべての機能
+* [フィルターと並べ替え](/l/ja/user-guide/views-pipelines/capabilities/filters-and-sorting) — カレンダーをフィルタリング
diff --git a/packages/twenty-docs/l/ja/user-guide/views-pipelines/how-tos/create-a-kanban-view-for-projects.mdx b/packages/twenty-docs/l/ja/user-guide/views-pipelines/how-tos/create-a-kanban-view-for-projects.mdx
index a8007e124c..1d85a56edd 100644
--- a/packages/twenty-docs/l/ja/user-guide/views-pipelines/how-tos/create-a-kanban-view-for-projects.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/views-pipelines/how-tos/create-a-kanban-view-for-projects.mdx
@@ -1,80 +1,80 @@
---
-title: Create a Kanban View for Projects
-description: Track projects through stages using a visual board.
+title: プロジェクト用のカンバンビューを作成
+description: ビジュアルボードでプロジェクトをステージごとに追跡します。
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-Use a Kanban view to visualize your projects (or any object with stages) as cards moving through columns.
+カンバンビューを使って、プロジェクト(またはステージのある任意のオブジェクト)を、列間を移動するカードとして可視化します。
-
+
-## Prerequisites
+## 前提条件
-Your object needs a **Select field** to use as columns (e.g., Status, Stage, Phase).
+列として使用するには、対象のオブジェクトに **選択フィールド**(例: ステータス、ステージ、フェーズ)が必要です。
-If you don't have one:
+まだない場合:
-1. Go to **Settings → Data Model**
-2. Select your object
-3. Add a Select field with your stage options
+1. **設定 → データモデル** に移動します
+2. 対象のオブジェクトを選択します
+3. ステージの選択肢を持つ選択フィールドを追加します
-## Steps
+## 手順
-1. Navigate to your object (e.g., Projects, Tasks)
-2. Click the view dropdown → **+ Add view**
-3. Name your view (e.g., "Project Board")
-4. Click **Create**
-5. Click **Options** and select **Kanban** as the layout
-6. The view uses your Select field for columns automatically
-7. Click **Save**
+1. 対象のオブジェクト(例: プロジェクト、タスク)に移動します
+2. ビューのドロップダウンをクリックし、**+ ビューを追加**を選択します
+3. ビューに名前を付けます(例: "プロジェクト ボード")
+4. **作成** をクリックします
+5. **オプション** をクリックし、レイアウトとして **カンバン** を選択します
+6. ビューは選択フィールドを列として自動的に使用します
+7. **保存**をクリック
-## Configure Your Board
+## ボードを構成する
-### Show Key Fields on Cards
+### カードに主要フィールドを表示
-1. Click **Options → Fields**
-2. Find fields in the "Hidden Fields" section
-3. Click the **eye icon** to display them on cards
-4. Drag to reorder
+1. **オプション → フィールド** をクリックします
+2. 「非表示フィールド」セクションでフィールドを探します
+3. カードに表示するには、**目のアイコン**をクリックします
+4. ドラッグして並べ替えます
-### Enable Compact View
+### コンパクトビューを有効にする
-For a high-level overview:
+全体をざっと確認したい場合:
-1. Click **Options**
-2. Turn on **Compact view**
+1. **オプション** をクリックします
+2. **コンパクトビュー** をオンにします
-Cards show only the record name.
+カードにはレコード名のみが表示されます。
-### Add Aggregations
+### 集計を追加
-Show counts or totals at the top of each column:
+各列の上部に件数や合計を表示します:
-1. Click the number next to a column name
-2. Select an aggregation (Count, Sum, etc.)
-3. Choose a field if needed
+1. 列名の横の数値をクリックします
+2. 集計方法(件数、合計 など)を選択します
+3. 必要に応じてフィールドを選択します
-## Moving Cards
+## カードの移動
-Drag and drop cards between columns to update their status.
+列間でカードをドラッグ&ドロップして、ステータスを更新します。
-
+
-## Example: Task Board
+## 例: タスクボード
-| Column (Status) | Cards |
-| --------------- | ----------------- |
-| **To Do** | New tasks |
-| **In Progress** | Active work |
-| **Review** | Awaiting approval |
-| **Done** | Completed |
+| 列(ステータス) | カード |
+| -------- | ------ |
+| **未着手** | 新規タスク |
+| **進行中** | 進行中の作業 |
+| **レビュー** | 承認待ち |
+| **完了** | 完了 |
-## Related
+## 関連
-* [Kanban Views](/l/ja/user-guide/views-pipelines/capabilities/kanban-views) — aggregations, compact view, stages
-* [How to Set Up a Sales Pipeline](/l/ja/user-guide/views-pipelines/how-tos/set-up-a-sales-pipeline) — Kanban for Opportunities
+* [カンバンビュー](/l/ja/user-guide/views-pipelines/capabilities/kanban-views) — 集計、コンパクトビュー、ステージ
+* [セールスパイプラインの設定方法](/l/ja/user-guide/views-pipelines/how-tos/set-up-a-sales-pipeline) — 商談向けのカンバン
diff --git a/packages/twenty-docs/l/ja/user-guide/views-pipelines/how-tos/create-a-table-view-with-grouping.mdx b/packages/twenty-docs/l/ja/user-guide/views-pipelines/how-tos/create-a-table-view-with-grouping.mdx
index 055afc3717..e4bf89f4c0 100644
--- a/packages/twenty-docs/l/ja/user-guide/views-pipelines/how-tos/create-a-table-view-with-grouping.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/views-pipelines/how-tos/create-a-table-view-with-grouping.mdx
@@ -1,51 +1,51 @@
---
-title: Create a Table View with Grouping
-description: Organize your records into collapsible groups by field value.
+title: グループ化を使ってテーブルビューを作成
+description: フィールド値ごとにレコードを折りたたみ可能なグループに整理します。
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-Group your table view by a Select field to organize records into collapsible sections.
+Select フィールドでテーブルビューをグループ化し、レコードを折りたたみ可能なセクションに整理します。
-## Steps
+## 手順
-1. Navigate to the object (People, Companies, etc.)
-2. Click the view dropdown → **+ Add view**
-3. Name your view (e.g., "Companies by Type")
-4. Click **Create**
-5. Click **Options → Group**
-6. Choose a Select field to group by
-7. Click **Save**
+1. オブジェクト(人、会社など)に移動します。
+2. ビューのドロップダウンをクリックし、**+ ビューを追加**を選択します
+3. ビューに名前を付けます(例: "種類別の会社")。
+4. **作成** をクリックします
+5. **オプション → グループ** をクリックします
+6. グループ化の基準にする Select フィールドを選択します
+7. **保存**をクリック
-## Configure Group Order
+## グループの順序を設定
-Under **Options → Group → Sort**, choose how groups are ordered:
+**オプション → グループ → 並べ替え** で、グループの並び順を選択します:
-| Option | Description |
-| ------------------------ | --------------------------------------------- |
-| **Alphabetical** | A to Z |
-| **Reverse alphabetical** | Z to A |
-| **Manual order** | Drag groups to reorder under "Visible groups" |
+| オプション | 説明 |
+| ------------- | -------------------------------- |
+| **アルファベット順** | A から Z |
+| **アルファベット逆順** | Z から A |
+| **手動** | "表示中のグループ" の下で、グループをドラッグして並べ替えます |
-Click the **eye icon** next to a group to hide it from the view.
+グループの横にある **目のアイコン** をクリックして、ビューから非表示にします。
- **For best performance, limit to 10-15 visible groups.** If you need more, consider using a Dashboard instead.
+ **最適なパフォーマンスのため、表示中のグループは10〜15に制限してください。** それ以上が必要な場合は、代わりにダッシュボードの使用を検討してください。
-## Example: Companies by Industry
+## 例:業種別の会社
-1. Go to **Companies**
-2. Create a new view named "By Industry"
-3. Click **Options → Group**
-4. Select the **Industry** field
-5. Save
+1. **会社** に移動します
+2. "業種別" という名前の新しいビューを作成します
+3. **オプション → グループ** をクリックします
+4. **業種** フィールドを選択します
+5. 保存
-Now your companies are organized by industry, making it easy to focus on one segment at a time.
+これで会社が業種ごとに整理され、1つのセグメントに集中しやすくなります。
-## Related
+## 関連
-* [Table Views](/l/ja/user-guide/views-pipelines/capabilities/table-views) — all table view features
-* [Filters and Sorting](/l/ja/user-guide/views-pipelines/capabilities/filters-and-sorting) — combine grouping with filters
+* [テーブルビュー](/l/ja/user-guide/views-pipelines/capabilities/table-views) — テーブルビューのすべての機能
+* [フィルターと並べ替え](/l/ja/user-guide/views-pipelines/capabilities/filters-and-sorting) — グループ化をフィルターと組み合わせる
diff --git a/packages/twenty-docs/l/ja/user-guide/views-pipelines/how-tos/restrict-access-to-your-view.mdx b/packages/twenty-docs/l/ja/user-guide/views-pipelines/how-tos/restrict-access-to-your-view.mdx
index def753af81..7ad34934b5 100644
--- a/packages/twenty-docs/l/ja/user-guide/views-pipelines/how-tos/restrict-access-to-your-view.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/views-pipelines/how-tos/restrict-access-to-your-view.mdx
@@ -1,32 +1,32 @@
---
-title: Restrict Access to Your View
-description: Control who can see your custom views.
+title: 自分のビューへのアクセスを制限する
+description: カスタムビューを誰が閲覧できるかを管理します。
---
-Each view (except the default "All [Object Name]" views) has its own visibility setting.
+各ビュー(デフォルトの「すべての[Object Name]」ビューを除く)には、独自の可視性設定があります。
-## Steps
+## 手順
-1. Open the view you want to restrict
-2. Click **Options** in the top right
-3. Click **Visibility**
-4. Select **Unlisted**
+1. 制限したいビューを開きます
+2. 右上の**オプション**をクリック
+3. **可視性**をクリック
+4. **非公開**を選択
-Your view is now visible only to you.
+これで、ビューは自分にのみ表示されます。
-## Visibility Options
+## 可視性のオプション
-| Setting | Who Can See |
-| ------------- | --------------------- |
-| **Workspace** | All workspace members |
-| **Unlisted** | Only you |
+| 設定 | 閲覧可能なユーザー |
+| ----------- | ------------- |
+| **ワークスペース** | ワークスペースの全メンバー |
+| **非公開** | 自分のみ |
-## Notes
+## ノート
-* The default "All [Object Name]" views cannot be made unlisted
-* Unlisted views don't appear in other users' view dropdowns
-* You can change visibility back to Workspace at any time
+* デフォルトの「すべての[Object Name]」ビューは非公開にできません
+* 非公開ビューは他のユーザーのビューのドロップダウンに表示されません
+* 可視性はいつでもワークスペースに戻すことができます
-## Related
+## 関連
-* [View Settings](/l/ja/user-guide/views-pipelines/capabilities/view-settings) — all view configuration options
+* [ビュー設定](/l/ja/user-guide/views-pipelines/capabilities/view-settings) — ビューのすべての設定オプション
diff --git a/packages/twenty-docs/l/ja/user-guide/views-pipelines/how-tos/set-up-a-sales-pipeline.mdx b/packages/twenty-docs/l/ja/user-guide/views-pipelines/how-tos/set-up-a-sales-pipeline.mdx
index 289c525ddc..86375e5ec8 100644
--- a/packages/twenty-docs/l/ja/user-guide/views-pipelines/how-tos/set-up-a-sales-pipeline.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/views-pipelines/how-tos/set-up-a-sales-pipeline.mdx
@@ -20,7 +20,7 @@ Stages are defined in the Opportunities object's **Stage** field.
### Recommended Stages
-| Stage | Purpose |
+| ステージ | Purpose |
| --------------- | ----------------------------------- |
| **New** | Fresh opportunities just identified |
| **Qualified** | Confirmed as a good fit |
@@ -100,7 +100,7 @@ Drag and drop opportunity cards between columns to update their stage.
-## Best Practices
+## ベストプラクティス
### Pipeline Hygiene
diff --git a/packages/twenty-docs/l/ja/user-guide/views-pipelines/how-tos/show-expected-amount-in-pipeline.mdx b/packages/twenty-docs/l/ja/user-guide/views-pipelines/how-tos/show-expected-amount-in-pipeline.mdx
index deadf181ce..af59bc6eb7 100644
--- a/packages/twenty-docs/l/ja/user-guide/views-pipelines/how-tos/show-expected-amount-in-pipeline.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/views-pipelines/how-tos/show-expected-amount-in-pipeline.mdx
@@ -1,149 +1,149 @@
---
-title: Show Expected Amount in Your Pipeline
-description: Calculate and display weighted deal values based on stage probability.
+title: パイプラインに Expected Amount を表示する。
+description: ステージの確率に基づいて商談額に重み付けを行い、計算して表示します。
---
-The Expected Amount is a calculated value: **Amount × Probability**. This helps you forecast revenue by weighting deals based on how likely they are to close.
+Expected Amount は計算値です:**Amount × Probability**。 これにより、成約見込みに基づいて商談に重み付けを行い、売上を予測できます。
- This is an example of creating [Formula Fields](/l/ja/user-guide/workflows/how-tos/crm-automations/formula-fields) using workflows.
+ これは、ワークフローを使用して[数式フィールド](/l/ja/user-guide/workflows/how-tos/crm-automations/formula-fields)を作成する例です。
-This guide walks you through setting up the custom fields and workflows needed to calculate and display expected amounts in your pipeline.
+このガイドでは、パイプラインで Expected Amount を計算・表示するために必要なカスタムフィールドとワークフローの設定手順を説明します。
-## Step 1: Create Custom Fields
+## ステップ1:カスタムフィールドを作成
-You need two custom fields on the Opportunities object.
+Opportunities オブジェクトに2つのカスタムフィールドが必要です。
-### Create the Probability Field
+### Probability フィールドを作成
-1. Go to **Settings → Data Model → Opportunities**
-2. Click **+ Add Field**
-3. Configure:
- * **Name**: Probability
- * **Type**: Number
- * **Description**: Stage-based probability (0-100%)
-4. Click **Save**
+1. **Settings → Data Model → Opportunities** に移動します
+2. **+ Add Field** をクリックします
+3. 設定:
+ * **名前**: Probability
+ * **タイプ**: Number
+ * **説明**: ステージに基づく確率(0〜100%)
+4. **保存**をクリック
-### Create the Expected Amount Field
+### Expected Amount フィールドを作成
-1. Click **+ Add Field**
-2. Configure:
- * **Name**: Expected Amount
- * **Type**: Currency
- * **Description**: Calculated: Amount × Probability
-3. Click **Save**
+1. **+ Add Field** をクリックします
+2. 設定:
+ * **名前**: Expected Amount
+ * **タイプ**: Currency
+ * **説明**: 計算式: Amount × Probability
+3. **保存**をクリック
-### Optional: Make Fields Read-Only for Users
+### 任意:ユーザー向けにフィールドを読み取り専用にする
-If you don't want users manually editing these calculated fields:
+ユーザーにこれらの計算フィールドを手動編集させたくない場合:
-1. Go to **Settings → Roles**
-2. Select the role to configure
-3. Find the Opportunities object
-4. Set **Probability** and **Expected Amount** fields to read-only
+1. **設定 → 役割** に移動
+2. 設定するロールを選択
+3. Opportunities オブジェクトを探す
+4. **Probability** と **Expected Amount** フィールドを読み取り専用に設定
-This ensures only the workflows can update these values.
+これにより、これらの値を更新できるのはワークフローのみになります。
-## Step 2: Create Workflow #1 — Update Probability on Stage Change
+## ステップ2:ワークフロー #1 を作成 — ステージ変更時に Probability を更新
-This workflow automatically sets the Probability when an opportunity moves to a new stage.
+このワークフローは、商談が新しいステージへ移動したときに Probability を自動設定します。
-### Create the Workflow
+### ワークフローを作成
-1. Go to **Workflows**
-2. Click **+ New Workflow**
-3. Name it "Update Probability on Stage Change"
+1. **Workflows** に移動します
+2. **+ New Workflow** をクリックします
+3. 名前を「Update Probability on Stage Change」にします
-### Configure the Trigger
+### トリガーを設定
-1. Add a **Record Created or Updated** trigger
-2. Select **Opportunities** as the object
-3. Filter on: **Stage** field is updated
+1. **Record Created or Updated** トリガーを追加
+2. オブジェクトとして **Opportunities** を選択
+3. フィルター: **Stage** フィールドが更新されたとき
-### Add Branches for Each Stage
+### 各ステージごとに分岐を追加
-Create a branch for each stage with its probability:
+各ステージに対して、対応する確率のブランチを作成します。
-| Stage | Probability |
-| ----------- | ----------- |
-| New | 10% |
-| Qualified | 25% |
-| Meeting | 40% |
-| Proposal | 60% |
-| Negotiation | 80% |
-| Closed Won | 100% |
-| Closed Lost | 0% |
+| ステージ | "確率" |
+| ----------- | ---- |
+| 新規 | 10% |
+| 適格 | 25% |
+| Meeting | 40% |
+| Proposal | 60% |
+| Negotiation | 80% |
+| Closed Won | 100% |
+| Closed Lost | 0% |
- To create a new branch, right click on the workflow canvas and click **New action**. Then, link this action to the previous node by dragging the arrow from the previous node to this new action.
+ 新しいブランチを作成するには、ワークフローキャンバスを右クリックし、**New action** をクリックします。 次に、前のノードからこの新しいアクションに矢印をドラッグして接続します。
-For each stage:
+各ステージについて:
-1. Add a **Filter** node: Stage = [stage name]
-2. Add an **Update Record** action:
- * Record: The triggering Opportunity
- * Field: Probability
- * Value: [probability for that stage]
+1. **Filter** ノードを追加: Stage = [stage name]
+2. **Update Record** アクションを追加:
+ * レコード: トリガーとなった Opportunity
+ * フィールド: Probability
+ * 値: [そのステージの確率]
-### Calculate Expected Amount
+### Expected Amount を計算
-After the branches rejoin:
+ブランチを再結合した後:
-1. Add a **Filter** node: Amount is not empty
-2. Add an **Update Record** action:
- * Record: The triggering Opportunity
- * Field: Expected Amount
- * Value: Amount × Probability
+1. **Filter** ノードを追加: Amount が空でない
+2. **Update Record** アクションを追加:
+ * レコード: トリガーとなった Opportunity
+ * フィールド: Expected Amount
+ * 値: Amount × Probability
-## Step 3: Create Workflow #2 — Recalculate on Amount Change
+## ステップ3:ワークフロー #2 を作成 — Amount 変更時に再計算
-This workflow updates the Expected Amount when the deal Amount changes.
+このワークフローは、商談の Amount が変更されたときに Expected Amount を更新します。
-### Create the Workflow
+### ワークフローを作成
-1. Go to **Workflows**
-2. Click **+ New Workflow**
-3. Name it "Recalculate Expected Amount on Amount Change"
+1. **Workflows** に移動します
+2. **+ New Workflow** をクリックします
+3. 名前を「Recalculate Expected Amount on Amount Change」にします
-### Configure the Trigger
+### トリガーを設定
-1. Add a **Record Created or Updated** trigger
-2. Select **Opportunities** as the object
-3. Filter on: **Amount** field is updated
+1. **Record Created or Updated** トリガーを追加
+2. オブジェクトとして **Opportunities** を選択
+3. フィルター: **Amount** フィールドが更新されたとき
-### Add the Logic
+### ロジックを追加
-1. Add a **Filter** node: Amount is not empty
-2. Add an **Update Record** action:
- * Record: The triggering Opportunity
- * Field: Expected Amount
- * Value: Amount × Probability
+1. **Filter** ノードを追加: Amount が空でない
+2. **Update Record** アクションを追加:
+ * レコード: トリガーとなった Opportunity
+ * フィールド: Expected Amount
+ * 値: Amount × Probability
-## Step 4: Display in Your Pipeline
+## ステップ4:パイプラインに表示
-Now show the Expected Amount totals in your Kanban view:
+カンバンビューに Expected Amount の合計を表示します:
-1. Open your **Sales Pipeline** Kanban view
-2. Click the **number** next to any Stage name at the top of a column
-3. Select **Sum**
-4. Choose **Expected Amount**
+1. お使いの **Sales Pipeline** のカンバンビューを開きます
+2. 列の上部にある任意のステージ名の横の **数値** をクリックします
+3. **Sum** を選択します
+4. **Expected Amount** を選択します
-Each column now shows the total weighted pipeline value for that stage.
+各列には、そのステージの重み付け済みパイプライン合計が表示されます。
-## Summary
+## 概要
-| Component | Purpose |
-| ------------------------- | ------------------------------------------------------------------------- |
-| **Probability field** | Stores the stage-based win probability |
-| **Expected Amount field** | Stores Amount × Probability |
-| **Workflow #1** | Updates Probability when Stage changes, then recalculates Expected Amount |
-| **Workflow #2** | Recalculates Expected Amount when Amount changes |
-| **Aggregation** | Displays Sum of Expected Amount per stage |
+| コンポーネント | 目的 |
+| ------------------------- | ---------------------------------------------------------- |
+| **Probability フィールド** | ステージに基づく受注確率を保存します |
+| **Expected Amount フィールド** | Amount × Probability を保存します |
+| **ワークフロー #1** | ステージが変更されたときに Probability を更新し、その後 Expected Amount を再計算します |
+| **ワークフロー #2** | Amount が変更されたときに Expected Amount を再計算します |
+| **集計** | ステージごとに Expected Amount の合計を表示します |
-## Related
+## 関連情報
-* [Formula Fields](/l/ja/user-guide/workflows/how-tos/crm-automations/formula-fields) — create calculated fields using workflows
-* [Kanban Views](/l/ja/user-guide/views-pipelines/capabilities/kanban-views) — column aggregations
-* [How to Create Custom Fields](/l/ja/user-guide/data-model/how-tos/create-custom-fields) — field configuration
+* [数式フィールド](/l/ja/user-guide/workflows/how-tos/crm-automations/formula-fields) — ワークフローを使って計算フィールドを作成
+* [カンバンビュー](/l/ja/user-guide/views-pipelines/capabilities/kanban-views) — 列の集計
+* [カスタムフィールドの作成方法](/l/ja/user-guide/data-model/how-tos/create-custom-fields) — フィールド設定
diff --git a/packages/twenty-docs/l/ja/user-guide/views-pipelines/how-tos/track-time-in-stage.mdx b/packages/twenty-docs/l/ja/user-guide/views-pipelines/how-tos/track-time-in-stage.mdx
index 7d997135eb..fb233ae53f 100644
--- a/packages/twenty-docs/l/ja/user-guide/views-pipelines/how-tos/track-time-in-stage.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/views-pipelines/how-tos/track-time-in-stage.mdx
@@ -1,33 +1,33 @@
---
-title: Track How Long Opportunities Stay in Each Stage
-description: Monitor deal velocity by tracking when opportunities enter each stage.
+title: 各ステージにおける商談の滞在時間を追跡
+description: 商談が各ステージに入ったタイミングを追跡して、商談の進行速度を監視します。
---
- This is an example of creating [Formula Fields](/l/ja/user-guide/workflows/how-tos/crm-automations/formula-fields) using workflows — specifically date calculations.
+ これは、ワークフローを使って[数式フィールド](/l/ja/user-guide/workflows/how-tos/crm-automations/formula-fields)を作成する例で、特に日付計算です。
-Tracking when opportunities enter each stage helps you identify bottlenecks and measure deal velocity.
+商談が各ステージに入った時点を追跡することで、ボトルネックを特定し、商談の進行速度を測定できます。
-This guide walks you through setting up custom fields and a workflow to automatically record when an opportunity moves to each stage, and calculate how many days it spent in the previous stage.
+このガイドでは、商談が各ステージへ移動した時点を自動記録し、前のステージに要した日数を計算するためのカスタムフィールドとワークフローの設定手順を説明します。
-## Step 1: Create Custom Fields
+## 手順 1: カスタムフィールドを作成する
-You need two types of fields for each stage:
+各ステージに対して、次の2種類のフィールドが必要です:
-* **Date & Time fields**: Record when the opportunity entered each stage
-* **Number fields**: Store how many days the opportunity spent in each stage
+* **日付と時刻フィールド**: 商談が各ステージに入った時刻を記録します
+* **数値フィールド**: 商談が各ステージに滞在した日数を保存します
-### Create the "Last Entered" Fields
+### "Last Entered" フィールドを作成する
-1. Go to **Settings → Data Model → Opportunities**
-2. For each stage, click **+ Add Field** and configure:
- * **Name**: Last Entered [Stage Name] (e.g., "Last Entered New", "Last Entered Qualified")
+1. **Settings → Data Model → Opportunities** に移動
+2. 各ステージについて、**+ Add Field** をクリックして次のように設定します:
+ * **Name**: Last Entered [Stage Name](例: "Last Entered New", "Last Entered Qualified")
* **Type**: Date & Time
- * **Description**: Timestamp when opportunity entered this stage
-3. Click **Save**
+ * **Description**: このステージに商談が入ったタイムスタンプ
+3. **保存**をクリック
-Create these fields:
+次のフィールドを作成します:
* Last Entered New
* Last Entered Qualified
@@ -37,15 +37,15 @@ Create these fields:
* Last Entered Closed Won
* Last Entered Closed Lost
-### Create the "Days in Stage" Fields
+### "Days in Stage" フィールドを作成する
-1. For each stage, click **+ Add Field** and configure:
- * **Name**: Days in [Stage Name] (e.g., "Days in New", "Days in Qualified")
+1. 各ステージについて、**+ Add Field** をクリックして次のように設定します:
+ * **Name**: Days in [Stage Name](例: "Days in New", "Days in Qualified")
* **Type**: Number
- * **Description**: Number of days spent in this stage
-2. Click **Save**
+ * **Description**: このステージに滞在した日数
+2. **保存**をクリック
-Create these fields:
+次のフィールドを作成します:
* Days in New
* Days in Qualified
@@ -54,51 +54,51 @@ Create these fields:
* Days in Negotiation
- You don't need "Days in" fields for Closed Won and Closed Lost since those are final stages.
+ Closed Won と Closed Lost は最終ステージのため、"Days in" フィールドは不要です。
-### Optional: Make Fields Read-Only
+### 任意: フィールドを読み取り専用にする
-If you don't want users manually editing these calculated fields:
+これらの計算フィールドをユーザーに手動編集させたくない場合:
-1. Go to **Settings → Roles**
-2. Select the role to configure
-3. Find the Opportunities object
-4. Set the "Last Entered" and "Days in" fields to read-only
+1. **設定 → 役割** に移動
+2. 設定するロールを選択
+3. Opportunities オブジェクトを見つける
+4. "Last Entered" と "Days in" フィールドを読み取り専用に設定する
-## Step 2: Create the Workflow
+## 手順 2: ワークフローを作成する
-This single workflow handles both tasks:
+この1つのワークフローで両方のタスクを処理します:
-* Records the timestamp when entering a new stage
-* Calculates days spent in the previous stage
+* 新しいステージに入った時刻を記録する
+* 前のステージに滞在した日数を計算する
-### Create the Workflow
+### ワークフローを作成する
-1. Go to **Workflows**
-2. Click **+ New Workflow**
-3. Name it "Track Stage Time"
+1. **Workflows** に移動
+2. **+ New Workflow** をクリック
+3. 名前を "Track Stage Time" にする
-### Configure the Trigger
+### トリガーを設定する
-1. Add a **Record Updated** trigger
-2. Select **Opportunities** as the object
-3. Filter on: **Stage** field is updated
+1. **Record Updated** トリガーを追加
+2. オブジェクトとして **Opportunities** を選択
+3. フィルター条件: **Stage** フィールドが更新されたとき
-### Add Branches for Each Stage
+### 各ステージ用のブランチを追加する
- To create a new branch, right click on the workflow canvas and click **New action**. Then, link this action to the previous node by dragging the arrow from the previous node to this new action.
+ 新しいブランチを作成するには、ワークフローキャンバスを右クリックし、**New action** をクリックします。 次に、前のノードからこの新しいアクションへ矢印をドラッグして、このアクションを前のノードにリンクします。
---
-**Branch 1: Stage = New (first stage)**
+**ブランチ 1: Stage = New(最初のステージ)**
-Since this is the first stage, we only record the entry timestamp—no previous stage to calculate.
+これは最初のステージのため、記録するのは入場時刻のみです。計算対象となる前ステージはありません。
-1. Add a **Filter** node: Stage = New
-2. Add a **Code** action:
+1. **Filter** ノードを追加: Stage = New
+2. **Code** アクションを追加:
```javascript
export const main = async (): Promise => {
@@ -106,19 +106,19 @@ export const main = async (): Promise => {
};
```
-3. Add an **Update Record** action:
- * Record: The triggering Opportunity
+3. **Update Record** アクションを追加:
+ * Record: トリガーとなった Opportunity
* Field: Last Entered New
- * Value: `now` from Code node
+ * Value: Code ノードの `now`
---
-**Branch 2: Stage = Qualified**
+**ブランチ 2: Stage = Qualified**
-When moving to Qualified, record entry time AND calculate days spent in New.
+Qualified に移動したら、入場時刻を記録し、かつ New に滞在した日数を計算します。
-1. Add a **Filter** node: Stage = Qualified
-2. Add a **Code** action:
+1. **Filter** ノードを追加: Stage = Qualified
+2. **Code** アクションを追加:
```javascript
export const main = async (params: {
@@ -138,21 +138,21 @@ export const main = async (params: {
};
```
-3. Configure the Code node input: map `lastEnteredPreviousStage` to the **Last Entered New** field
-4. Add an **Update Record** action:
- * Record: The triggering Opportunity
- * Fields to update:
+3. Code ノードの入力を設定: `lastEnteredPreviousStage` を **Last Entered New** フィールドにマップする
+4. **Update Record** アクションを追加:
+ * Record: トリガーとなった Opportunity
+ * 更新するフィールド:
* Last Entered Qualified = `now`
* Days in New = `daysInPreviousStage`
---
-**Branch 3: Stage = Meeting**
+**ブランチ 3: Stage = Meeting**
-When moving to Meeting, record entry time AND calculate days spent in Qualified.
+Meeting に移動したら、入場時刻を記録し、かつ Qualified に滞在した日数を計算します。
-1. Add a **Filter** node: Stage = Meeting
-2. Add a **Code** action:
+1. **Filter** ノードを追加: Stage = Meeting
+2. **Code** アクションを追加:
```javascript
export const main = async (params: {
@@ -172,60 +172,60 @@ export const main = async (params: {
};
```
-3. Configure the Code node input: map `lastEnteredPreviousStage` to the **Last Entered Qualified** field
-4. Add an **Update Record** action:
- * Record: The triggering Opportunity
- * Fields to update:
+3. Code ノードの入力を設定: `lastEnteredPreviousStage` を **Last Entered Qualified** フィールドにマップする
+4. **Update Record** アクションを追加:
+ * Record: トリガーとなった Opportunity
+ * 更新するフィールド:
* Last Entered Meeting = `now`
* Days in Qualified = `daysInPreviousStage`
---
-**Continue for remaining stages:**
+**残りのステージも同様に続けます:**
-| Stage | Records | Calculates |
+| ステージ | レコード | 計算 |
| ----------- | ------------------------ | ------------------- |
| Proposal | Last Entered Proposal | Days in Meeting |
| Negotiation | Last Entered Negotiation | Days in Proposal |
| Closed Won | Last Entered Closed Won | Days in Negotiation |
| Closed Lost | Last Entered Closed Lost | Days in Negotiation |
-The branches do not need to rejoin—each runs independently when its stage condition is met.
+ブランチを再結合する必要はありません。各ブランチは、そのステージ条件が満たされたときに独立して実行されます。
-## Step 3: Analyze Time in Stage
+## 手順 3: ステージ滞在時間を分析する
-With timestamps and day counts recorded, you can now analyze deal velocity.
+タイムスタンプと日数が記録されたら、商談の進行速度を分析できます。
-### Create a "Slow Deals" View
+### "Slow Deals" ビューを作成する
-1. Create a Table view of Opportunities
-2. Add columns: Name, Stage, Days in [previous stage], Amount
-3. Sort by "Days in" field (descending)
-4. Filter by Stage to focus on one stage at a time
+1. Opportunities のテーブルビューを作成する
+2. 列を追加: Name、Stage、Days in [previous stage]、Amount
+3. "Days in" フィールドで並べ替え(降順)
+4. Stage でフィルターして、1つのステージに絞り込む
-Deals at the top spent the most time in the previous stage.
+上位の商談は、前のステージで最も長く滞在していたことを示します。
-### Use Aggregations
+### 集計を使用する
-In your pipeline Kanban view:
+パイプラインのカンバンビューで:
-1. Click the number next to a Stage name
-2. Select **Average**
-3. Choose a "Days in" field
+1. ステージ名の横にある数値をクリック
+2. **Average** を選択
+3. "Days in" フィールドを選択
-This shows the average time deals spend in each stage.
+各ステージで商談が費やす平均時間が表示されます。
-## Summary
+## まとめ
-| Component | Purpose |
-| ------------------------ | ------------------------------------------------- |
-| **Last Entered fields** | Store when opportunity entered each stage |
-| **Days in fields** | Store how many days spent in each stage |
-| **Workflow** | Records timestamp AND calculates days in one pass |
-| **Views & Aggregations** | Analyze deal velocity and identify bottlenecks |
+| コンポーネント | 目的 |
+| ---------------------- | ----------------------- |
+| **Last Entered フィールド** | 商談が各ステージに入った時刻を保存する |
+| **Days in フィールド** | 各ステージでの滞在日数を保存する |
+| **ワークフロー** | タイムスタンプの記録と日数計算を一度に実行する |
+| **ビューと集計** | 商談の進行速度を分析し、ボトルネックを特定する |
-## Related
+## 関連項目
-* [Workflows](/l/ja/user-guide/workflows/overview) — automation basics
-* [How to Create Custom Fields](/l/ja/user-guide/data-model/how-tos/create-custom-fields) — field configuration
-* [Kanban Views](/l/ja/user-guide/views-pipelines/capabilities/kanban-views) — aggregations
+* [ワークフロー](/l/ja/user-guide/workflows/overview) — 自動化の基本
+* [カスタムフィールドの作成方法](/l/ja/user-guide/data-model/how-tos/create-custom-fields) — フィールドの設定
+* [カンバンビュー](/l/ja/user-guide/views-pipelines/capabilities/kanban-views) — 集計
diff --git a/packages/twenty-docs/l/ja/user-guide/views-pipelines/overview.mdx b/packages/twenty-docs/l/ja/user-guide/views-pipelines/overview.mdx
index 2e46c753ed..e1a8ccabe5 100644
--- a/packages/twenty-docs/l/ja/user-guide/views-pipelines/overview.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/views-pipelines/overview.mdx
@@ -1,137 +1,137 @@
---
-title: Views & Pipelines
-description: Learn how to create and manage views in Twenty.
+title: ビューとパイプライン
+description: Twentyでビューを作成および管理する方法を理解する。
image: /images/user-guide/table-views/table.png
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-
+
-## Understanding Views
+## ビューの理解
-Views are saved configurations that determine how your data is displayed. Each view can have its own:
+ビューは、データの表示方法を決定する保存済みの設定です。 各ビューにはそれぞれ、次の項目を設定できます:
-* **Layout**: Table, Kanban, or Calendar
-* **Filters**: Which records to show
-* **Sorting**: How records are ordered
-* **Fields**: Which columns are visible
+* **レイアウト**: テーブル、カンバン、またはカレンダー
+* **フィルター**: どのレコードを表示するか
+* **並べ替え**: レコードの並び順
+* **フィールド**: どの列を表示するか
-## View Types
+## ビューのタイプ
-### Table View
+### テーブルビュー
-The default spreadsheet-like view showing records in rows with customizable columns.
+レコードを行に表示し、列をカスタマイズできる、デフォルトのスプレッドシート風ビュー。
-### Kanban View
+### カンバンビュー
-A visual board view where records appear as cards organized by stages. Ideal for:
+レコードがステージごとに整理されたカードとして表示されるビジュアルなボードビュー。 こんな用途に最適:
-* Sales pipelines
-* Project tracking
-* Any workflow with defined stages
+* セールスパイプライン
+* プロジェクトの進捗管理
+* ステージが定義されたあらゆるワークフロー
-### Calendar View
+### カレンダー表示
-Display records with date fields on a calendar. Perfect for:
+日付フィールドを持つレコードをカレンダーに表示します。 こんな用途に最適:
-* Meetings and events
-* Deadlines and due dates
-* Time-based planning
+* 会議やイベント
+* 締切や期日
+* 時間ベースの計画
-## Creating a View
+## ビューの作成
-There are two ways to create a new view.
+新しいビューを作成する方法は 2 つあります。
-### Use the View Dropdown Menu
+### ビュードロップダウンメニューの使用
-1. Navigate to any object (People, Companies, etc.)
-2. Click the view name at the top left (shows current view with a dropdown arrow)
-3. Click **+ Add view**
-4. Name your view and click **Create**
-5. Choose a layout (Table, Kanban, or Calendar) under **Options**
-6. Add filters and sorting as needed
-7. Select which fields to display and reorder them
-8. Click **Save**
+1. 任意のオブジェクト(People、Companies など)に移動します
+2. 左上のビュー名(ドロップダウン矢印付きの現在のビュー)をクリックします
+3. **+ ビューを追加**をクリック
+4. ビューに名前を付け、**作成**をクリック
+5. **オプション**でレイアウト(テーブル、カンバン、またはカレンダー)を選択します
+6. 必要に応じてフィルターと並べ替えを追加します
+7. 表示するフィールドを選択し、並べ替えます
+8. **保存**をクリック
-
+
-### Start by editting an existing view
+### 既存のビューの編集から始める
-1. Navigate to any object (People, Companies, etc.)
-2. Choose a layout (Table, Kanban, or Calendar) under **Options** or Add filters and sorting as needed
-3. Click on **Save as new view**
-4. Name your view and click **Create**
-5. Keep editing your new view
-6. Click on **Update view** to save your additional configurations
+1. 任意のオブジェクト(People、Companies など)に移動します
+2. **オプション**でレイアウト(テーブル、カンバン、またはカレンダー)を選択するか、必要に応じてフィルターと並べ替えを追加します
+3. **新しいビューとして保存**をクリック
+4. ビューに名前を付け、**作成**をクリック
+5. 新しいビューの編集を続けます
+6. **ビューを更新**をクリックして、追加の設定を保存します
-
+
-## Managing Views
+## ビューを管理
-### Edit a View
+### ビューを編集
-1. Select the view from the dropdown
-2. Make your changes (filters, sorting, columns)
-3. Click **Save** to update the view
+1. ドロップダウンからビューを選択します
+2. 変更を加えます(フィルター、並べ替え、列)
+3. ビューを更新するには**保存**をクリックします
-### Rename a View or Change Its Icon
+### ビューの名前またはアイコンを変更する
-1. Open the view dropdown
-2. Click the **⋮** menu next to the view name
-3. Select **Edit**
-4. Change the name or icon
-5. Click **Save**
+1. ビューのドロップダウンを開きます
+2. ビュー名の横にある**⋮**メニューをクリックします
+3. **編集**を選択します
+4. 名前またはアイコンを変更します
+5. **保存**をクリック
-### Reorder Views
+### ビューを並べ替える
-1. Open the view dropdown
-2. Click and drag a view by its handle
-3. Drop it in the desired position
-4. The new order is saved automatically
+1. ビューのドロップダウンを開きます
+2. ビューのハンドルをクリックしてドラッグします
+3. 希望の位置にドロップします
+4. 新しい順序は自動的に保存されます
-### Add to Favorites
+### お気に入りに追加
-Pin frequently used views for quick access:
+よく使うビューをピン留めして、すばやくアクセスできるようにします:
-1. Open the view dropdown
-2. Click the **⋮** menu next to a view
-3. Select **Add to favorites**
-4. The view appears in your favorites section
+1. ビューのドロップダウンを開きます
+2. ビューの横にある**⋮**メニューをクリックします
+3. **お気に入りに追加**を選択します
+4. ビューがお気に入りセクションに表示されます
-### Delete a View
+### ビューを削除する
-1. Select the view to delete
-2. Click the view dropdown
-3. Click the **⋮** menu next to the view
-4. Select **Delete**
-5. Confirm deletion
+1. 削除するビューを選択します
+2. ビューのドロップダウンを開きます
+3. ビューの横にある**⋮**メニューをクリックします
+4. **削除**を選択します
+5. 削除を確認します
- Deleted views cannot be recovered. Make sure you want to remove it before confirming.
+ 削除したビューは復元できません。 確認する前に、削除してよいか必ずご確認ください。
-## View Visibility
+## ビューの可視性
-Each view (except the default "All [Object Name]" views) has its own visibility setting.
+各ビュー(デフォルトの「すべての[オブジェクト名]」ビューを除く)には、独自の可視性設定があります。
-To change visibility:
+可視性を変更するには:
-1. Open the view
-2. Click **Options → Visibility**
-3. Choose:
- * **Workspace**: Visible to all workspace members
- * **Unlisted**: Visible only to you
+1. ビューを開きます
+2. **オプション → 可視性**をクリックします
+3. 次から選択:
+ * **ワークスペース**: すべてのワークスペースメンバーに表示されます
+ * **非公開**: 自分にのみ表示されます
- The default "All [Object Name]" views cannot have their visibility changed.
+ デフォルトの「すべての[オブジェクト名]」ビューの可視性は変更できません。
-## Next Steps
+## 次のステップ
-* [Table Views](/l/ja/user-guide/views-pipelines/capabilities/table-views)
-* [Kanban Views](/l/ja/user-guide/views-pipelines/capabilities/kanban-views)
-* [Filters and Sorting](/l/ja/user-guide/views-pipelines/capabilities/filters-and-sorting)
-* [View Settings](/l/ja/user-guide/views-pipelines/capabilities/view-settings)
+* [テーブルビュー](/l/ja/user-guide/views-pipelines/capabilities/table-views)
+* [カンバンビュー](/l/ja/user-guide/views-pipelines/capabilities/kanban-views)
+* [フィルターと並べ替え](/l/ja/user-guide/views-pipelines/capabilities/filters-and-sorting)
+* [ビュー設定](/l/ja/user-guide/views-pipelines/capabilities/view-settings)
diff --git a/packages/twenty-docs/l/ja/user-guide/workflows/capabilities/send-emails-from-workflows.mdx b/packages/twenty-docs/l/ja/user-guide/workflows/capabilities/send-emails-from-workflows.mdx
index af21237036..29c613a090 100644
--- a/packages/twenty-docs/l/ja/user-guide/workflows/capabilities/send-emails-from-workflows.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/workflows/capabilities/send-emails-from-workflows.mdx
@@ -1,149 +1,168 @@
---
-title: Send Emails from Workflows
-description: Send personalized emails automatically using workflow actions.
+title: ワークフローによるメール送信
+description: ワークフローアクションを使用して、パーソナライズされたメールを自動送信します。
image: /images/user-guide/workflows/workflow.png
---
-Automatically send emails when specific events occur in your CRM—welcome new contacts, follow up on opportunities, or notify team members.
+CRM で特定のイベントが発生したときにメールを自動送信します—新規連絡先を歓迎し、商談をフォローアップしたり、チームメンバーに通知したりします。
-## Prerequisites
+## 前提条件
-Before you can send emails from workflows:
+ワークフローからメールを送信する前に:
-1. Connect an email account under **Settings → Accounts**
-2. Ensure the account has sending permissions enabled
+1. **設定 → アカウント** でメールアカウントを接続する
+2. そのアカウントで送信権限が有効になっていることを確認する
-## Basic Email Workflow
+## 基本的なメールワークフロー
-### Example: Welcome Email for New Contacts
+### 例:新規連絡先へのウェルカムメール
-**Goal**: Send a welcome email when a new person is added to the CRM.
+**目的**: 新しい連絡先が CRM に追加されたときにウェルカムメールを送信する。
-**Setup**:
+**設定**:
-1. **Create workflow**: Go to **Settings → Workflows** and click **+ New Workflow**
+1. **ワークフローを作成**: **設定 → ワークフロー** に移動し、**+ New Workflow** をクリック
-2. **Add trigger**: Select **Record is Created** → **People**
+2. **トリガーを追加**: **Record is Created** → **People** を選択
-3. **Add Send Email action**:
- * Click **+** to add an action
- * Select **Send Email**
- * Configure the email:
+3. **Send Email アクションを追加**:
+ * アクションを追加するには **+** をクリック
+ * **Send Email** を選択
+ * メールを設定:
-| Field | Value |
-| ----------- | -------------------------------------- |
-| **To** | `{{trigger.object.email}}` |
-| **Subject** | `Welcome to {{Your Company Name}}` |
-| **Body** | `Hi {{trigger.object.firstName}}, ...` |
+| フィールド | 値 |
+| ------ | -------------------------------------- |
+| **宛先** | `{{trigger.object.email}}` |
+| **件名** | `{{Your Company Name}}へようこそ` |
+| **本文** | `Hi {{trigger.object.firstName}}, ...` |
-4. **Test and activate**: Test with a sample record, then activate
+4. **テストして有効化**: サンプルレコードでテストし、その後有効化する
-## Using Variables in Emails
+## メールで変数を使用する
-Reference data from previous steps using `{{variable}}` syntax:
+`{{variable}}` 構文を使用して前のステップのデータを参照します:
```text
-Hi {{trigger.object.firstName}},
+{{trigger.object.firstName}} 様、
-Thank you for connecting with us!
+ご連絡いただきありがとうございます!
-Your company, {{trigger.object.company.name}}, is now in our system.
+御社 {{trigger.object.company.name}} は当社のシステムに登録されました。
-Best regards,
-The Team
+よろしくお願いいたします。
+チーム一同
```
-### Available Variables from Triggers
+### トリガーから利用できる変数
-| Trigger Type | Common Variables |
-| -------------------------- | -------------------------------------- |
-| **Record Created/Updated** | `{{trigger.object.fieldName}}` |
-| **Manual** | `{{trigger.selectedRecord.fieldName}}` |
-| **Webhook** | `{{trigger.body.fieldName}}` |
+| トリガータイプ | 一般的な変数 |
+| -------------- | -------------------------------------- |
+| **レコードの作成/更新** | `{{trigger.object.fieldName}}` |
+| **手動** | `{{trigger.selectedRecord.fieldName}}` |
+| **Webhook** | `{{trigger.body.fieldName}}` |
-## Advanced: Conditional Emails
+## 高度: 条件付きメール
-### Example: Different Emails Based on Lead Source
+### 例:リードのソースに基づいて異なるメール
-**Goal**: Send different welcome emails based on where the lead came from.
+**目的**: リードの流入元に応じて異なるウェルカムメールを送信する。
-**Setup**:
+**設定**:
-1. **Trigger**: Record is Created (People)
+1. **トリガー**: レコードが作成される(People)
-2. **Add Filter action**:
- * Condition: `{{trigger.object.source}}` equals `"Website"`
- * If true → continue to website welcome email
+2. **フィルターアクションを追加**:
+ * 条件: `{{trigger.object.source}}` が "Website" と等しい
+ * 真の場合 → ウェブサイトのウェルカムメールに進む
-3. **Branch for other sources**:
- * Create parallel branches for different sources
- * Each branch has its own Send Email action
+3. **その他のソース用の分岐**:
+ * ソースごとに並列の分岐を作成する
+ * 各分岐にそれぞれの Send Email アクションを配置する
-## Sending Emails to Multiple Recipients
+## 複数の受信者にメールを送信する
-### Example: Notify Team When Deal Closes
+### 例:商談が成立したときにチームへ通知
-**Goal**: Email the sales rep and their manager when an opportunity is won.
+**目的**: 商談が成約したときに担当営業とそのマネージャーへメールを送る。
-**Setup**:
+**設定**:
-1. **Trigger**: Record is Updated (Opportunities, Stage = "Closed Won")
+1. **トリガー**: レコードが更新(Opportunities、Stage = "Closed Won")
-2. **Search Records**: Find the opportunity owner's manager
+2. **Search Records**: 商談の所有者のマネージャーを見つける
-3. **Send Email #1**: To opportunity owner
- * To: `{{trigger.object.owner.email}}`
- * Subject: `Congratulations on closing {{trigger.object.name}}!`
+3. **Send Email #1**: 商談の所有者宛て
+ * 宛先: `{{trigger.object.owner.email}}`
+ * 件名: `Congratulations on closing {{trigger.object.name}}!`
-4. **Send Email #2**: To manager
- * To: `{{searchRecords.manager.email}}`
- * Subject: `Deal Won: {{trigger.object.name}}`
+4. **Send Email #2**: マネージャー宛て
+ * 宛先: `{{searchRecords.manager.email}}`
+ * 件名: `Deal Won: {{trigger.object.name}}`
-## Scheduled Follow-up Emails
+## フォローアップメールのスケジュール送信
-### Example: Follow Up 3 Days After Meeting
+### 例:会議の3日後にフォローアップ
-**Goal**: Send a follow-up email 3 days after a meeting is logged.
+**目的**: 会議が記録された3日後にフォローアップメールを送信する。
-**Setup**:
+**設定**:
-1. **Trigger**: Record is Created (Activities, Type = "Meeting")
+1. **トリガー**: レコードが作成(Activities、Type = "Meeting")
-2. **Delay action**: Wait 3 days
+2. **Delay アクション**: 3日待機
3. **Send Email**:
- * To: Meeting attendee
- * Subject: Following up on our conversation
- * Body: Reference meeting details from trigger
+ * 宛先: 会議の参加者
+ * 件名: 先日の会話のフォロー
+ * 本文: トリガーから会議の詳細を参照
-## Best Practices
+## メールの添付ファイル
-### Email Content
+ワークフローから送信されるメールにファイルを添付できます。 添付ファイルは、ワークフローを設定する際にアップロードする静的なファイルです。
-* Keep subject lines concise and relevant
-* Personalize with recipient's name
-* Include a clear call to action
-* Test emails before activating
+### 添付ファイルを追加する方法
-### Deliverability
+1. **メール送信** アクションで、**添付ファイル** ボタンをクリックします
+2. クリックしてお使いのコンピューターからファイルをアップロードします
+3. このアクションによって送信されるすべてのメールに、そのファイルが添付されます。
-* Don't send too many emails too quickly
-* Use professional email signatures
-* Avoid spam trigger words
-* Ensure unsubscribe options for marketing emails
+### 一般的な使用例
-### Troubleshooting
-
-* Verify email account is connected and active
-* Check recipient email address is valid
-* Review workflow runs for error messages
-* Test with your own email address first
+| ユースケース | サンプルファイル |
+| ----------------- | --------------- |
+| **ウェルカムメール** | 会社案内(PDF) |
+| **オンボーディングシーケンス** | 導入ガイド |
+| **営業のフォローアップ** | 製品カタログまたは価格表 |
+| **イベント確認メール** | イベントの詳細またはアジェンダ |
- **Coming soon**: Email attachments will be available in Q1 2026.
+ 添付ファイルは静的です—すべての受信者に同じファイルが送信されます。 動的ドキュメント(パーソナライズされた見積もりなど)の場合は、[サーバーレス関数](/l/ja/user-guide/workflows/how-tos/connect-to-other-tools/generate-pdf-from-twenty)を使ってファイルを生成し、添付します。
-## Related
+## ベストプラクティス
-* [Workflow Triggers](/l/ja/user-guide/workflows/capabilities/workflow-triggers)
-* [Workflow Actions](/l/ja/user-guide/workflows/capabilities/workflow-actions)
+### メールの内容
+
+* 件名は簡潔かつ関連性の高い内容に保つ
+* 受信者名でパーソナライズする
+* 明確な行動喚起を含める
+* 有効化前にメールをテストする
+
+### 到達性
+
+* 短時間に過度な数のメールを送信しない
+* プロフェッショナルなメール署名を使用する
+* スパム判定されやすい語句を避ける
+* マーケティングメールに配信停止オプションを必ず用意する
+
+### トラブルシューティング
+
+* メールアカウントが接続され有効になっていることを確認する
+* 受信者のメールアドレスが有効か確認する
+* エラーメッセージがないかワークフローの実行履歴を確認する
+* まず自分のメールアドレスでテストする
+
+## 関連
+
+* [ワークフローのトリガー](/l/ja/user-guide/workflows/capabilities/workflow-triggers)
+* [ワークフローのアクション](/l/ja/user-guide/workflows/capabilities/workflow-actions)
diff --git a/packages/twenty-docs/l/ja/user-guide/workflows/capabilities/use-branches-in-workflows.mdx b/packages/twenty-docs/l/ja/user-guide/workflows/capabilities/use-branches-in-workflows.mdx
index 9ca8697c50..02c884cab2 100644
--- a/packages/twenty-docs/l/ja/user-guide/workflows/capabilities/use-branches-in-workflows.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/workflows/capabilities/use-branches-in-workflows.mdx
@@ -1,90 +1,90 @@
---
-title: Use Branches in Workflows
-description: Understand how branches work and how to control which path is executed.
+title: ワークフローでブランチを使用する
+description: ブランチの仕組みと、どのパスが実行されるかの制御方法を理解します。
---
-## How Branches Work
+## ブランチの仕組み
-In the workflow editor, you can create multiple paths (branches) going out from a single node. This allows you to build complex automations with different outcomes.
+ワークフローエディタでは、1 つのノードから分岐する複数のパス(ブランチ)を作成できます。 これにより、異なる結果を持つ複雑な自動化を構築できます。
-**Important**: When a workflow runs, **all branches execute in parallel by default**. There is no built-in "if/else" logic to choose one branch over another—every path will run simultaneously.
+**重要**: ワークフローが実行されると、**既定ではすべてのブランチが並列に実行されます**。 あるブランチを選択するための組み込みの "if/else" ロジックはありません—すべてのパスが同時に実行されます。
-## Controlling Which Branch Runs
+## どのブランチを実行するかの制御
-To execute only one branch based on specific conditions, **add a Filter node at the beginning of each branch**.
+特定の条件に基づいて 1 つのブランチのみを実行するには、**各ブランチの先頭に Filter ノードを追加**します。
-### Example Setup
+### セットアップ例
-1. Create your workflow with multiple branches from a single node
-2. Add a **Filter** node as the first step in each branch
-3. Set conditions on each Filter to determine when that branch should continue
-4. Only the branch(es) whose Filter conditions are met will proceed
+1. 1 つのノードから複数のブランチを持つワークフローを作成します
+2. 各ブランチの最初のステップとして **Filter** ノードを追加します
+3. 各 Filter に条件を設定し、そのブランチをいつ続行するかを決めます
+4. Filter の条件を満たしたブランチだけが続行します
-### How Filters Work
+### Filter の仕組み
-* If the Filter condition is **met**: The branch continues executing
-* If the Filter condition is **not met**: The branch stops at the Filter node
+* Filter の条件が**満たされた**場合:ブランチは実行を継続します
+* Filter の条件が**満たされない**場合:ブランチは Filter ノードで停止します
-This effectively creates conditional logic where only the appropriate branch runs based on your data.
+これにより、データに基づいて該当するブランチだけが実行される条件付きロジックを実質的に作成できます。
-## Example: Route by Deal Size
+## 例:商談金額でルーティング
-**Scenario**: When a deal is closed, send different notifications based on deal size.
+**シナリオ**: 商談がクローズされたとき、商談金額に応じて異なる通知を送信します。
-1. **Trigger**: Opportunity updated (Stage = Closed Won)
-2. **Branch 1**: Filter for Amount > $10,000 → Send Slack message to #big-deals
-3. **Branch 2**: Filter for Amount ≤ $10,000 → Send email to sales manager
+1. **トリガー**: Opportunity が更新(Stage = Closed Won)
+2. **ブランチ 1**: Amount > $10,000 で Filter → #big-deals に Slack メッセージを送信
+3. **ブランチ 2**: Amount ≤ $10,000 で Filter → 営業マネージャーにメールを送信
-Both branches start, but only the one matching the deal amount will continue past its Filter.
+両方のブランチが開始されますが、商談金額に一致する方だけが Filter を通過して続行します。
-## Creating Branches
+## ブランチの作成
- To create a new branch from an existing step, click the **+** button on the step and add your action. You can add multiple branches by clicking **+** multiple times.
+ 既存のステップから新しいブランチを作成するには、そのステップの **+** ボタンをクリックしてアクションを追加します。 **+** を複数回クリックすると、複数のブランチを追加できます。
-1. In the workflow editor, select the step you want to branch from
-2. Click the **+** button to add an action
-3. This creates one branch
-4. Click **+** again on the same step to create additional branches
-5. Each branch can have its own sequence of actions
+1. ワークフローエディタで、分岐させたいステップを選択します
+2. アクションを追加するには **+** ボタンをクリックします
+3. これで 1 つのブランチが作成されます
+4. 同じステップで **+** をもう一度クリックして、ブランチを追加作成します
+5. 各ブランチは独自のアクションのシーケンスを持てます
-## Merging Branches Back Together
+## ブランチを再結合する
-After parallel branches complete their work, you can merge them back into a single path:
+並列ブランチが処理を完了したら、単一のパスに再結合できます:
-1. Complete your branched actions
-2. Add a new step that should run after all branches
-3. Drag a connection from the last step of each branch to this new step
-4. The merged step waits for all connected branches to complete before executing
+1. 分岐したアクションを完了します
+2. すべてのブランチの後に実行すべき新しいステップを追加します
+3. 各ブランチの最後のステップからこの新しいステップに接続をドラッグします
+4. マージされたステップは、接続されたすべてのブランチが完了するまで待機してから実行されます
-### Example: Process Then Notify
+### 例:処理後に通知
```
-Trigger
+トリガー
│
- ├── Branch A: Update Customer Record
+ ├── ブランチ A: 顧客レコードを更新
│
- └── Branch B: Create Support Ticket
+ └── ブランチ B: サポートチケットを作成
↘ ↙
- Merged Step: Send Confirmation Email
+ マージされたステップ: 確認メールを送信
```
-The confirmation email sends only after both the customer update and ticket creation are done.
+確認メールは、顧客の更新とチケットの作成の両方が完了してから送信されます。
-## Best Practices
+## ベストプラクティス
-* Always use **Filter nodes** at the start of branches when you want conditional execution
-* Keep branch conditions **mutually exclusive** to avoid duplicate actions
-* Test your workflows with different data to ensure the correct branches run
-* **Rename branch steps** descriptively so it's clear what each path does
-* **Merge branches** when you need a final action after parallel processing
+* 条件付きで実行したい場合は、ブランチの開始時に常に**Filter ノード**を使用します
+* 重複したアクションを避けるために、ブランチの条件は**相互排他的**に保ちます
+* さまざまなデータでワークフローをテストし、正しいブランチが実行されることを確認します
+* **ブランチのステップ名を変更**して、各パスが何を行うかが明確に分かるようにします
+* 並列処理の後に最終アクションが必要な場合は、**ブランチをマージ**します
-## Related
+## 関連
-* [Workflows FAQ](/l/ja/user-guide/workflows/how-tos/need-more-help/workflows-faq) — answers about parallel execution
-* [Workflow Actions](/l/ja/user-guide/workflows/capabilities/workflow-actions) — available actions for branches
+* [ワークフロー FAQ](/l/ja/user-guide/workflows/how-tos/need-more-help/workflows-faq) — 並列実行に関する回答
+* [ワークフローのアクション](/l/ja/user-guide/workflows/capabilities/workflow-actions) — ブランチで利用可能なアクション
diff --git a/packages/twenty-docs/l/ja/user-guide/workflows/capabilities/use-iterator.mdx b/packages/twenty-docs/l/ja/user-guide/workflows/capabilities/use-iterator.mdx
index 20a1ed7d2b..7ba48827e1 100644
--- a/packages/twenty-docs/l/ja/user-guide/workflows/capabilities/use-iterator.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/workflows/capabilities/use-iterator.mdx
@@ -1,92 +1,88 @@
---
-title: Use Iterator
-description: Loop through arrays of records to perform actions on each item.
+title: Iterator を使用
+description: レコードの配列をループし、各アイテムに対してアクションを実行します。
image: /images/user-guide/workflows/workflow.png
---
-Iterator lets you loop through an array of records and perform actions on each one. It's essential for workflows that need to process multiple records returned by Search Records or received via webhooks.
+Iterator を使用すると、レコードの配列をループし、各レコードに対してアクションを実行できます。 これは、Search Records で返された複数のレコードや Webhook で受信したレコードを処理する必要があるワークフローに不可欠です。
-
- Iterator is currently in beta. Activate it under **Settings → Releases → Lab**.
-
+## Iterator を使用するタイミング
-## When to Use Iterator
+| シナリオ | 例 |
+| ------------------ | ------------------ |
+| **検索結果を処理** | 見つかった各人物にメールを送信 |
+| **Webhook の配列を処理** | 各アイテムごとに順番にレコードを作成 |
+| **一括更新** | 計算された値で複数のレコードを更新 |
+| **通知** | イベントについて複数人に通知 |
-| Scenario | Example |
-| -------------------------- | ---------------------------------------------- |
-| **Process search results** | Send email to each person found |
-| **Handle webhook arrays** | Create records for each item in order |
-| **Bulk updates** | Update multiple records with calculated values |
-| **Notifications** | Alert multiple people about an event |
+## Iterator の理解
-## Understanding Iterator
+Iterator は入力として**配列**を想定しています。 その後、次を実行します:
-Iterator expects an **array** as input. It then:
+1. 配列から最初のアイテムを取り出す
+2. そのアイテムを使って Iterator 内のすべてのアクションを実行する
+3. 次のアイテムに進む
+4. すべてのアイテムが処理されるまで繰り返す
-1. Takes the first item from the array
-2. Runs all actions inside the iterator with that item
-3. Moves to the next item
-4. Repeats until all items are processed
+## 基本的なセットアップ
-## Basic Setup
+### 例: 検索結果の全員にメールを送信
-### Example: Email Everyone in Search Results
+**目標**: 特定の会社のすべての連絡先を見つけ、各人にパーソナライズされたメールを送信します。
-**Goal**: Find all contacts in a specific company and send each one a personalized email.
+### ステップ 1: レコードを検索
-### Step 1: Search for Records
+1. 「**Search Records**」アクションを追加
+2. オブジェクト: **People**
+3. フィルター: Company が "Acme Inc" に等しい
+4. これにより、People の配列が返されます
-1. Add **Search Records** action
-2. Object: **People**
-3. Filter: Company equals "Acme Inc"
-4. This returns an array of people
+### ステップ 2: 結果の有無を確認
-### Step 2: Check Results Exist
+1. 「**Filter**」アクションを追加
+2. 条件: `{{searchRecords.length}}` が 0 より大きい
+3. これにより、結果が空の場合の Iterator エラーを防止します
-1. Add **Filter** action
-2. Condition: `{{searchRecords.length}}` is greater than 0
-3. This prevents Iterator errors on empty results
+### ステップ 3: Iterator を追加
-### Step 3: Add Iterator
+1. 「**Iterator**」アクションを追加
+2. 配列の入力: `{{searchRecords}}` を選択
+3. これでループが作成されます
-1. Add **Iterator** action
-2. Array input: Select `{{searchRecords}}`
-3. This creates a loop
+### ステップ 4: Iterator 内にアクションを追加
-### Step 4: Add Actions Inside Iterator
+Iterator の後に配置したアクションは、各アイテムに対して実行されます:
-Actions placed after Iterator run for each item:
+1. 「**Send Email**」アクションを追加(Iterator 内)
+2. 宛先: `{{iterator.currentItem.email}}`
+3. 件名: こんにちは `{{iterator.currentItem.firstName}}`!
+4. 本文: 現在のアイテムのフィールドを使用したパーソナライズメッセージ
-1. Add **Send Email** action (inside iterator)
-2. To: `{{iterator.currentItem.email}}`
-3. Subject: Hello `{{iterator.currentItem.firstName}}`!
-4. Body: Personalized message using current item fields
+### 結果
-### Result
+Search Records が 5 人を返した場合、Iterator は次を実行します:
-If Search Records returns 5 people, the Iterator:
+* 1 人目にメールを送信
+* 2 人目にメールを送信
+* ... 5 人すべてに対して続行
-* Sends email to person 1
-* Sends email to person 2
-* ... continues for all 5
+## 現在のアイテムのデータにアクセスする
-## Accessing Current Item Data
+Iterator 内では、現在のレコードにアクセスするために `{{iterator.currentItem}}` を使用します:
-Inside Iterator, use `{{iterator.currentItem}}` to access the current record:
+| 変数 | 説明 |
+| --------------------------------------- | ---------------- |
+| `{{iterator.currentItem}}` | 現在のレコードオブジェクト全体 |
+| `{{iterator.currentItem.id}}` | レコード ID |
+| `{{iterator.currentItem.email}}` | メールフィールド |
+| `{{iterator.currentItem.company.name}}` | 関連する会社名 |
+| `{{iterator.index}}` | 配列内の現在の位置(0 始まり) |
-| Variable | Description |
-| --------------------------------------- | ----------------------------------- |
-| `{{iterator.currentItem}}` | The entire current record object |
-| `{{iterator.currentItem.id}}` | Record ID |
-| `{{iterator.currentItem.email}}` | Email field |
-| `{{iterator.currentItem.company.name}}` | Related company name |
-| `{{iterator.index}}` | Current position in array (0-based) |
+## よくあるパターン
-## Common Patterns
+### 複数レコードを更新
-### Update Multiple Records
-
-**Goal**: Mark all overdue tasks as "Late"
+**目標**: 期限超過のタスクをすべて "Late" としてマークします。
```
1. Search Records (Tasks, Due Date < Today, Status ≠ Completed)
@@ -98,9 +94,9 @@ Inside Iterator, use `{{iterator.currentItem}}` to access the current record:
- Status: Late
```
-### Create Records from Array
+### 配列からレコードを作成
-**Goal**: Webhook receives order with multiple items, create a record for each
+**目標**: 複数のアイテムを含む注文を Webhook が受信したら、各アイテムのレコードを作成します。
```
1. Webhook Trigger (receives items array)
@@ -113,9 +109,9 @@ Inside Iterator, use `{{iterator.currentItem}}` to access the current record:
- Related Order: {{trigger.body.orderId}}
```
-### Conditional Processing Inside Loop
+### ループ内の条件付き処理
-**Goal**: Only send email to contacts with valid emails
+**目標**: 有効なメールアドレスを持つ連絡先にのみメールを送信します。
```
1. Search Records (People)
@@ -125,56 +121,56 @@ Inside Iterator, use `{{iterator.currentItem}}` to access the current record:
- To: {{iterator.currentItem.email}}
```
-## Troubleshooting
+## トラブルシューティング
### "Iterator expects an array"
-**Cause**: You passed a single record instead of an array.
+**原因**: 配列ではなく単一のレコードを渡しました。
-**Fix**: Make sure you're passing the result of Search Records or an array field, not a single record.
+**対処**: 単一のレコードではなく、Search Records の結果または配列フィールドを渡していることを確認してください。
```
✅ Correct: {{searchRecords}}
❌ Wrong: {{searchRecords[0]}}
```
-### Iterator Doesn't Run
+### Iterator が実行されない
-**Cause**: The array is empty.
+**原因**: 配列が空です。
-**Fix**: Add a Filter before Iterator to check array length:
+**対処**: Iterator の前にフィルターを追加し、配列の長さを確認します:
```
Filter: {{searchRecords.length}} > 0
```
-### Actions Run Too Many Times
+### アクションが過剰に実行される
-**Cause**: Search Records returned more records than expected.
+**原因**: Search Records が想定より多くのレコードを返しました。
-**Fix**:
+**対処**:
-* Add more specific filters to Search Records
-* Set a limit on Search Records (max 200)
-* Add Filter inside Iterator for additional conditions
+* Search Records により具体的なフィルターを追加する
+* Search Records に上限を設定する(最大 200)
+* 追加条件のために Iterator 内にフィルターを追加する
-## Performance Considerations
+## パフォーマンス上の考慮事項
-* **Credit usage**: Each iteration consumes credits for its actions
-* **Time**: Large arrays take longer to process
-* **Limits**: Consider batching very large operations
-* **Rate limits**: External API calls may hit rate limits with many iterations
+* **クレジット使用量**: 各イテレーションでアクション実行分のクレジットを消費します
+* **時間**: 大きな配列は処理に時間がかかります
+* **制限**: 非常に大きな処理はバッチ化を検討してください
+* **レート制限**: 繰り返しが多いと外部 API 呼び出しがレート制限に達する可能性があります
-## Best Practices
+## ベストプラクティス
-1. **Always check array length** before Iterator to avoid errors
-2. **Add filters inside loops** when not all items need processing
-3. **Rename your Iterator step** to describe what it's looping through
-4. **Test with small arrays** before processing large datasets
-5. **Monitor workflow runs** to ensure iterations complete as expected
+1. エラーを避けるため、Iterator の前に**配列の長さを必ず確認**
+2. **すべてのアイテムを処理する必要がない場合はループ内にフィルターを追加**
+3. **何をループしているか分かるように Iterator ステップの名前を変更**
+4. **小さな配列でテスト**してから大きなデータセットを処理する
+5. **ワークフローの実行を監視**して、イテレーションが想定どおりに完了することを確認する
-## Related
+## 関連
-* [Workflow Actions](/l/ja/user-guide/workflows/capabilities/workflow-actions)
-* [How to Use Branches](/l/ja/user-guide/workflows/capabilities/use-branches-in-workflows)
-* [Workflows FAQ](/l/ja/user-guide/workflows/how-tos/need-more-help/workflows-faq)
+* [ワークフローのアクション](/l/ja/user-guide/workflows/capabilities/workflow-actions)
+* [ブランチの使い方](/l/ja/user-guide/workflows/capabilities/use-branches-in-workflows)
+* [ワークフロー FAQ](/l/ja/user-guide/workflows/how-tos/need-more-help/workflows-faq)
diff --git a/packages/twenty-docs/l/ja/user-guide/workflows/capabilities/workflow-actions.mdx b/packages/twenty-docs/l/ja/user-guide/workflows/capabilities/workflow-actions.mdx
index bdd79cb3a9..ccffe75f7b 100644
--- a/packages/twenty-docs/l/ja/user-guide/workflows/capabilities/workflow-actions.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/workflows/capabilities/workflow-actions.mdx
@@ -1,311 +1,311 @@
---
-title: Workflow Actions
-description: Learn about the actions available in Twenty workflows.
+title: ワークフローアクション
+description: Twenty のワークフローで利用可能なアクションについて学びましょう。
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-## About Actions
+## アクションについて
-Actions define what happens after a trigger fires. You can chain multiple actions together to build complex automations.
+アクションはトリガーが起動した後に何が起こるかを定義します。 複数のアクションを連結して、複雑な自動化を構築できます。
- * Use the variable picker (click the `(x+)` icon) to browse available data from previous steps
- * Hover over any input field to see which step a variable comes from — helpful when the same field (e.g., ID) exists in multiple previous steps
- * Give each action a descriptive name for easier maintenance
+ * 変数ピッカー(`(x+)` アイコンをクリック)を使用して、前の手順から利用可能なデータを参照します
+ * 任意の入力フィールドにカーソルを合わせると、変数がどのステップから来ているかがわかります—同じフィールド(例:ID)が複数の前のステップに存在する場合に便利です
+ * 保守しやすくするため、各アクションにわかりやすい名前を付けてください
-## Record Actions
+## レコードアクション
-### Create a Record
+### レコードを作成
-Adds a new record to a selected object.
+選択したオブジェクトに新しいレコードを追加します。
-**Configuration**:
+**設定**:
-* Select the target object
-* Fill out the required and optional fields
-* Use data from previous steps or input values manually to populate fields
+* 対象オブジェクトを選択
+* 必要およびオプションのフィールドに入力
+* 前の手順のデータを使用するか、手動で値を入力してフィールドに設定します
-**Output**: The newly created record data is available for use in subsequent steps.
+**出力**:新しく作成されたレコードのデータが後続の手順で使用可能
-### Update Record
+### レコードを更新
-Modifies an existing record in a selected object.
+選択したオブジェクト内の既存のレコードを変更します。
-**Configuration**:
+**設定**:
-* Select the target object
-* Choose the specific record to update.
- * You can either choose a fixed record, using the drop down menu displaying all available records.
- * Or you can have the record dynamically selected, by designating a record found in a previous step, using the `(x+)`. You cannot search for the record based on different criteria at this stage. If you've not yet identified the record, add a `Search Record` step before this `Update Record` step.
-* Select fields to modify and enter new values
+* 対象オブジェクトを選択
+* 更新する具体的なレコードを選択.
+ * 利用可能なすべてのレコードを表示するドロップダウンメニューから、固定のレコードを選択できます。
+ * または、`(x+)` を使用して前のステップで見つかったレコードを指定し、レコードを動的に選択できます。 この段階では、異なる条件に基づいてレコードを検索することはできません。 まだレコードを特定していない場合は、この `Update Record` ステップの前に `Search Record` ステップを追加してください。
+* 変更するフィールドを選択し、新しい値を入力
-**Output**: The updated record data is available for use in subsequent steps.
+**出力**:更新されたレコードのデータが後続の手順で使用可能
-### Delete Record
+### レコードを削除
-Removes a record from a selected object.
+選択したオブジェクトからレコードを削除します。
-**Configuration**:
+**設定**:
-* Select the target object
-* Choose the specific record to delete
+* 対象オブジェクトを選択
+* 削除する具体的なレコードを選択
-**Output**: The deleted record data remains available for use in subsequent steps.
+**出力**:削除されたレコードのデータは後続の手順で使用可能
-### Search Records
+### レコードを検索
-Finds records within a selected object using filter conditions.
+選択したオブジェクト内のフィルター条件を使用してレコードを探します。
-**Configuration**:
+**設定**:
-* Select the object to search
-* Set filter criteria to narrow results
-* Configure sorting and limits
+* 検索するオブジェクトを選択
+* 結果を絞り込むためのフィルター基準を設定
+* 並べ替えや制限を設定
-**Output**: Returns matching records that can be used in subsequent steps.
+**出力**:一致するレコードを返し、後続の手順で使用可能
- **Limit**: Search Records returns a maximum of **200 records**. If you need to process more, add specific filters to reduce results or use scheduled workflows to process in batches.
+ **制限**:Search Records は最大 **200 件のレコード**を返します。 さらに処理する必要がある場合は、結果を絞り込むフィルターを追加するか、スケジュールされたワークフローを使用してバッチ処理してください。
-**Best Practice**: Use [branches](/l/ja/user-guide/workflows/capabilities/workflow-branches) after Search Records to handle "found" vs "not found" scenarios.
+**ベストプラクティス**:Search Records の後に[ブランチ](/l/ja/user-guide/workflows/capabilities/workflow-branches)を使用して、「見つかった」と「見つからない」のシナリオを処理します。
### Upsert Record
-Creates a new record or updates an existing one based on matching criteria. This is useful when you're not sure if a record already exists.
+一致条件に基づいて、新しいレコードを作成するか、既存のレコードを更新します。 レコードが既に存在するかどうか確信が持てない場合に便利です。
-**Configuration**:
+**設定**:
-* Select the target object
-* Note which fields can be used for matching: email for People, domain for Companies, ID for any object, or any field marked as Unique. You'll need to populate at least one of these below.
-* Fill out the field values. Do not forget to populate at least one of the unique identifiers.
+* 対象オブジェクトを選択
+* どのフィールドがマッチングに使用できるかに注意してください:People には email、Companies には domain、任意のオブジェクトには ID、または Unique としてマークされた任意のフィールド。 以下のうち少なくとも 1 つは入力する必要があります。
+* フィールドの値を入力します。 少なくとも 1 つの一意の識別子を必ず入力してください。
- **Matching usually works even better when adding only one unique identifier.** For example, the screenshot below will match companies based on their domain. The ID is not necessarily needed.
+ **通常、一意の識別子を 1 つだけ追加するほうがマッチングはうまく機能します。** 例えば、以下のスクリーンショットでは、ドメインに基づいて会社を照合します。 ID は必ずしも必要ではありません。
-* Use data from previous steps to populate fields
+* 前の手順からのデータを使用してフィールドを埋める
-**How it works**:
+**仕組み**:
-1. Searches for a record matching your criteria
-2. If found → updates the existing record
-3. If not found → creates a new record
+1. 指定した条件に一致するレコードを検索します
+2. 見つかった場合 → 既存のレコードを更新します
+3. 見つからない場合 → 新しいレコードを作成します
-**Output**: The created or updated record data is available for use in subsequent steps.
+**出力**:作成または更新されたレコードのデータは後続の手順で使用できます。
-## Flow Actions
+## フローアクション
-### Iterator
+### イテレータ
-**Loops through an array of records** returned from a previous step, allowing you to perform actions on each record individually.
+**前の手順から返されたレコード配列をループ**し、各レコードに個別にアクションを実行できます。
-**Configuration**:
+**設定**:
-* Select the array of records from a previous step (e.g., results from Search Records, from a Manual trigger with Bulk availability, from a code node)
-* Define the actions to perform on each record in the loop.
+* 前の手順からレコードの配列を選択します(例:Search Records の結果、Bulk に対応した手動トリガー、コードノード)
+* ループ内の各レコードで実行するアクションを定義.
- - You can add several actions within an iterator.
- - When using branches inside an iterator, make sure the last step of each branch connects back to the iterator to close the loop.
+ - イテレーター内に複数のアクションを追加できます。
+ - イテレーター内で分岐を使用する場合、各分岐の最後のステップがループを閉じるようにイテレーターへ戻る接続になっていることを確認してください。
-* Access `Current Item` Fields: to use fields from the record currently being processed, click on the **Iterator** step, then select **Current item**. The list of available fields from that record will be displayed and can be selected for use in subsequent actions.
+* `Current Item` フィールドにアクセス:現在処理中のレコードのフィールドを使用するには、**Iterator** ステップをクリックし、**Current item** を選択します。 そのレコードで使用可能なフィールドの一覧が表示され、後続のアクションで使用するために選択できます。
-
+
-### Filter
+### フィルター
-Filters records based on specified conditions, allowing only records that meet the criteria to pass through.
+指定された条件に基づいてレコードをフィルタリングし、条件を満たすレコードのみを通過させます。
-**Configuration**:
+**設定**:
-* Select the record to filter
-* Define filter conditions and criteria
-* Configure which records should pass through to subsequent steps
+* フィルター対象のレコードを選択
+* フィルタ条件と基準を定義
+* 後続の手順に通過するレコードを設定
- 1. **Output**: Filter nodes don't return data—they act as gates. If the conditions are met, the workflow continues. If not, the workflow stops at that branch.
- 2. The `IS` operator can be used with numeric fields. It performs as an `EQUAL`.
+ 1. **出力**:フィルターノードはデータを返しません—ゲートとして機能します。 条件を満たす場合、ワークフローは継続します。 満たさない場合、その分岐でワークフローは停止します。
+ 2. `IS` 演算子は数値フィールドで使用できます。 これは `EQUAL` と同様に動作します。
-### Delay
+### 遅延
-Pauses workflow execution for a specified duration or until a specific date/time.
+指定した期間、または特定の日時までワークフローの実行を一時停止します。
-**Delay Types**:
+**遅延の種類**:
-| Type | Description |
-| ------------------ | ------------------------------------------------------------------ |
-| **Duration** | Wait for a specific amount of time (days, hours, minutes, seconds) |
-| **Scheduled Date** | Wait until a specific date and time |
+| タイプ | 説明 |
+| -------- | --------------------- |
+| **期間** | 指定した時間(日、時間、分、秒)待機します |
+| **予定日時** | 特定の日時まで待機します |
-**Configuration for Duration**:
+**期間の設定**:
-* Set days, hours, minutes, and/or seconds
-* Combine multiple units (e.g., 2 days and 4 hours)
+* 日、時間、分、秒を設定します
+* 複数の単位を組み合わせます(例:2日と4時間)
-**Configuration for Scheduled Date**:
+**予定日時の設定**:
-* Select a date and time
-* Can reference a date field from a previous step (e.g., follow up 3 days after a meeting)
+* 日付と時刻を選択します
+* 前の手順の日付フィールドを参照できます(例:ミーティングの3日後にフォローアップ)
-**Use cases**:
+**ユースケース**:
-* Wait 24 hours before sending a follow-up email
-* Pause until an opportunity's close date
-* Schedule actions for business hours
+* フォローアップメールを送信する前に24時間待機する
+* 商談のクローズ日まで一時停止する
+* 営業時間内にアクションを実行するようスケジュールする
- The scheduled date cannot be in the past. If a date field from a previous step is used and the date has already passed, the workflow will fail.
+ 予定日時は過去に設定できません。 前の手順の日付フィールドを使用し、その日付がすでに過去の場合、ワークフローは失敗します。
-**Limits & Credits**:
+**制限とクレジット**:
-* **No maximum duration limit**—you can set delays of minutes, days, weeks, or longer
-* **1 credit consumed** when the Delay node executes, regardless of duration
-* **No credits consumed** while waiting—a 5-minute delay costs the same as a 5-day delay
+* **最大期間の制限はありません**—分、日、週、さらに長い遅延を設定できます
+* 期間に関係なく、Delay ノードの実行時に**1 クレジットを消費**します
+* 待機中は**クレジットは消費されません**—5分の遅延も5日の遅延もコストは同じです
-## Communication Actions
+## コミュニケーションアクション
-### Send Email
+### メールを送信
-Sends an email from your workflow. This is great for templated group emails. Emails will look like the ones you send from your mailbox.
-Not suited for newsletters (which require richer formatting) or automated email sequences.
+ワークフローからメールを送信します。 テンプレート化されたグループメールに最適です。 メールは、メールボックスから送信するメールと同様の見た目になります。
+ニュースレター(よりリッチな書式が必要)や自動メール配信には適していません。
-**Prerequisites**: Add an email account in Settings → Accounts
+**前提条件**:設定 → アカウントでメールアカウントを追加
-**Configuration**:
+**設定**:
-* Select the sender email account
+* 送信元のメールアカウントを選択
- You can only send emails from mailboxes synced to your own Twenty account. Sending from other team members' mailboxes (e.g., the account owner's email) is on the roadmap.
+ 自分の Twenty アカウントと同期されたメールボックスからのみメールを送信できます。 他のチームメンバーのメールボックス(例:アカウント所有者のメール)からの送信はロードマップにあります。
-For all the following steps, you can reference variables from previous steps for personalization.
+以降のすべての手順で、パーソナライズのために前の手順の変数を参照できます。
-* Enter recipient email address.
+* 受信者のメールアドレスを入力.
- Only one recipient is possible at the moment.
+ 現在は受信者は1名のみです。
-* Set subject line.
-* Compose message body. You can format links, create numbered list, bullet point lists, add attachments.
+* 件名を設定.
+* メッセージ本文を作成. リンクの書式設定、番号付きリストや箇条書きの作成、添付ファイルの追加ができます。
- Adding HTML signatures is not possible at the moment.
+ 現在、HTML署名の追加はできません。
-### Form
+### フォーム
-Prompts a form during workflow execution to collect user input. The responses can then be used in subsequent steps to create records, send emails, or execute any other action based on the input.
+ワークフロー実行中にフォームをプロンプトしてユーザー入力を収集します。 回答はその後、後続の手順で、入力に基づいてレコード作成、メール送信、その他のアクションの実行に利用できます。
- **Forms are designed for manual triggers only**. For workflows with other triggers (Record Created, Updated, etc.), forms are only accessible via the workflow run interface, which is not the expected user experience. A notifications center will be released in 2026 to properly support forms in automated workflows.
+ **フォームは手動トリガー専用に設計されています。** 他のトリガーを持つワークフロー(レコード作成、更新など)では、ユーザーが期待する体験とは異なり、フォームにはワークフロー実行インターフェースからのみアクセス可能です。 通知センターは、2026年に自動化されたワークフローでフォームを適切にサポートするためにリリースされます。
-**Configuration**:
+**設定**:
-* Configure the fields that users will be asked to fill. For each field, choose
- * a type among text, number, date, a given record, a select field. Select fields from all objects are available.
- * a label
- * a default value under `Placeholder` (optional)
-* Edit the form title
+* ユーザーに入力してもらうフィールドを設定します。 各フィールドについて、次を選択します。
+ * テキスト、数値、日付、特定のレコード、セレクトフィールドのいずれかのタイプ。 すべてのオブジェクトのセレクトフィールドが利用可能です。
+ * ラベル
+ * `Placeholder` のデフォルト値(任意)
+* フォームのタイトルを編集
-**Output**: Form responses are available for use in subsequent steps.
+**出力**:フォームレスポンスが後続の手順で使用可能
-**Example**: The "Quick Lead" workflow is available by default in all workspaces, available anywhere in the Command Menu `Cmd + K`.
+**例**:「Quick Lead」ワークフローはすべてのワークスペースでデフォルトで利用可能で、コマンドメニュー `Cmd + K` のどこからでも利用できます。
-**How to fill the form**:
+**フォームの記入方法**:
-* Trigger your manual workflow from the command menu `Cmd K`
-* Fill the form that is displayed in the side panel and click `Submit`.
+* コマンドメニュー `Cmd K` から手動ワークフローをトリガーします
+* サイドパネルに表示されるフォームに入力し、`Submit` をクリックします。
- The fields cannot be made mandatory.
+ フィールドを必須にすることはできません。
-
+
-## Integration Actions
+## 統合アクション
-### Code
+### コード
-Runs custom JavaScript within your workflow.
+ワークフロー内でカスタムJavaScriptを実行します。
-**Configuration**:
+**設定**:
-* Access variables from previous steps. You can edit the variables names dynamically.
+* 前の手順からの変数にアクセス. 変数名を動的に編集できます。
-
+
-* Write JavaScript code in the editor
-* Return variables for use in subsequent steps
-* Test code directly in the step
+* エディタでJavaScriptコードを記述
+* 後続の手順で使用するための変数を返す
+* ステップ内でコードを直接テスト
- If you need to use external API keys in your code, you must input them directly in the function body. You cannot configure API keys elsewhere and reference them in the serverless function.
+ コードで外部のAPIキーを使用する必要がある場合は、関数本体に直接入力する必要があります。 別の場所でAPIキーを設定して、それをサーバーレス関数で参照することはできません。
- **Working with arrays?** Arrays from external systems or previous steps may come as strings. See [How to handle arrays in Code actions](/l/ja/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions) for the solution.
+ **配列を扱っていますか?** 外部システムや前の手順からの配列は、文字列として渡される場合があります。 配列の扱いの詳細については、[Code アクションで配列を扱う](/l/ja/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions)を参照してください。
- Click the square icon at the top right of the code editor to display it in full screen — helpful since the default editor width is limited.
+ コードエディタ右上の四角いアイコンをクリックすると全画面表示になります — デフォルトのエディタ幅には制限があるため便利です。
-### HTTP Request
+### HTTPリクエスト
-Sends a request to an external API as part of your workflow.
+ワークフローの一部として外部APIにリクエストを送信します。
-**Configuration**:
+**設定**:
-* Enter the API endpoint URL. Using parameters from previous steps is possible.
-* Select HTTP method (GET, POST, PUT, PATCH, DELETE)
-* Add required headers and values
-* Provide sample response for structure preview
+* APIエンドポイントURLを入力. 前の手順のパラメーターを使用できます。
+* HTTPメソッドを選択(GET, POST, PUT, PATCH, DELETE)
+* 必要なヘッダと値を追加
+* 構造プレビューのためにサンプルレスポンスを提供
-## AI Actions
+## AI アクション
-### AI Agent - Coming Soon
+### AI エージェント - 近日公開
-Runs an AI agent within your workflow to perform intelligent tasks.
+ワークフロー内でAIエージェントを実行し、インテリジェントなタスクを実行します。
-**Configuration**:
+**設定**:
-* **Agent**: Select an existing AI agent or use the default agent
-* **Prompt**: Write the instruction for the AI agent
-* Reference variables from previous steps in the prompt
+* **エージェント**:既存のAIエージェントを選択するか、デフォルトのエージェントを使用します
+* **プロンプト**:AIエージェントへの指示を作成します
+* プロンプト内で前の手順の変数を参照します
-**What AI Agents can do**:
+**AI エージェントでできること**:
-* Analyze and summarize data
-* Classify or categorize records
-* Generate text content
-* Make decisions based on data
-* Interact with your CRM data using tools
+* データを分析・要約する
+* レコードを分類・カテゴリ化する
+* テキストコンテンツを生成する
+* データに基づいて意思決定する
+* ツールを使って CRM データと対話する
-**Output**: The AI agent's response is available for use in subsequent steps. If the agent has a structured output schema, the response will follow that format.
+**出力**:AIエージェントの応答は後続の手順で使用できます。 エージェントに構造化された出力スキーマがある場合、応答はその形式に従います。
- AI Agent actions consume workflow credits based on the AI model used. See [Workflow Credits](/l/ja/user-guide/workflows/capabilities/workflow-credits) for details.
+ AIエージェントのアクションは、使用するAIモデルに応じてワークフロークレジットを消費します。 詳細は[ワークフロークレジット](/l/ja/user-guide/workflows/capabilities/workflow-credits)を参照してください。
- AI agents respect role-based permissions. You can assign specific roles to agents under **Settings → Roles** to control what data they can access. See [Permissions](/l/ja/user-guide/permissions-access/capabilities/permissions) for details.
+ AIエージェントはロールベースの権限に従います。 **設定 → ロール** でエージェントに特定のロールを割り当て、アクセスできるデータを制御できます。 詳細は[権限](/l/ja/user-guide/permissions-access/capabilities/permissions)を参照してください。
diff --git a/packages/twenty-docs/l/ja/user-guide/workflows/capabilities/workflow-branches.mdx b/packages/twenty-docs/l/ja/user-guide/workflows/capabilities/workflow-branches.mdx
index 51c16f7cb0..23a595a808 100644
--- a/packages/twenty-docs/l/ja/user-guide/workflows/capabilities/workflow-branches.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/workflows/capabilities/workflow-branches.mdx
@@ -1,66 +1,66 @@
---
-title: Workflow Branches
-description: Create parallel paths and conditional logic in your workflows.
+title: ワークフローのブランチ
+description: ワークフロー内で並列パスと条件ロジックを作成します。
---
-Branches allow you to split your workflow into multiple paths that can run simultaneously or conditionally based on your data.
+ブランチを使用すると、ワークフローを複数のパスに分割でき、データに基づいて同時に、または条件付きで実行できます。
-## How Branches Work
+## ブランチの仕組み
-When you create multiple connections from a single node, each path becomes a branch. By default, **all branches execute in parallel**—they don't wait for each other.
+1つのノードから複数の接続を作成すると、各パスがブランチになります。 既定では、**すべてのブランチは並列に実行**され、互いを待ちません。
-## Creating Branches
+## ブランチの作成
-### Add a New Branch
+### 新しいブランチを追加
-1. **Right-click on the main canvas** of the workflow (not on an existing node)
-2. Click **Add node**
-3. Choose the node type for your new branch
-4. Drag an arrow from the bottom of the previous step to the top of this new action
-5. Repeat to add more branches from the same node
+1. **ワークフローのメインキャンバスを右クリック**(既存のノード上ではありません)
+2. **ノードを追加** をクリック
+3. 新しいブランチのノードタイプを選択
+4. 前のステップの下部から、この新しいアクションの上部へ矢印をドラッグします
+5. 同じノードからさらにブランチを追加するには、これを繰り返します。
- Each branch is independent. Adding a branch doesn't affect other existing paths from that node.
+ 各ブランチは独立しています。 ブランチを追加しても、そのノードからの他の既存のパスには影響しません。
-### Visual Layout
+### ビジュアルレイアウト
-Branches appear as parallel paths in the workflow editor. You can drag nodes to rearrange the visual layout without affecting execution.
+ブランチはワークフローエディター上で並列のパスとして表示されます。 実行に影響を与えることなく、ノードをドラッグしてビジュアルレイアウトを並べ替えることができます。
-## Conditional Branches
+## 条件付きブランチ
-Since all branches run by default, use **Filter** nodes to control which paths actually execute:
+既定ではすべてのブランチが実行されるため、どのパスを実際に実行するかを制御するには **Filter** ノードを使用します:
-| Branch | Filter Condition | Action |
-| ------ | --------------------- | -------------------------- |
-| A | Stage = "Won" | Send congratulations email |
-| B | Stage = "Lost" | Create follow-up task |
-| C | Stage = "Negotiation" | Notify manager |
+| ブランチ | フィルター条件 | アクション |
+| ---- | ----------- | ------------- |
+| A | ステージ = "受注" | お祝いのメールを送信 |
+| B | ステージ = "失注" | フォローアップタスクを作成 |
+| C | ステージ = "交渉" | マネージャーに通知 |
-1. Create branches from your trigger or action
-2. Add a **Filter** node as the first step of each branch
-3. Configure each filter with mutually exclusive conditions
-4. Add your actions after each filter
+1. トリガーまたはアクションからブランチを作成する
+2. 各ブランチの最初のステップとして **Filter** ノードを追加する
+3. 各 Filter ノードを相互排他的な条件で設定する
+4. 各 Filter の後にアクションを追加する
-Only the branch(es) where the filter condition is met will continue executing.
+フィルター条件を満たしたブランチだけが実行を継続します。
-## Merging Branches
+## ブランチの統合
-**Branches don't automatically merge.** Each branch runs independently until it ends. You have full flexibility in how you handle this:
+**ブランチは自動的には統合されません。** 各ブランチは終了するまで独立して実行されます。 この点の取り扱いは柔軟に設計できます:
-* **Option 1: Keep branches separate**
- Each branch handles its own follow-up actions independently. This is the simplest approach when branches don't need to converge.
+* **オプション1: ブランチを分離したままにする**
+ 各ブランチがそれぞれのフォローアップアクションを独立して処理します。 ブランチを統合する必要がない場合の最も簡単な方法です。
-* **Option 2: Merge branches manually**
- When creating your workflow, you can manually connect multiple branches to the same downstream action. Simply drag arrows from the end of each branch to a common node.
+* **オプション2: ブランチを手動で統合する**
+ ワークフローを作成する際、複数のブランチを同じ下流のアクションに手動で接続できます。 各ブランチの末端から共通のノードへ矢印をドラッグするだけです。
- While you can use a [Delay](/l/ja/user-guide/workflows/capabilities/workflow-actions#delay) node to pause execution, it's not currently configurable to wait "until another branch ends."
+ 実行を一時停止するために [Delay](/l/ja/user-guide/workflows/capabilities/workflow-actions#delay) ノードを使用できますが、現在は「別のブランチが終了するまで」待機するように設定することはできません。
-## Related
+## 関連
-* [How to Use Branches in Workflows](/l/ja/user-guide/workflows/capabilities/use-branches-in-workflows) - Step-by-step guide
-* [Workflow Actions](/l/ja/user-guide/workflows/capabilities/workflow-actions) - Available actions including Filter
+* [ワークフローでブランチを使用する方法](/l/ja/user-guide/workflows/capabilities/use-branches-in-workflows) - ステップバイステップのガイド
+* [ワークフローアクション](/l/ja/user-guide/workflows/capabilities/workflow-actions) - Filter を含む利用可能なアクション
diff --git a/packages/twenty-docs/l/ja/user-guide/workflows/capabilities/workflow-credits.mdx b/packages/twenty-docs/l/ja/user-guide/workflows/capabilities/workflow-credits.mdx
index 437aee5822..c5e2e1a1a3 100644
--- a/packages/twenty-docs/l/ja/user-guide/workflows/capabilities/workflow-credits.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/workflows/capabilities/workflow-credits.mdx
@@ -1,76 +1,76 @@
---
-title: Workflow Credits
-description: Understand workflow credit consumption and management.
+title: ワークフロークレジット
+description: ワークフロークレジットの消費と管理を理解する。
---
-Workflow credits power your automations in Twenty. Understanding how they work helps you optimize costs and manage your automation budget effectively.
+ワークフロークレジットは、Twentyでの自動化をサポートします。 その仕組みを理解することで、コストを最適化し、自動化予算を効果的に管理できます。 その仕組みを理解することで、コストを最適化し、自動化予算を効果的に管理できます。
-## Credit Allocation
+## クレジット配分
-Workflow credits are allocated based on your billing cycle, not your plan tier:
+ワークフロークレジットは、プランの種類ではなく、請求サイクルに基づいて割り当てられます:
-| Billing Cycle | Credits |
-| ------------------------ | --------------------------- |
-| **Monthly subscription** | 5 million credits per month |
-| **Yearly subscription** | 50 million credits per year |
+| 請求サイクル | クレジット |
+| --------------- | --------------- |
+| **月額サブスクリプション** | 月あたり500万クレジット |
+| **年額サブスクリプション** | 年あたり5,000万クレジット |
- 5 million monthly credits are generous for standard automations. Most teams won't exceed this limit with typical workflow usage. Additional credits are primarily needed for advanced Code actions and AI-powered workflows.
+ 標準的な自動化には、月間500万クレジットで十分に余裕があります。 一般的なワークフローの利用で、この上限を超えるチームはほとんどありません。 追加のクレジットが主に必要になるのは、高度な Code アクションや AI 搭載ワークフローの場合です。
-## How Credit Consumption Works
+## クレジット消費の仕組み
-Credits are consumed when workflows execute, not when you create them. Each workflow action consumes credits based on its complexity:
+ワークフローは実行時にクレジットを消費し、それを作成する際には消費されません。 各ワークフローアクションはその複雑さに応じてクレジットを消費します。 各ワークフローアクションはその複雑さに応じてクレジットを消費します。 各ワークフローアクションはその複雑さに応じてクレジットを消費します。
-### Credit Consumption by Action Type
+### アクションタイプ別クレジット消費
-* **Basic internal operations**: Very low credit consumption
- * Search Records
- * Create Record
- * Update Record
- * Delete Record
- * Form actions
+* **基本的な内部操作**: 非常に低いクレジット消費
+ * レコードを検索
+ * レコードを作成
+ * レコードを更新
+ * レコードを削除
+ * フォームアクション
-* **Complex operations**: Higher credit consumption
- * Code actions (JavaScript execution)
- * HTTP Requests to external services
+* **複雑な操作**: 高いクレジット消費
+ * コードアクション (JavaScript実行)
+ * 外部サービスへの HTTP リクエスト
-* **AI features**: Higher credit consumption
- * AI Agent actions consume credits based on the AI model used
- * More complex prompts and longer outputs use more credits
+* **AI 機能**: 高いクレジット消費
+ * AI エージェントのアクションは、使用する AI モデルに応じてクレジットを消費します
+ * より複雑なプロンプトや長い出力ほど、より多くのクレジットを使用します
-* **Delay actions**: Minimal credit consumption
- * The Delay node consumes **1 credit** when it executes
- * **No credits are consumed** during the wait period
- * A 5-minute delay costs the same as a 5-day delay
+* **Delay アクション**: クレジット消費は最小限
+ * Delay ノードは実行時に**1クレジット**を消費します
+ * **待機期間中はクレジットは消費されません**
+ * 5分の遅延も5日の遅延もコストは同じです
-### Real-Time Deduction
+### リアルタイム控除
-Credits are deducted in real-time as workflows execute. This means:
+ワークフローが実行されると、クレジットはリアルタイムで控除されます。 つまり: つまり: つまり:
-* Draft workflows don't consume credits
-* Only active, running workflows use your credit allocation
-* Failed workflows still consume credits for completed steps
+* ドラフトのワークフローはクレジットを消費しません
+* アクティブで実行中のワークフローだけがクレジット配分を使用します
+* 失敗したワークフローでも、完了したステップに対してはクレジットが消費されます
-## Managing Credits
+## クレジットの管理
-### Check Credit Usage
+### クレジット使用の確認
-1. Go to **Settings → Billing**
-2. View your current credit consumption and remaining balance
-3. Monitor usage patterns to optimize your workflows
+1. **設定 → 請求** へ移動
+2. 現在のクレジット消費と残高を確認
+3. 消費パターンを監視してワークフローを最適化
-### Purchasing Additional Credits
+### 追加クレジットの購入
-If you need more credits beyond your plan allocation:
+プランのクレジット割り当てを超える場合は:
-1. Go to **Settings → Billing**
-2. Click on the option to purchase additional credits. Packages of different sizes are available.
-3. Credits are added to your current balance
+1. **設定 → 請求** へ移動
+2. 追加クレジットを購入するオプションをクリックします。 さまざまなサイズのパッケージが用意されています。 さまざまなサイズのパッケージが用意されています。
+3. クレジットは現在の残高に追加されます
-## Best Practices
+## ベストプラクティス
-* **Batch Processing**: Use bulk operations and Iterator actions efficiently
-* **Manual Trigger Optimization**: For manual triggers, choose `Bulk` availability to process multiple records in a single workflow run
-* Optimize Code actions for efficiency
-* Batch operations to reduce individual action calls
+* **バッチ処理**: 効率的に一括操作やイテレータアクションを利用
+* **手動トリガーの最適化**: 手動トリガーでは、単一のワークフロー実行で複数のレコードを処理するために、`Bulk` の可用性を選択してください
+* 効率性のためにコードアクションを最適化
+* 個々のアクションコールを減らすためのバッチ操作
diff --git a/packages/twenty-docs/l/ja/user-guide/workflows/capabilities/workflow-runs.mdx b/packages/twenty-docs/l/ja/user-guide/workflows/capabilities/workflow-runs.mdx
index a30f5108b3..b33d6997c4 100644
--- a/packages/twenty-docs/l/ja/user-guide/workflows/capabilities/workflow-runs.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/workflows/capabilities/workflow-runs.mdx
@@ -1,92 +1,92 @@
---
-title: Workflow Runs
-description: Monitor and manage workflow executions.
+title: ワークフロー実行
+description: ワークフローの実行を監視および管理します。
image: /images/user-guide/workflows/workflow.png
---
-## About Runs
+## 実行について
-A **Run** is a record of a workflow execution. Every time a workflow is triggered—whether by a record event, schedule, manual action, or webhook—a new run is created.
+**実行**は、ワークフロー実行の記録です。 レコードイベント、スケジュール、手動操作、またはWebhookなどでワークフローがトリガーされるたびに、新しい実行が作成されます。
-## Viewing Runs
+## 実行の表示
-### From the Workflow Editor
+### ワークフローエディタから
-1. Open the workflow you want to monitor
-2. Click the **Runs** panel on the right side
-3. See a list of recent runs with their status
+1. 監視したいワークフローを開きます
+2. 右側の**実行**パネルをクリックします
+3. 最近の実行とそのステータスの一覧を確認します
-### From the Workflow Runs View
+### ワークフロー実行ビューから
-1. Go to **Workflow Runs** in the sidebar
-2. View runs across all workflows
-3. Filter by status, workflow, or date
+1. サイドバーの**ワークフロー実行**に移動します
+2. すべてのワークフローにわたる実行を表示します
+3. ステータス、ワークフロー、日付でフィルタリングします
-## Run Statuses
+## 実行ステータス
-| Status | Description |
-| ------------- | ------------------------------------------------------------------------ |
-| **Running** | Workflow is currently executing |
-| **Completed** | Workflow finished successfully |
-| **Failed** | Workflow encountered an error and stopped |
-| **Waiting** | Workflow is paused (e.g., waiting for a Delay action or Form submission) |
+| ステータス | 説明 |
+| ------- | ------------------------------------------ |
+| **実行中** | ワークフローが現在実行中です |
+| **完了** | ワークフローが正常に完了しました |
+| **失敗** | ワークフローでエラーが発生し、停止しました |
+| **待機中** | ワークフローが一時停止しています(例:遅延アクションの待機中、フォーム送信の待機中) |
-## Run Details
+## 実行の詳細
-Click on any run to see:
+任意の実行をクリックすると、次を確認できます:
-* **Status**: Current state of the run
-* **Started at**: When the run began
-* **Duration**: How long the run took
-* **Trigger data**: The input that started the workflow
-* **Step outputs**: Data returned by each step
-* **Error messages**: If the run failed, what went wrong
+* **ステータス**:実行の現在の状態
+* **開始時刻**:実行が開始された時刻
+* **所要時間**:実行に要した時間
+* **トリガーデータ**:ワークフローを開始した入力データ
+* **ステップの出力**:各ステップから返されたデータ
+* **エラーメッセージ**:実行が失敗した場合に、何が問題だったか
-## Step-by-Step Execution
+## ステップごとの実行
-Each run shows the progression through your workflow:
+各実行では、ワークフロー内での進行状況を表示します:
-1. See which steps completed successfully
-2. Identify where failures occurred
-3. View the data passed between steps
-4. Debug issues by examining step inputs and outputs
+1. どのステップが正常に完了したかを確認します
+2. 失敗が発生した箇所を特定します
+3. ステップ間で受け渡されたデータを表示します
+4. ステップの入力と出力を確認して問題をデバッグします
-## Error Handling
+## エラーハンドリング
-When a run fails:
+実行が失敗したとき:
-1. Open the failed run
-2. Find the step that caused the failure
-3. Check the error message for details
-4. Common issues:
- * Missing required fields
- * Invalid data format
- * External API errors
- * Permission issues
+1. 失敗した実行を開きます
+2. 失敗の原因となったステップを特定します
+3. エラーメッセージで詳細を確認します
+4. 一般的な問題:
+ * 必須フィールドの不足
+ * 無効なデータ形式
+ * 外部APIのエラー
+ * 権限に関する問題
-## Re-running Workflows
+## ワークフローの再実行
-If a run fails, you can:
+実行が失敗した場合は、次のことができます:
-* Fix the underlying issue and wait for the next trigger
-* For manual workflows, trigger again with the same or updated data
-* Review the workflow logic to prevent future failures
+* 根本原因を修正し、次回のトリガーを待ちます
+* 手動のワークフローの場合、同じデータまたは更新したデータで再度トリガーします
+* 将来の失敗を防ぐために、ワークフローのロジックを見直します
-## Performance Tips
+## パフォーマンスのヒント
-### Managing Run History
+### 実行履歴の管理
-* Runs are retained for historical reference
-* Very old runs may be archived automatically
-* Export run data if you need to keep records
+* 実行は履歴参照のために保持されます
+* 非常に古い実行は自動的にアーカイブされる場合があります
+* 記録を保持する必要がある場合は、実行データをエクスポートします
-### Monitoring Best Practices
+### 監視のベストプラクティス
-* Check runs regularly after activating new workflows
-* Review failed runs to identify patterns
+* 新しいワークフローを有効化した後は、定期的に実行を確認します
+* 失敗した実行を見直し、パターンを特定します
-## Related
+## 関連
-* [Workflow Triggers](/l/ja/user-guide/workflows/capabilities/workflow-triggers)
-* [Workflow Actions](/l/ja/user-guide/workflows/capabilities/workflow-actions)
-* [Workflow Troubleshooting](/l/ja/user-guide/workflows/how-tos/need-more-help/workflow-troubleshooting)
+* [ワークフロートリガー](/l/ja/user-guide/workflows/capabilities/workflow-triggers)
+* [ワークフローアクション](/l/ja/user-guide/workflows/capabilities/workflow-actions)
+* [ワークフローのトラブルシューティング](/l/ja/user-guide/workflows/how-tos/need-more-help/workflow-troubleshooting)
diff --git a/packages/twenty-docs/l/ja/user-guide/workflows/capabilities/workflow-triggers.mdx b/packages/twenty-docs/l/ja/user-guide/workflows/capabilities/workflow-triggers.mdx
index dfa39d0f03..c939a88ed7 100644
--- a/packages/twenty-docs/l/ja/user-guide/workflows/capabilities/workflow-triggers.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/workflows/capabilities/workflow-triggers.mdx
@@ -1,136 +1,135 @@
---
-title: Workflow Triggers
-description: Learn about the different triggers that start your workflows.
+title: ワークフロートリガー
+description: ワークフローを開始するさまざまなトリガーについて学びましょう。
---
-## About Triggers
+## トリガーについて
-Workflows always start with a single trigger that defines when the automation should run.
+ワークフローは、常に自動化をいつ実行するかを定義する単一のトリガーで開始されます。
- **Advanced objects are supported!** Beyond standard CRM objects (People, Companies, Opportunities), you can also trigger workflows and perform actions on:
+ **高度なオブジェクトにも対応しています!** 標準の CRM オブジェクト(People、Companies、Opportunities)に加えて、次のオブジェクトでもワークフローをトリガーし、アクションを実行できます:
- * Workspace Members
- * Calendar Events
- * Messages (Emails)
- * Tasks, Notes, and many other system objects
+ * ワークスペースメンバー
+ * カレンダーイベント
+ * メッセージ(メール)
+ * タスク、ノート、その他多数のシステムオブジェクト
- This opens up powerful automations like notifying team members when calendar events are created, or processing incoming emails automatically.
+ これにより、カレンダーイベントが作成された際にチームメンバーに通知したり、受信メールを自動処理したりするなど、強力な自動化が可能になります。
-## Record is Created
+## レコードの作成
-Starts the workflow when a new record is created in a selected object (People, Companies, Opportunities, or any custom object).
+新しいレコードが選択されたオブジェクト(人物、会社、機会、または任意のカスタムオブジェクト)で作成されるときに、ワークフローを開始します。
-**Configuration**: Select the object type to monitor for new records.
+**設定**:新しいレコードを監視するオブジェクトタイプを選択します。
- * This trigger is great for records created by csv, mailbox and calendar synchronization, API.
- * **It is not recommended for records created manually**: with this trigger, workflows start as soon as the record is created. Since Twenty UI offers auto-save on the fly (there is not an edit mode and then a validation to save records), the workflow will be triggered before the user inputs all the fields.
- To trigger this workflow on records created manually, it is recommended to use the trigger `Record is created or updated` instead.
+ * このトリガーは、CSV、メールボックスおよびカレンダーの同期、API によって作成されたレコードに最適です。
+ * **手動で作成されたレコードには推奨されません**: このトリガーでは、レコードが作成されるとすぐにワークフローが開始します。 Twenty UI はその場での自動保存を提供しているため(編集モードがあって検証して保存する方式ではありません)、ユーザーがすべてのフィールドを入力する前にワークフローがトリガーされます。
+ 手動で作成されたレコードでこのワークフローをトリガーするには、代わりにトリガー `Record is created or updated` を使用することを推奨します。
-## Record is Updated
+## レコードの更新
-Starts the workflow when changes are made to an existing record.
+既存のレコードに変更が加えられたときにワークフローを開始します。
-**Configuration**:
+**設定**:
-* Select the object type
-* Optionally specify which fields to monitor for changes
+* オブジェクトタイプを選択
+* 変更を監視するフィールドをオプションで指定
-## Record is Updated or Created
+## レコードの更新または作成
-Starts the workflow when a record is either created or updated in a selected object.
+選択されたオブジェクトでレコードが作成または更新されたときに、ワークフローを開始します。
-**Why This Matters**: This trigger is particularly helpful because records created via different methods behave differently:
+**なぜ重要か**:このトリガーが特に役立つのは、さまざまな方法で作成されたレコードが異なる動作をするためです。
-* **API/CSV imports**: Records are created with all fields populated immediately
-* **Manual creation**: Records are created first, then fields are added in subsequent updates
+* **API/CSV インポート**: レコードはすべてのフィールドが即座に入力されて作成されます。
+* **手動作成**: レコードは最初に作成され、その後の更新でフィールドが追加されます。
-**Configuration**:
+**設定**:
-* Select the object type to monitor
-* Optionally specify which fields to monitor for changes
-* The workflow will trigger both on initial creation and any subsequent updates
+* 監視するオブジェクトタイプを選択
+* 変更を監視するフィールドをオプションで指定
+* ワークフローは最初の作成時とその後のすべての更新時にトリガーされます。
-## Record is Deleted
+## レコードの削除
-Starts the workflow when a record is removed from an object.
+オブジェクトからレコードが削除されたときにワークフローを開始します。
-**Configuration**: Select the object type to monitor for deletions.
+**設定**:削除を監視するオブジェクトタイプを選択します。
-## Manual Trigger
+## 手動トリガー
-Starts the workflow when triggered by a user action. This trigger can be accessed through the `Cmd+K` menu or via a custom button that will be displayed in the top navbar after selecting record(s).
+ユーザーのアクションによってトリガーされたときにワークフローを開始します。 このトリガーには、`Cmd+K` メニューから、またはレコードを選択した後にトップナビバーに表示されるカスタムボタン経由でアクセスできます。
-**Availability Configuration**:
-Choose how the workflow should handle record selection:
+**可用性設定**: レコードの選択をワークフローでどのように扱うか選択します。
-* **Global**: No record is required to trigger this workflow. The workflow is triggered from the command menu `Cmd + K` anywhere (from any object) and does not use record(s) as input.
+* **グローバル**: このワークフローをトリガーするためにレコードは必要ありません。 ワークフローは、どこからでも(任意のオブジェクトから)コマンドメニュー `Cmd + K` でトリガーされ、レコードを入力として使用しません。
-* **Single**: The selected record(s) will be passed to your workflow. This is configured for a given object. Several records can be selected before triggering the workflow. The workflow will run from beginning to end as many times as there are records selected.
+* **シングル**:選択したレコードがワークフローに渡されます。 これは特定のオブジェクトに対して設定されています。 ワークフローを起動する前に複数のレコードを選択できます。 選択されたレコードの数だけ、ワークフローは最初から最後まで実行されます。
- **Soft limit: 100 runs/minute**. Beyond this, workflows remain in "Not Started" status and are processed gradually—either by a background job or when another workflow enters the queue. This means you can select more than 100 records with a Single trigger; execution will just be slower.
+ **ソフト上限: 100回/分**。 これを超えると、ワークフローは "Not Started" ステータスのままになり、バックグラウンドジョブによって、または別のワークフローがキューに入ったときに段階的に処理されます。 つまり、単一のトリガーで100件を超えるレコードを選択できますが、実行は遅くなります。
-* **Bulk**: The selected record(s) will be passed to your workflow. This is configured for a given object. Several records can be selected before triggering the workflow. The workflow will run once, providing the entire list of records as input. This means the workflow needs to contain an [Iterator action](/l/ja/user-guide/workflows/capabilities/workflow-actions#iterator).
+* **一括**:選択されたレコードがワークフローに渡されます。 これは特定のオブジェクトに対して設定されています。 ワークフローを起動する前に複数のレコードを選択できます。 ワークフローは一度実行され、すべてのレコードリストを入力として提供します。 つまり、このワークフローには [イテレーターアクション](/l/ja/user-guide/workflows/capabilities/workflow-actions#iterator) を含める必要があります。
- This is more advanced, and best for people who want to optimize the number of workflow runs.
+ こちらはより高度で、ワークフローの実行回数を最適化したい人に最適です。
-**Additional Configuration**:
+**追加の設定**:
-* Select the target object (for Single and Bulk availability)
-* Choose a command icon for the workflow trigger
-* Configure navbar placement (Pinned or Not Pinned)
+* 対象オブジェクトを選択(シングルと一括の可用性用)
+* ワークフロートリガーのコマンドアイコンを選択
+* ナビゲーションバープレースメントを設定(固定または未固定)
-**Access Methods**:
+**アクセス方法**:
-* `Cmd+K` menu to find and launch manual workflows
-* Custom button in the top navbar (if configured)
+* `Cmd+K` メニューで手動ワークフローを見つけて起動
+* トップナビゲーションバーのカスタムボタン(設定されている場合)
-## Time-Based Trigger: On a Schedule
+## 時間ベースのトリガー: スケジュール実行
-Starts the workflow on a recurring basis you define.
+指定された頻度でワークフローを開始します。
-**Configuration**:
+**設定**:
-* Select time unit (minutes, hours, days)
-* Enter a value or use custom cron expressions for advanced scheduling
+* 時間単位を選択(分、時間、日)
+* 高度なスケジュール設定には、値を入力するか、カスタム cron 式を使用します
- **Timezone**: Scheduled workflows run in **UTC**. When setting hours for daily schedules, convert your local time to UTC.
+ **タイムゾーン**: スケジュールされたワークフローは **UTC** で実行されます。 日次スケジュールの時間を設定する際は、ローカル時間を UTC に変換してください。
-## External Trigger: Webhook
+## 外部トリガー: Webhook
-Starts the workflow when a GET or POST request is received from an external service.
+外部サービスからのGETまたはPOSTリクエストを受信するとワークフローを開始します。
-**Configuration**:
+**設定**:
-* The workflow provides a unique webhook URL—copy this and add it to your external system as the endpoint to call.
-* For POST requests, define the expected body structure so Twenty knows what data to expect. Add here the fields you will receive that will be needed below in your workflow.
-* Configure authentication (coming soon).
+* ワークフローは一意の Webhook URL を提供します—これをコピーして、呼び出し先エンドポイントとして外部システムに追加してください。
+* POST リクエストの場合、Twenty が想定するデータを認識できるよう、期待されるボディ構造を定義してください。 ここに、ワークフロー内の後続の処理で必要となる、受信するフィールドを追加してください。
+* 認証の設定(近日対応)。
-## Choosing the Right Trigger
+## 適切なトリガーの選び方
-| Use Case | Recommended Trigger |
-| --------------------------- | ---------------------------- |
-| New leads need processing | Record is Created |
-| Data changes need sync | Record is Updated |
-| Import/manual data handling | Record is Updated or Created |
-| Cleanup after deletion | Record is Deleted |
-| User-initiated action | Launch Manually |
-| Recurring reports | On a Schedule |
-| External integration | Webhook or On a Schedule |
+| ユースケース | 推奨トリガー |
+| --------------- | ------------------- |
+| 新規リードの処理が必要 | レコードの作成 |
+| データ変更の同期が必要 | レコードの更新 |
+| インポート/手動でのデータ処理 | レコードの更新または作成 |
+| 削除後のクリーンアップ | レコードの削除 |
+| ユーザー起点のアクション | 手動で起動 |
+| 定期レポート | スケジュールで |
+| 外部統合 | Webhook またはスケジュール実行 |
diff --git a/packages/twenty-docs/l/ja/user-guide/workflows/capabilities/workflow-versions.mdx b/packages/twenty-docs/l/ja/user-guide/workflows/capabilities/workflow-versions.mdx
index 69de4f7135..b2108b95cd 100644
--- a/packages/twenty-docs/l/ja/user-guide/workflows/capabilities/workflow-versions.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/workflows/capabilities/workflow-versions.mdx
@@ -1,85 +1,85 @@
---
-title: Workflow Versions
-description: Manage workflow versions and drafts.
+title: ワークフローバージョン
+description: ワークフローのバージョンとドラフトを管理します。
image: /images/user-guide/workflows/workflow.png
---
-## About Versions
+## バージョンについて
-Every time you activate a workflow, a new version is created. This allows you to track changes over time and revert to previous configurations if needed.
+ワークフローを有効化するたびに、新しいバージョンが作成されます。 これにより、経時的な変更を追跡し、必要に応じて以前の設定に戻すことができます。
-## Version Statuses
+## バージョンの状態
-| Status | Description |
-| --------------- | -------------------------------------- |
-| **Draft** | Being edited, not yet published |
-| **Active** | Live version responding to triggers |
-| **Deactivated** | Previously active but manually stopped |
-| **Archived** | Past versions kept for history |
+| ステータス | 説明 |
+| ----------- | ------------------- |
+| **ドラフト** | 編集中、まだ公開されていない |
+| **アクティブ** | トリガーに応答する稼働中のバージョン |
+| **無効化済み** | 以前はアクティブだったが手動で停止 |
+| **アーカイブ済み** | 履歴のために保存された過去のバージョン |
-## Working with Drafts
+## ドラフトの操作
-When you edit an active workflow, your changes are saved as a **draft**. The active version continues to run while you work on updates.
+アクティブなワークフローを編集すると、変更は**ドラフト**として保存されます。 更新作業中も、アクティブなバージョンは引き続き稼働します。
-Once you're done editing, you can:
+編集が完了したら、次のいずれかを実行できます。
-* **Activate**: Publish the draft as the new active version (the previous version is archived)
-* **Discard**: Delete the draft and keep the current active version
+* **有効化**: ドラフトを新しいアクティブ版として公開します(以前のバージョンはアーカイブされます)
+* **破棄**: ドラフトを削除し、現在のアクティブ版を維持します
-## Version History
+## バージョン履歴
-### Viewing Past Versions
+### 過去のバージョンを表示
-1. Open the workflow
-2. Click the **Versions** tab
-3. See all previous versions with timestamps
+1. ワークフローを開く
+2. **バージョン** タブをクリック
+3. タイムスタンプ付きですべての過去バージョンを確認
-### Restoring a Version
+### バージョンの復元
-1. Find the version you want to restore
-2. Click **Use as draft**
-3. The version is copied to a new draft
-4. Make any necessary updates
-5. Activate when ready
+1. 復元したいバージョンを見つける
+2. 「**ドラフトとして使用**」をクリック
+3. そのバージョンが新しいドラフトにコピーされます
+4. 必要な更新を行う
+5. 準備ができたら有効化する
-## Best Practices
+## ベストプラクティス
-### Version Management
+### バージョン管理
-* Activate only when ready for production
-* Keep meaningful changes between versions
-* Document major changes in workflow names or descriptions
-* Test in draft mode before activating
+* 本番運用の準備が整ってからのみ有効化する
+* バージョン間の変更は意味のあるものに限定する
+* ワークフロー名や説明の大きな変更は記録する
+* 有効化する前にドラフトモードでテストする
-### Reverting Changes
+### 変更のロールバック
-* If a new version causes issues, restore the previous version
-* Use the version history to track what changed
-* Always test restored versions before activating
+* 新しいバージョンで問題が発生した場合は、前のバージョンを復元する
+* バージョン履歴を使用して何が変わったかを追跡する
+* 復元したバージョンは、有効化前に必ずテストする
-## Common Workflows
+## 一般的なワークフロー
-### Quick Edit
+### クイック編集
-1. Make minor changes to an active workflow
-2. Test in draft mode
-3. Activate the new version
+1. アクティブなワークフローに軽微な変更を加える
+2. ドラフトモードでテストする
+3. 新しいバージョンを有効化する
-### Major Revision
+### 大幅な修正
-1. Use the previous version as a starting point
-2. Make significant changes in draft
-3. Thoroughly test all scenarios
-4. Activate when confident
+1. 前のバージョンを出発点として使用する
+2. ドラフトで大きな変更を加える
+3. あらゆるシナリオを徹底的にテストする
+4. 確信が持てたら有効化する
-### Rollback
+### ロールバック
-1. Identify the issue with the current version
-2. Find the last working version in history
-3. Click **Use as draft**
-4. Activate to restore the old behavior
+1. 現在のバージョンの問題を特定する
+2. 履歴から最後に正常に動作していたバージョンを見つける
+3. 「**ドラフトとして使用**」をクリック
+4. 有効化して以前の挙動を復元する
-## Related
+## 関連項目
-* [Getting Started with Workflows](/l/ja/user-guide/workflows/overview)
-* [Workflow Runs](/l/ja/user-guide/workflows/capabilities/workflow-runs)
+* [ワークフロー入門](/l/ja/user-guide/workflows/overview)
+* [ワークフローの実行](/l/ja/user-guide/workflows/capabilities/workflow-runs)
diff --git a/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions.mdx b/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions.mdx
index bbc096202f..d09dcdaaaf 100644
--- a/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions.mdx
@@ -1,24 +1,24 @@
---
-title: Handle Arrays in Code Actions
-description: Learn how to properly handle array inputs in workflow Code actions.
+title: Code アクションで配列を扱う
+description: ワークフローの Code アクションで配列入力を適切に扱う方法を学びましょう。
---
-When working with arrays in Code actions, you may encounter two common challenges:
+Code アクションで配列を扱う際、次の2つの一般的な課題に直面することがあります:
-1. **Arrays passed as strings** — data from external systems or previous steps arrives as a string instead of an actual array
-2. **Can't select individual items** — you can only select the entire array, not specific fields within it
+1. **文字列として渡される配列** — 外部システムや前のステップからのデータが、本来の配列ではなく文字列として届く
+2. **個々の項目を選べない** — 配列全体しか選択できず、その中の特定フィールドを選べない
-Both can be solved with a Code node.
+どちらも Code ノードで解決できます。
-## Parsing Arrays from Strings
+## 文字列から配列をパースする
-Arrays are often passed between workflow steps as strings or JSON rather than native arrays. This happens when:
+配列は、ネイティブな配列ではなく、文字列や JSON としてワークフローの各ステップ間で受け渡されることがよくあります。 これは次のような場合に発生します:
-* Receiving data from external APIs via HTTP Request
-* Processing webhook payloads
-* Passing data between workflow steps
+* HTTP Request で外部 API からデータを受け取る場合
+* Webhook ペイロードを処理する場合
+* ワークフローのステップ間でデータを受け渡す場合
-**Solution**: Add this pattern at the start of your Code action:
+**解決策**: Code アクションの先頭に次のパターンを追加します:
```javascript
export const main = async (params: {
@@ -39,13 +39,13 @@ export const main = async (params: {
};
```
-The key line `typeof users === "string" ? JSON.parse(users) : users` checks if the input is a string, parses it if needed, or uses it directly if it's already an array.
+重要な行は `typeof users === \"string\" ? JSON.parse(users) : users` は、入力が文字列かどうかを判定し、必要であればパースし、すでに配列であればそのまま使用します。
-## Extracting Individual Fields from Arrays
+## 配列から個別のフィールドを取り出す
-A webhook might return an array like `answers: [...]`, but in subsequent workflow steps you can only select the **entire array** — not individual items within it.
+Webhook が `answers: [...]` のような配列を返すことがありますが、その後のワークフローのステップでは、**配列全体** — その中の個別の項目は選択できません。
-**Solution**: Add a Code node to extract specific fields and return them as a structured object:
+**解決策**: 特定のフィールドを抽出して構造化オブジェクトとして返す Code ノードを追加します:
```javascript
export const main = async (params: {
@@ -71,12 +71,12 @@ export const main = async (params: {
};
```
-The Code node returns a structured object instead of an array. In subsequent steps, you can now select individual fields like `answer.firstname` and `answer.name` from the variable picker.
+この Code ノードは、配列ではなく構造化オブジェクトを返します。 以降のステップでは、変数ピッカーから `answer.firstname` や `answer.name` のような個別フィールドを選択できるようになります。
- We're actively working on making array handling easier in future updates.
+ 将来のアップデートで配列の扱いをより簡単にできるよう、積極的に改善を進めています。
- Click the square icon at the top right of the code editor to display it in full screen — helpful since the default editor width is limited.
+ コードエディタ右上の四角いアイコンをクリックすると全画面表示になります — デフォルトのエディタ幅には制限があるため便利です。
diff --git a/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/connect-to-other-tools/bring-product-data-in-twenty.mdx b/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/connect-to-other-tools/bring-product-data-in-twenty.mdx
index 75efb555e5..126608971b 100644
--- a/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/connect-to-other-tools/bring-product-data-in-twenty.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/connect-to-other-tools/bring-product-data-in-twenty.mdx
@@ -1,31 +1,31 @@
---
-title: Bring Product Data into Twenty
-description: Sync product catalog data from a data warehouse into your CRM on a schedule.
+title: 製品データを Twenty に取り込む
+description: データウェアハウスの製品カタログデータをスケジュールに基づいてCRMに同期します。
---
-Use this pattern to keep Twenty in sync with product data from your data warehouse (e.g., Snowflake, BigQuery, PostgreSQL).
+このパターンを使用して、データウェアハウス(例: Snowflake、BigQuery、PostgreSQL)の製品データとTwentyの同期を維持します。
-## Workflow Structure
+## ワークフローの構成
-1. **Trigger**: On a Schedule
-2. **Code**: Query your data warehouse
-3. **Code** (optional): Format data as array
-4. **Iterator**: Loop through each product
-5. **Upsert Record**: Create or update in Twenty
+1. **トリガー**: スケジュール実行
+2. **Code**: データウェアハウスをクエリする
+3. **Code**(任意):データを配列として整形
+4. **Iterator**: 各製品をループ処理する
+5. **Upsert Record**: Twentyで作成または更新
-## Step 1: Schedule the Trigger
+## ステップ 1: トリガーをスケジュールする
-Set the workflow to run at a frequency matching your data freshness needs:
+データの鮮度要件に合わせた頻度でワークフローを実行するよう設定します:
-* Every 5 minutes for near real-time sync
-* Every hour for less critical data
-* Daily for batch updates
+* ほぼリアルタイム同期用に5分ごと
+* 重要度の低いデータには1時間ごと
+* バッチ更新には毎日
-## Step 2: Query Your Data Warehouse
+## ステップ 2: データウェアハウスをクエリする
-Add a **Code** action to fetch recent data:
+直近のデータを取得するために「**Code**」アクションを追加します:
```javascript
export const main = async () => {
@@ -54,14 +54,14 @@ export const main = async () => {
```
- Filter by `updated_at >= last X minutes` to retrieve only recently changed records. This keeps the sync efficient.
+ `updated_at >= last X minutes` でフィルタリングして、最近変更されたレコードのみを取得します。 これにより同期が効率的になります。
-## Step 3: Format Data (Optional)
+## ステップ 3: データを整形(任意)
-If your warehouse returns data in a format that needs transformation, add another **Code** action. Common transformations include type conversions, field renaming, and data cleanup.
+ウェアハウスが変換を要する形式でデータを返す場合は、別の「**Code**」アクションを追加します。 一般的な変換には、型変換、フィールド名の変更、データのクリーンアップなどがあります。
-### Example: User Data with Boolean and Status Fields
+### 例: 真偽値およびステータスフィールドを含むユーザーデータ
```javascript
export const main = async (params: {
@@ -86,7 +86,7 @@ export const main = async (params: {
};
```
-### Example: Product Data with Type Conversions
+### 例: 型変換を含む製品データ
```javascript
export const main = async (params: { products: any }) => {
@@ -107,7 +107,7 @@ export const main = async (params: { products: any }) => {
};
```
-### Example: Date and Currency Formatting
+### 例: 日付および通貨の整形
```javascript
export const main = async (params: { deals: any }) => {
@@ -131,52 +131,52 @@ export const main = async (params: { deals: any }) => {
};
```
-### Common Transformations
+### 一般的な変換
-| Source Format | Target Format | Code |
+| ソース形式 | ターゲット形式 | コード |
| -------------------- | ---------------- | ---------------------------------------- |
| `"true"` / `"false"` | `true` / `false` | `v === true \|\| v === "true"` |
| `"123.45"` | `123.45` | `parseFloat(value)` |
| `"active"` | `"ACTIVE"` | `value.toUpperCase()` |
-| `1704067200` (Unix) | ISO date | `new Date(v * 1000).toISOString()` |
+| `1704067200` (Unix) | ISO 日付 | `new Date(v * 1000).toISOString()` |
| `"$1,234.56"` | `1234.56` | `parseFloat(v.replace(/[^0-9.-]/g, ""))` |
| `null` / `undefined` | `""` | `value \|\| ""` |
-## Step 4: Iterate Through Products
+## ステップ 4: 製品をループ処理する
-Add an **Iterator** action:
+「**Iterator**」アクションを追加します:
-* Input: `{{code.products}}`
+* 入力: `{{code.products}}`
-This loops through each product in the array.
+配列内の各製品をループ処理します。
-## Step 5: Upsert Each Record
+## ステップ 5: 各レコードをアップサートする
-Inside the iterator, add an **Upsert Record** action:
+Iterator 内で「**Upsert Record**」アクションを追加します:
-| Setting | Value |
-| ------------ | -------------------------------------- |
-| **Object** | Your custom Product object |
-| **Match by** | External ID or SKU (unique identifier) |
-| **Name** | `{{iterator.item.name}}` |
-| **SKU** | `{{iterator.item.sku}}` |
-| **Price** | `{{iterator.item.price}}` |
+| 設定 | 値 |
+| ---------- | ------------------------- |
+| **オブジェクト** | カスタムの Product オブジェクト |
+| **一致条件** | 外部IDまたはSKU(一意の識別子) |
+| **名前** | `{{iterator.item.name}}` |
+| **SKU** | `{{iterator.item.sku}}` |
+| **価格** | `{{iterator.item.price}}` |
- Use **Upsert** (update or create) instead of building separate branches for create vs. update. It's faster to build and easier to debug.
+ 作成と更新で分岐を作る代わりに、**Upsert**(更新または作成)を使用します。 その方が構築が速く、デバッグも容易です。
-## Example Use Cases
+## ユースケース例
-| Source | Data |
-| ----------------------- | ----------------------------------- |
-| **ERP system** | Product catalog, pricing, inventory |
-| **E-commerce platform** | Orders, customers, product updates |
-| **Data warehouse** | Aggregated metrics, enriched data |
-| **Inventory system** | Stock levels, reorder alerts |
+| ソース | データ |
+| ----------------- | ------------------- |
+| **ERP システム** | 製品カタログ、価格設定、在庫 |
+| **Eコマースプラットフォーム** | 受注、顧客、製品更新 |
+| **データウェアハウス** | 集計メトリクス、エンリッチされたデータ |
+| **在庫管理システム** | 在庫水準、再発注アラート |
-## Related
+## 関連
-* [Workflow Triggers](/l/ja/user-guide/workflows/capabilities/workflow-triggers)
-* [Workflow Actions](/l/ja/user-guide/workflows/capabilities/workflow-actions)
-* [Handle Arrays in Code Actions](/l/ja/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions)
+* [ワークフローのトリガー](/l/ja/user-guide/workflows/capabilities/workflow-triggers)
+* [ワークフローのアクション](/l/ja/user-guide/workflows/capabilities/workflow-actions)
+* [Code アクションで配列を扱う](/l/ja/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions)
diff --git a/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/connect-to-other-tools/bring-typeform-submissions-in-twenty.mdx b/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/connect-to-other-tools/bring-typeform-submissions-in-twenty.mdx
index 2ec7f86b93..12072cb8aa 100644
--- a/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/connect-to-other-tools/bring-typeform-submissions-in-twenty.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/connect-to-other-tools/bring-typeform-submissions-in-twenty.mdx
@@ -1,27 +1,27 @@
---
-title: Bring Typeform Submissions into Twenty
-description: Handle Typeform's webhook payload to create leads from form submissions.
+title: Typeform の回答を Twenty に取り込む
+description: Typeform の webhook ペイロードを処理して、フォームの回答からリードを作成します。
---
-For standard webhook setup, see [Set Up a Webhook Trigger](/l/ja/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger). This article covers the specific handling required for Typeform's custom payload structure.
+標準的な webhook 設定については、[Webhook トリガーを設定](/l/ja/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger)を参照してください。 本記事では、Typeform のカスタムペイロード構造に必要となる特有の処理について説明します。
-### Step 1: Create a Webhook Workflow
+### ステップ 1: Webhook ワークフローを作成
-1. Go to **Settings → Workflows**
-2. Click **+ New Workflow**
-3. Select **Webhook** as the trigger
-4. Copy the webhook URL
+1. 「**Settings → Workflows**」に移動
+2. 「**+ New Workflow**」をクリック
+3. トリガーとして「**Webhook**」を選択します
+4. webhook URL をコピーします
-### Step 2: Configure Typeform
+### ステップ 2: Typeform を設定
-1. In Typeform, open your form
-2. Go to **Connect → Webhooks**
-3. Paste your Twenty webhook URL
-4. Save
+1. Typeform でフォームを開く
+2. 「**Connect → Webhooks**」に移動
+3. Twenty の webhook URL を貼り付けます
+4. 保存
-### Step 3: Understand the Typeform Payload
+### ステップ 3: Typeform のペイロードを理解する
-Typeform sends a nested JSON structure. Here's a simplified example:
+Typeform は入れ子の JSON 構造を送信します。 簡略化した例はこちら:
```json
{
@@ -60,15 +60,15 @@ Typeform sends a nested JSON structure. Here's a simplified example:
}
```
-Key things to note:
+重要なポイント:
-* Form data is nested under `form_response`
-* **Answers are returned as an array**, not as named fields
-* Each answer includes the field type and title for reference
+* フォームデータは `form_response` の下に入れ子になっています
+* **回答は配列として返され**、名前付きフィールドではありません
+* 各回答には参照用にフィールドの種類とタイトルが含まれます
-### Step 4: Extract Fields from the Answers Array
+### ステップ 4: answers 配列からフィールドを抽出する
-Since `answers` is an array, you can only select the entire array in subsequent steps — not individual fields. Add a **Code** action to extract the fields you need:
+`answers` は配列のため、後続ステップでは配列全体しか選択できず、個別のフィールドは選択できません。 必要なフィールドを抽出するために「**Code**」アクションを追加します:
```javascript
export const main = async (params: {
@@ -100,31 +100,31 @@ export const main = async (params: {
};
```
-Now in subsequent steps, you can select `contact.firstName`, `contact.email`, etc. from the variable picker.
+以降のステップでは、変数ピッカーから `contact.firstName` や `contact.email` のような個別フィールドを選択できるようになります。
- For more details on handling arrays in Code actions, see [Handle Arrays in Code Actions](/l/ja/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions).
+ 配列の扱いの詳細については、[Code アクションで配列を扱う](/l/ja/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions)を参照してください。
-### Step 5: Create the Record
+### ステップ 5: レコードを作成
-Add a **Create Record** action:
+「**Create Record**」アクションを追加します:
-| Field | Value |
-| -------------- | ---------------------------------------------------- |
-| **Object** | People |
-| **First Name** | `{{code.contact.firstName}}` |
-| **Last Name** | `{{code.contact.lastName}}` |
-| **Email** | `{{code.contact.email}}` |
-| **Company** | Search or create based on `{{code.contact.company}}` |
+| フィールド | 値 |
+| ---------- | --------------------------------------- |
+| **オブジェクト** | 人物 |
+| **名** | `{{code.contact.firstName}}` |
+| **姓** | `{{code.contact.lastName}}` |
+| **メール** | `{{code.contact.email}}` |
+| **会社** | `{{code.contact.company}}` に基づいて検索または作成 |
-### Step 6: Test and Activate
+### ステップ 6: テストして有効化
-1. Submit a test response in Typeform
-2. Check the workflow run to verify data was captured
-3. Activate the workflow
+1. Typeform でテスト回答を送信
+2. ワークフローの実行を確認し、データが取り込まれたことを検証
+3. ワークフローを有効化します
-## Related
+## 関連
-* [Set Up a Webhook Trigger](/l/ja/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger)
-* [Handle Arrays in Code Actions](/l/ja/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions)
+* [Webhook トリガーを設定](/l/ja/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger)
+* [Code アクションで配列を扱う](/l/ja/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions)
diff --git a/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/connect-to-other-tools/generate-pdf-from-twenty.mdx b/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/connect-to-other-tools/generate-pdf-from-twenty.mdx
new file mode 100644
index 0000000000..260a357006
--- /dev/null
+++ b/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/connect-to-other-tools/generate-pdf-from-twenty.mdx
@@ -0,0 +1,228 @@
+---
+title: Twenty から PDF を生成する
+description: PDF(見積書など)を生成してレコードに添付するワークフローを作成します。
+---
+
+Twenty で PDF を自動生成または取得し、レコードに添付します。 これは、会社、商談、またはその他のオブジェクトに関連付けられた見積書、請求書、レポートを作成する用途で一般的に使用されます。
+
+## 概要
+
+このワークフローでは **手動トリガー** を使用し、選択した任意のレコードに対してオンデマンドで PDF を生成できるようにします。 次を **サーバーレス関数** が処理します:
+
+1. URL(PDF 生成サービスから)から PDF をダウンロードする
+2. ファイルを Twenty にアップロードする
+3. レコードに関連付けられた添付ファイルを作成する
+
+## 前提条件
+
+ワークフローを設定する前に:
+
+1. **API キーを作成**: **Settings → APIs** に移動して新しい API キーを作成します。 サーバーレス関数でこのトークンが必要になります。
+2. **PDF 生成サービスを設定**(任意):PDF を動的に生成したい場合(例: 見積書)は、Carbone、PDFMonkey、DocuSeal のようなサービスを使用して PDF を作成し、ダウンロード URL を取得します。
+
+## ステップバイステップの設定
+
+### ステップ 1: トリガーを設定
+
+1. **Workflows** に移動し、新しいワークフローを作成します
+2. **手動トリガー** を選択します
+3. PDF を添付したい対象オブジェクト(例: **Company** や **Opportunity**)を選択します
+
+
+ 手動トリガーを使用すると、レコードを選択すると右上に表示されるボタンからこのワークフローを実行し、PDF を生成して添付できます。
+
+
+### ステップ 2: サーバーレス関数を追加する
+
+1. **サーバーレス関数** アクションを追加します
+2. 以下のコードで新しい関数を作成します
+3. 入力パラメーターを設定します
+
+#### 入力パラメーター
+
+| パラメーター | 値 |
+| ----------- | ----------------------- |
+| `companyId` | `{{trigger.object.id}}` |
+
+
+ 別のオブジェクト(Person、Opportunity など)に添付する場合は、適切にパラメーター名を変更(例: `personId`、`opportunityId`)し、サーバーレス関数を更新します。
+
+
+#### サーバーレス関数のコード
+
+```typescript
+export const main = async (
+ params: { companyId: string },
+) => {
+ const { companyId } = params;
+
+ // Replace with your Twenty GraphQL endpoint
+ // Cloud: https://api.twenty.com/graphql
+ // Self-hosted: https://your-domain.com/graphql
+ const graphqlEndpoint = 'https://api.twenty.com/graphql';
+
+ // Replace with your API key from Settings → APIs
+ const authToken = 'YOUR_API_KEY';
+
+ // Replace with your PDF URL
+ // This could be from a PDF generation service or a static URL
+ const pdfUrl = 'https://your-pdf-service.com/generated-quote.pdf';
+ const filename = 'quote.pdf';
+
+ // Step 1: Download the PDF file
+ const pdfResponse = await fetch(pdfUrl);
+
+ if (!pdfResponse.ok) {
+ throw new Error(`Failed to download PDF: ${pdfResponse.status}`);
+ }
+
+ const pdfBlob = await pdfResponse.blob();
+ const pdfFile = new File([pdfBlob], filename, { type: 'application/pdf' });
+
+ // Step 2: Upload the file via GraphQL multipart upload
+ const uploadMutation = `
+ mutation UploadFile($file: Upload!, $fileFolder: FileFolder) {
+ uploadFile(file: $file, fileFolder: $fileFolder) {
+ path
+ }
+ }
+ `;
+
+ const uploadForm = new FormData();
+ uploadForm.append('operations', JSON.stringify({
+ query: uploadMutation,
+ variables: { file: null, fileFolder: 'Attachment' },
+ }));
+ uploadForm.append('map', JSON.stringify({ '0': ['variables.file'] }));
+ uploadForm.append('0', pdfFile);
+
+ const uploadResponse = await fetch(graphqlEndpoint, {
+ method: 'POST',
+ headers: { Authorization: `Bearer ${authToken}` },
+ body: uploadForm,
+ });
+
+ const uploadResult = await uploadResponse.json();
+
+ if (uploadResult.errors?.length) {
+ throw new Error(`Upload failed: ${uploadResult.errors[0].message}`);
+ }
+
+ const filePath = uploadResult.data?.uploadFile?.path;
+
+ if (!filePath) {
+ throw new Error('No file path returned from upload');
+ }
+
+ // Step 3: Create the attachment linked to the company
+ const attachmentMutation = `
+ mutation CreateAttachment($data: AttachmentCreateInput!) {
+ createAttachment(data: $data) {
+ id
+ name
+ }
+ }
+ `;
+
+ const attachmentResponse = await fetch(graphqlEndpoint, {
+ method: 'POST',
+ headers: {
+ Authorization: `Bearer ${authToken}`,
+ 'Content-Type': 'application/json',
+ },
+ body: JSON.stringify({
+ query: attachmentMutation,
+ variables: {
+ data: {
+ name: filename,
+ fullPath: filePath,
+ companyId,
+ },
+ },
+ }),
+ });
+
+ const attachmentResult = await attachmentResponse.json();
+
+ if (attachmentResult.errors?.length) {
+ throw new Error(`Attachment creation failed: ${attachmentResult.errors[0].message}`);
+ }
+
+ return attachmentResult.data?.createAttachment;
+};
+```
+
+### ステップ 3: ユースケースに合わせてカスタマイズする
+
+#### 別のオブジェクトに添付する場合
+
+`companyId` を適切なフィールドに置き換えます:
+
+| オブジェクト | フィールド名 |
+| ---------- | -------------------- |
+| 会社 | `companyId` |
+| 人物 | `personId` |
+| 商談 | `opportunityId` |
+| カスタムオブジェクト | `yourCustomObjectId` |
+
+関数のパラメーターと、添付のミューテーション内の `variables.data` オブジェクトの両方を更新します。
+
+#### 動的な PDF URL を使用する場合
+
+PDF 生成サービスを使用する場合、次のことができます:
+
+1. まず HTTP Request アクションで PDF を生成します
+2. 返された PDF URL をパラメーターとしてサーバーレス関数に渡します
+
+```typescript
+export const main = async (
+ params: { companyId: string; pdfUrl: string; filename: string },
+) => {
+ const { companyId, pdfUrl, filename } = params;
+ // ... rest of the function
+};
+```
+
+### ステップ 4: テストして有効化
+
+1. ワークフローを保存します
+2. Company のレコードに移動します
+3. **⋮** メニューをクリックし、ワークフローを選択します
+4. レコードの **Attachments** セクションを確認し、PDF が添付されたことを確認します
+5. ワークフローを有効化します
+
+## PDF 生成サービスとの連携
+
+動的な見積書や請求書を作成する場合:
+
+### 例: 見積書を生成 → PDF を添付
+
+| 手順 | アクション | 目的 |
+| -- | --------------- | ---------------------------- |
+| 1 | 手動トリガー(Company) | ユーザーがレコード上で実行を開始 |
+| 2 | レコード検索 | Opportunity または明細行の詳細を取得 |
+| 3 | HTTPリクエスト | レコードデータを用いて PDF 生成 API を呼び出す |
+| 4 | サーバーレス関数 | 生成された PDF をダウンロードして添付 |
+
+### 一般的な PDF 生成サービス
+
+* **Carbone** - テンプレートベースのドキュメント生成
+* **PDFMonkey** - テンプレートからの動的な PDF 作成
+* **DocuSeal** - ドキュメント自動化プラットフォーム
+* **Documint** - API ファーストのドキュメント生成
+
+各サービスは PDF URL を返す API を提供しており、その URL をサーバーレス関数に渡すことができます。
+
+## トラブルシューティング
+
+| 問題 | 解決策 |
+| -------------------- | ----------------------------------------- |
+| "PDF のダウンロードに失敗しました" | PDF URL にアクセスでき、有効な PDF が返されることを確認します |
+| "アップロードに失敗しました" | API キーが有効で、書き込み権限があることを確認します |
+| "添付ファイルの作成に失敗しました" | オブジェクト ID のフィールド名が対象オブジェクトに一致していることを確認します |
+
+## 関連
+
+* [ワークフローのトリガー](/l/ja/user-guide/workflows/capabilities/workflow-triggers)
+* [サーバーレス関数](/l/ja/user-guide/workflows/capabilities/workflow-actions#serverless-function)
+* [Twenty から見積書または請求書を生成する](/l/ja/user-guide/workflows/how-tos/connect-to-other-tools/generate-quote-or-invoice-from-twenty)
diff --git a/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/connect-to-other-tools/generate-quote-or-invoice-from-twenty.mdx b/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/connect-to-other-tools/generate-quote-or-invoice-from-twenty.mdx
index 676c4d146c..e1adeafd86 100644
--- a/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/connect-to-other-tools/generate-quote-or-invoice-from-twenty.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/connect-to-other-tools/generate-quote-or-invoice-from-twenty.mdx
@@ -1,52 +1,52 @@
---
-title: Generate a Quote or Invoice from Twenty
-description: Automatically create invoices in external tools when deals close.
+title: Twenty から見積書または請求書を作成
+description: 商談がクローズしたときに、外部ツールで請求書を自動作成します。
---
-Automatically send deal data to your invoicing system (Stripe, QuickBooks, Xero, etc.) when an opportunity is won.
+商談データを請求書発行システム (Stripe、QuickBooks、Xero など) に自動送信します。 商談が受注になったときに。
-## Workflow Structure
+## ワークフローの構成
-1. **Trigger**: Record is Updated (Opportunity)
-2. **Filter**: Stage = Closed Won
-3. **Search Record**: Get Company details
-4. **Code** (optional): Format payload
-5. **HTTP Request**: Send to invoicing system
+1. **トリガー**: レコードが更新 (商談オブジェクト)
+2. **フィルター**: ステージ = Closed Won
+3. **レコード検索**: 会社の詳細を取得
+4. **コード** (任意): ペイロードを整形
+5. **HTTP リクエスト**: 請求書発行システムに送信
-## Step 1: Set Up the Trigger
+## ステップ 1: トリガーを設定
-1. Create a new workflow
-2. Select **Record is Updated** trigger
-3. Choose **Opportunity** as the object
+1. 新しいワークフローを作成
+2. **Record is Updated** トリガーを選択
+3. オブジェクトとして **Opportunity** を選択
-## Step 2: Filter for Closed Won
+## ステップ 2: Closed Won でフィルター
-Add a **Filter** action to only continue when the deal is won:
+商談が受注になったときのみ続行するように、**フィルター** アクションを追加:
-| Setting | Value |
-| ------------- | --------------------------------- |
-| **Field** | Stage |
-| **Condition** | Equals |
-| **Value** | `CLOSED_WON` (or your stage name) |
+| 設定 | 値 |
+| --------- | --------------------------- |
+| **フィールド** | ステージ |
+| **条件** | 等しい |
+| **値** | `CLOSED_WON` (またはあなたのステージ名) |
- The trigger fires on any Opportunity update. The Filter ensures the workflow only continues when the stage changes to Closed Won.
+ このトリガーは、商談の更新があるたびに発火します。 このフィルターにより、ステージが Closed Won に変わった場合にのみワークフローが続行されます。
-## Step 3: Get Company Details
+## ステップ 3: 会社の詳細を取得
-The Opportunity record may not include all Company fields you need for the invoice. Add a **Search Record** action:
+商談レコードには、請求書に必要なすべての会社フィールドが含まれていない可能性があります。 **レコード検索** アクションを追加:
-| Setting | Value |
-| ------------ | ---------------------------------------- |
-| **Object** | Company |
-| **Match by** | ID equals `{{trigger.object.companyId}}` |
+| 設定 | 値 |
+| ---------- | ---------------------------------------- |
+| **オブジェクト** | 会社 |
+| **一致条件** | ID が `{{trigger.object.companyId}}` に等しい |
-This retrieves the full Company record with billing address, tax ID, etc.
+これにより、請求先住所、税番号などを含む会社の完全なレコードを取得します。
-## Step 4: Format the Payload (Optional)
+## ステップ 4: ペイロードを整形 (任意)
-If your invoicing system expects a specific format, add a **Code** action:
+請求書発行システムが特定のフォーマットを想定している場合は、**コード** アクションを追加:
```javascript
export const main = async (params: {
@@ -84,18 +84,18 @@ export const main = async (params: {
};
```
-## Step 5: Send to Invoicing System
+## ステップ 5: 請求書発行システムに送信
-Add an **HTTP Request** action:
+**HTTP リクエスト** アクションを追加:
-| Setting | Value |
-| ----------- | ----------------------------------------- |
-| **Method** | POST |
-| **URL** | Your invoicing API endpoint |
-| **Headers** | `Authorization: Bearer YOUR_API_KEY` |
-| **Body** | `{{code.invoice}}` or map fields directly |
+| 設定 | 値 |
+| -------- | ------------------------------------ |
+| **メソッド** | POST |
+| **URL** | 請求書発行 API のエンドポイント |
+| **ヘッダー** | `Authorization: Bearer YOUR_API_KEY` |
+| **本文** | `{{code.invoice}}` またはフィールドを直接マッピング |
-### Example: Stripe Invoice
+### 例: Stripe の請求書
```
POST https://api.stripe.com/v1/invoices
@@ -109,7 +109,7 @@ Body:
days_until_due: 30
```
-### Example: QuickBooks Invoice
+### 例: QuickBooks の請求書
```
POST https://quickbooks.api.intuit.com/v3/company/{realmId}/invoice
@@ -120,24 +120,25 @@ Headers:
Body: {{code.invoice}}
```
-## Complete Workflow Summary
+## ワークフロー全体の概要
-| Step | Action | Purpose |
-| ---- | ----------------------- | ------------------------------------ |
-| 1 | Trigger: Record Updated | Fires when any Opportunity changes |
-| 2 | Filter | Only proceed if Stage = Closed Won |
-| 3 | Search Record | Get full Company details for billing |
-| 4 | Code | Format data for invoicing API |
-| 5 | HTTP Request | Create invoice in external system |
+| 手順 | アクション | 目的 |
+| -- | -------------------- | ------------------------ |
+| 1 | トリガー: Record Updated | 任意の商談が変更されたときに発火 |
+| 2 | フィルター | ステージが Closed Won の場合のみ続行 |
+| 3 | レコード検索 | 請求用の会社詳細を取得 |
+| 4 | コード | 請求書発行 API 向けにデータを整形 |
+| 5 | HTTPリクエスト | 外部システムで請求書を作成 |
-## Tips
+## ヒント
-* **Store external IDs**: Save the invoice ID returned by the API back to the Opportunity using an **Update Record** action
-* **Error handling**: Add a branch to send a notification if the HTTP request fails
-* **Test first**: Use your invoicing system's sandbox/test mode before going live
+* **外部 ID を保存**: **Update Record** アクションを使用して、API から返された請求書 ID を商談に保存
+* **エラー処理**: HTTP リクエストが失敗した場合に通知を送信する分岐を追加
+* **まずテスト**: 本番運用前に、請求書発行システムのサンドボックス/テストモードを使用
-## Related
+## 関連
-* [Workflow Triggers](/l/ja/user-guide/workflows/capabilities/workflow-triggers)
-* [Workflow Actions](/l/ja/user-guide/workflows/capabilities/workflow-actions)
-* [Closed Won Automations](/l/ja/user-guide/workflows/how-tos/crm-automations/closed-won-automations)
+* [Twenty から PDF を生成する](/l/ja/user-guide/workflows/how-tos/connect-to-other-tools/generate-pdf-from-twenty) — 生成された PDF をレコードに添付する
+* [ワークフローのトリガー](/l/ja/user-guide/workflows/capabilities/workflow-triggers)
+* [ワークフローのアクション](/l/ja/user-guide/workflows/capabilities/workflow-actions)
+* [Closed Won の自動化](/l/ja/user-guide/workflows/how-tos/crm-automations/closed-won-automations)
diff --git a/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx b/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx
index 09d5e5bdbb..aa505c067f 100644
--- a/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx
@@ -1,44 +1,44 @@
---
-title: Set Up a Webhook Trigger
-description: Receive data from external services to trigger workflows.
+title: Webhook トリガーの設定
+description: 外部サービスからデータを受け取り、ワークフローをトリガーします。
image: /images/user-guide/workflows/workflow.png
---
-Webhook triggers allow external services to start your workflows by sending data to a unique URL. Use them to connect forms, third-party apps, and custom integrations.
+Webhook トリガーは、一意の URL にデータを送信することで外部サービスがあなたのワークフローを開始できるようにします。 フォーム、サードパーティアプリ、カスタム統合に接続するために使用します。
-## When to Use Webhooks
+## Webhook を使用するタイミング
-| Use Case | Example |
-| ----------------------- | --------------------------------------- |
-| **Web forms** | Contact form submissions create leads |
-| **Third-party apps** | Stripe payment → create customer record |
-| **Custom integrations** | Your app → Twenty automation |
-| **No-code tools** | Zapier, Make, n8n connections |
+| ユースケース | 例 |
+| -------------- | ----------------------- |
+| **Web フォーム** | お問い合わせフォームの送信でリードを作成 |
+| **サードパーティアプリ** | Stripe の支払い → 顧客レコードを作成 |
+| **カスタム統合** | 自社アプリ → Twenty の自動化 |
+| **ノーコードツール** | Zapier、Make、n8n との連携 |
-## Step-by-Step Setup
+## ステップバイステップの設定
-### Step 1: Create the Workflow
+### ステップ 1: ワークフローを作成
-1. Go to **Settings → Workflows**
-2. Click **+ New Workflow**
-3. Name it (e.g., "Website Form Submission")
+1. 「**Settings → Workflows**」に移動
+2. 「**+ New Workflow**」をクリック
+3. 名前を付ける(例: "Website Form Submission")
-### Step 2: Configure the Webhook Trigger
+### ステップ 2: Webhook トリガーを設定
-1. Click on the trigger block
-2. Select **Webhook**
-3. You'll receive a unique webhook URL like:
+1. トリガーブロックをクリック
+2. 「**Webhook**」を選択
+3. 次のような一意の Webhook URL が発行されます:
```
https://api.twenty.com/webhooks/workflow/abc123...
```
-4. Copy this URL—you'll need it for your external service
+4. この URL をコピーします—外部サービスで使用します
-### Step 3: Define Expected Data Structure
+### ステップ 3: 想定されるデータ構造を定義
-For **POST** requests, define the expected body structure:
+**POST** リクエストの場合、想定されるボディ構造を定義します:
-1. Click **Define expected body**
-2. Enter a sample JSON that matches what your service will send:
+1. 「**Define expected body**」をクリック
+2. サービスが送信する内容に一致するサンプル JSON を入力します:
```json
{
@@ -50,30 +50,30 @@ For **POST** requests, define the expected body structure:
}
```
-3. Click **Save**—this creates variables you can use in subsequent steps
+3. 「**Save**」をクリック—これにより、後続のステップで使用できる変数が作成されます
-### Step 4: Add Actions
+### ステップ 4: アクションを追加
-Now add actions that use the webhook data:
+Webhook データを使用するアクションを追加します:
-**Example: Create a Person record**
+**例: Person レコードを作成**
-1. Add **Create Record** action
-2. Select **People** object
-3. Map fields:
+1. 「**Create Record**」アクションを追加
+2. 「**People**」オブジェクトを選択
+3. フィールドをマッピング:
-| Field | Value |
-| ---------- | ---------------------------------------------------- |
-| First Name | `{{trigger.body.firstName}}` |
-| Last Name | `{{trigger.body.lastName}}` |
-| Email | `{{trigger.body.email}}` |
-| Company | Search or create based on `{{trigger.body.company}}` |
+| フィールド | 値 |
+| ----- | --------------------------------------- |
+| 名 | `{{trigger.body.firstName}}` |
+| 姓 | `{{trigger.body.lastName}}` |
+| メール | `{{trigger.body.email}}` |
+| 会社 | `{{trigger.body.company}}` に基づいて検索または作成 |
-### Step 5: Test the Webhook
+### ステップ 5: Webhook をテスト
-Before activating, test your webhook:
+有効化する前に、Webhook をテストします:
-**Using cURL**:
+**cURL を使用**:
```bash
curl -X POST https://api.twenty.com/webhooks/workflow/abc123... \
@@ -81,22 +81,22 @@ curl -X POST https://api.twenty.com/webhooks/workflow/abc123... \
-d '{"firstName":"Test","lastName":"User","email":"test@example.com"}'
```
-**Using Postman or similar**:
+**Postman などを使用**:
-1. Create a POST request to your webhook URL
-2. Set Content-Type header to `application/json`
-3. Add your test JSON body
-4. Send and check workflow runs
+1. Webhook URL に対して POST リクエストを作成
+2. Content-Type ヘッダーを `application/json` に設定
+3. テスト用の JSON ボディを追加
+4. 送信してワークフローの実行を確認
-### Step 6: Activate
+### ステップ 6: 有効化
-Once tested, click **Activate** to make the workflow live.
+テストが完了したら、ワークフローを稼働させるために「**Activate**」をクリックします。
-## Handling Different Data Structures
+## さまざまなデータ構造の扱い
-### Nested Data
+### ネストされたデータ
-If your webhook sends nested data:
+Webhook がネストされたデータを送信する場合:
```json
{
@@ -108,11 +108,11 @@ If your webhook sends nested data:
}
```
-Reference with: `{{trigger.body.contact.email}}`
+次のように参照します: `{{trigger.body.contact.email}}`
-### Arrays
+### 配列
-If data includes arrays:
+データに配列が含まれる場合:
```json
{
@@ -123,11 +123,11 @@ If data includes arrays:
}
```
-How you handle arrays depends on your use case:
+配列の扱い方はユースケースによって異なります:
-**Unknown number of items → Use Iterator**
+**項目数が不明 → Iterator を使用**
-If you need to process each item in the array (e.g., create a record for each), add a **Code** action to parse the array, then use **Iterator**:
+配列内の各項目を処理する必要がある場合(例: 各項目ごとにレコードを作成)、配列を解析するために **Code** アクションを追加し、その後 **Iterator** を使用します:
```javascript
export const main = async (params: { items: any }) => {
@@ -138,11 +138,11 @@ export const main = async (params: { items: any }) => {
};
```
-Then use Iterator to loop through: `{{code.items}}`
+次に Iterator を使用してループ処理します: `{{code.items}}`
-**Known/specific fields → Extract to named fields**
+**既知/特定のフィールド → 名前付きフィールドとして抽出**
-If the array contains specific fields you want to access individually (e.g., form answers where position 0 is always "first name", position 1 is always "last name"), add a **Code** action to extract them:
+配列に個別にアクセスしたい特定のフィールドが含まれている場合(例: フォーム回答で位置 0 が常に "first name"、位置 1 が常に "last name" のようなケース)、それらを抽出するために **Code** アクションを追加します:
```javascript
export const main = async (params: { items: any }) => {
@@ -159,13 +159,13 @@ export const main = async (params: { items: any }) => {
};
```
-Now you can select `product.name` and `product.qty` individually in subsequent steps.
+これで、後続のステップで `product.name` と `product.qty` を個別に選択できます。
- For more details on handling arrays, see [Handle Arrays in Code Actions](/l/ja/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions).
+ 配列の扱いの詳細については、[Code アクションで配列を扱う](/l/ja/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions)を参照してください。
-## Related
+## 関連
-* [Workflow Triggers](/l/ja/user-guide/workflows/capabilities/workflow-triggers)
-* [Workflow Actions](/l/ja/user-guide/workflows/capabilities/workflow-actions)
+* [ワークフローのトリガー](/l/ja/user-guide/workflows/capabilities/workflow-triggers)
+* [ワークフローのアクション](/l/ja/user-guide/workflows/capabilities/workflow-actions)
diff --git a/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/crm-automations/closed-won-automations.mdx b/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/crm-automations/closed-won-automations.mdx
index 013435b9ef..88371d7a3a 100644
--- a/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/crm-automations/closed-won-automations.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/crm-automations/closed-won-automations.mdx
@@ -1,85 +1,85 @@
---
-title: Closed Won Automations
-description: Automate post-win activities when opportunities close.
+title: Closed Won の自動化
+description: 商談が成約(Closed Won)になったときに、成約後の活動を自動化します。
---
-When a deal closes, multiple things need to happen: update company status, notify team members, create onboarding tasks. Automate all of this with a single workflow.
+商談がクローズしたら、複数のことを行う必要があります:会社のステータスを更新し、チームメンバーに通知し、オンボーディングタスクを作成します。 これらをひとつのワークフローで自動化します。
-## The Problem
+## 問題
-When an opportunity moves to "Closed Won":
+商談が "Closed Won" に移動したとき:
-* Company type needs to change from "Prospect" to "Customer"
-* Onboarding tasks need to be created
-* Customer success team needs to be notified
-* Sales rep needs confirmation
+* 会社タイプを "Prospect" から "Customer" に変更する必要があります
+* オンボーディングタスクを作成する必要があります
+* カスタマーサクセスチームに通知する必要があります
+* 営業担当者への確認が必要です
-Doing this manually is time-consuming and error-prone.
+これを手作業で行うのは時間がかかり、ミスの原因になります。
-## The Solution
+## 解決策
-Create a workflow that handles all post-win activities automatically.
+成約後のすべての作業を自動で処理するワークフローを作成します。
-## Complete Workflow Setup
+## ワークフローのセットアップを完了
-### Step 1: Create the Workflow
+### ステップ 1: ワークフローを作成
-1. Go to **Settings → Workflows**
-2. Click **+ New Workflow**
-3. Name it "Deal Won - Post-Win Automation"
+1. 「**Settings → Workflows**」に移動
+2. 「**+ New Workflow**」をクリック
+3. 名前を "Deal Won - Post-Win Automation" にします
-### Step 2: Configure the Trigger
+### ステップ 2: トリガーを設定
-1. Select **Record is Updated**
-2. Choose **Opportunities**
-3. Under "Fields to monitor", select **Stage**
+1. 「**Record is Updated**」を選択
+2. 「**Opportunities**」を選択
+3. "Fields to monitor" で **Stage** を選択
-### Step 3: Add Stage Filter
+### ステップ 3: ステージフィルターを追加
-1. Add **Filter** action
-2. Condition: `{{trigger.object.stage}}` equals "Closed Won"
+1. 「**Filter**」アクションを追加
+2. 条件: `{{trigger.object.stage}}` が "Closed Won" と等しい
-### Step 4: Update Company Type
+### ステップ 4: 会社タイプを更新
-1. Add **Update Record** action
-2. Configure:
+1. 「**Update Record**」アクションを追加
+2. 設定:
-| Field | Value |
-| ------------------- | ------------------------------- |
-| **Object** | Companies |
-| **Record** | `{{trigger.object.company.id}}` |
-| **Type** | Customer |
-| **First Deal Date** | `{{trigger.object.closedAt}}` |
-| **Account Owner** | `{{trigger.object.owner.id}}` |
+| フィールド | 値 |
+| ------------- | ------------------------------- |
+| **オブジェクト** | 会社 |
+| **レコード** | `{{trigger.object.company.id}}` |
+| **種類** | 顧客 |
+| **初回ディール日** | `{{trigger.object.closedAt}}` |
+| **アカウントオーナー** | `{{trigger.object.owner.id}}` |
-### Step 5: Create Onboarding Task
+### ステップ 5: オンボーディングタスクを作成
-1. Add **Create Record** action
-2. Configure:
+1. 「**Create Record**」アクションを追加
+2. 設定:
-| Field | Value |
-| ----------------------- | ---------------------------------------------------------------------------------------------------- |
-| **Object** | Tasks |
-| **Title** | `Onboarding: {{trigger.object.name}}` |
-| **Assignee** | Customer Success team member |
-| **Due Date** | 3 days from now |
-| **Priority** | High |
-| **Related Company** | `{{trigger.object.company.id}}` |
-| **Related Opportunity** | `{{trigger.object.id}}` |
-| **Description** | `New customer onboarding for {{trigger.object.company.name}}. Deal value: {{trigger.object.amount}}` |
+| フィールド | 値 |
+| ---------- | ---------------------------------------------------------------------------------------------------- |
+| **オブジェクト** | タスク |
+| **タイトル** | `Onboarding: {{trigger.object.name}}` |
+| **担当者** | カスタマーサクセスチームのメンバー |
+| **期日** | 今から3日後 |
+| **優先** | 高 |
+| **関連会社** | `{{trigger.object.company.id}}` |
+| **関連商談** | `{{trigger.object.id}}` |
+| **説明** | `New customer onboarding for {{trigger.object.company.name}}. Deal value: {{trigger.object.amount}}` |
-### Step 6: Notify Customer Success
+### ステップ 6: カスタマーサクセスに通知
-1. Add **Send Email** action
-2. Configure:
+1. 「**Send Email**」アクションを追加
+2. 設定:
-| Field | Value |
-| ----------- | -------------------------------------------------- |
-| **To** | customer-success@yourcompany.com |
-| **Subject** | `🎉 New Customer: {{trigger.object.company.name}}` |
-| **Body** | See example below |
+| フィールド | 値 |
+| ------ | -------------------------------------------------- |
+| **宛先** | customer-success@yourcompany.com |
+| **件名** | `🎉 New Customer: {{trigger.object.company.name}}` |
+| **本文** | 下記の例を参照してください |
-**Email body example**:
+**メール本文の例**:
```
Hi CS Team,
@@ -97,44 +97,44 @@ An onboarding task has been created automatically.
Let's give them a great start!
```
-### Step 7: Confirm to Sales Rep
+### ステップ 7: 営業担当者に確認を送信
-1. Add another **Send Email** action
-2. Configure:
+1. さらに「**Send Email**」アクションを追加
+2. 設定:
-| Field | Value |
-| ----------- | -------------------------------------------------------------------------------------------------------------------- |
-| **To** | `{{trigger.object.owner.email}}` |
-| **Subject** | `✅ Deal Closed: {{trigger.object.name}}` |
-| **Body** | Congratulations! Your deal has been processed. The customer success team has been notified and onboarding has begun. |
+| フィールド | 値 |
+| ------ | --------------------------------------------------------------- |
+| **宛先** | `{{trigger.object.owner.email}}` |
+| **件名** | `✅ Deal Closed: {{trigger.object.name}}` |
+| **本文** | おめでとうございます! ディールの処理が完了しました。 カスタマーサクセスチームに通知され、オンボーディングが開始されました。 |
-### Step 8: Test and Activate
+### ステップ 8: テストして有効化
-1. Test by moving a test opportunity to "Closed Won"
-2. Verify:
- * Company type changed to "Customer"
- * Onboarding task created
- * CS team received email
- * Sales rep received confirmation
-3. Activate when ready
+1. テスト用の商談を "Closed Won" に移動してテストします
+2. 確認:
+ * 会社の種別が "Customer" に変更された
+ * オンボーディングタスクが作成された
+ * CS チームがメールを受信した
+ * 営業担当者が確認を受け取った
+3. 準備ができたら有効化します
-## Handling Closed Lost
+## Closed Lost の処理
-Create a similar workflow for lost deals:
+失注ディール向けに同様のワークフローを作成します:
-### Trigger
+### トリガー
-* Record is Updated (Opportunities, Stage = "Closed Lost")
+* レコードが更新(Opportunities、Stage = "Closed Lost")
-### Actions
+### アクション
-1. **Create Record**: Task for "Lost Deal Analysis"
-2. **Update Record**: Add lost reason to company record
-3. **Send Email**: Notify manager of lost deal
+1. 「**Create Record**」: "Lost Deal Analysis" 用のタスク
+2. 「**Update Record**」: 失注理由を会社レコードに追加
+3. 「**Send Email**」: 失注の旨をマネージャーに通知
-## Advanced: Multi-Step Onboarding
+## 高度な設定: 多段階のオンボーディング
-For complex onboarding, create multiple tasks:
+複雑なオンボーディングには、複数のタスクを作成します:
```javascript
export const main = async (params) => {
@@ -149,31 +149,31 @@ export const main = async (params) => {
};
```
-Use **Iterator** to create each task from the array.
+配列から各タスクを作成するには **Iterator** を使用します。
-## Customization Ideas
+## カスタマイズのアイデア
-### Keep your other tools up-to-date
+### 他のツールも最新状態に保つ
-* Create customer in billing system with an **HTTP Request**
+* **HTTP Request** で請求システムに顧客を作成する
-### Conditional Actions
+### 条件付きアクション
-Use **Filter** actions to:
+「**Filter**」アクションを使用して次を行います:
-* Different onboarding for enterprise vs SMB
-* Different assignees based on region
-* Skip notifications for small deals
+* エンタープライズと SMB で異なるオンボーディング
+* 地域に基づいて担当者を変える
+* 小規模ディールでは通知をスキップ
-### Include Deal Details
+### ディールの詳細を含める
-Use **Code** action to format:
+整形には「**Code**」アクションを使用:
-* Deal summary documents
-* Handoff notes for CS team
-* Custom onboarding checklists
+* ディールのサマリードキュメント
+* CS チーム向けの引き継ぎメモ
+* カスタムのオンボーディングチェックリスト
-## Related
+## 関連
-* [Workflow Actions](/l/ja/user-guide/workflows/capabilities/workflow-actions)
-* [Send Emails from Workflows](/l/ja/user-guide/workflows/capabilities/send-emails-from-workflows)
+* [ワークフローのアクション](/l/ja/user-guide/workflows/capabilities/workflow-actions)
+* [ワークフローからメールを送信](/l/ja/user-guide/workflows/capabilities/send-emails-from-workflows)
diff --git a/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/crm-automations/detect-stale-opportunities.mdx b/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/crm-automations/detect-stale-opportunities.mdx
index efeaa37797..3d6aec4c2f 100644
--- a/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/crm-automations/detect-stale-opportunities.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/crm-automations/detect-stale-opportunities.mdx
@@ -1,56 +1,56 @@
---
-title: Detect Stale Opportunities
-description: Automatically notify managers when opportunities haven't been updated.
+title: 停滞した商談を検出
+description: 商談が更新されていない場合にマネージャーに自動的に通知します。
---
-Keep your pipeline healthy by alerting managers when opportunities go stale. This workflow checks for opportunities that haven't been updated in a specified number of days.
+商談が停滞したときにマネージャーにアラートを送信して、パイプラインの健全性を保ちましょう。 このワークフローは、指定した日数の間更新されていない商談をチェックします。
-## The Problem
+## 問題
-Opportunities sitting without updates lead to:
+更新されずに放置された商談は次のような事態を招きます:
-* Deals going cold
-* Unreliable forecasts
-* Lost revenue
+* 商談が冷え込む
+* 予測の信頼性低下
+* 収益の損失
-## The Solution
+## 解決策
-Create a scheduled workflow that finds stale opportunities and emails their managers.
+停滞した商談を見つけ、マネージャーにメールを送信する定期実行のワークフローを作成します。
-## Step-by-Step Setup
+## ステップバイステップの設定
-### Step 1: Create the Workflow
+### ステップ 1: ワークフローを作成
-1. Go to **Settings → Workflows**
-2. Click **+ New Workflow**
-3. Name it "Stale Opportunity Alert"
+1. 「**Settings → Workflows**」に移動
+2. 「**+ New Workflow**」をクリック
+3. 名前を "停滞商談アラート" にします
-### Step 2: Configure the Trigger
+### ステップ 2: トリガーを設定
-1. Select **On a Schedule**
-2. Set to run daily (e.g., every day at 8 AM)
+1. 「**On a Schedule**」を選択
+2. 毎日実行に設定 (例: 毎朝 8 時)
-### Step 3: Search for Stale Opportunities
+### ステップ 3: 停滞した商談を検索
-1. Add **Search Records** action
-2. Configure:
+1. 「**Search Records**」アクションを追加
+2. 設定:
-| Field | Value |
+| フィールド | 値 |
| ---------- | ----------------------------------------------- |
-| **Object** | Opportunities |
-| **Filter** | Updated At is before (today - 7 days) |
-| **Filter** | Stage is not "Closed Won" AND not "Closed Lost" |
-| **Limit** | 100 |
+| **オブジェクト** | 商談 |
+| **フィルター** | Updated At が (today - 7 days) より前 |
+| **フィルター** | Stage が "Closed Won" ではなく、かつ "Closed Lost" でもない |
+| **制限** | 100 |
-### Step 4: Check If Any Found
+### ステップ 4: 該当があるか確認
-1. Add **Filter** action
-2. Condition: `{{searchRecords.length}}` is greater than 0
-3. If no stale opportunities, the workflow stops here
+1. 「**Filter**」アクションを追加
+2. 条件: `{{searchRecords.length}}` が 0 より大きい
+3. 停滞した商談がない場合、ワークフローはここで停止します
-### Step 5: Format the Alert (Code Action)
+### ステップ 5: アラートを整形 (コードアクション)
-Add a **Code** action to format the email:
+メールを整形するために「**Code**」アクションを追加します:
```javascript
export const main = async (params) => {
@@ -88,49 +88,49 @@ export const main = async (params) => {
};
```
-### Step 6: Send Alert Email
+### ステップ 6: アラートメールを送信
-Add **Send Email** action:
+「**Send Email**」アクションを追加:
-| Field | Value |
-| ----------- | ----------------------------------------------------------- |
-| **To** | sales-manager@yourcompany.com |
-| **Subject** | `🚨 {{code.totalCount}} Stale Opportunities Need Attention` |
-| **Body** | `{{code.summary}}` |
+| フィールド | 値 |
+| ------ | ------------------------------------ |
+| **宛先** | sales-manager@yourcompany.com |
+| **件名** | `🚨 要対応の停滞商談が {{code.totalCount}} 件` |
+| **本文** | `{{code.summary}}` |
-### Step 7: Test and Activate
+### ステップ 7: テストして有効化
-1. Click **Test** to run the workflow
-2. Check that the email contains the right data
-3. Activate when ready
+1. ワークフローを実行するには「**Test**」をクリック
+2. メールに正しいデータが含まれていることを確認します
+3. 準備ができたら有効化します
-## Customization Options
+## カスタマイズオプション
-### Change Staleness Threshold
+### 停滞のしきい値を変更
-Modify the Search Records filter to change from 7 days to your preferred period:
+「**Search Records**」フィルターを編集し、7 日を希望の期間に変更します:
-* 3 days for high-velocity sales
-* 14 days for enterprise deals
-* 30 days for long sales cycles
+* 高回転の営業には 3 日
+* エンタープライズの商談には 14 日
+* 長いセールスサイクルには 30 日
-### Alert Individual Reps
+### 個々の担当者にアラート
-Instead of one manager email, use **Iterator** to send personalized emails to each rep about their own stale deals.
+マネージャー宛ての 1 通のメールではなく、**Iterator** を使用して、各担当者に自分の停滞中の商談についてのパーソナライズされたメールを送信します。
-### Add Escalation
+### エスカレーションを追加
-Create multiple workflows with increasing severity:
+深刻度を段階的に上げた複数のワークフローを作成します:
-1. Day 7: Email to rep
-2. Day 14: Email to rep + manager
-3. Day 21: Create task for manager to intervene
+1. 7 日目: 担当者にメール
+2. 14 日目: 担当者 + マネージャーにメール
+3. 21 日目: マネージャーが介入できるようタスクを作成
-### Include in Slack
+### Slack にも通知
-Use **HTTP Request** to post to a Slack webhook instead of or in addition to email.
+メールの代わりに、またはメールに加えて、**HTTP Request** を使用して Slack の Webhook に投稿します。
-## Related
+## 関連
-* [Workflow Actions](/l/ja/user-guide/workflows/capabilities/workflow-actions)
-* [Send Emails from Workflows](/l/ja/user-guide/workflows/capabilities/send-emails-from-workflows)
+* [ワークフローのアクション](/l/ja/user-guide/workflows/capabilities/workflow-actions)
+* [ワークフローからメールを送信](/l/ja/user-guide/workflows/capabilities/send-emails-from-workflows)
diff --git a/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/crm-automations/display-number-of-emails-received.mdx b/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/crm-automations/display-number-of-emails-received.mdx
index 2abce2ea85..0b6a18f2b4 100644
--- a/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/crm-automations/display-number-of-emails-received.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/crm-automations/display-number-of-emails-received.mdx
@@ -1,74 +1,74 @@
---
-title: Display Number of Emails Received
-description: Create a workflow to automatically count and display the number of emails received from each contact.
+title: 受信メール数を表示
+description: 各連絡先から受信したメール数を自動的にカウントして表示するワークフローを作成します。
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-## Overview
+## 概要
-This workflow triggers every time a new email is received and updates a custom field on the Person record with the total count of emails from that sender.
+このワークフローは新しいメールを受信するたびにトリガーされ、その送信者からのメールの合計数で Person レコード上のカスタムフィールドを更新します。
-## Prerequisites
+## 前提条件
-Before setting up this workflow, create a custom field on the **People** object:
+このワークフローを設定する前に、**People** オブジェクトにカスタムフィールドを作成します:
-1. Go to **Settings → Data Model → People**
-2. Add a new **Number** field
-3. Name it something like "Number of emails received from this person"
+1. 「**設定 → データモデル → People**」に移動します
+2. 新しい **Number** フィールドを追加します
+3. 「この人物から受信したメール数」などの名前を付けます
-## Step-by-Step Setup
+## ステップバイステップの設定
-
+
-### Step 1: Configure the Trigger
+### ステップ 1: トリガーを設定
-1. Go to **Workflows** and create a new workflow
-2. Select **Record is Created** as the trigger
-3. Choose **Message Participants** (available under Advanced objects)
+1. 「**Workflows**」に移動し、新しいワークフローを作成します
+2. トリガーとして **Record is Created** を選択します
+3. **Message Participants**(Advanced objects 内にあります)を選択します
- A Message Participant is a combination of a message ID and a person ID, creating one unique record per message. This is easier to track than Messages directly because we can access the `handle` field, which contains the sender's (or recipient's) email address.
+ Message Participant は、メッセージ ID と person ID の組み合わせで、メッセージごとに一意のレコードを作成します。 これは、送信者(または受信者)のメールアドレスを含む `handle` フィールドにアクセスできるため、Messages を直接扱うよりも追跡が容易です。
-### Step 2: Filter on Role
+### ステップ 2: Role でフィルター
-1. Add a **Filter** action
-2. Set the condition: **Role** equals **FROM**
+1. 「**Filter**」アクションを追加します
+2. 条件を設定します: **Role** が **FROM** と等しい
-This ensures you only count messages sent by this person, not messages sent to them.
+これにより、この人物が送信したメッセージのみをカウントし、相手宛てに送られたメッセージは含めないようにします。
-### Step 3: Search All Message Participants with Same Handle
+### ステップ 3: 同じ Handle を持つすべての Message Participants を検索
-1. Add a **Search Records** action
-2. Select **Message Participants** as the object
-3. Add filters: **Handle** equals the handle from the trigger (the sender's email address) and **Role** equals **FROM**
-4. Increase the **Limit** from 1 to **200** (the maximum)
+1. 「**Search Records**」アクションを追加します
+2. オブジェクトとして **Message Participants** を選択します
+3. フィルターを追加します: **Handle** がトリガーの handle(送信者のメールアドレス)と等しい、かつ **Role** が **FROM** と等しい
+4. **Limit** を 1 から **200**(最大値)に増やします
-This finds all messages from this email address to get the total count.
+これにより、このメールアドレスからのすべてのメッセージを見つけ、合計数を取得します。
- The Search Records action is limited to returning 200 records maximum. However, since you're only using the `totalCount` value (not the individual records), this step will return the total number of emails sent by this person.
+ Search Records アクションは、返せるレコードが最大 200 件に制限されています。 ただし、個々のレコードではなく `totalCount` の値のみを使用するため、このステップではこの人物が送信したメールの総数が返されます。
-### Step 4: Update the Person Record with a Create or Update Record action
+### ステップ 4: Create or Update Record アクションで Person レコードを更新
-1. Add a **Create or Update Record** action
+1. 「**Create or Update Record**」アクションを追加します
- Use **Upsert Record** instead of **Update Record** here. This lets you identify the person by their email address (the `handle` field) rather than requiring a record ID from a previous step.
+ ここでは **Update Record** の代わりに **Upsert Record** を使用します。 これにより、前のステップからレコード ID を取得する必要はなく、メールアドレス(`handle` フィールド)で人物を特定できます。
-2. Select **People** as the object
-3. Find the person by matching their email to the `handle` from the Message Participant
-4. Set your custom "Number of emails received" field to `{{searchRecords.totalCount}}`
+2. オブジェクトとして **People** を選択します
+3. Message Participant の `handle` とメールアドレスを照合して該当の人物を特定します
+4. カスタムの「受信メール数」フィールドを `{{searchRecords.totalCount}}` に設定します
-The `totalCount` value from the Search Records action represents the total number of emails received from this person.
+Search Records アクションの `totalCount` の値は、この人物から受信したメールの総数を表します。
-## Related
+## 関連
-* [Workflow Actions](/l/ja/user-guide/workflows/capabilities/workflow-actions)
-* [Create Custom Fields](/l/ja/user-guide/data-model/how-tos/customize-your-data-model)
-* [Search Records Action](/l/ja/user-guide/workflows/capabilities/workflow-actions#search-records)
+* [ワークフローのアクション](/l/ja/user-guide/workflows/capabilities/workflow-actions)
+* [カスタムフィールドの作成方法](/l/ja/user-guide/data-model/how-tos/customize-your-data-model)
+* [Search Records アクション](/l/ja/user-guide/workflows/capabilities/workflow-actions#search-records)
diff --git a/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx b/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx
index a1f1287eeb..da00dc8ff6 100644
--- a/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx
@@ -1,130 +1,130 @@
---
-title: Display Related Record Data
-description: Show data from related records (e.g., Company info on Opportunities) using workflows.
+title: 関連レコードのデータを表示
+description: ワークフローを使用して、関連レコードのデータ(例:商談上の会社情報)を表示します。
---
-Display data from related records directly on your records — for example, show the employee count from a Company on its Opportunities. This workflow workaround is useful until nested fields are natively available.
+関連レコードのデータを自分のレコード上に直接表示します — たとえば、会社の従業員数をその会社の商談に表示します。 入れ子フィールドがネイティブに利用可能になるまで、このワークフローによる回避策が役立ちます。
-## Common Use Cases
+## 一般的な使用例
-| Source | Destination | Fields to Copy |
-| ----------- | ----------- | ------------------------------- |
-| Company | Opportunity | Industry, Company Size, ARR |
-| Person | Opportunity | Email, Phone, Title |
-| Opportunity | Company | Last Deal Amount, Last Won Date |
+| ソース | コピー先 | コピーするフィールド |
+| --- | ---- | -------------- |
+| 会社 | 商談 | 業種、会社規模、ARR |
+| 人物 | 商談 | メール、電話、役職 |
+| 商談 | 会社 | 直近の商談金額、直近の受注日 |
-## Basic Field Copy
+## 基本的なフィールドのコピー
-### Example: Copy Contact Email to Opportunity
+### 例: 連絡先のメールを商談にコピー
-**Goal**: When setting a Point of Contact on an opportunity, copy their email to the opportunity for easy access.
+**目標**: 商談で連絡担当者を設定したとき、その人物のメールを商談にコピーして簡単に参照できるようにする。
-### Prerequisite
+### 前提条件
-Create the destination fields in **Settings → Data Model → Opportunities** before building the workflow:
+ワークフローを作成する前に、**設定 → データモデル → 商談** でコピー先フィールドを作成します:
-* Contact Email (type: Email)
-* Contact Phone (type: Phone)
+* 連絡先メール(タイプ: Email)
+* 連絡先電話(タイプ: Phone)
-### Setup
+### セットアップ
-1. **Trigger**: Record is Updated (Opportunities, Point of Contact field)
+1. **トリガー**: レコードが更新(商談、連絡担当者フィールド)
-2. **Filter**: Check that Point of Contact is not empty
+2. **フィルター**: 連絡担当者が空でないことを確認
-3. **Search Records**: Find the linked person
- * Object: People
- * Filter: ID equals `{{trigger.object.pointOfContact.id}}`
+3. **レコード検索**: リンクされた人物を見つける
+ * オブジェクト: People
+ * フィルター: ID が `{{trigger.object.pointOfContact.id}}` に等しい
-4. **Update Record**:
- * Object: Opportunities
- * Record: `{{trigger.object.id}}`
- * Contact Email: `{{searchRecords[0].email}}`
- * Contact Phone: `{{searchRecords[0].phone}}`
+4. **レコードを更新**:
+ * オブジェクト: Opportunities
+ * レコード: `{{trigger.object.id}}`
+ * 連絡先メール: `{{searchRecords[0].email}}`
+ * 連絡先電話: `{{searchRecords[0].phone}}`
-## Copy Multiple Fields
+## 複数フィールドのコピー
-### Example: Sync Company Info to All Related Opportunities
+### 例: 関連するすべての商談に会社情報を同期
-**Goal**: When company details change, update all related opportunities.
+**目標**: 会社の詳細が変更されたら、関連するすべての商談を更新する。
-### Setup
+### セットアップ
-1. **Trigger**: Record is Updated (Companies)
- * Fields: Industry, Company Size, Annual Revenue
+1. **トリガー**: レコードが更新(会社)
+ * フィールド: 業種、会社規模、年間売上高
-2. **Search Records**: Find all opportunities for this company
- * Object: Opportunities
- * Filter: Company ID equals `{{trigger.object.id}}`
+2. **レコード検索**: この会社のすべての商談を見つける
+ * オブジェクト: Opportunities
+ * フィルター: 会社 ID が `{{trigger.object.id}}` に等しい
-3. **Iterator**: Loop through each opportunity
+3. **イテレーター**: 各商談をループ処理する
-4. **Update Record** (inside iterator):
- * Object: Opportunities
- * Record: `{{iterator.currentItem.id}}`
- * Company Industry: `{{trigger.object.industry}}`
- * Company Size: `{{trigger.object.companySize}}`
- * Company ARR: `{{trigger.object.annualRevenue}}`
+4. **レコードを更新** (イテレーター内):
+ * オブジェクト: Opportunities
+ * レコード: `{{iterator.currentItem.id}}`
+ * 会社の業種: `{{trigger.object.industry}}`
+ * 会社規模: `{{trigger.object.companySize}}`
+ * 会社のARR: `{{trigger.object.annualRevenue}}`
-## Copy on Record Creation
+## レコード作成時のコピー
-### Example: Pre-fill Opportunity with Company Data
+### 例: 会社データで商談を事前入力
-**Goal**: When creating an opportunity linked to a company, automatically copy key company info.
+**目標**: 会社にリンクされた商談を作成するとき、主要な会社情報を自動コピーする。
-### Prerequisite
+### 前提条件
-Create the destination fields in **Settings → Data Model → Opportunities**:
+**設定 → データモデル → 商談** でコピー先フィールドを作成します:
-* Company Industry (type: Text)
-* Company Size (type: Number)
+* 会社の業種(タイプ: Text)
+* 会社規模(タイプ: Number)
-### Setup
+### セットアップ
-1. **Trigger**: Record is Created (Opportunities)
- * Filter: Company is not empty
+1. **トリガー**: レコードが作成(商談)
+ * フィルター: 会社が空でない
-2. **Search Records**: Get the linked company's details
- * Object: Companies
- * Filter: ID equals `{{trigger.object.company.id}}`
+2. **レコード検索**: リンクされた会社の詳細を取得
+ * オブジェクト: Companies
+ * フィルター: ID が `{{trigger.object.company.id}}` に等しい
-3. **Update Record**:
- * Object: Opportunities
- * Record: `{{trigger.object.id}}`
- * Company Industry: `{{searchRecords[0].industry}}`
- * Company Size: `{{searchRecords[0].employees}}`
+3. **レコードを更新**:
+ * オブジェクト: Opportunities
+ * レコード: `{{trigger.object.id}}`
+ * 会社の業種: `{{searchRecords[0].industry}}`
+ * 会社規模: `{{searchRecords[0].employees}}`
- **Tasks and Notes limitation**: Relations on Tasks and Notes are hardcoded as many-to-many and are not yet available in workflow triggers or actions. To access these relations, use the [API](/l/ja/developers/extend/capabilities/apis) instead.
+ **タスクとノートの制限**: タスクとノートのリレーションは多対多としてハードコードされており、ワークフローのトリガーやアクションではまだ使用できません。 これらのリレーションにアクセスするには、代わりに[API](/l/ja/developers/extend/capabilities/apis)を使用してください。
-## Bidirectional Sync
+## 双方向同期
-### Example: Keep Primary Contact in Sync
+### 例: 主担当者を同期した状態に保つ
-**Goal**: When a company's primary contact changes, update the contact. When a person becomes primary, update the company.
+**目標**: 会社の主担当者が変更されたら、その人物を更新する。 人物が主担当者になったときは、会社を更新する。
-### Workflow 1: Company → Person
+### ワークフロー 1: 会社 → 人物
-1. **Trigger**: Record is Updated (Companies, Primary Contact field)
-2. **Update Record**: Set person's "Is Primary Contact" to true
-3. **Search Records**: Find previous primary contact
-4. **Update Record**: Set previous contact's "Is Primary Contact" to false
+1. **トリガー**: レコードが更新(会社、主担当者フィールド)
+2. **レコードを更新**: 人物の "Is Primary Contact" を true に設定
+3. **レコード検索**: 以前の主担当者を見つける
+4. **レコードを更新**: 以前の連絡先の "Is Primary Contact" を false に設定
-### Workflow 2: Person → Company
+### ワークフロー 2: 人物 → 会社
-1. **Trigger**: Record is Updated (People, Is Primary Contact = true)
-2. **Update Record**: Set company's Primary Contact to this person
+1. **トリガー**: レコードが更新(人物、Is Primary Contact = true)
+2. **レコードを更新**: 会社の主担当者をこの人物に設定
- Be careful with bidirectional syncs to avoid infinite loops. Use filters to check if the value actually changed before updating.
+ 無限ループを避けるため、双方向同期の取り扱いには注意してください。 更新前に値が実際に変更されたかを確認するフィルターを使用する。
-## Using Code for Complex Mapping
+## コードによる複雑なマッピング
-### Example: Transform Data During Copy
+### 例: コピー時にデータを変換
-**Goal**: Copy and format phone number from person to opportunity.
+**目標**: 人物から商談へ電話番号をコピーし、フォーマットする。
```javascript
export const main = async (params) => {
@@ -144,27 +144,27 @@ export const main = async (params) => {
};
```
-## Best Practices
+## ベストプラクティス
-### Avoid Loops
+### ループを回避する
-* Don't create workflows that trigger each other endlessly
-* Use specific field conditions
-* Add checks to see if value actually changed
+* 互いにトリガーし合って終わらないワークフローを作成しない
+* 特定のフィールド条件を使用する
+* 値が実際に変更されたかを確認するチェックを追加する
-### Handle Missing Data
+### 欠損データの取り扱い
-* Always check if source record exists before copying
-* Provide default values for optional fields
-* Use filters to skip when source field is empty
+* コピー前に常にソースレコードの存在を確認する
+* 任意フィールドには既定値を用意する
+* ソースフィールドが空の場合はフィルターでスキップする
-### Performance
+### パフォーマンス
-* Batch updates when copying to many records
-* Use scheduled workflows for bulk sync operations
-* Consider using Iterator for multiple record updates
+* 多数のレコードにコピーする場合はバッチ更新を使用する
+* 大規模な同期処理にはスケジュールされたワークフローを使用する
+* 複数レコードの更新にはイテレーターの使用を検討する
-## Related
+## 関連
-* [Workflow Actions](/l/ja/user-guide/workflows/capabilities/workflow-actions)
-* [Workflow Triggers](/l/ja/user-guide/workflows/capabilities/workflow-triggers)
+* [ワークフローのアクション](/l/ja/user-guide/workflows/capabilities/workflow-actions)
+* [ワークフローのトリガー](/l/ja/user-guide/workflows/capabilities/workflow-triggers)
diff --git a/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/crm-automations/formula-fields.mdx b/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/crm-automations/formula-fields.mdx
index 42fb6bd8a7..1315295968 100644
--- a/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/crm-automations/formula-fields.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/crm-automations/formula-fields.mdx
@@ -1,37 +1,37 @@
---
-title: Formula Fields
-description: Create formula fields using workflows until native support is available.
+title: 数式フィールド
+description: ネイティブ対応が提供されるまで、ワークフローを使って数式フィールドを作成します。
---
-Twenty doesn't yet support native formula fields yet (coming in 2026), but you can achieve the same result using workflows. This workaround lets you automatically calculate and populate field values—from simple concatenations to complex business logic.
+Twenty は現時点でネイティブの数式フィールドをまだサポートしていません(2026 年に提供予定)ですが、ワークフローを使えば同等の結果を実現できます。 この回避策により、単純な連結から複雑なビジネスロジックまで、フィールド値を自動計算して入力できます。
-## Common Use Cases
+## 一般的な使用例
-| Use Case | Formula Example |
-| ------------------- | --------------------------------- |
-| **Full name** | First Name + " " + Last Name |
-| **Expected amount** | Amount × Probability |
-| **Days until due** | Due Date - Today |
-| **Days in stage** | Today - Stage Entry Date |
-| **Lead score** | Points based on multiple criteria |
+| ユースケース | 数式例 |
+| ------------ | ---------------------------- |
+| **氏名** | First Name + " " + Last Name |
+| **見込み金額** | Amount × Probability |
+| **期日までの日数** | Due Date - Today |
+| **ステージ滞在日数** | Today - Stage Entry Date |
+| **リードスコア** | 複数の基準に基づくポイント |
- For a complete example of tracking time in pipeline stages, see [Track How Long Opportunities Stay in Each Stage](/l/ja/user-guide/views-pipelines/how-tos/track-time-in-stage).
+ パイプラインのステージでの時間を追跡する完全な例については、[商談が各ステージにとどまる時間を追跡](/l/ja/user-guide/views-pipelines/how-tos/track-time-in-stage) を参照してください。
-## Basic Formula: Concatenation
+## 基本の式:連結
-### Example: Auto-Fill Full Name
+### 例:氏名を自動入力
-**Goal**: Automatically combine first and last name into a full name field.
+**目的**: 名と姓を自動的に結合して氏名フィールドにする。
-### Setup
+### セットアップ
-1. **Trigger**: Record is Updated or Created (People)
+1. **トリガー**: レコードが更新または作成される(People)
-2. **Filter**: Check that first name or last name changed
+2. **フィルター**: 名または姓が変更されたかを確認
-3. **Code action**:
+3. **コードアクション**:
```javascript
export const main = async (params) => {
@@ -45,21 +45,21 @@ export const main = async (params) => {
};
```
-4. **Update Record**: Set Full Name to `{{code.fullName}}`
+4. **レコードを更新**: 氏名を `{{code.fullName}}` に設定
-## Numeric Formula: Expected Amount
+## 数値の式:見込み金額
-### Example: Calculate Expected Revenue
+### 例:見込み収益を計算
-**Goal**: Multiply opportunity amount by probability to get expected amount.
+**目的**: 商談金額に確度を掛けて見込み金額を算出する。
-See [How to Show Expected Amount in Pipeline](/l/ja/user-guide/views-pipelines/how-tos/show-expected-amount-in-pipeline) for the complete workflow.
+ワークフロー全体については、[パイプラインで見込み金額を表示する方法](/l/ja/user-guide/views-pipelines/how-tos/show-expected-amount-in-pipeline) を参照してください。
-### Quick Setup
+### クイックセットアップ
-1. **Trigger**: Record is Updated (Opportunities, Amount OR Probability field)
+1. **トリガー**: レコードが更新される(Opportunities、Amount または Probability フィールド)
-2. **Code action**:
+2. **コードアクション**:
```javascript
export const main = async (params) => {
@@ -71,19 +71,19 @@ export const main = async (params) => {
};
```
-3. **Update Record**: Set Expected Amount to `{{code.expectedAmount}}`
+3. **レコードを更新**: 見込み金額を `{{code.expectedAmount}}` に設定
-## Date Formula: Days Calculation
+## 日付の式:日数計算
-### Example: Days Until Task Due
+### 例:タスクの期日までの日数
-**Goal**: Calculate how many days remain until a task's due date.
+**目的**: タスクの期日まで残り何日かを計算する。
-### Setup
+### セットアップ
-1. **Trigger**: Record is Updated or Created (Tasks, Due Date field)
+1. **トリガー**: レコードが更新または作成される(Tasks、Due Date フィールド)
-2. **Code action**:
+2. **コードアクション**:
```javascript
export const main = async (params) => {
@@ -102,23 +102,23 @@ export const main = async (params) => {
};
```
-3. **Update Record**: Set Days Until Due to `{{code.daysUntilDue}}`
+3. **レコードを更新**: 期日までの日数を `{{code.daysUntilDue}}` に設定
- Negative values indicate overdue tasks. You can use this field to filter or sort tasks by urgency.
+ 負の値は期限超過のタスクを示します。 このフィールドを使用して、緊急度でタスクをフィルターまたは並べ替えることができます。
-## Conditional Formula: Lead Score
+## 条件付き式:リードスコア
-### Example: Calculate Lead Score Based on Criteria
+### 例:条件に基づいてリードスコアを計算
-**Goal**: Score leads based on company size, industry, and engagement.
+**目的**: 企業規模、業種、エンゲージメントに基づいてリードにスコアを付与する。
-### Setup
+### セットアップ
-1. **Trigger**: Record is Updated (People or Companies)
+1. **トリガー**: レコードが更新される(People または Companies)
-2. **Code action**:
+2. **コードアクション**:
```javascript
export const main = async (params) => {
@@ -147,19 +147,19 @@ export const main = async (params) => {
};
```
-3. **Update Record**: Set Lead Score to `{{code.leadScore}}`
+3. **レコードを更新**: リードスコアを `{{code.leadScore}}` に設定
-## Text Formula: Domain Extraction
+## テキストの式:ドメイン抽出
-### Example: Extract Domain from Email
+### 例:メールからドメインを抽出
-**Goal**: Automatically extract and store the email domain.
+**目的**: メールのドメインを自動抽出して保存する。
-### Setup
+### セットアップ
-1. **Trigger**: Record is Updated (People, Email field)
+1. **トリガー**: レコードが更新される(People、Email フィールド)
-2. **Code action**:
+2. **コードアクション**:
```javascript
export const main = async (params) => {
@@ -173,30 +173,30 @@ export const main = async (params) => {
};
```
-3. **Update Record**: Set Domain field to `{{code.domain}}`
+3. **レコードを更新**: ドメインフィールドを `{{code.domain}}` に設定
-## Best Practices
+## ベストプラクティス
-### Performance
+### パフォーマンス
-* Only trigger on relevant field changes
-* Use filters to skip records that don't need calculation
-* Avoid complex calculations in high-volume workflows
+* 関連するフィールド変更時のみトリガーする
+* 計算が不要なレコードをスキップするためにフィルターを使用する
+* 大量のワークフローでは複雑な計算を避ける
-### Error Handling
+### エラーハンドリング
-* Check for null/undefined values before calculations
-* Use default values when data is missing
-* Return clear error messages when calculations fail
+* 計算の前に null/undefined の値を確認する
+* データが欠落している場合はデフォルト値を使用する
+* 計算が失敗したときは明確なエラーメッセージを返す
-### Testing
+### テスト
-* Test with edge cases (empty fields, zero values)
-* Verify calculations manually before activating
-* Monitor workflow runs for unexpected results
+* エッジケース(空のフィールド、ゼロ値)でテストする
+* 有効化する前に計算を手動で検証する
+* 意図しない結果がないかワークフローの実行を監視する
-## Related
+## 関連
-* [How to Show Expected Amount in Pipeline](/l/ja/user-guide/views-pipelines/how-tos/show-expected-amount-in-pipeline)
-* [How to Track Time in Stage](/l/ja/user-guide/views-pipelines/how-tos/track-time-in-stage)
-* [Workflow Actions](/l/ja/user-guide/workflows/capabilities/workflow-actions)
+* [パイプラインで見込み金額を表示する方法](/l/ja/user-guide/views-pipelines/how-tos/show-expected-amount-in-pipeline)
+* [ステージ内の時間を追跡する方法](/l/ja/user-guide/views-pipelines/how-tos/track-time-in-stage)
+* [ワークフローのアクション](/l/ja/user-guide/workflows/capabilities/workflow-actions)
diff --git a/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/crm-automations/notify-teammates-of-note-to-review.mdx b/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/crm-automations/notify-teammates-of-note-to-review.mdx
new file mode 100644
index 0000000000..5309ebd489
--- /dev/null
+++ b/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/crm-automations/notify-teammates-of-note-to-review.mdx
@@ -0,0 +1,127 @@
+---
+title: レビュー対象のノートをチームメンバーに通知
+description: ノートのレビュー担当に同僚を割り当てたとき、自動でメール通知を送信します。
+---
+
+import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
+
+
+ **ノート内でチームメンバーを直接タグ付けすることはまだサポートされていません。** この機能は 2026 年後半に提供予定です。 当面の間、このワークフローが実用的な回避策となります。
+
+
+## 課題
+
+ノート内で同僚をタグ付けして、レビュー通知が届くようにしたい。 現時点では、Twenty はノートやタスクでの @メンションをサポートしていません。
+
+## 回避策
+
+ノート本文でのタグ付けの代わりに、次のようにします。
+
+1. Notes オブジェクトに **Reviewer** リレーションフィールドを作成する
+2. ノートの作成または編集時にレビュアーを割り当てる
+3. ワークフローが自動的に、ノートへのリンク付きメールをレビュアーに送信する
+
+
+ **制限**: この方法では、フィールドごとに 1 人のレビュアーしか割り当てられません。 複数人に通知する必要がある場合は、リレーションフィールドを追加で作成します(例: Reviewer 1、Reviewer 2)。 一度に多数のコラボレーターをタグ付けする必要がある場合、拡張性は高くありません。
+
+
+## ステップバイステップの設定
+
+### ステップ 1: Reviewer フィールドを作成
+
+
+
+1. 「**設定 → データモデル → Notes**」に移動します
+2. **Add Field** をクリック
+3. 設定:
+
+| 設定 | 値 |
+| ------------- | ----------------------- |
+| **Name** | Reviewer |
+| **種類** | リレーション |
+| **関連オブジェクト** | ワークスペースメンバー |
+| **リレーションタイプ** | 複数のノート → 1人のワークスペースメンバー |
+
+4. フィールドを保存
+
+### ステップ 2: ワークフローを作成
+
+
+
+#### ワークフローのトリガーを作成
+
+1. メインビューに移動し、新しいワークフローを作成します
+2. トリガーとして **Record Updated** を選択します
+3. オブジェクトとして **Note** を選択し、**Reviewer** フィールドを指定します。
+4. これにより、ノートのレビュアーが更新されるたびにトリガーされます。
+
+#### レビュアーが割り当てられた直後かを確認するフィルターを追加
+
+レビュアーが割り当てられたときのみ続行するように、**フィルター** アクションを追加します:
+
+| 条件 | 値 |
+| ------------ | ----- |
+| **Reviewer** | 空ではない |
+
+#### ワークスペースメンバーを検索
+
+1. 「**Search Records**」アクションを追加します
+2. 「Advanced Objects」内の **Workspace Member** を選択
+3. フィルターを追加:
+
+| 条件 | 値 |
+| ------ | ---------------------------- |
+| **ID** | が `{{note.reviewerId}}` に等しい |
+
+これにより、メールアドレスや氏名を含むワークスペースメンバーの完全なレコードが取得されます。
+
+#### 通知メールを送信
+
+1. 「**Send Email**」アクションを追加します
+2. 設定:
+
+| フィールド | 値 |
+| ------ | --------------------------------------------------- |
+| **宛先** | Search Record → First Workspace Member → User Email |
+| **件名** | ノートのレビューをお願いします |
+| **本文** | 下記の例を参照してください |
+
+**メール本文の例:**
+
+```text
+Hi {{searchRecord.firstWorkspaceMember.name.firstName}},
+
+You've been assigned to review a note.
+
+View the note here:
+https://yourSubDomain.twenty.com/object/note/{{recordIsUpdated.id}}
+
+Best,
+Twenty
+```
+
+
+ `yourSubDomain` を実際の Twenty ワークスペースのサブドメインに置き換えてください。
+
+
+#### テストと有効化
+
+1. ワークフローを手動で実行するには「**Test**」をクリックします
+2. ノートを作成または編集し、レビュアーを割り当てます
+3. レビュアーの受信トレイに通知メールが届いているか確認します
+4. ワークフローを有効化します
+
+## 使用方法
+
+セットアップ後、チームは次の手順でこのワークフローを利用できます。
+
+1. 新しいノートを作成(または既存のノートを編集)
+2. **Reviewer** フィールドで同僚を選択
+3. 同僚に、ノートへの直接リンク付きメールが自動送信されます
+
+## 関連
+
+* [ワークフローのトリガー](/l/ja/user-guide/workflows/capabilities/workflow-triggers)
+* [ワークフローからメールを送信](/l/ja/user-guide/workflows/capabilities/send-emails-from-workflows)
+* [カスタムフィールドの作成方法](/l/ja/user-guide/data-model/how-tos/create-custom-fields)
+* [リレーションフィールドの作成方法](/l/ja/user-guide/data-model/how-tos/create-relation-fields)
diff --git a/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/crm-automations/send-email-alerts-with-tasks-due.mdx b/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/crm-automations/send-email-alerts-with-tasks-due.mdx
index 540d5405ab..aad94a4e83 100644
--- a/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/crm-automations/send-email-alerts-with-tasks-due.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/crm-automations/send-email-alerts-with-tasks-due.mdx
@@ -1,56 +1,56 @@
---
-title: Send Email Alerts with Tasks Due
-description: Automatically notify team members about their upcoming or overdue tasks.
+title: 期限のタスクに関するメールアラートを送信
+description: 差し迫ったタスクや期限超過のタスクについてチームメンバーに自動通知します。
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-Send daily email reminders to each team member about their tasks due today.
+本日が期限のタスクについて、各チームメンバーに毎日メールでリマインダーを送信します。
-## Overview
+## 概要
-This workflow runs on a schedule and:
+このワークフローはスケジュールで実行され、以下を実行します:
-1. Fetches all workspace members
-2. Loops through each member
-3. Finds their tasks due today
-4. Formats and sends a personalized email
+1. すべてのワークスペースメンバーを取得
+2. 各メンバーを順に処理
+3. 各メンバーの本日が期限のタスクを検索
+4. 整形し、パーソナライズされたメールを送信
-## Step-by-Step Setup
+## ステップバイステップの設定
-
+
-### Step 1: Configure the Trigger
+### ステップ 1: トリガーを設定
-1. Go to **Settings → Workflows** and create a new workflow
-2. Select **On a Schedule** as the trigger
-3. Use a cron expression for daily at 8:00 AM: `0 8 * * *`
+1. 「**Settings → Workflows**」に移動し、新しいワークフローを作成します
+2. トリガーとして「**On a Schedule**」を選択します
+3. 毎日 8:00 の cron 式を使用します: `0 8 * * *`
-### Step 2: Search for All Workspace Members
+### ステップ 2: すべてのワークスペースメンバーを検索
-1. Add a **Search Records** action
-2. Select **Workspace Members** (under advanced objects)
-3. No filters needed — this returns all members
+1. 「**Search Records**」アクションを追加します
+2. 「**Workspace Members**」(advanced objects 内)を選択します
+3. フィルターは不要です—すべてのメンバーが取得されます
-### Step 3: Add an Iterator
+### ステップ 3: Iterator を追加
-1. Add an **Iterator** action
-2. Set the input array to the workspace members from the previous step
-3. All actions inside the iterator will run once per member
+1. 「**Iterator**」アクションを追加します
+2. 入力配列を前のステップのワークスペースメンバーに設定します
+3. Iterator 内のすべてのアクションはメンバーごとに1回実行されます
-### Step 4: Search for Tasks Due Today (Inside Iterator)
+### ステップ 4: 本日が期限のタスクを検索(Iterator 内)
-1. Inside the iterator, add a **Search Records** action
-2. Select **Tasks** as the object
-3. Add filters:
- * **Assignee** = current workspace member (from the iterator)
- * **Due Date** = today
+1. Iterator 内で「**Search Records**」アクションを追加します
+2. オブジェクトとして「**Tasks**」を選択します
+3. フィルターを追加:
+ * **Assignee** = 現在のワークスペースメンバー(Iterator から)
+ * **Due Date** = 今日
-### Step 5: Format Tasks into Email Body (Inside Iterator)
+### ステップ 5: タスクをメール本文に整形(Iterator 内)
-Add a **Code** action to format the tasks into a readable list with links:
+タスクをリンク付きの読みやすいリストに整形するために「**Code**」アクションを追加します:
```javascript
export const main = async (params: {
@@ -79,28 +79,28 @@ export const main = async (params: {
```
- Replace `yourSubDomain` with your actual Twenty workspace subdomain.
+ `yourSubDomain` を実際の Twenty ワークスペースのサブドメインに置き換えてください。
-### Step 6: Send Email (Inside Iterator)
+### ステップ 6: メールを送信(Iterator 内)
-1. Add a **Send Email** action (still inside the iterator)
-2. Configure:
+1. 「**Send Email**」アクションを追加します(引き続き Iterator 内)
+2. 設定:
-| Field | Value |
-| ----------- | --------------------------------------------------------------- |
-| **To** | `{{iterator.currentItem.userEmail}}` (workspace member's email) |
-| **Subject** | Your Tasks Due Today |
-| **Body** | `{{code.formattedTasks}}` |
+| フィールド | 値 |
+| ------ | --------------------------------------------------------- |
+| **宛先** | `{{iterator.currentItem.userEmail}}`(ワークスペースメンバーのメールアドレス) |
+| **件名** | 本日が期限のタスク |
+| **本文** | `{{code.formattedTasks}}` |
-### Step 7: Test and Activate
+### ステップ 7: テストして有効化
-1. Click **Test** to run the workflow manually
-2. Check inboxes for the emails
-3. Activate the workflow
+1. ワークフローを手動で実行するには「**Test**」をクリックします
+2. 受信トレイでメールを確認します
+3. ワークフローを有効化します
-## Related
+## 関連
-* [Workflow Actions](/l/ja/user-guide/workflows/capabilities/workflow-actions)
-* [Send Emails from Workflows](/l/ja/user-guide/workflows/capabilities/send-emails-from-workflows)
-* [Handle Arrays in Code Actions](/l/ja/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions)
+* [ワークフローのアクション](/l/ja/user-guide/workflows/capabilities/workflow-actions)
+* [ワークフローからメールを送信](/l/ja/user-guide/workflows/capabilities/send-emails-from-workflows)
+* [Code アクションで配列を扱う](/l/ja/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions)
diff --git a/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/need-more-help/professional-services.mdx b/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/need-more-help/professional-services.mdx
index 674ca6229f..181dc83458 100644
--- a/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/need-more-help/professional-services.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/need-more-help/professional-services.mdx
@@ -1,29 +1,29 @@
---
-title: Professional Services
-description: Get professional help building complex workflows and automations from Twenty's team and certified partners.
+title: プロフェッショナルサービス
+description: Twenty のチームおよび認定パートナーから、複雑なワークフローや自動化の構築に関する専門的な支援を受けましょう。
---
-## When Do You Need Professional Help?
+## いつプロフェッショナルなサポートが必要ですか?
-Consider professional services for:
+次の用途については、プロフェッショナル サービスの利用をご検討ください:
-* Complex multi-system integrations
-* Advanced business logic and automation rules
-* Large-scale data processing workflows
-* Custom API development
-* Team training and workflow optimization
-* When you don't have internal resources
+* 複雑なマルチシステム統合
+* 高度なビジネスロジックと自動化ルール
+* 大規模データ処理ワークフロー
+* カスタムAPIの開発
+* チームのトレーニングとワークフローの最適化
+* 社内リソースがない場合
-## Service Options
+## サービスの選択肢
-### Onboarding Packs
+### オンボーディングパック
-Get help from our core team with our 4-hour [Onboarding packs](https://twenty.com/onboarding-packages):
+コアチームからのサポートを受け、4時間の[オンボーディングパック](https://twenty.com/onboarding-packages)を利用:
-* **Workflow Creation**: Build custom workflows for your business processes
-* **Data Model Design**: Optimize your data structure for workflow automation
-* **Data Migration**: Import existing data with proper workflow integration
+* **ワークフロー作成**: 業務プロセスに合わせたカスタムワークフローの構築
+* **データモデル設計**: ワークフロー自動化のためのデータ構造の最適化
+* **データ移行**: 適切なワークフロー統合を伴う既存データのインポート
-### Implementation Partners
+### 実装パートナー
-Work with certified partners for advanced customizations. Contact us at contact@twenty.com to connect with our [implementation partners](https://twenty.com/partners).
+認定パートナーと連携して、高度なカスタマイズを行います。 認定パートナーと連携して、高度なカスタマイズを行います。 [実装パートナー](https://twenty.com/partners)に関するお問い合わせはcontact@twenty.comまでご連絡ください。
diff --git a/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/need-more-help/workflow-troubleshooting.mdx b/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/need-more-help/workflow-troubleshooting.mdx
index b243fc4acb..170d26f954 100644
--- a/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/need-more-help/workflow-troubleshooting.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/need-more-help/workflow-troubleshooting.mdx
@@ -1,170 +1,170 @@
---
-title: Workflow Troubleshooting
-description: Common workflow issues and how to resolve them.
+title: ワークフロートラブルシューティング
+description: 一般的なワークフローの問題とその解決方法。
---
-## Common Issues and Solutions
+## 一般的な問題と解決策
-### Workflow Not Triggering
+### ワークフローがトリガーされない
-**Symptoms**: Your workflow doesn't run when you expect it to.
+**症状**: 期待したタイミングでワークフローが実行されない。
-**Possible Causes**:
+**考えられる原因**:
-1. **Workflow not activated**: Ensure the workflow is set to "Active" not "Draft"
-2. **Trigger conditions not met**: Verify the trigger matches your expected event
-3. **Field not monitored**: For "Record is Updated" triggers, ensure the specific field is being watched
-4. **Permissions**: Check you have permission to run workflows
+1. **ワークフローが有効化されていない**: ワークフローが "Draft" ではなく "Active" に設定されていることを確認する
+2. **トリガー条件が満たされていない**: トリガーが想定するイベントに一致しているか確認する
+3. **フィールドが監視対象ではない**: "Record is Updated" トリガーの場合、対象のフィールドが監視されていることを確認する
+4. **権限**: ワークフローを実行する権限があるか確認する
-**Solutions**:
+**解決策**:
-* Verify workflow status in the workflow list
-* Test with the specific action you expect to trigger it
-* Review trigger configuration
-* Contact your admin about permissions
+* ワークフロー一覧でワークフローのステータスを確認する
+* 想定するアクションで実際にトリガーされるかテストする
+* トリガー設定を見直す
+* 権限について管理者に連絡する
-### Workflow Triggers Too Early (Empty Fields)
+### ワークフローが早すぎるタイミングでトリガーされる(フィールドが空)
-**Symptoms**: When manually creating a record in the UI, your workflow triggers before you've had time to fill in all the fields. The workflow runs with mostly empty field values.
+**症状**: UI でレコードを手動作成すると、すべてのフィールドを入力する前にワークフローがトリガーされる。 フィールド値がほぼ空の状態でワークフローが実行されてしまう。
-**Why this happens**: Twenty saves everything in real-time — there's no separate "edit" vs "read" mode. When you create a record, it's saved immediately, triggering the "Record is created" event before you can fill in additional fields.
+**原因**: Twenty はすべてをリアルタイムで保存します — つまり、"edit" と "read" の別モードはありません。 レコードを作成すると即時に保存され、追加のフィールドを入力する前に "Record is created" イベントがトリガーされます。
-**When "Record is created" works well**:
+**"Record is created" が有効に機能するケース**:
-* Records created via API calls (fields are populated in a single request)
-* Records created via import
-* Automated record creation from other workflows
+* API 呼び出しで作成されたレコード(1 回のリクエストでフィールドが入力される)
+* インポートで作成されたレコード
+* 他のワークフローからの自動レコード作成
-**Solution**: For records created manually in the UI, use **"Record is created or updated"** as your trigger instead. This way:
+**解決策**: UI で手動作成したレコードには、トリガーとして **"Record is created or updated"** を使用する。 このようにすることで:
-* The workflow triggers after the user has finished filling in and saving the fields
-* You get the complete data rather than empty values
+* ユーザーが入力を完了しフィールドを保存した後にワークフローがトリガーされる
+* 空の値ではなく完全なデータを取得できる
- If you only want the workflow to run once per record, add a Filter action to check a field like `createdAt equals updatedAt` (first save) or use a custom checkbox field to track if the workflow has already run.
+ ワークフローをレコードごとに 1 回だけ実行したい場合は、`createdAt equals updatedAt`(初回保存)などのフィールドを確認するために Filter アクションを追加するか、ワークフローがすでに実行されたかを追跡するカスタムのチェックボックスフィールドを使用する。
-### Actions Failing
+### アクションの失敗
-**Symptoms**: Workflow runs but some actions fail.
+**症状**: ワークフローは実行されるが、一部のアクションが失敗する。
-**Possible Causes**:
+**考えられる原因**:
-1. **Missing data**: Required fields are empty
-2. **Invalid references**: Variables from previous steps don't exist
-3. **API errors**: External services returning errors
-4. **Permission issues**: Action requires permissions you don't have
+1. **データ不足**: 必須フィールドが空である
+2. **無効な参照**: 以前のステップの変数が存在しない
+3. **API エラー**: 外部サービスがエラーを返している
+4. **権限の問題**: アクションの実行に必要な権限が不足している
-**Solutions**:
+**解決策**:
-* Check the workflow run details for error messages
-* Verify all required fields have values
-* Test API connections independently
-* Review role permissions
+* ワークフローの実行詳細でエラーメッセージを確認する
+* すべての必須フィールドに値が入っていることを確認する
+* API 接続を個別にテストする
+* ロール権限を見直す
-### HTTP Request Errors
+### HTTP リクエストのエラー
-**Symptoms**: HTTP Request actions fail or return unexpected results.
+**症状**: HTTP Request アクションが失敗する、または想定外の結果を返す。
-**Common Error Codes**:
+**一般的なエラーコード**:
-* **400**: Bad request - check your request body format
-* **401**: Unauthorized - verify API key
-* **403**: Forbidden - check API permissions
-* **404**: Not found - verify endpoint URL
-* **429**: Too many requests - implement rate limiting
-* **500**: Server error - external service issue
+* **400**: 不正なリクエスト - リクエストボディの形式を確認する
+* **401**: 認証エラー - API キーを確認する
+* **403**: アクセス拒否 - API の権限を確認する
+* **404**: 見つかりません - エンドポイントURLを確認する
+* **429**: リクエスト過多 - レート制限を実装する
+* **500**: サーバーエラー - 外部サービス側の問題
-**Solutions**:
+**解決策**:
-* Verify API endpoint URL
-* Check authentication headers
-* Test the API call outside of Twenty first
-* Add error handling in Code actions
+* APIエンドポイントURLを確認する
+* 認証ヘッダーを確認する
+* まず Twenty の外で API 呼び出しをテストする
+* Code アクションでエラーハンドリングを追加する
-### Code Action Errors
+### Code アクションのエラー
-**Symptoms**: JavaScript code fails to execute.
+**症状**: JavaScript コードが実行に失敗する。
-**Common Issues**:
+**一般的な問題**:
-1. **Syntax errors**: Typos or invalid JavaScript
-2. **Undefined variables**: Referencing variables that don't exist
-3. **Type errors**: Operations on wrong data types
-4. **Timeouts**: Code taking too long to execute
+1. **構文エラー**: タイプミスまたは無効な JavaScript
+2. **未定義の変数**: 存在しない変数を参照している
+3. **型エラー**: 不適切なデータ型に対する操作
+4. **タイムアウト**: コードの実行に時間がかかりすぎている
-**Solutions**:
+**解決策**:
-* Use the built-in code editor validation
-* Test code logic in a JavaScript console first
-* Add console.log statements for debugging
-* Simplify complex operations
+* 組み込みのコードエディタの検証機能を使用する
+* まず JavaScript コンソールでコードロジックをテストする
+* デバッグのために console.log を追加する
+* 複雑な処理を簡素化する
-### Email Not Sending
+### メールが送信されない
-**Symptoms**: Send Email action doesn't deliver emails.
+**症状**: Send Email アクションでメールが配信されない。
-**Possible Causes**:
+**考えられる原因**:
-1. **No email account connected**: Check Settings → Accounts
-2. **Invalid email address**: Recipient email is malformed
-3. **Sending limits**: Email provider rate limits reached
-4. **Spam filters**: Emails being blocked
+1. **メールアカウントが未接続**: Settings → Accounts を確認する
+2. **無効なメールアドレス**: 受信者のメールアドレスの形式が正しくない
+3. **送信制限**: メールプロバイダのレート制限に達している
+4. **スパムフィルター**: メールがブロックされている
-**Solutions**:
+**解決策**:
-* Verify email account connection
-* Validate recipient email addresses
-* Check email provider limits
-* Review email content for spam triggers
+* メールアカウントの接続を確認する
+* 受信者のメールアドレスを検証する
+* メールプロバイダの制限を確認する
+* スパム判定される可能性があるメール内容を見直す
-## Debugging Workflows
+## ワークフローのデバッグ
-### Using Workflow Runs
+### ワークフロー実行の活用
-1. Go to the workflow editor
-2. Open the **Runs** panel
-3. Find the failed run
-4. Click to see step-by-step details
-5. Review error messages and output data
+1. ワークフローエディタに移動する
+2. **Runs** パネルを開く
+3. 失敗した実行を探す
+4. クリックしてステップごとの詳細を表示する
+5. エラーメッセージと出力データを確認する
-### Testing Individual Steps
+### 個別ステップのテスト
-1. For Code actions, use the **Test** button
-2. For HTTP requests, test the endpoint separately
-3. Create test records to trigger workflows
-4. Use manual triggers for controlled testing
+1. Code アクションでは **Test** ボタンを使用する
+2. HTTP リクエストでは、エンドポイントを個別にテストする
+3. ワークフローをトリガーするテスト用レコードを作成する
+4. 制御されたテストには手動トリガーを使用する
-### Common Debugging Patterns
+### 一般的なデバッグパターン
-**Add logging**:
-Use Code actions to log intermediate values for debugging.
+**ロギングを追加**:
+デバッグのために中間値をログ出力する Code アクションを使用する。
-**Isolate steps**:
-Test each step independently to identify failures.
+**ステップを分離**:
+失敗箇所を特定するため、各ステップを個別にテストする。
-**Check data flow**:
-Verify that each step receives the expected input data.
+**データフローを確認**:
+各ステップが期待どおりの入力データを受け取っていることを確認する。
-## Best Practices to Avoid Issues
+## 問題を避けるためのベストプラクティス
-### Before Activation
+### 有効化前
-* Test thoroughly in draft mode
-* Validate all API connections
-* Review trigger conditions carefully
-* Document expected behavior
+* ドラフトモードで十分にテストする
+* すべての API 接続を検証する
+* トリガー条件を丁寧に見直す
+* 想定される動作を文書化する
-### During Development
+### 開発中
-* Use descriptive step names
-* Add comments in Code actions
-* Test with realistic data
-* Plan for edge cases
+* 説明的なステップ名を使用する
+* Code アクションにコメントを追加する
+* 実データに近いデータでテストする
+* エッジケースを想定して計画する
-### After Activation
+### 有効化後
-* Monitor initial runs closely
-* Set up alerts for failures
-* Review run history regularly
-* Keep workflows simple when possible
+* 初期の実行を綿密に監視する
+* 失敗時のアラートを設定する
+* 実行履歴を定期的に見直す
+* 可能な限りワークフローをシンプルに保つ
diff --git a/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/need-more-help/workflows-faq.mdx b/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/need-more-help/workflows-faq.mdx
index 13519aebcf..1d412e0e4f 100644
--- a/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/need-more-help/workflows-faq.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/need-more-help/workflows-faq.mdx
@@ -1,48 +1,48 @@
---
-title: Workflows FAQ
-description: Frequently asked questions about workflows in Twenty.
+title: ワークフローに関するFAQ
+description: Twenty のワークフローに関するよくある質問。
---
-
- This is likely a permissions issue. You need access to workflows to create and activate them.
+
+ これは権限の問題である可能性が高いです。 ワークフローを作成して有効化するには、ワークフローへのアクセス権が必要です。
- **Solution**: Contact your workspace administrator to grant you workflow access under **Settings → Roles**.
+ **解決策**:**Settings → Roles** でワークフローへのアクセス権を付与してもらうよう、ワークスペース管理者に連絡してください。
- If you don't see the Workflows section at all in your sidebar, this confirms it's a permissions issue.
+ サイドバーにワークフローセクションがまったく表示されない場合、権限の問題であることが確認できます。
-
- Manual workflows only appear in the navbar if properly configured:
+
+ 手動ワークフローは、適切に設定されている場合にのみナビバーに表示されます:
- 1. The workflow must be **activated** (not in draft mode)
- 2. The navbar placement must be set to **Pinned**
- 3. For Single/Bulk triggers, you must be on the correct object page
+ 1. ワークフローが**アクティブ**(ドラフトモードではない)である必要があります
+ 2. ナビバーの配置は**Pinned**に設定する必要があります
+ 3. Single/Bulk トリガーの場合、正しいオブジェクトのページを表示している必要があります
- **To check**: Open the workflow → click the trigger → verify "Navbar placement" is set to "Pinned".
+ **確認方法**:ワークフローを開く → トリガーをクリック → "Navbar placement" が "Pinned" に設定されていることを確認します。
- You can always access manual workflows via **Cmd + K** (or **Ctrl + K**) regardless of navbar settings.
+ ナビバーの設定に関係なく、**Cmd + K**(または **Ctrl + K**)で手動ワークフローに常にアクセスできます。
-
- | Type | Records Required | Workflow Runs |
- | ---- | ---------------- | ------------- |
+
+ | タイプ | 必要なレコード | ワークフロー実行 |
+ | --- | ------- | -------- |
- \| **Global** | None | Once, no record input |
- \| **Single** | One or more selected | Once per selected record |
- \| **Bulk** | One or more selected | Once, with all records as array |
+ \| **Global** | なし | 1回、レコード入力なし |
+ \| **Single** | 1件以上を選択 | 選択した各レコードごとに1回 |
+ \| **Bulk** | 1件以上を選択 | 1回、すべてのレコードを配列として |
- * **Global**: Use when the workflow doesn't need any record context (e.g., generate a report)
- * **Single**: Use when you want to process each selected record independently (e.g., send individual emails)
- * **Bulk**: Use when you need to process records together or optimize credit usage (requires Iterator action)
+ * **Global**:ワークフローがレコードのコンテキストを必要としない場合に使用します(例:レポートの生成)
+ * **Single**:選択した各レコードを個別に処理したい場合に使用します(例:個別メールの送信)
+ * **Bulk**:レコードをまとめて処理する必要がある場合、またはクレジットの使用を最適化したい場合に使用します(Iterator アクションが必要)
- See [Workflow Triggers](/l/ja/user-guide/workflows/capabilities/workflow-triggers) for details.
+ 詳細は[ワークフローのトリガー](/l/ja/user-guide/workflows/capabilities/workflow-triggers)を参照してください。
-
- An explicit If/Else node is not yet available but is on our roadmap.
+
+ 明示的な If/Else ノードはまだ利用できませんが、ロードマップに含まれています。
- **Current workaround**: Create multiple branches from your step, each starting with a **Filter** action:
+ **現在の回避策**:ステップから複数のブランチを作成し、それぞれを **Filter** アクションで開始します:
```
Step 1
@@ -52,203 +52,203 @@ description: Frequently asked questions about workflows in Twenty.
└── Branch B: Filter (condition = false) → Actions...
```
- Only the branch where the filter condition passes will execute its subsequent actions.
+ フィルター条件を満たしたブランチのみが、その後のアクションを実行します。
- See [How to Use Branches](/l/ja/user-guide/workflows/capabilities/workflow-branches) for a step-by-step guide.
+ 手順については[ブランチの使い方](/l/ja/user-guide/workflows/capabilities/workflow-branches)を参照してください。
-
- **Yes**, branches run in parallel by default.
+
+ **はい**、ブランチは既定で並行実行されます。
- If you want only one branch to execute:
+ どちらか一方のブランチのみを実行したい場合:
- * Add a **Filter** action at the start of each branch
- * Set opposite conditions (e.g., Branch A: status = "Open", Branch B: status ≠ "Open")
+ * 各ブランチの先頭に **Filter** アクションを追加します
+ * 互いに排他的な条件を設定します(例:ブランチA:status = "Open"、ブランチB:status ≠ "Open")
- Branches that fail their filter condition stop executing, while others continue.
+ フィルター条件を満たさないブランチは実行を停止し、他のブランチは継続します。
-
- **Yes**. After your parallel branches complete, you can add a step that both branches connect to.
+
+ **はい**。 並行ブランチの実行が完了した後、両方のブランチが接続するステップを追加できます。
- In the workflow editor:
+ ワークフローエディタで:
- 1. Complete your branched actions
- 2. Add a new step after the branches
- 3. Drag connections from the end of each branch to this new step
+ 1. 分岐したアクションを完了する
+ 2. ブランチの後に新しいステップを追加する
+ 3. 各ブランチの終端からこの新しいステップに接続をドラッグする
- The merged step will execute after all connected branches complete.
+ すべての接続されたブランチが完了すると、マージされたステップが実行されます。
-
- **Search Records returns a maximum of 200 records.**
+
+ **Search Records は最大 200 件のレコードを返します。**
- If you need to process more:
+ より多くを処理する必要がある場合:
- * Add more specific filters to reduce results
- * Use scheduled workflows to process in batches
- * Consider using the API for bulk operations
+ * 結果を絞り込むために、より具体的なフィルターを追加する
+ * スケジュールされたワークフローを使用してバッチ処理する
+ * 一括処理には API の使用を検討する
- For most workflows, 200 records is sufficient. If you regularly hit this limit, consider restructuring your automation.
+ ほとんどのワークフローでは、200 件のレコードで十分です。 この上限に頻繁に達する場合は、自動化の構成を見直すことを検討してください。
-
- **Not yet.** CC and BCC fields for the Send Email action are on our roadmap.
+
+ **まだできません。** Send Email アクションでの CC と BCC フィールドはロードマップにあります。
- **Current workaround**: Add multiple Send Email actions to send to additional recipients, or use an HTTP Request to send via an external email service that supports CC.
+ **現在の回避策**:追加の受信者に送信するために複数の Send Email アクションを追加するか、CC に対応した外部のメールサービス経由で送信するために HTTP Request を使用します。
-
- Every action produces output data that can be used in subsequent steps.
+
+ 各アクションは、後続のステップで使用できる出力データを生成します。
- **To reference previous step data**:
+ **前のステップのデータを参照するには**:
- * Use the variable picker when configuring a field
- * Or type `{{stepName.fieldName}}` directly
+ * フィールドを設定する際に変数ピッカーを使用する
+ * または `{{stepName.fieldName}}` を直接入力する
- **Examples**:
+ **例**:
- * Trigger data: `{{trigger.object.email}}`
- * Search results: `{{searchRecords[0].name}}`
- * Code output: `{{code.calculatedValue}}`
+ * トリガーデータ:`{{trigger.object.email}}`
+ * 検索結果:`{{searchRecords[0].name}}`
+ * コードの出力:`{{code.calculatedValue}}`
- Hover over any field in the action configuration to see available variables from previous steps.
+ アクション設定内の任意のフィールドにカーソルを合わせると、前のステップから利用できる変数が表示されます。
-
- **Iterator requires an array input.** Common issues:
+
+ **Iterator は配列入力が必要です。** よくある問題:
- 1. **Input is not an array**: Ensure you're passing results from Search Records or another action that returns an array
- 2. **Array is empty**: Add a filter before Iterator to check `{{searchRecords.length}} > 0`
- 3. **Wrong variable selected**: Make sure you select the array itself, not a single record
+ 1. **入力が配列ではない**:Search Records など配列を返すアクションの結果を渡していることを確認してください
+ 2. **配列が空**:Iterator の前にフィルターを追加し、`{{searchRecords.length}} > 0` を確認してください
+ 3. **誤った変数を選択**:単一レコードではなく、配列そのものを選択していることを確認してください
- **Correct setup**:
+ **正しい設定**:
- 1. Search Records (returns array)
- 2. Filter: length > 0
- 3. Iterator: select `{{searchRecords}}`
- 4. Actions inside iterator use `{{iterator.currentItem.fieldName}}`
+ 1. Search Records(配列を返す)
+ 2. Filter:length > 0
+ 3. Iterator:`{{searchRecords}}` を選択
+ 4. Iterator 内のアクションでは `{{iterator.currentItem.fieldName}}` を使用する
-
- Code actions (serverless functions) have a **default timeout of 5 minutes** (300 seconds).
+
+ Code アクション(サーバーレス関数)の**既定のタイムアウトは 5 分**(300 秒)です。
- The maximum configurable timeout is **15 minutes** (900 seconds).
+ 設定可能な最大タイムアウトは**15 分**(900 秒)です。
- If your code exceeds this limit, the action will fail with a timeout error.
+ コードがこの制限を超えると、アクションはタイムアウトエラーで失敗します。
- **Tips to avoid timeouts**:
+ **タイムアウトを回避するためのヒント**:
- * Break large operations into smaller chunks using Iterator
- * Avoid heavy computations; use external services via HTTP Request for intensive processing
- * Optimize your code to reduce execution time
- * If you need longer processing, consider using scheduled workflows that process data in batches
+ * 大きな処理は Iterator を使用して小さなチャンクに分割する
+ * 重い計算は避け、集中的な処理が必要な場合は HTTP Request を介して外部サービスを使用する
+ * コードを最適化して実行時間を短縮する
+ * より長時間の処理が必要な場合は、データをバッチ処理するスケジュールされたワークフローの使用を検討する
-
- Workflow runs show the execution history and help you debug issues.
+
+ ワークフローの実行履歴は、実行の経過を表示し、問題のデバッグに役立ちます。
- **Access runs**:
+ **アクセス方法**:
- * In workflow editor → **Runs** panel on the right
- * Or go to **Workflow Runs** in the sidebar
+ * ワークフローエディタ → 右側の **Runs** パネル
+ * またはサイドバーの **Workflow Runs** に移動
- **Understanding a run**:
+ **実行の見方**:
- * **Status**: Running, Completed, Failed, Waiting
- * **Steps**: See which steps executed and their output
- * **Errors**: Click failed steps to see error messages
- * **Data**: View input/output data at each step
+ * **ステータス**:Running、Completed、Failed、Waiting
+ * **ステップ**:どのステップが実行され、どのような出力だったかを確認
+ * **エラー**:失敗したステップをクリックしてエラーメッセージを確認
+ * **データ**:各ステップの入力/出力データを表示
- See [Workflow Runs](/l/ja/user-guide/workflows/capabilities/workflow-runs) for details.
+ 詳細は[ワークフローの実行](/l/ja/user-guide/workflows/capabilities/workflow-runs)を参照してください。
-
- Workflow runs might be failing immediately due to rate limits.
+
+ ワークフローの実行が、レート制限により即時に失敗している可能性があります。
- **Hard limit: 5,000 runs per hour per workspace.**
+ **ハードリミット:ワークスペースあたり 1 時間に 5,000 回の実行。**
- If you exceed this limit, workflows are immediately marked as failed and won't appear in your runs list as expected.
+ この制限を超えると、ワークフローは即座に失敗としてマークされ、実行リストに期待どおり表示されません。
- **Common scenarios that hit this limit**:
+ **この制限に達しがちな一般的なケース**:
- * Selecting more than 5,000 records with a Single manual trigger
- * Multiple workflows running simultaneously across your workspace
- * High-frequency automated triggers (e.g., Record Updated on a busy object)
+ * Single の手動トリガーで 5,000 件を超えるレコードを選択すること
+ * ワークスペース全体で同時に複数のワークフローが実行されていること
+ * 高頻度の自動トリガー(例:更新頻度の高いオブジェクトでの Record Updated)
- **Solutions**:
+ **解決策**:
- * Use **Bulk** triggers instead of Single to process many records in one run
- * Space out large batch operations
- * Use filters to reduce trigger frequency
- * Schedule heavy workflows during off-peak hours
+ * 多数のレコードを 1 回の実行で処理するには、Single ではなく**Bulk** トリガーを使用する
+ * 大規模なバッチ処理の間隔を空ける
+ * フィルターを使用してトリガーの頻度を下げる
+ * 負荷の高いワークフローは閑散時間帯にスケジュールする
-
- Twenty has two rate limits to ensure system stability:
+
+ Twenty では、システムの安定性を確保するため 2 種類のレート制限があります:
- | Limit | Value | Behavior |
- | ----- | ----- | -------- |
+ | 制限 | 値 | 動作 |
+ | -- | - | -- |
- \| **Soft limit** | 100 runs/minute | Runs queue in "Not Started" status, processed gradually |
- \| **Hard limit** | 5,000 runs/hour | Runs immediately fail |
+ \| **Soft limit** | 1 分あたり 100 実行 | "Not Started" ステータスでキューに入り、徐々に処理される |
+ \| **Hard limit** | 1 時間あたり 5,000 実行 | 実行は即時に失敗する |
- **Soft limit (100/min)**: Your workflows won't fail—they just wait in the queue and are processed over time. You can trigger more than 100 records; execution will be slower.
+ **ソフトリミット(100/分)**:ワークフローは失敗しません。キューで待機し、時間をかけて処理されます。 100 件を超えるレコードをトリガーしても構いませんが、実行は遅くなります。
- **Hard limit (5,000/hr)**: This applies to your entire workspace. If all your workflows combined exceed 5,000 runs in an hour, additional runs will fail immediately.
+ **ハードリミット(5,000/時)**:これはワークスペース全体に適用されます。 すべてのワークフローの合計が 1 時間に 5,000 回の実行を超えると、追加の実行は即時に失敗します。
- **Tips to stay within limits**:
+ **制限内に収めるためのヒント**:
- * Use Bulk triggers with Iterator instead of Single triggers for large batches
- * Combine related automations into fewer workflows
- * Use scheduled workflows to spread load over time
+ * 大規模バッチには Single トリガーではなく、Iterator と併用した Bulk トリガーを使用する
+ * 関連する自動化をまとめて、ワークフローの数を減らす
+ * スケジュールされたワークフローを使用して負荷を時間的に分散する
-
- **No, there is no automatic retry functionality at the moment.**
+
+ **いいえ、現時点では自動再試行機能はありません。**
- If a workflow run fails, you'll need to:
+ ワークフロー実行が失敗した場合は、次を行います:
- 1. Review the error in **Settings → Workflows → [Your Workflow] → Runs**
- 2. Fix the issue (data, configuration, or external service)
- 3. Manually trigger the workflow again on the affected record(s)
+ 1. **Settings → Workflows → [Your Workflow] → Runs** でエラーを確認する
+ 2. 問題を修正する(データ、設定、または外部サービス)
+ 3. 影響を受けたレコードに対して、ワークフローを手動で再度トリガーする
- **Tips to reduce failures**:
+ **失敗を減らすためのヒント**:
- * Add **Filter** nodes to validate data before actions
- * Use **Search Records** to check if related records exist
- * Test thoroughly with a few records before bulk operations
+ * アクションの前にデータを検証するため、**Filter** ノードを追加する
+ * **Search Records** を使用して、関連レコードが存在するか確認する
+ * 一括処理の前に、少数のレコードで十分にテストする
- Automatic retry functionality is on our roadmap for a future release.
+ 自動再試行機能は、今後のリリースに向けたロードマップに含まれています。
-
- **Yes, if your workflows are triggered by record creation or updates.**
+
+ **はい。ワークフローがレコードの作成または更新でトリガーされる場合は無効化してください。**
- When you import data via CSV, each record created or updated can trigger workflows. A large import (thousands of records) could:
+ CSV でデータをインポートすると、作成または更新された各レコードがワークフローをトリガーする可能性があります。 大規模なインポート(数千件のレコード)は次の事態を招く可能性があります:
- * Hit the 5,000 runs/hour limit
- * Consume significant workflow credits
- * Send unexpected emails or notifications
- * Create duplicate tasks or records
+ * 5,000 実行/時の制限に達する
+ * ワークフロークレジットを大量に消費する
+ * 想定外のメールや通知を送信する
+ * 重複するタスクやレコードを作成する
- **Before a mass import**:
+ **一括インポートの前に**:
- 1. Go to **Settings → Workflows**
- 2. Identify workflows triggered by the object you're importing
- 3. **Deactivate** them temporarily
- 4. Run your CSV import
- 5. **Reactivate** the workflows when done
+ 1. **Settings → Workflows** に移動する
+ 2. インポート対象のオブジェクトでトリガーされるワークフローを特定する
+ 3. 一時的に**無効化**する
+ 4. CSV インポートを実行する
+ 5. 完了したらワークフローを**再有効化**する
- **Alternative**: If you need the workflows to run on imported data, import in smaller batches to stay within rate limits.
+ **代替案**:インポートしたデータでワークフローを実行する必要がある場合は、レート制限内に収めるため小さなバッチでインポートします。
-
- If your workflow canvas looks messy with nodes scattered around, you can automatically organize it:
+
+ ワークフローのキャンバスでノードが散らばって見づらい場合、自動的に整理できます:
- 1. Right-click anywhere on the workflow canvas
- 2. Click **Tidy up workflow**
+ 1. ワークフローのキャンバス上の任意の場所を右クリックする
+ 2. **Tidy up workflow** をクリックする
- This will automatically rearrange all nodes into a clean, organized layout.
+ これにより、すべてのノードが自動的に整理され、見やすいレイアウトに再配置されます。
diff --git a/packages/twenty-docs/l/ja/user-guide/workflows/overview.mdx b/packages/twenty-docs/l/ja/user-guide/workflows/overview.mdx
index ffea08eb23..89413c131f 100644
--- a/packages/twenty-docs/l/ja/user-guide/workflows/overview.mdx
+++ b/packages/twenty-docs/l/ja/user-guide/workflows/overview.mdx
@@ -1,80 +1,80 @@
---
-title: Workflows
-description: Learn how to build automations in Twenty.
+title: ワークフロー
+description: Twenty で自動化を構築する方法を学びましょう。
image: /images/user-guide/workflows/workflow.png
---
-
+
-## Why Workflows Matter
+## ワークフローが重要な理由
-Twenty was built to bring maximum flexibility to its users. Rather than forcing you to adapt your business processes to rigid, pre-built features, workflows enable you to build automations that create the CRM that best supports your unique business use cases.
+Twentyはユーザーに最大限の柔軟性を提供するために作られました。 Twentyはユーザーに最大限の柔軟性を提供するために作られました。 ビジネスプロセスを堅苦しい既成の機能に適応させるのではなく、ワークフローは自動化を構築して、あなたの独自のビジネスユースケースを最大限にサポートするCRMを作成します。
-Workflows are Twenty's in-app feature for building these automations. They give you the building blocks to create exactly what your business needs, when it needs it.
+ワークフローはこれらの自動化を作るためのTwentyのアプリケーション内機能です。 必要な時に必要なものを正確に作成するための構成要素を提供します。 必要な時に必要なものを正確に作成するための構成要素を提供します。 必要な時に必要なものを正確に作成するための構成要素を提供します。
-## What can I do with workflows?
+## ワークフローで何ができますか?
-We recommend building automations for two main purposes:
+主に2つの目的のために自動化を構築することをお勧めします。
-1. **Internal automations to facilitate your team's day-to-day**: Reduce the amount of manual entries and repetitive tasks that slow down your team.
-2. **Bring data in and out of Twenty**: Connect Twenty via API calls and webhooks to your database and other tools.
+1. **チームの日常を効率化する社内自動化**: 手動エントリーやチームの足を引っ張る反復作業を減らします。
+2. **データの入出力をTwentyで行う**: APIコールやWebhookを通じてデータベースや他のツールとTwentyを接続します。
-## Building Your First Workflow
+## 最初のワークフローの作成
-### Step 1: Create a New Workflow
+### ステップ 1: 新しいワークフローを作成
-1. Go to **Workflows** accessible below the other objects
-2. Click **+ New Record**
-3. Give your workflow a name
+1. 他のオブジェクトの下にある **Workflows** に移動します
+2. 「**+ New Record**」をクリックします
+3. ワークフローに名前を付けます
-### Step 2: Add a Trigger
+### ステップ 2: トリガーを追加
-Every workflow starts with a trigger. Choose from:
+すべてのワークフローはトリガーから始まります。 以下から選択します:
-* **Record events**: When a record is created, updated, or deleted
-* **Schedule**: Run at specific times (daily, weekly, etc.)
-* **Manual**: Triggered by a user action
-* **Webhook**: Triggered by a webhook
+* **Record events**: レコードが作成、更新、または削除されたとき
+* **Schedule**: 指定した時間に実行(毎日、毎週など)
+* **Manual**: ユーザー操作によってトリガーされます
+* **Webhook**: Webhook によってトリガーされます
-### Step 3: Add Actions
+### ステップ 3: アクションを追加
-After your trigger, add one or more actions:
+トリガーの後に、1 つ以上のアクションを追加します:
-* **Create Record**: Add new records to any object
-* **Update Record**: Modify existing record data
-* **Delete Record**: Remove records from objects
-* **Search Records**: Find records matching criteria
-* **Upsert Record**: Create or update based on matching criteria
-* **Iterator**: Loop through arrays of records
-* **Filter**: Control which records proceed
-* **Delay**: Wait before continuing (duration or scheduled date)
-* **Send Email**: Send emails via your connected account
-* **Code**: Run custom JavaScript
-* **HTTP Request**: Call external APIs
-* **Form**: Get inputs from users within Twenty UI at the time of execution
-* **AI Agent** (Coming soon): Run intelligent AI tasks
+* **Create Record**: 任意のオブジェクトに新しいレコードを追加
+* **Update Record**: 既存のレコードデータを変更
+* **Delete Record**: オブジェクトからレコードを削除
+* **Search Records**: 条件に一致するレコードを見つける
+* **Upsert Record**: 一致する条件に基づいて作成または更新する
+* **Iterator**: レコードの配列をループ処理する
+* **Filter**: 次に進むレコードを制御する
+* **Delay**: 続行する前に待機する(期間または指定日時)
+* **Send Email**: 接続済みアカウント経由でメールを送信する
+* **Code**: カスタム JavaScript を実行する
+* **HTTP Request**: 外部 API を呼び出す
+* **Form**: 実行時に Twenty の UI でユーザーから入力を取得する
+* **AI Agent**(近日公開): インテリジェントな AI タスクを実行する
-### Step 4: Test and Activate
+### ステップ 4: テストして有効化
-1. Use the **Test** button to run your workflow with sample data
-2. Review the results to ensure it works as expected
-3. Toggle the workflow **Active** when ready
+1. **Test** ボタンを使って、サンプルデータでワークフローを実行します
+2. 結果を確認し、期待どおりに動作することを確かめます
+3. 準備ができたら、ワークフローを **Active** に切り替えます
-## Workflow Best Practices
+## ワークフローのベストプラクティス
-* **Edit step names**: Rename your workflow steps to clearly describe what each one does. This helps with maintenance and makes it easier to hand off to coworkers
-* **Leverage previous step data**: You can use fields from records returned by any previous step in your workflow
-* **Start simple**: Begin with basic workflows and add complexity over time as you become more comfortable with the system
-* **Plan before building**: Map out your workflow logic before you start building to avoid getting stuck halfway through
+* **ステップ名を編集する**:各ステップが何をするかを明確に記述するためにワークフローのステップ名を変更します。 これはメンテナンスに役立ち、同僚への引き継ぎが容易になります。 これはメンテナンスに役立ち、同僚への引き継ぎが容易になります。 これはメンテナンスに役立ち、同僚への引き継ぎが容易になります。
+* **前のステップのデータを活用する**:ワークフローの前の任意のステップによって返されたレコードのフィールドを使用できます。
+* **簡単に始める**:基本的なワークフローから始め、システムに慣れるにつれて複雑さを増していきます。
+* **構築する前に計画する**:途中で行き詰まらないように、ワークフローロジックを最初に計画します。
-## Next Steps
+## 次のステップ
-* [Workflow Triggers](/l/ja/user-guide/workflows/capabilities/workflow-triggers)
-* [Workflow Actions](/l/ja/user-guide/workflows/capabilities/workflow-actions)
-* [CRM Automations](/l/ja/user-guide/workflows/how-tos/crm-automations/closed-won-automations)
+* [ワークフローのトリガー](/l/ja/user-guide/workflows/capabilities/workflow-triggers)
+* [ワークフローのアクション](/l/ja/user-guide/workflows/capabilities/workflow-actions)
+* [CRM の自動化](/l/ja/user-guide/workflows/how-tos/crm-automations/closed-won-automations)
diff --git a/packages/twenty-docs/l/ko/developers/contribute/capabilities/backend-development/best-practices-server.mdx b/packages/twenty-docs/l/ko/developers/contribute/capabilities/backend-development/best-practices-server.mdx
index d8f5c5ea7c..6338a8e808 100644
--- a/packages/twenty-docs/l/ko/developers/contribute/capabilities/backend-development/best-practices-server.mdx
+++ b/packages/twenty-docs/l/ko/developers/contribute/capabilities/backend-development/best-practices-server.mdx
@@ -1,22 +1,22 @@
---
-title: Best Practices
+title: 모범 사례
---
-This document outlines the best practices you should follow when working on the backend.
+이 문서는 백엔드 작업 시 따를 모범 사례를 설명합니다.
-## Follow a modular approach
+## 모듈형 접근법 따르기
-The backend follows a modular approach, which is a fundamental principle when working with NestJS. Make sure you break down your code into reusable modules to maintain a clean and organized codebase.
-Each module should encapsulate a particular feature or functionality and have a well-defined scope. This modular approach enables clear separation of concerns and removes unnecessary complexities.
+백엔드는 NestJS로 작업할 때 기본 원칙 중 하나인 모듈형 접근법을 따릅니다. 코드베이스를 깔끔하고 체계적으로 유지하려면 코드를 재사용 가능한 모듈로 분리하십시오.
+각 모듈은 특정 기능을 캡슐화하고 명확하게 정의된 범위를 가져야 합니다. 이 모듈형 접근법은 관심사의 명확한 분리를 가능하게 하고 불필요한 복잡성을 제거합니다.
-## Expose services to use in modules
+## 모듈에서 사용할 서비스를 노출시키십시오.
-Always create services that have a clear and single responsibility, which enhances code readability and maintainability. Name the services descriptively and consistently.
+항상 명확하고 단일한 책임을 가진 서비스를 생성하여 코드 가독성과 유지보수성을 향상시킵니다. 서비스의 이름을 일관되게 설명적으로 지정하십시오.
-You should also expose services that you want to use in other modules. Exposing services to other modules is possible through NestJS's powerful dependency injection system, and promotes loose coupling between components.
+다른 모듈에서 사용하고자 하는 서비스를 노출해야 합니다. 다른 모듈에 서비스를 노출하는 것은 NestJS의 강력한 의존성 주입 시스템을 통해 가능하며, 구성 요소 간의 느슨한 결합을 촉진합니다.
-## Avoid using `any` type
+## `any` 타입 사용 피하기
-When you declare a variable as `any`, TypeScript's type checker doesn't perform any type checking, making it possible to assign any type of values to the variable. TypeScript uses type inference to determine the type of variable based on the value. By declaring it as `any`, TypeScript can no longer infer the type. This makes it hard to catch type-related errors during development, leading to runtime errors and makes the code less maintainable, less reliable, and harder to understand for others.
+변수를 `any`로 선언하면 TypeScript의 타입 검사자가 타입 검사를 수행하지 않으므로 변수에 모든 유형의 값을 할당할 수 있게 됩니다. TypeScript는 값에 따라 변수의 타입을 추론하기 위해 타입 추론을 사용합니다. 이를 `any`로 선언하면 TypeScript는 더 이상 타입을 추론할 수 없습니다. 이는 개발 중 타입 관련 오류를 잡기 어렵게 만들어 런타임 오류로 이어지고, 코드의 유지보수성과 신뢰성이 떨어지며, 다른 사람이 이해하기도 어려워집니다.
-This is why everything should have a type. So if you create a new object with a first name and last name, you should create an interface or type that contains a first name and last name that defines the shape of the object you are manipulating.
+이것이 모든 것이 타입을 가져야 하는 이유입니다. 따라서 이름(first name)과 성(last name)을 가진 새 개체를 만든다면, 다루는 개체의 구조를 정의하는 이름과 성을 포함한 인터페이스나 타입을 만들어야 합니다.
diff --git a/packages/twenty-docs/l/ko/developers/contribute/capabilities/backend-development/custom-objects.mdx b/packages/twenty-docs/l/ko/developers/contribute/capabilities/backend-development/custom-objects.mdx
index 7feec7a639..9306ec141b 100644
--- a/packages/twenty-docs/l/ko/developers/contribute/capabilities/backend-development/custom-objects.mdx
+++ b/packages/twenty-docs/l/ko/developers/contribute/capabilities/backend-development/custom-objects.mdx
@@ -1,39 +1,39 @@
---
-title: Custom Objects
+title: 사용자 지정 개체
---
-Objects are structures that allow you to store data (records, attributes, and values) specific to an organization. Twenty provides both standard and custom objects.
+개체는 조직 고유의 데이터(레코드, 속성 및 값)를 저장할 수 있는 구조입니다. Twenty에는 표준 개체와 사용자 지정 개체가 모두 제공됩니다.
-Standard objects are in-built objects with a set of attributes available for all users. Examples of standard objects in Twenty include Company and Person. Standard objects have standard fields that are also available for all Twenty users, like Company.displayName.
+표준 개체는 모든 사용자에게 제공되는 속성이 있는 내장 개체입니다. Twenty의 표준 개체 예시로는 Company(회사)와 Person(사람)이 있습니다. 표준 개체는 모든 Twenty 사용자에게 제공되는 표준 필드를 가지고 있으며, 예를 들어 Company.displayName과 같습니다.
-Custom objects are objects that you can create to store information that is unique to your organization. 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.
+사용자 지정 개체는 조직 고유의 정보를 저장하기 위해 생성할 수 있는 개체입니다. 이들은 내장되어 있지 않으며, 워크스페이스의 구성원이 표준 개체로는 적합하지 않은 정보를 보관하기 위해 사용자 지정 개체를 생성하고 사용자 정의할 수 있습니다.
-## High-level schema
+## 고급 스키마
-
+
-## How it works
+## 작동 원리
-Custom objects come from metadata tables that determine the shape, name, and type of the objects. All this information is present in the metadata schema database, consisting of tables:
+사용자 지정 개체는 개체의 형태, 이름 및 유형을 결정하는 메타데이터 테이블에서 비롯됩니다. 이 모든 정보는 테이블로 구성된 메타데이터 스키마 데이터베이스에 있습니다.
-* **DataSource**: Details where the data is present.
-* **Object**: Describes the object and links to a DataSource.
-* **Field**: Outlines an Object's fields and connects to the Object.
+* **DataSource**: 데이터가 존재하는 위치를 설명합니다.
+* **Object**: 개체를 설명하고 DataSource와 연결됩니다.
+* **Field**: 개체의 필드를 설명하고 개체와 연결됩니다.
-To add a custom object, the workspaceMember will query the /metadata API. This updates the metadata accordingly and computes a GraphQL schema based on the metadata, storing it in a GQL cache for later use.
+사용자 지정 개체를 추가하려면 /metadata API를 쿼리하십시오. 이는 메타데이터를 해당 API에 따라 업데이트하고, 메타데이터를 기반으로 GraphQL 스키마를 계산하여 나중에 사용할 수 있도록 GQL 캐시에 저장합니다.
-
+
-To fetch data, the process involves making queries through the /graphql endpoint and passing them through the Query Resolver.
+데이터를 가져오려면 /graphql 엔드포인트를 통해 쿼리를 수행하고 Query Resolver를 통해 전달하는 과정이 포함됩니다.
-
+
diff --git a/packages/twenty-docs/l/ko/developers/contribute/capabilities/backend-development/feature-flags.mdx b/packages/twenty-docs/l/ko/developers/contribute/capabilities/backend-development/feature-flags.mdx
index a261cfec3c..e2667175a9 100644
--- a/packages/twenty-docs/l/ko/developers/contribute/capabilities/backend-development/feature-flags.mdx
+++ b/packages/twenty-docs/l/ko/developers/contribute/capabilities/backend-development/feature-flags.mdx
@@ -1,12 +1,12 @@
---
-title: Feature Flags
+title: 기능 플래그
---
-Feature flags are used to hide experimental features. For Twenty, they are set on workspace level and not on a user level.
+기능 플래그는 실험적 기능을 숨기는 데 사용됩니다. Twenty의 경우, 사용자 수준이 아니라 워크스페이스 수준에서 설정됩니다.
-## Adding a new feature flag
+## 새로운 기능 플래그 추가
-In `FeatureFlagKey.ts` add the feature flag:
+`FeatureFlagKey.ts`에 기능 플래그 추가:
```ts
type FeatureFlagKey =
@@ -14,7 +14,7 @@ type FeatureFlagKey =
| ...;
```
-Also add it to the enum in `feature-flag.entity.ts`:
+또한 `feature-flag.entity.ts`의 열거형에 추가하십시오:
```ts
enum FeatureFlagKeys {
@@ -23,7 +23,7 @@ enum FeatureFlagKeys {
}
```
-To apply a feature flag on a **backend** feature use:
+**백엔드** 기능에 기능 플래그를 적용하려면 다음을 사용하십시오:
```ts
@Gate({
@@ -31,16 +31,16 @@ 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
+## 배포를 위한 기능 플래그 구성
-Change the corresponding record in the Table `core.featureFlag`:
+테이블 `core.featureFlag`의 해당 레코드 변경:
-| id | key | workspaceId | value |
-| ------ | ------------------------ | ----------- | ------ |
-| Random | `IS_FEATURENAME_ENABLED` | WorkspaceID | `true` |
+| id | 키 | workspaceId | 값 |
+| -- | ------------------------ | ----------- | --- |
+| 임의 | `IS_FEATURENAME_ENABLED` | WorkspaceID | `참` |
diff --git a/packages/twenty-docs/l/ko/developers/contribute/capabilities/backend-development/folder-architecture-server.mdx b/packages/twenty-docs/l/ko/developers/contribute/capabilities/backend-development/folder-architecture-server.mdx
index 233d92ac8a..7e9001e731 100644
--- a/packages/twenty-docs/l/ko/developers/contribute/capabilities/backend-development/folder-architecture-server.mdx
+++ b/packages/twenty-docs/l/ko/developers/contribute/capabilities/backend-development/folder-architecture-server.mdx
@@ -1,9 +1,9 @@
---
-title: Folder Architecture
-info: A detailed look into our server folder architecture
+title: 폴더 아키텍처
+info: 서버 폴더 아키텍처에 대한 상세 분석
---
-The backend directory structure is as follows:
+백엔드 디렉토리 구조는 다음과 같습니다:
```
server
@@ -21,37 +21,37 @@ server
└───utils
```
-## Ability
+## 권한
-Defines permissions and includes handlers for each entity.
+각 엔티티에 대한 권한을 정의하고 핸들러를 포함합니다.
-## Decorators
+## 데코레이터
-Defines custom decorators in NestJS for added functionality.
+추가 기능을 위한 NestJS 커스텀 데코레이터를 정의합니다.
-See [custom decorators](https://docs.nestjs.com/custom-decorators) for more details.
+자세한 내용은 [커스텀 데코레이터](https://docs.nestjs.com/custom-decorators)를 참조하세요.
-## Filters
+## 필터
-Includes exception filters to handle exceptions that might occur in GraphQL endpoints.
+GraphQL 엔드포인트에서 발생할 수 있는 예외를 처리하기 위한 예외 필터를 포함합니다.
-## Guards
+## 가드
-See [guards](https://docs.nestjs.com/guards) for more details.
+자세한 내용은 [가드](https://docs.nestjs.com/guards)를 참조하세요.
-## Health
+## 상태
-Includes a publicly available REST API (healthz) that returns a JSON to confirm whether the database is working as expected.
+데이터베이스가 예상대로 작동하는지 확인하기 위해 JSON을 반환하는 공개 API(healthz)를 포함합니다.
-## Metadata
+## 메타데이터
-Defines custom objects and makes available a GraphQL API (graphql/metadata).
+커스텀 객체를 정의하고 GraphQL API (graphql/metadata)를 제공합니다.
-## Workspace
+## 워크스페이스
-Generates and serves custom GraphQL schema based on the metadata.
+메타데이터 기반의 커스텀 GraphQL 스키마를 생성하고 제공합니다.
-### Workspace Directory Structure
+### 워크스페이스 디렉터리 구조
```
workspace
@@ -83,43 +83,43 @@ workspace
└───workspace.factory.ts
```
-The root of the workspace directory includes the `workspace.factory.ts`, a file containing the `createGraphQLSchema` function. This function generates workspace-specific schema by using the metadata to tailor a schema for individual workspaces. By separating the schema and resolver construction, we use the `makeExecutableSchema` function, which combines these discrete elements.
+작업 공간 디렉토리의 루트에는 개별 작업 공간을 위한 스키마를 맞춤화하는 `createGraphQLSchema` 함수가 포함된 `workspace.factory.ts` 파일이 있습니다. 이 함수는 메타데이터를 사용하여 작업 공간별 스키마를 생성합니다. 스키마와 리졸버 구조를 분리하여, 이러한 개별 요소를 결합하는 `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
+### 작업 공간 스키마 빌더
-Generates the GraphQL schema, and includes:
+GraphQL 스키마를 생성하며 다음을 포함합니다:
-#### Factories:
+#### 팩토리:
-Specialised constructors to generate GraphQL-related constructs.
+GraphQL 관련 구성 요소를 생성하는 특수 생성자입니다.
-* The type.factory translates field metadata into GraphQL types using `TypeMapperService`.
-* The type-definition.factory creates GraphQL input or output objects derived from `objectMetadata`.
+* type.factory는 `TypeMapperService`를 사용하여 필드 메타데이터를 GraphQL 타입으로 변환합니다.
+* type-definition.factory는 `objectMetadata`에서 파생된 GraphQL 입력 또는 출력 객체를 만듭니다.
-#### GraphQL Types
+#### GraphQL 타입
-Includes enumerations, inputs, objects, and scalars, and serves as the building blocks for the schema construction.
+열거형, 입력, 객체, 스칼라를 포함하며, 스키마 구축의 기초로 사용됩니다.
-#### Interfaces and Object Definitions
+#### 인터페이스 및 객체 정의
-Contains the blueprints for GraphQL entities, and includes both predefined and custom types like `MONEY` or `URL`.
+GraphQL 엔티티를 위한 청사진을 포함하며, `MONEY`나 `URL`과 같은 사전 정의와 커스텀 타입을 포함합니다.
-#### Services
+#### 서비스
-Contains the service responsible for associating FieldMetadataType with its appropriate GraphQL scalar or query modifiers.
+FieldMetadataType과 적절한 GraphQL 스칼라 또는 쿼리 수정자를 연결하는 서비스가 포함되어 있습니다.
-#### Storage
+#### 저장소
-Includes the `TypeDefinitionsStorage` class that contains reusable type definitions, preventing duplication of GraphQL types.
+GraphQL 타입의 중복을 방지하기 위해 재사용 가능한 타입 정의를 포함하는 `TypeDefinitionsStorage` 클래스를 포함합니다.
-### Workspace Resolver Builder
+### 작업 공간 리졸버 빌더
-Creates resolver functions for querying and mutating the GraphQL schema.
+GraphQL 스키마를 쿼리하고 변경하기 위한 리졸버 함수를 만듭니다.
-Each factory in this directory is responsible for producing a distinct resolver type, such as the `FindManyResolverFactory`, designed for adaptable application across various tables.
+이 디렉토리의 각 팩토리는 다양한 테이블에 걸쳐 적응 가능한 `FindManyResolverFactory`와 같은 명확한 리졸버 타입을 생성할 책임이 있습니다.
-### Workspace Query Runner
+### 작업 공간 쿼리 실행기
-Runs the generated queries on the database and parses the result.
+데이터베이스에서 생성된 쿼리를 실행하고 결과를 구문 분석합니다.
diff --git a/packages/twenty-docs/l/ko/developers/contribute/capabilities/backend-development/queue.mdx b/packages/twenty-docs/l/ko/developers/contribute/capabilities/backend-development/queue.mdx
index 6148c0fbf0..092867892f 100644
--- a/packages/twenty-docs/l/ko/developers/contribute/capabilities/backend-development/queue.mdx
+++ b/packages/twenty-docs/l/ko/developers/contribute/capabilities/backend-development/queue.mdx
@@ -1,20 +1,20 @@
---
-title: Message Queue
+title: 메시지 큐
---
-Queues facilitate async operations to be performed. They can be used for performing background tasks such as sending a welcome email on register.
-Each use case will have its own queue class extended from `MessageQueueServiceBase`.
+큐는 비동기 작업을 수행할 수 있게 합니다. 이들은 회원 가입 시 환영 이메일 보내기와 같은 백그라운드 작업을 수행하는 데 사용될 수 있습니다.
+각 사용 사례는 `MessageQueueServiceBase`로부터 확장된 자체 큐 클래스를 가집니다.
-Currently, we only support `bull-mq`[bull-mq](https://bullmq.io/) as the queue driver.
+현재, 큐 드라이버로 `bull-mq`[bull-mq](https://bullmq.io/)만 지원합니다.
-## Steps to create and use a new queue
+## 새 큐를 생성하고 사용하는 단계
-1. Add a queue name for your new queue under enum `MESSAGE_QUEUES`.
-2. Provide the factory implementation of the queue with the queue name as the dependency token.
-3. Inject the queue that you created in the required module/service with the queue name as the dependency token.
-4. Add worker class with token based injection just like producer.
+1. 새 큐에 대한 큐 이름을 열거형 `MESSAGE_QUEUES`에 추가합니다.
+2. 큐 이름을 종속성 토큰으로 하여 큐의 팩토리 구현을 제공합니다.
+3. 생성한 큐를 큐 이름을 종속성 토큰으로 하여 필요한 모듈/서비스에 주입합니다.
+4. 프로듀서와 마찬가지로 토큰 기반 주입을 사용하는 워커 클래스를 추가합니다.
-### Example usage
+### 사용 예시
```ts
class Resolver {
diff --git a/packages/twenty-docs/l/ko/developers/contribute/capabilities/backend-development/server-commands.mdx b/packages/twenty-docs/l/ko/developers/contribute/capabilities/backend-development/server-commands.mdx
index 6951909788..454b8827d4 100644
--- a/packages/twenty-docs/l/ko/developers/contribute/capabilities/backend-development/server-commands.mdx
+++ b/packages/twenty-docs/l/ko/developers/contribute/capabilities/backend-development/server-commands.mdx
@@ -1,19 +1,19 @@
---
-title: Backend Commands
+title: 백엔드 명령어
---
-## Useful commands
+## 유용한 명령어
-These commands should be executed from packages/twenty-server folder.
-From any other folder you can run `npx nx {command} twenty-server` (or `npx nx run twenty-server:{command}`).
+이 명령어들은 packages/twenty-server 폴더에서 실행되어야 합니다.
+다른 폴더에서 `npx nx {command} twenty-server` (또는 `npx nx run twenty-server:{command}`)를 실행할 수 있습니다.
-### First time setup
+### 최초 설정
```
npx nx database:reset twenty-server # setup the database with dev seeds
```
-### Starting the server
+### 서버 시작
```
npx nx run twenty-server:start
@@ -22,80 +22,79 @@ npx nx run twenty-server:start
### Lint
```
-npx nx run twenty-server:lint # pass --fix to fix lint errors
+npx nx run twenty-server:lint # lint 오류를 수정하려면 --fix를 사용
```
-### Test
+### 테스트
```
npx nx run twenty-server:test:unit # run unit tests
npx nx run twenty-server:test:integration # run integration tests
```
-Note: you can run `npx nx run twenty-server:test:integration:with-db-reset` in case you need to reset the database before running the integration tests.
+참고: 데이터베이스를 재설정한 뒤 통합 테스트를 실행해야 하는 경우 `npx nx run twenty-server:test:integration:with-db-reset`을 실행할 수 있습니다.
-### Resetting the database
+### 데이터베이스 재설정
-If you want to reset and seed the database, you can run the following command:
+데이터베이스를 재설정하고 시드 하려면 다음 명령어를 실행하십시오:
```bash
npx nx run twenty-server:database:reset
```
-### Migrations
+### 마이그레이션
-#### For objects in Core/Metadata schemas (TypeORM)
+#### Core/Metadata 스키마의 객체용 (TypeORM)
```bash
npx nx run twenty-server:typeorm migration:generate src/database/typeorm/core/migrations/nameOfYourMigration -d src/database/typeorm/core/core.datasource.ts
```
-#### For Workspace objects
+#### 워크스페이스 객체용
-There are no migrations files, migration are generated automatically for each workspace,
-stored in the database, and applied with this command
+마이그레이션 파일이 없으며, 각 작업 공간에 대해 자동 생성되고 데이터베이스에 저장되어 이 명령으로 적용됩니다.
```bash
npx nx run twenty-server:command workspace:sync-metadata -f
```
- This will drop the database and re-run the migrations and seed.
+ 이 작업은 데이터베이스를 삭제하고 마이그레이션과 시드를 다시 실행합니다.
- Make sure to back up any data you want to keep before running this command.
+ 이 명령을 실행하기 전에 유지하고 싶은 데이터를 백업하십시오.
-## Tech Stack
+## 기술 스택
-Twenty primarily uses NestJS for the backend.
+Twenty는 주로 NestJS를 백엔드에 사용합니다.
-Prisma was the first ORM we used. But in order to allow users to create custom fields and custom objects, a lower-level made more sense as we need to have fine-grained control. The project now uses TypeORM.
+Prisma가 우리가 처음으로 사용한 ORM이었습니다. 그러나 사용자들이 사용자 지정 필드와 사용자 지정 객체를 만들 수 있도록 하려면 세밀하게 제어할 수 있어야 하므로 더 낮은 수준이 더 합리적이었습니다. 현재 프로젝트는 TypeORM을 사용합니다.
-Here's what the tech stack now looks like.
+다음은 현재 기술 스택의 모습입니다.
-**Core**
+**코어**
* [NestJS](https://nestjs.com/)
* [TypeORM](https://typeorm.io/)
* [GraphQL Yoga](https://the-guild.dev/graphql/yoga-server)
-**Database**
+**데이터베이스**
* [Postgres](https://www.postgresql.org/)
-**Third-party integrations**
+**서드파티 연동**
-* [Sentry](https://sentry.io/welcome/) for tracking bugs
+* 버그 추적을 위한 [Sentry](https://sentry.io/welcome/)
-**Testing**
+**테스트**
* [Jest](https://jestjs.io/)
-**Tooling**
+**도구**
* [Yarn](https://yarnpkg.com/)
* [ESLint](https://eslint.org/)
-**Development**
+**개발**
* [AWS EKS](https://aws.amazon.com/eks/)
diff --git a/packages/twenty-docs/l/ko/developers/contribute/capabilities/backend-development/zapier.mdx b/packages/twenty-docs/l/ko/developers/contribute/capabilities/backend-development/zapier.mdx
index 46bcd563fc..23a71af34b 100644
--- a/packages/twenty-docs/l/ko/developers/contribute/capabilities/backend-development/zapier.mdx
+++ b/packages/twenty-docs/l/ko/developers/contribute/capabilities/backend-development/zapier.mdx
@@ -1,18 +1,18 @@
---
-title: Zapier App
+title: Zapier 앱
---
-Effortlessly sync Twenty with 3000+ apps using [Zapier](https://zapier.com/). Automate tasks, boost productivity, and supercharge your customer relationships!
+[Zapier](https://zapier.com/)을 사용하여 Twenty를 3000개 이상의 앱과 손쉽게 동기화하세요. 작업을 자동화하고 생산성을 높여 고객 관계를 강화하세요!
-## About Zapier
+## Zapier 소개
-Zapier is a tool that allows you to automate workflows by connecting the apps that your team uses every day. The fundamental concept of Zapier is automation workflows, called Zaps, and include triggers and actions.
+Zapier는 팀이 매일 사용하는 앱을 연결하여 워크플로우를 자동화할 수 있게 하는 도구입니다. Zapier의 기본 개념은 자동화 워크플로우인 Zaps이며, 이는 트리거와 액션을 포함합니다.
-You can learn more about how Zapier works [here](https://zapier.com/how-it-works).
+Zapier 작동 방식에 대해 [여기](https://zapier.com/how-it-works)에서 더 알아볼 수 있습니다.
-## Setup
+## 설정
-### Step 1: Install Zapier packages
+### 1단계: Zapier 패키지 설치
```bash
cd packages/twenty-zapier
@@ -20,33 +20,33 @@ cd packages/twenty-zapier
yarn
```
-### Step 2: Login with the CLI
+### 2단계: CLI로 로그인
-Use your Zapier credentials to log in using the CLI:
+Zapier 자격 증명을 사용하여 CLI로 로그인하세요:
```bash
zapier login
```
-### Step 3: Set environment variables
+### 3단계: 환경 변수 설정
-From the `packages/twenty-zapier` folder, run:
+`packages/twenty-zapier` 폴더에서 아래 명령을 실행하세요:
```bash
cp .env.example .env
```
-Run the application locally, go to [http://localhost:3000/settings/api-webhooks](http://localhost:3000/settings/api-webhooks), and generate an API key.
+애플리케이션을 로컬로 실행하고, [http://localhost:3000/settings/api-webhooks](http://localhost:3000/settings/api-webhooks)에 접속하여 API 키를 생성하세요.
-Replace the **YOUR_API_KEY** value in the `.env` file with the API key you just generated.
+.env 파일의 **YOUR_API_KEY** 값을 방금 생성한 API 키로 바꾸세요.
-## Development
+## 개발
- Make sure to run `yarn build` before any `zapier` command.
+ `zapier` 명령어를 실행하기 전에 반드시 `yarn build`를 실행하세요.
-### Test
+### 테스트
```bash
yarn test
@@ -58,25 +58,25 @@ yarn test
yarn format
```
-### Watch and compile as you edit code
+### 코드를 편집할 때 감시 및 컴파일
```bash
yarn watch
```
-### Validate your Zapier app
+### Zapier 앱 검증
```bash
yarn validate
```
-### Deploy your Zapier app
+### Zapier 앱 배포
```bash
yarn deploy
```
-### List all Zapier CLI commands
+### 모든 Zapier CLI 명령 목록
```bash
zapier
diff --git a/packages/twenty-docs/l/ko/developers/contribute/capabilities/bug-and-requests.mdx b/packages/twenty-docs/l/ko/developers/contribute/capabilities/bug-and-requests.mdx
index 4db64b703d..8fc252ed8f 100644
--- a/packages/twenty-docs/l/ko/developers/contribute/capabilities/bug-and-requests.mdx
+++ b/packages/twenty-docs/l/ko/developers/contribute/capabilities/bug-and-requests.mdx
@@ -1,78 +1,78 @@
---
-title: Bugs, Requests & Pull Requests
-info: Report issues, request features, and contribute code
+title: 버그, 요청 및 Pull Request
+info: 이슈를 보고하고, 기능을 요청하고, 코드에 기여하세요
---
-## Reporting Bugs
+## 버그 신고
-To report a bug, please [create an issue on GitHub](https://github.com/twentyhq/twenty/issues/new).
+버그를 보고하려면 [GitHub에서 이슈를 생성해 주세요](https://github.com/twentyhq/twenty/issues/new).
-You can also ask for help on [Discord](https://discord.gg/cx5n4Jzs57).
+[Discord](https://discord.gg/cx5n4Jzs57)에서 도움을 요청할 수도 있습니다.
-## Feature Requests
+## 기능 요청
-If you're not sure if it's a bug, and you feel it's closer to a feature request, then you should probably [open a discussion instead](https://github.com/twentyhq/twenty/discussions/new).
+버그인지 확신이 없고 기능 요청에 더 가깝다고 느끼신다면, 대신 [토론을 열어 주세요](https://github.com/twentyhq/twenty/discussions/new).
-## Submit a Pull Request
+## Pull Request 제출하기
-Contributing code to Twenty starts with a pull request (PR).
+Twenty에 코드로 기여하는 첫 단계는 Pull Request(PR)입니다.
-### Before You Start
+### 시작하기 전에
-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. GitHub에서 PR을 열어 주세요
+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/ko/developers/contribute/capabilities/frontend-development/best-practices-front.mdx b/packages/twenty-docs/l/ko/developers/contribute/capabilities/frontend-development/best-practices-front.mdx
index 187c2d848c..baba658706 100644
--- a/packages/twenty-docs/l/ko/developers/contribute/capabilities/frontend-development/best-practices-front.mdx
+++ b/packages/twenty-docs/l/ko/developers/contribute/capabilities/frontend-development/best-practices-front.mdx
@@ -1,19 +1,19 @@
---
-title: Best Practices
+title: 모범 사례
---
-This document outlines the best practices you should follow when working on the frontend.
+이 문서는 프론트엔드 작업 시 따라야 할 모범 사례를 설명합니다.
-## State management
+## 상태 관리
-React and Recoil handle state management in the codebase.
+React와 Recoil은 코드베이스에서 상태 관리를 처리합니다.
-### Use `useRecoilState` to store state
+### `useRecoilState`로 상태 저장하기
-It's good practice to create as many atoms as you need to store your state.
+상태를 저장하는 데 필요한 만큼의 atom을 만드는 것이 좋은 습관입니다.
- It's better to use extra atoms than trying to be too concise with props drilling.
+ 프롭스 드릴링에 너무 많은 노력을 기울이기보다는 추가 아톰을 사용하는 것이 좋습니다.
```tsx
@@ -36,31 +36,31 @@ export const MyComponent = () => {
}
```
-### Do not use `useRef` to store state
+### 상태 저장에 `useRef`를 사용하지 마십시오
-Avoid using `useRef` to store state.
+상태 저장에 `useRef`를 사용하지 않도록 주의하십시오.
If you want to store state, you should use `useState` or `useRecoilState`.
-See [how to manage re-renders](#managing-re-renders) if you feel like you need `useRef` to prevent some re-renders from happening.
+일부 리렌더링을 방지하기 위해 `useRef`가 필요하다고 느낄 경우 [리렌더링 관리 방법](#managing-re-renders)을 참조하십시오.
-## Managing re-renders
+## 리렌더링 관리
-Re-renders can be hard to manage in React.
+리액트에서 리렌더링은 관리하기 어려울 수 있습니다.
-Here are some rules to follow to avoid unnecessary re-renders.
+불필요한 리렌더링을 피하기 위해 따라야 할 몇 가지 규칙이 있습니다.
-Keep in mind that you can **always** avoid re-renders by understanding their cause.
+리렌더링의 원인을 이해하면 항상 리렌더링을 피할 수 있다는 점을 명심하십시오.
-### Work at the root level
+### 루트 레벨에서 작업하기
-Avoiding re-renders in new features is now made easy by eliminating them at the root level.
+새 기능에서 리렌더링을 피하는 것은 이제 루트 수준에서 문제를 제거함으로써 쉬워졌습니다.
The `PageChangeEffect` sidecar component contains just one `useEffect` that holds all the logic to execute on a page change.
-That way you know that there's just one place that can trigger a re-render.
+그렇게 하면 리렌더링을 트리거할 수 있는 곳이 오직 한 곳뿐이라는 것을 알 수 있습니다.
-### Always think twice before adding `useEffect` in your codebase
+### 코드베이스에 `useEffect`를 추가하기 전에 항상 신중히 고려하세요.
Re-renders are often caused by unnecessary `useEffect`.
@@ -68,13 +68,13 @@ You should think whether you need `useEffect`, or if you can move the logic in a
You'll find it generally easy to move the logic in a `handleClick` or `handleChange` function.
-You can also find them in libraries like Apollo: `onCompleted`, `onError`, etc.
+Apollo와 같은 라이브러리에서 `onCompleted`, `onError` 등을 찾을 수 있습니다.
### Use a sibling component to extract `useEffect` or data fetching logic
If you feel like you need to add a `useEffect` in your root component, you should consider extracting it in a sidecar component.
-You can apply the same for data fetching logic, with Apollo hooks.
+Apollo 훅을 사용하여 데이터 페칭 로직에 동일한 규칙을 적용할 수 있습니다.
```tsx
// ❌ Bad, will cause re-renders even if data is not changing,
@@ -129,43 +129,43 @@ export const App = () => (
);
```
-### Use recoil family states and recoil family selectors
+### Recoil 가족 상태 및 Recoil 가족 선택자 사용하기
-Recoil family states and selectors are a great way to avoid re-renders.
+Recoil 가족 상태와 선택자는 리렌더링을 피하기 위한 훌륭한 방법입니다.
-They are useful when you need to store a list of items.
+항목 목록을 저장해야 할 때 유용합니다.
-### You shouldn't use `React.memo(MyComponent)`
+### `React.memo(MyComponent)`를 사용하지 마십시오
-Avoid using `React.memo()` because it does not solve the cause of the re-render, but instead breaks the re-render chain, which can lead to unexpected behavior and make the code very hard to refactor.
+`React.memo()`를 사용하지 마십시오. 이것은 리렌더링의 원인을 해결하지 않으며, 대신 리렌더 체인을 끊어 의도치 않은 동작을 유발하고 코드 리팩토링을 매우 어렵게 만듭니다.
-### Limit `useCallback` or `useMemo` usage
+### `useCallback` 또는 `useMemo` 사용 제한
-They are often not necessary and will make the code harder to read and maintain for a gain of performance that is unnoticeable.
+이들은 종종 필요하지 않으며, 성능 향상을 위해 코드 읽기와 유지보수를 어렵게 만듭니다.
## Console.logs
-`console.log` statements are valuable during development, offering real-time insights into variable values and code flow. But, leaving them in production code can lead to several issues:
+`console.log` 문은 개발 중에 변수 값과 코드 흐름에 대한 실시간 정보를 제공합니다. 그러나 생산 코드에 남아 있으면 여러 문제를 일으킬 수 있습니다.
-1. **Performance**: Excessive logging can affect the runtime performance, especially on client-side applications.
+1. **성능**: 과도한 로깅은 특히 클라이언트 측 애플리케이션의 경우 런타임 성능에 영향을 미칠 수 있습니다.
-2. **Security**: Logging sensitive data can expose critical information to anyone who inspects the browser's console.
+2. **보안**: 민감한 데이터 로깅은 브라우저 콘솔을 검사하는 누구나 중요한 정보를 노출할 수 있습니다.
-3. **Cleanliness**: Filling up the console with logs can obscure important warnings or errors that developers or tools need to see.
+3. **깔끔함**: 콘솔을 로그로 가득 채우면 개발자나 도구가 필요한 중요한 경고나 오류를 가릴 수 있습니다.
-4. **Professionalism**: End users or clients checking the console and seeing a myriad of log statements might question the code's quality and polish.
+4. **전문성**: 사용자가 콘솔을 확인하고 수많은 로그를 보면 코드의 품질과 정교함을 의심할 수 있습니다.
-Make sure you remove all `console.logs` before pushing the code to production.
+생산 환경에 코드를 올리기 전에 모든 `console.logs`를 제거해야 합니다.
-## Naming
+## 이름 지정
-### Variable Naming
+### 변수 이름 지정
-Variable names ought to precisely depict the purpose or function of the variable.
+변수 이름은 변수의 목적이나 기능을 정확히 설명해야 합니다.
-#### The issue with generic names
+#### 일반적인 이름의 문제
-Generic names in programming are not ideal because they lack specificity, leading to ambiguity and reduced code readability. Such names fail to convey the variable or function's purpose, making it challenging for developers to understand the code's intent without deeper investigation. This can result in increased debugging time, higher susceptibility to errors, and difficulties in maintenance and collaboration. Meanwhile, descriptive naming makes the code self-explanatory and easier to navigate, enhancing code quality and developer productivity.
+프로그래밍에서 일반적인 이름은 특수성이 부족하여 모호성을 유발하고 코드 가독성을 감소시킵니다. 이름이 변수나 함수의 목적을 전달하지 않으면 개발자가 코드의 의도를 깊이 조사해야 합니다. 이로 인해 디버깅 시간이 증가하고 오류에 더 많이 노출되며 유지보수와 협업에 어려움이 생길 수 있습니다. 반면에 설명적인 이름을 사용하면 코드가 자가 설명적이 되고 탐색하기 쉬워져 코드 품질과 개발자 생산성을 향상시킵니다.
```tsx
// ❌ Bad, uses a generic name that doesn't communicate its
@@ -178,13 +178,13 @@ const [value, setValue] = useState('');
const [email, setEmail] = useState('');
```
-#### Some words to avoid in variable names
+#### 변수 이름에서 피해야 할 단어들
-* dummy
+* 더미
-### Event handlers
+### 이벤트 핸들러
-Event handler names should start with `handle`, while `on` is a prefix used to name events in components props.
+이벤트 핸들러 이름은 `handle`로 시작해야 하고, `on`은 컴포넌트 속성의 이벤트 이름 지정에 사용됩니다.
```tsx
// ❌ Bad
@@ -200,13 +200,13 @@ const handleEmailChange = (val: string) => {
};
```
-## Optional Props
+## 선택적 Props
-Avoid passing the default value for an optional prop.
+선택적 프로퍼티에 대한 기본값 전달을 피하십시오.
-**EXAMPLE**
+**예시**
-Take the`EmailField` component defined below:
+다음과 같은 `EmailField` 컴포넌트를 보십시오:
```tsx
type EmailFieldProps = {
@@ -219,7 +219,7 @@ const EmailField = ({ value, disabled = false }: EmailFieldProps) => (
);
```
-**Usage**
+**사용법**
```tsx
// ❌ Bad, passing in the same value as the default value adds no value
@@ -231,11 +231,11 @@ const Form = () => ;
const Form = () => ;
```
-## Component as props
+## 프로퍼티로써 컴포넌트
-Try as much as possible to pass uninstantiated components as props, so children can decide on their own of what props they need to pass.
+가능한 한, 인스턴스화되지 않은 컴포넌트를 prop으로 전달하여 자식이 필요한 prop을 스스로 결정할 수 있도록 하세요.
-The most common example for that is icon components:
+가장 일반적인 예는 아이콘 컴포넌트입니다.
```tsx
const SomeParentComponent = () => ;
@@ -252,25 +252,25 @@ const MyComponent = ({ MyIcon }: { MyIcon: IconComponent }) => {
};
```
-For React to understand that the component is a component, you need to use PascalCase, to later instantiate it with ``
+React가 컴포넌트를 컴포넌트로 인식하려면, PascalCase를 사용하여 나중에 ``으로 인스턴스화해야 합니다.
-## Prop Drilling: Keep It Minimal
+## Prop 드릴링: 최소화하기
-Prop drilling, in the React context, refers to the practice of passing state variables and their setters through many component layers, even if intermediary components don't use them. While sometimes necessary, excessive prop drilling can lead to:
+React에서 prop 드릴링은 상태 변수 및 그 설정자를 중간 컴포넌트가 사용하지 않더라도 여러 컴포넌트 계층에 걸쳐 전달하는 관행을 의미합니다. 가끔 필요할 수 있지만, 과도한 prop 드릴링은 다음과 같은 문제를 초래할 수 있습니다:
-1. **Decreased Readability**: Tracing where a prop originates or where it's utilized can become convoluted in a deeply nested component structure.
+1. **읽기 어려움**: prop이 어디서 시작되었고 어디에서 사용되는지를 추적하는 것이 깊게 중첩된 컴포넌트 구조에서는 복잡해질 수 있습니다.
-2. **Maintenance Challenges**: Changes in one component's prop structure might require adjustments in several components, even if they don't directly use the prop.
+2. **유지보수의 어려움**: 한 컴포넌트의 prop 구조의 변화는, 해당 prop을 직접 사용하지 않더라도 여러 컴포넌트에서의 조정이 필요할 수 있습니다.
-3. **Reduced Component Reusability**: A component receiving a lot of props solely for passing them down becomes less general-purpose and harder to reuse in different contexts.
+3. **컴포넌트 재사용성 감소**: 많은 prop을 전달하기 위한 컴포넌트는 그 용도가 덜 일반적이게 되며, 다양한 컨텍스트에서 재사용하기 어려워집니다.
-If you feel that you are using excessive prop drilling, see [state management best practices](#state-management).
+과도한 prop 드릴링을 사용하고 있다고 느껴진다면, [상태 관리 최적 관행](#state-management)을 참조하세요.
-## Imports
+## 가져오기
-When importing, opt for the designated aliases rather than specifying complete or relative paths.
+가져올 때는, 지정된 별칭을 사용하고 전체나 상대 경로를 지정하지 않도록 하세요.
-**The Aliases**
+**별칭 처리**
```js
{
@@ -282,7 +282,7 @@ When importing, opt for the designated aliases rather than specifying complete o
}
```
-**Usage**
+**사용법**
```tsx
// ❌ Bad, specifies the entire relative path
@@ -300,9 +300,9 @@ import { CatalogDecorator } from '~/testing/decorators/CatalogDecorator';
import { ComponentDecorator } from 'twenty-ui/testing';
```
-## Schema Validation
+## 스키마 유효성 검사
-[Zod](https://github.com/colinhacks/zod) is the schema validator for untyped objects:
+[Zod](https://github.com/colinhacks/zod)는 타이핑되지 않은 객체를 위한 스키마 유효성 검사기입니다:
```js
const validationSchema = z
@@ -320,6 +320,6 @@ const validationSchema = z
type Form = z.infer;
```
-## Breaking Changes
+## 파괴적 변경
-Always perform thorough manual testing before proceeding to guarantee that modifications haven’t caused disruptions elsewhere, given that tests have not yet been extensively integrated.
+테스트가 아직 광범위하게 통합되지 않았으므로, 변경 사항이 다른 부분에 문제를 일으키지 않았는지 철저한 수동 테스트를 통해 보장하세요.
diff --git a/packages/twenty-docs/l/ko/developers/contribute/capabilities/frontend-development/folder-architecture-front.mdx b/packages/twenty-docs/l/ko/developers/contribute/capabilities/frontend-development/folder-architecture-front.mdx
index 064ac5c256..fe85b7b819 100644
--- a/packages/twenty-docs/l/ko/developers/contribute/capabilities/frontend-development/folder-architecture-front.mdx
+++ b/packages/twenty-docs/l/ko/developers/contribute/capabilities/frontend-development/folder-architecture-front.mdx
@@ -1,11 +1,11 @@
---
-title: Folder Architecture
-info: A detailed look into our folder architecture
+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의 구조화와 유지관리성에 어떻게 기여하는지 살펴봅니다.
-By following this folder architecture convention, it's easier to find the files related to specific features and ensure that the application is scalable and maintainable.
+이 폴더 아키텍처 관례를 따르면 특정 기능과 관련된 파일을 더 쉽게 찾을 수 있고, 애플리케이션의 확장성과 유지관리성을 보장하기가 쉬워집니다.
```
front
@@ -22,14 +22,14 @@ front
└───...
```
-## Pages
+## 페이지
-Includes the top-level components defined by the application routes. They import more low-level components from the modules folder (more details below).
+애플리케이션 라우트로 정의된 최상위 컴포넌트를 포함합니다. 모듈 폴더에서 더 하위 수준의 컴포넌트를 가져옵니다(자세한 내용은 아래를 참조하세요).
-## Modules
+## 모듈
-Each module represents a feature or a group of feature, comprising its specific components, states, and operational logic.
-They should all follow the structure below. You can nest modules within modules (referred to as submodules) and the same rules will apply.
+각 모듈은 특정 컴포넌트, 상태 및 운영 로직을 포함하는 기능 또는 기능 그룹을 나타냅니다.
+모두 아래 구조를 따라야 합니다. 모듈 안에 모듈을 중첩할 수 있으며(이를 서브모듈이라고 하며), 동일한 규칙이 적용됩니다.
```
module1
@@ -50,60 +50,60 @@ module1
└───utils
```
-### Contexts
+### 컨텍스트
-A context is a way to pass data through the component tree without having to pass props down manually at every level.
+컨텍스트는 각 레벨에서 수동으로 props를 전달하지 않고, 컴포넌트 트리를 통해 데이터를 전달할 수 있는 방법입니다.
-See [React Context](https://react.dev/reference/react#context-hooks) for more details.
+자세한 내용은 [React Context](https://react.dev/reference/react#context-hooks)를 참조하세요.
### GraphQL
-Includes fragments, queries, and mutations.
+프래그먼트, 쿼리 및 뮤테이션이 포함됩니다.
-See [GraphQL](https://graphql.org/learn/) for more details.
+자세한 내용은 [GraphQL](https://graphql.org/learn/)을 참조하세요.
-* Fragments
+* 프래그먼트
-A fragment is a reusable piece of a query, which you can use in different places. By using fragments, it's easier to avoid duplicating code.
+프래그먼트는 쿼리의 재사용 가능한 조각으로, 여러 장소에서 사용할 수 있습니다. 프래그먼트를 사용하면 코드 중복을 피하기가 더 쉬워집니다.
-See [GraphQL Fragments](https://graphql.org/learn/queries/#fragments) for more details.
+자세한 내용은 [GraphQL 프래그먼트](https://graphql.org/learn/queries/#fragments)를 참조하세요.
-* Queries
+* 쿼리
-See [GraphQL Queries](https://graphql.org/learn/queries/) for more details.
+자세한 내용은 [GraphQL 쿼리](https://graphql.org/learn/queries/)를 참조하세요.
-* Mutations
+* 뮤테이션
-See [GraphQL Mutations](https://graphql.org/learn/queries/#mutations) for more details.
+자세한 내용은 [GraphQL 뮤테이션](https://graphql.org/learn/queries/#mutations)을 참조하세요.
-### Hooks
+### 훅
-See [Hooks](https://react.dev/learn/reusing-logic-with-custom-hooks) for more details.
+자세한 내용은 [훅](https://react.dev/learn/reusing-logic-with-custom-hooks)을 참조하세요.
-### States
+### 상태
-Contains the state management logic. [RecoilJS](https://recoiljs.org) handles this.
+상태 관리 로직이 포함되어 있습니다. [RecoilJS](https://recoiljs.org)가 이것을 처리합니다.
-* Selectors: See [RecoilJS Selectors](https://recoiljs.org/docs/basic-tutorial/selectors) for more details.
+* 셀렉터: 자세한 내용은 [RecoilJS 셀렉터](https://recoiljs.org/docs/basic-tutorial/selectors)를 참조하세요.
-React's built-in state management still handles state within a component.
+React의 내장 상태 관리는 구성 요소 내에서의 상태를 여전히 처리합니다.
-### Utils
+### 유틸
-Should just contain reusable pure functions. Otherwise, create custom hooks in the `hooks` folder.
+재사용 가능한 순수 함수를 포함해야 합니다. 그렇지 않으면 `hooks` 폴더에 커스텀 훅을 만들어야 합니다.
## UI
-Contains all the reusable UI components used in the application.
+애플리케이션에서 사용되는 모든 재사용 가능한 UI 컴포넌트를 포함합니다.
-This folder can contain sub-folders, like `data`, `display`, `feedback`, and `input` for specific types of components. Each component should be self-contained and reusable, so that you can use it in different parts of the application.
+이 폴더는 `data`, `display`, `feedback`, `input`과 같은 특정 유형의 컴포넌트에 대한 하위 폴더를 포함할 수 있습니다. 각 컴포넌트는 자기 완결적이고 재사용 가능해야 하며, 애플리케이션의 다른 부분에서 사용할 수 있어야 합니다.
-By separating the UI components from the other components in the `modules` folder, it's easier to maintain a consistent design and to make changes to the UI without affecting other parts (business logic) of the codebase.
+`modules` 폴더의 다른 컴포넌트에서 UI 컴포넌트를 분리함으로써 일관된 디자인을 유지하고, 코드베이스의 다른 부분(비즈니스 로직)에 영향을 주지 않고 UI를 변경하기가 더 쉬워집니다.
-## Interface and dependencies
+## 인터페이스 및 종속성
-You can import other module code from any module except for the `ui` folder. This will keep its code easy to test.
+`ui` 폴더를 제외한 모든 모듈에서 다른 모듈 코드를 가져올 수 있습니다. 이렇게 하면 코드를 쉽게 테스트할 수 있습니다.
-### Internal
+### 내부
-Each part (hooks, states, ...) of a module can have an `internal` folder, which contains parts that are just used within the module.
+각 부분(훅, 상태, ...) 모듈의 각 부분은 모듈 내에서만 사용하는 `internal` 폴더를 가질 수 있습니다.
diff --git a/packages/twenty-docs/l/ko/developers/contribute/capabilities/frontend-development/frontend-commands.mdx b/packages/twenty-docs/l/ko/developers/contribute/capabilities/frontend-development/frontend-commands.mdx
index 6fb00a65af..705b0e1de9 100644
--- a/packages/twenty-docs/l/ko/developers/contribute/capabilities/frontend-development/frontend-commands.mdx
+++ b/packages/twenty-docs/l/ko/developers/contribute/capabilities/frontend-development/frontend-commands.mdx
@@ -1,41 +1,41 @@
---
-title: Frontend Commands
+title: 프론트엔드 명령어
---
-## Useful commands
+## 유용한 명령어
-### Starting the app
+### 앱 시작하기
```bash
npx nx start twenty-front
```
-### Regenerate graphql schema based on API graphql schema
+### API GraphQL 스키마를 기반으로 GraphQL 스키마 재생성
```bash
npx nx run twenty-front:graphql:generate --configuration=metadata
```
-OR
+또는
```bash
npx nx run twenty-front:graphql:generate
```
-### Lint
+### 린트
```bash
npx nx run twenty-front:lint # pass --fix to fix lint errors
```
-## Translations
+## 번역
```bash
npx nx run twenty-front:lingui:extract
npx nx run twenty-front:lingui:compile
```
-### Test
+### 테스트
```bash
npx nx run twenty-front:test # run jest tests
@@ -44,11 +44,11 @@ npx nx run twenty-front:storybook:test # run tests # (needs yarn storybook:serve
npx nx run twenty-front:storybook:coverage # (needs yarn storybook:serve:dev to be running)
```
-## Tech Stack
+## 기술 스택
-The project has a clean and simple stack, with minimal boilerplate code.
+프로젝트는 최소한의 보일러플레이트 코드로 깔끔하고 단순한 스택을 가지고 있습니다.
-**App**
+**앱**
* [React](https://react.dev/)
* [Apollo](https://www.apollographql.com/docs/)
@@ -56,35 +56,35 @@ The project has a clean and simple stack, with minimal boilerplate code.
* [Recoil](https://recoiljs.org/docs/introduction/core-concepts)
* [TypeScript](https://www.typescriptlang.org/)
-**Testing**
+**테스트**
* [Jest](https://jestjs.io/)
* [Storybook](https://storybook.js.org/)
-**Tooling**
+**도구**
* [Yarn](https://yarnpkg.com/)
* [Craco](https://craco.js.org/docs/)
* [ESLint](https://eslint.org/)
-## Architecture
+## 아키텍처
-### Routing
+### 라우팅
-[React Router](https://reactrouter.com/) handles the routing.
+[React Router](https://reactrouter.com/)가 라우팅을 처리합니다.
To avoid unnecessary [re-renders](/l/ko/developers/contribute/capabilities/frontend-development/best-practices-front#managing-re-renders) all the routing logic is in a `useEffect` in `PageChangeEffect`.
-### State Management
+### 상태 관리
-[Recoil](https://recoiljs.org/docs/introduction/core-concepts) handles state management.
+[Recoil](https://recoiljs.org/docs/introduction/core-concepts)이 상태 관리를 처리합니다.
-See [best practices](/l/ko/developers/contribute/capabilities/frontend-development/best-practices-front#state-management) for more information on state management.
+상태 관리에 대한 자세한 정보는 [최고의 관례](/l/ko/developers/contribute/capabilities/frontend-development/best-practices-front#state-management)를 참조하십시오.
-## Testing
+## 테스트
-[Jest](https://jestjs.io/) serves as the tool for unit testing while [Storybook](https://storybook.js.org/) is for component testing.
+[Jest](https://jestjs.io/)는 유닛 테스트 도구로 사용되고 [Storybook](https://storybook.js.org/)은 컴포넌트 테스트에 사용됩니다.
-Jest is mainly for testing utility functions, and not components themselves.
+Jest는 주로 유틸리티 함수 테스트에 사용되며, 직접 컴포넌트를 테스트하지는 않습니다.
-Storybook is for testing the behavior of isolated components, as well as displaying the design system.
+Storybook은 개별 컴포넌트의 동작을 테스트하고 디자인 시스템을 표시하는 데 사용됩니다.
diff --git a/packages/twenty-docs/l/ko/developers/contribute/capabilities/frontend-development/hotkeys.mdx b/packages/twenty-docs/l/ko/developers/contribute/capabilities/frontend-development/hotkeys.mdx
index 43cde50e63..08a4d59ee3 100644
--- a/packages/twenty-docs/l/ko/developers/contribute/capabilities/frontend-development/hotkeys.mdx
+++ b/packages/twenty-docs/l/ko/developers/contribute/capabilities/frontend-development/hotkeys.mdx
@@ -1,42 +1,42 @@
---
-title: Hotkeys
+title: 단축키
---
-## Introduction
+## 소개
-When you need to listen to a hotkey, you would normally use the `onKeyDown` event listener.
+단축키를 들으려면 일반적으로 `onKeyDown` 이벤트 리스너를 사용합니다.
-In `twenty-front` however, you might have conflicts between same hotkeys that are used in different components, mounted at the same time.
+그러나 `twenty-front`에서는 동일한 시점에 장착된 다른 구성 요소에서 사용되는 같은 단축키 간에 충돌이 발생할 수 있습니다.
-For example, if you have a page that listens for the Enter key, and a modal that listens for the Enter key, with a Select component inside that modal that listens for the Enter key, you might have a conflict when all are mounted at the same time.
+예를 들어, Enter 키를 듣는 페이지가 있고, Enter 키를 듣는 모달이 있으며, 그 모달 내에서 Enter 키를 듣는 Select 구성요소가 있다면, 모두 동시에 마운트될 때 충돌이 발생할 수 있습니다.
-## The `useScopedHotkeys` hook
+## `useScopedHotkeys` 훅
-To handle this problem, we have a custom hook that makes it possible to listen to hotkeys without any conflict.
+이 문제를 해결하기 위해, 우리는 충돌 없이 단축키를 들을 수 있게 하는 커스텀 훅을 만들었습니다.
-You place it in a component, and it will listen to the hotkeys only when the component is mounted AND when the specified **hotkey scope** is active.
+이를 구성 요소에 배치하면 구성 요소가 마운트될 때 및 지정한 **단축키 스코프**가 활성화될 때만 단축키를 듣습니다.
-## How to listen for hotkeys in practice?
+## 실제로 단축키를 감지하려면 어떻게 하나요?
-There are two steps involved in setting up hotkey listening :
+단축키 청취를 설정하는 데 두 가지 단계가 있습니다:
-1. Set the [hotkey scope](#what-is-a-hotkey-scope-) that will listen to hotkeys
-2. Use the `useScopedHotkeys` hook to listen to hotkeys
+1. 단축키를 들을 [단축키 스코프](#what-is-a-hotkey-scope-)를 설정합니다.
+2. 단축키를 듣기 위해 `useScopedHotkeys` 훅을 사용합니다.
-Setting up hotkey scopes is required even in simple pages, because other UI elements like left menu or command menu might also listen to hotkeys.
+기본 페이지에서도 단축키 스코프를 설정해야 합니다. 왼쪽 메뉴나 명령 메뉴와 같은 다른 UI 요소도 단축키를 들을 수 있기 때문입니다.
-## Use cases for hotkeys
+## 단축키 사용 사례
-In general, you'll have two use cases that require hotkeys :
+일반적으로, 두 가지 단축키를 필요로 하는 사용 사례가 있습니다:
-1. In a page or a component mounted in a page
-2. In a modal-type component that takes the focus due to a user action
+1. 페이지 또는 페이지에 마운트된 구성 요소
+2. 사용자 작업으로 인해 포커스를 차지하는 모달 형 구성 요소
-The second use case can happen recursively : a dropdown in a modal for example.
+두 번째 사용 사례는 재귀적으로 발생할 수 있습니다: 예를 들어, 모달의 드롭다운.
-### Listening to hotkeys in a page
+### 페이지에서 단축키 듣기
-Example :
+예시:
```tsx
const PageListeningEnter = () => {
@@ -71,11 +71,11 @@ const PageListeningEnter = () => {
};
```
-### Listening to hotkeys in a modal-type component
+### 모달 형 구성 요소에서 단축키 듣기
-For this example we'll use a modal component that listens for the Escape key to tell its parent to close it.
+이 예시에서는 부모에게 모달을 닫으라고 알리기 위해 Escape 키를 듣는 모달 구성 요소를 사용합니다.
-Here the user interaction is changing the scope.
+여기서 사용자 상호작용은 범위를 변경합니다.
```tsx
const ExamplePageWithModal = () => {
@@ -108,7 +108,7 @@ const ExamplePageWithModal = () => {
};
```
-Then in the modal component :
+그러면 모달 구성 요소에서:
```tsx
const MyDropdownComponent = ({ onClose }: { onClose: () => void }) => {
@@ -131,15 +131,15 @@ It's important to use this pattern when you're not sure that just using a useEff
Those conflicts can be hard to debug, and it might happen more often than not with useEffects.
-## What is a hotkey scope?
+## 단축키 스코프란 무엇인가요?
-A hotkey scope is a string that represents a context in which the hotkeys are active. It is generally encoded as an enum.
+단축키 스코프는 단축키가 활성 상태인 컨텍스트를 나타내는 문자열입니다. 일반적으로 열거형으로 인코딩됩니다.
-When you change the hotkey scope, the hotkeys that are listening to this scope will be enabled and the hotkeys that are listening to other scopes will be disabled.
+단축키 스코프를 변경하면 해당 스코프를 듣고 있는 단축키는 활성화되고 다른 스코프를 듣고 있는 단축키는 비활성화됩니다.
-You can set only one scope at a time.
+한 번에 하나의 스코프만 설정할 수 있습니다.
-As an example, the hotkey scopes for each page are defined in the `PageHotkeyScope` enum:
+예를 들어 각 페이지의 단축키 스코프는 `PageHotkeyScope` 열거형에 정의되어 있습니다:
```tsx
export enum PageHotkeyScope {
@@ -160,7 +160,7 @@ export enum PageHotkeyScope {
}
```
-Internally, the currently selected scope is stored in a Recoil state that is shared across the application :
+내부적으로, 현재 선택한 스코프는 애플리케이션 전반에 걸쳐 공유되는 Recoil 상태에 저장됩니다:
```tsx
export const currentHotkeyScopeState = createState({
@@ -169,10 +169,10 @@ export const currentHotkeyScopeState = createState({
});
```
-But this Recoil state should never be handled manually ! We'll see how to use it in the next section.
+하지만 이 Recoil 상태는 수동으로 처리해서는 안 됩니다! 다음 섹션에서 사용하는 방법을 배웁니다.
-## How is it working internally?
+## 내부적으로 어떻게 작동합니까?
-We made a thin wrapper on top of [react-hotkeys-hook](https://react-hotkeys-hook.vercel.app/docs/intro) that makes it more performant and avoids unnecessary re-renders.
+[react-hotkeys-hook](https://react-hotkeys-hook.vercel.app/docs/intro) 위에 얇은 래퍼를 만들어 성능을 높이고 불필요한 재랜더링을 방지합니다.
-We also create a Recoil state to handle the hotkey scope state and make it available everywhere in the application.
+또한 핫키 스코프 상태를 처리하고 애플리케이션 전반에서 사용할 수 있도록 한 Recoil 상태를 만듭니다.
diff --git a/packages/twenty-docs/l/ko/developers/contribute/capabilities/frontend-development/storybook.mdx b/packages/twenty-docs/l/ko/developers/contribute/capabilities/frontend-development/storybook.mdx
index 5c7f5fa52a..076c40517b 100644
--- a/packages/twenty-docs/l/ko/developers/contribute/capabilities/frontend-development/storybook.mdx
+++ b/packages/twenty-docs/l/ko/developers/contribute/capabilities/frontend-development/storybook.mdx
@@ -1,8 +1,8 @@
---
title: Storybook
-description: Browse Twenty's UI component library
+description: Twenty의 UI 컴포넌트 라이브러리 둘러보기
---
-View our complete component library and documentation in Storybook.
+스토리북에서 완전한 컴포넌트 라이브러리와 문서를 확인하세요.
-[Open Storybook →](https://storybook.twenty.com)
+[Storybook 열기 →](https://storybook.twenty.com)
diff --git a/packages/twenty-docs/l/ko/developers/contribute/capabilities/frontend-development/style-guide.mdx b/packages/twenty-docs/l/ko/developers/contribute/capabilities/frontend-development/style-guide.mdx
index e3ba4a44f0..49b2328ec1 100644
--- a/packages/twenty-docs/l/ko/developers/contribute/capabilities/frontend-development/style-guide.mdx
+++ b/packages/twenty-docs/l/ko/developers/contribute/capabilities/frontend-development/style-guide.mdx
@@ -1,24 +1,24 @@
---
-title: Style Guide
+title: 스타일 가이드
---
-This document includes the rules to follow when writing code.
+이 문서에는 코드 작성 시 따라야 할 규칙이 포함되어 있습니다.
-The goal here is to have a consistent codebase, which is easy to read and easy to maintain.
+여기서 목표는 읽기 쉽고 유지 관리가 쉬운 일관된 코드베이스를 갖는 것입니다.
-For this, it's better to be a bit more verbose than to be too concise.
+이를 위해서는 너무 간결하기보다는 약간 더 장황한 것이 낫습니다.
-Always keep in mind that people read code more often than they write it, specially on an open source project, where anyone can contribute.
+항상 사람들이 코드를 작성하는 것보다 더 자주 읽는다는 점을 염두에 두십시오. 특히 누구나 기여할 수 있는 오픈 소스 프로젝트에서 그렇습니다.
-There are a lot of rules that are not defined here, but that are automatically checked by linters.
+여기에 정의되지 않은 많은 규칙이 있지만 린터에 의해 자동으로 확인됩니다.
-## React
+## 리액트
-### Use functional components
+### 함수형 컴포넌트 사용
-Always use TSX functional components.
+항상 TSX 함수형 컴포넌트를 사용하십시오.
-Do not use default `import` with `const`, because it's harder to read and harder to import with code completion.
+기본 `import`를 `const`와 함께 사용하지 마십시오. 읽기 어렵고 코드 자동 완성으로 import하기 어렵습니다.
```tsx
// ❌ Bad, harder to read, harder to import with code completion
@@ -34,11 +34,11 @@ export function MyComponent() {
};
```
-### Props
+### 프로퍼티
-Create the type of the props and call it `(ComponentName)Props` if there's no need to export it.
+props의 유형을 만들고 내보낼 필요가 없으면 `(ComponentName)Props`라고 명명하십시오.
-Use props destructuring.
+props 구조 분해를 사용하십시오.
```tsx
// ❌ Bad, no type
@@ -52,7 +52,7 @@ type MyComponentProps = {
export const MyComponent = ({ name }: MyComponentProps) => Hello {name}
;
```
-#### Refrain from using `React.FC` or `React.FunctionComponent` to define prop types
+#### prop 유형을 정의하기 위해 `React.FC` 또는 `React.FunctionComponent`를 사용하지 마십시오.
```tsx
/* ❌ - Bad, defines the component type annotations with `FC`
@@ -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)을 명시적으로 정의합니다
+ * 컴포넌트의 props에 대해
+ * - 이 방법은 children prop을 자동으로 포함하지 않습니다. 포함하려면
+ * OwnProps에 명시해야 합니다.
*/
type EmailFieldProps = {
value: string;
@@ -81,9 +81,9 @@ const EmailField = ({ value }: EmailFieldProps) => (
);
```
-#### No Single Variable Prop Spreading in JSX Elements
+#### JSX 요소에서 단일 변수 prop 확산 방지
-Avoid using single variable prop spreading in JSX elements, like `{...props}`. This practice often results in code that is less readable and harder to maintain because it's unclear which props the component is receiving.
+JSX 요소에서 `{...props}`와 같은 단일 변수 prop 확산을 피하십시오. 이 관행은 구성 요소가 수신되는 props를 명확하게 하지 않아 가독성과 유지 관리가 어려운 코드를 생성하는 경우가 많습니다.
```tsx
/* ❌ - Bad, spreads a single variable prop into the underlying component
@@ -94,23 +94,23 @@ const MyComponent = (props: OwnProps) => {
```
```tsx
-/* ✅ - Good, Explicitly lists all props
- * - Enhances readability and maintainability
+/* ✅ - 좋음, 모든 props를 명시적으로 나열합니다
+ * - 가독성과 유지 보수성을 향상합니다
*/
const MyComponent = ({ prop1, prop2, prop3 }: MyComponentProps) => {
return ;
};
```
-Rationale:
+이유:
-* At a glance, it's clearer which props the code passes down, making it easier to understand and maintain.
-* It helps to prevent tight coupling between components via their props.
-* Linting tools make it easier to identify misspelled or unused props when you list props explicitly.
+* 한눈에 코드가 전달하는 props를 명확하게 하여 이해하고 유지하기 쉽습니다.
+* 이것은 구성 요소가 각자의 props로 긴밀하게 결합되는 것을 방지하는 데 도움이 됩니다.
+* props를 명시적으로 나열하면 Linting 도구에서 잘못된 철자나 사용되지 않는 props를 쉽게 식별할 수 있습니다.
-## JavaScript
+## 자바스크립트
-### Use nullish-coalescing operator `??`
+### nullish 병합 연산자 `??` 사용
```tsx
// ❌ Bad, can return 'default' even if value is 0 or ''
@@ -120,21 +120,21 @@ const value = process.env.MY_VALUE || 'default';
const value = process.env.MY_VALUE ?? 'default';
```
-### Use optional chaining `?.`
+### 옵셔널 체이닝 `?.` 사용
```tsx
-// ❌ Bad
+// ❌ 나쁨
onClick && onClick();
-// ✅ Good
+// ✅ 좋음
onClick?.();
```
-## TypeScript
+## 타입스크립트
-### Use `type` instead of `interface`
+### `interface` 대신 `type` 사용
-Always use `type` instead of `interface`, because they almost always overlap, and `type` is more flexible.
+항상 `interface` 대신 `type`을 사용하십시오. 두 개의 기능은 거의 항상 중첩되며, `type`이 더 유연합니다.
```tsx
// ❌ Bad
@@ -148,11 +148,11 @@ type MyType = {
};
```
-### Use string literals instead of enums
+### 열거형 대신 문자열 리터럴 사용
-[String literals](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#literal-types) are the go-to way to handle enum-like values in TypeScript. They are easier to extend with Pick and Omit, and offer a better developer experience, specially with code completion.
+[String literals](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#literal-types)는 TypeScript에서 열거형과 같은 값을 처리하는 주요 방법입니다. 그들은 Pick와 Omit으로 확장하기 쉬우며, 특히 코드 완성 기능을 사용할 때 더 나은 사용자 경험을 제공합니다.
-You can see why TypeScript recommends avoiding enums [here](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#enums).
+타입스크립트가 열거형 사용을 피하도록 권장하는 이유는 [여기](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#enums)에서 확인할 수 있습니다.
```tsx
// ❌ Bad, utilizes an enum
@@ -171,13 +171,13 @@ let color = Color.Red;
let color: "red" | "green" | "blue" = "red";
```
-#### GraphQL and internal libraries
+#### GraphQL 및 내부 라이브러리
-You should use enums that GraphQL codegen generates.
+GraphQL 코드 생성기가 생성한 열거형을 사용해야 합니다.
-It's also better to use an enum when using an internal library, so the internal library doesn't have to expose a string literal type that is not related to the internal API.
+내부 라이브러리를 사용할 때도 열거형을 사용하는 것이 좋으며, 내부 API와 관련이 없는 문자열 리터럴 유형을 노출할 필요가 없습니다.
-Example:
+예시:
```TSX
const {
@@ -190,11 +190,11 @@ setHotkeyScopeAndMemorizePreviousScope(
);
```
-## Styling
+## 스타일링
-### Use StyledComponents
+### StyledComponents 사용
-Style the components with [styled-components](https://emotion.sh/docs/styled).
+[styled-components](https://emotion.sh/docs/styled)로 구성 요소를 스타일링하십시오.
```tsx
// ❌ Bad
@@ -208,7 +208,7 @@ const StyledTitle = styled.div`
`;
```
-Prefix styled components with "Styled" to differentiate them from "real" components.
+스타일드 컴포넌트 앞에 "Styled"를 붙여 실제 컴포넌트와 구분하십시오.
```tsx
// ❌ Bad
@@ -224,17 +224,17 @@ const StyledTitle = styled.div`
`;
```
-### Theming
+### 테마
-Utilizing the theme for the majority of component styling is the preferred approach.
+대부분의 구성 요소 스타일링에는 테마를 활용하는 것이 선호되는 접근 방식입니다.
-#### Units of measurement
+#### 측정 단위
-Avoid using `px` or `rem` values directly within the styled components. The necessary values are generally already defined in the theme, so it’s recommended to make use of the theme for these purposes.
+스타일드 컴포넌트 내에서 `px` 또는 `rem` 값을 직접 사용하는 것을 피하십시오. 필요한 값은 일반적으로 테마에 이미 정의되어 있으므로 이러한 목적으로 테마를 활용하는 것이 좋습니다.
-#### Colors
+#### 색상
-Refrain from introducing new colors; instead, use the existing palette from the theme. Should there be a situation where the palette does not align, please leave a comment so that the team can rectify it.
+새로운 색상을 도입하지 말고 테마에서 기존 팔레트를 사용하십시오. 팔레트가 맞지 않는 경우가 있다면 팀이 수정할 수 있도록 댓글을 남겨야 합니다.
```tsx
// ❌ Bad, directly specifies style values without utilizing the theme
@@ -258,9 +258,9 @@ const StyledButton = styled.button`
`;
```
-## Enforcing No-Type Imports
+## No-Type Import 강제 실행
-Avoid type imports. To enforce this standard, an ESLint rule checks for and reports any type imports. This helps maintain consistency and readability in the TypeScript code.
+타입 import를 피하십시오. 이 표준을 강화하기 위해 ESLint 규칙이 모든 타입 import를 확인하고 보고합니다. 이는 TypeScript 코드의 일관성과 가독성을 유지하는 데 도움이 됩니다.
```tsx
// ❌ Bad
@@ -273,18 +273,18 @@ import type { Meta, StoryObj } from '@storybook/react';
import { Meta, StoryObj } from '@storybook/react';
```
-### Why No-Type Imports
+### No-Type Import의 이유
-* **Consistency**: By avoiding type imports and using a single approach for both type and value imports, the codebase remains consistent in its module import style.
+* **일관성**: 타입 import를 피하고, 타입과 값 import 모두의 단일 접근 방식을 사용하여 모듈 import 스타일의 일관성을 유지합니다.
-* **Readability**: No-type imports improve code readability by making it clear when you're importing values or types. This reduces ambiguity and makes it easier to understand the purpose of imported symbols.
+* **가독성**: No-Type Import는 값을 가져오거나 타입을 가져오는 것을 명확히 하여 코드 가독성을 향상시킵니다. 이는 모호성을 줄이고 가져온 기호의 목적을 이해하기 쉽게 만듭니다.
-* **Maintainability**: It enhances codebase maintainability because developers can identify and locate type-only imports when reviewing or modifying code.
+* **유지관리성**: 이는 코드베이스 유지관리를 향상시킵니다. 개발자가 코드를 검토하거나 수정할 때 타입 전용 import를 식별하고 찾을 수 있습니다.
-### ESLint Rule
+### ESLint 규칙
-An ESLint rule, `@typescript-eslint/consistent-type-imports`, enforces the no-type import standard. This rule will generate errors or warnings for any type import violations.
+ESLint 규칙인 `@typescript-eslint/consistent-type-imports`는 타입 없는 import 표준을 강제합니다. 이 규칙은 모든 타입 import 위반에 대해 오류나 경고를 생성합니다.
-Please note that this rule specifically addresses rare edge cases where unintentional type imports occur. 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). In most situations, you should not need to use type-only imports.
+이 규칙은 의도치 않은 타입 import가 발생하는 드문 경계 사례를 구체적으로 다룹니다. 타입스크립트 자체는 [TypeScript 3.8 릴리스 노트](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-8.html)에서 이 관행을 권장하지 않습니다. 대부분의 상황에서 타입 전용 import를 사용할 필요가 없습니다.
-To ensure your code complies with this rule, make sure to run ESLint as part of your development workflow.
+이 규칙을 준수하는 코드를 보장하기 위해 ESLint를 개발 워크플로의 일부로 실행하십시오.
diff --git a/packages/twenty-docs/l/ko/developers/contribute/capabilities/frontend-development/work-with-figma.mdx b/packages/twenty-docs/l/ko/developers/contribute/capabilities/frontend-development/work-with-figma.mdx
index 6cffcc405e..7273c3f74c 100644
--- a/packages/twenty-docs/l/ko/developers/contribute/capabilities/frontend-development/work-with-figma.mdx
+++ b/packages/twenty-docs/l/ko/developers/contribute/capabilities/frontend-development/work-with-figma.mdx
@@ -1,59 +1,58 @@
---
-title: Work with Figma
-info: Learn how you can collaborate with Twenty's Figma
+title: Figma와 함께 작업하기
+info: Twenty의 Figma와 협업하는 방법을 배우기
---
-Figma is a collaborative interface design tool that aids in bridging the communication barrier between designers and developers.
-This guide explains how you can collaborate with Figma.
+Figma는 디자이너와 개발자 간의 소통 장벽을 허무는 협업 인터페이스 디자인 도구입니다.
+이 가이드는 Figma와 협업하는 방법을 설명합니다.
-## Access
+## 접근하기
-1. **Access the shared link:** You can access the project's Figma file [here](https://www.figma.com/file/xt8O9mFeLl46C5InWwoMrN/Twenty).
-2. **Sign in:** If you're not already signed in, Figma will prompt you to do so.
- Key features are only available to logged-in users, such as the developer mode and the ability to select a dedicated frame.
+1. **공유 링크에 접근:** 프로젝트의 Figma 파일에 [여기서](https://www.figma.com/file/xt8O9mFeLl46C5InWwoMrN/Twenty) 접근할 수 있습니다.
+2. **로그인:** 이미 로그인하지 않은 경우, Figma에서 로그인 하라는 요청을 받을 것입니다.
+ 전문 모드 및 전용 프레임 선택 기능과 같이 로그인한 사용자에게만 제공되는 주요 기능이 있습니다.
- You will not be able to collaborate effectively without an account.
+ 계정 없이는 효과적으로 협업할 수 없습니다.
-## Figma structure
+## Figma 구조
-On the left sidebar, you can access the different pages of Twenty's Figma. This is how they're organized:
+왼쪽 사이드바에서 Twenty의 Figma의 다양한 페이지에 접근할 수 있습니다. 이들은 이렇게 구성되어 있습니다:
-* **Components page:** This is the first page. The designer uses it to create and organize the reusable design elements used throughout the design file. For example, buttons, icons, symbols, or any other reusable components. It serves to maintain consistency across the design.
-* **Main page:** The second page is the main page, which shows the complete user interface of the project. You can press ***Play*** to use the full app prototype.
-* **Features pages:** The other pages are typically dedicated to features in progress. They contain the design of specific features or modules of the application or website. They are typically still in progress.
+* **구성 요소 페이지:** 첫 번째 페이지입니다. 디자이너는 디자인 파일 전반에 걸쳐 재사용 가능한 디자인 요소를 생성하고 조직하는 데 사용합니다. 예를 들어, 버튼, 아이콘, 심벌 또는 기타 재사용 가능한 구성 요소가 있습니다. 디자인 전체에서 일관성을 유지하는 역할을 합니다.
+* **메인 페이지:** 두 번째 페이지는 프로젝트의 완전한 사용자 인터페이스를 보여주는 메인 페이지입니다. 전체 앱 프로토타입을 사용하려면 ***재생*** 버튼을 누르세요.
+* **기능 페이지:** 다른 페이지는 일반적으로 진행중인 기능에 전용되어 있습니다. 이 페이지들은 애플리케이션이나 웹사이트의 특정 기능 또는 모듈의 디자인을 포함하고 있습니다. 일반적으로 아직 진행 중인 상태입니다.
-## Useful Tips
+## 유용한 팁
-With read-only access, you can't edit the design, but you can access all features that will be useful to convert the designs into code.
+읽기 전용 접근 권한으로는 디자인을 편집할 수 없지만, 디자인을 코드로 변환하는 데 유용한 모든 기능에 접근할 수 있습니다.
-### Use the Dev mode
+### 개발 모드 사용
-Figma's Dev Mode enhances developers' productivity by providing easy design navigation, effective asset management, efficient communication tools, toolbox integrations, quick code snippets, and key layer information, bridging the gap between design and development. You can learn more about Dev Mode [here](https://www.figma.com/dev-mode/).
+Figma의 Dev Mode는 쉬운 디자인 탐색, 효과적인 자산 관리, 효율적인 통신 도구, 도구 상자 통합, 빠른 코드 스니펫, 주요 레이어 정보를 제공하여 디자이너와 개발자 간의 격차를 줄입니다. Dev Mode에 대해 더 알고 싶으시면 [여기](https://www.figma.com/dev-mode/)를 방문하세요.
-Switch to the "Developer" mode in the right part of the toolbar to see design specs, copy CSS, and access assets.
+툴바의 오른쪽에서 "개발자" 모드로 전환하여 디자인 사양을 보고 CSS를 복사하고 자산에 접근하세요.
-### Use the Prototype
+### 프로토타입 사용
-Click on any element on the canvas and press the “Play” button at the top right edge of the interface to access the prototype view. Prototype mode allows you to interact with the design as if it were the final product. It demonstrates the flow between screens and how interface elements like buttons, links, or menus behave when interacted with.
+캔버스의 아무 요소나 클릭하고 인터페이스의 오른쪽 상단 모서리에 있는 "재생" 버튼을 눌러 프로토타입 보기에 접근하세요. 프로토타입 모드는 디자인을 최종 제품처럼 상호작용할 수 있게 합니다. 이를 통해 화면 간의 흐름과 버튼, 링크, 메뉴 등과 같은 인터페이스 요소가 상호작용할 때 어떻게 작동하는지 보여줍니다.
-1. **Understanding transitions and animations:** In the Prototype mode, you can view any transitions or animations added by a designer between screens or UI elements, providing clear visual instructions to developers on the intended behavior and style.
-2. **Implementation clarification:** A prototype can also help reduce ambiguities. Developers can interact with it to gain a better understanding of the functionality or appearance of particular elements.
+1. **전환 및 애니메이션 이해하기:** 프로토타입 모드에서는 디자이너가 화면 또는 UI 요소 간에 추가한 전환이나 애니메이션을 볼 수 있어 개발자에게 의도된 동작 및 스타일에 대한 명확한 시각적 지침을 제공합니다.
+2. **실행 명확화:** 프로토타입은 모호성을 줄이는 데 도움을 줄 수 있습니다. 개발자는 특정 요소의 기능이나 모양을 보다 잘 이해하기 위해 이를 상호작용할 수 있습니다.
-For more comprehensive details and guidance on learning the Figma platform, you can visit the official [Figma Documentation](https://help.figma.com/hc/en-us).
+Figma 플랫폼 학습에 대한 포괄적인 세부 정보와 지침을 얻으시려면 [공식 Figma 문서](https://help.figma.com/hc/en-us)를 방문하세요.
-### Measure distances
+### 거리 측정
-Select an element, hold `Option` key (Mac) or `Alt` key (Windows), then hover over another element to see the distance between them.
+요소를 선택하고 `Option` 키(Mac) 또는 `Alt` 키(Windows)를 누른 상태에서 다른 요소 위에 마우스를 올리면 요소 간 거리를 확인할 수 있습니다.
-### Figma extension for VSCode (Recommended)
+### VSCode용 Figma 확장 프로그램 (추천)
-[Figma for VS Code](https://marketplace.visualstudio.com/items?itemName=figma.figma-vscode-extension)
-lets you navigate and inspect design files, collaborate with designers, track changes, and speed up implementation - all without leaving your text editor.
-It's part of our recommended extensions.
+[VS Code용 Figma](https://marketplace.visualstudio.com/items?itemName=figma.figma-vscode-extension) 확장 프로그램은 텍스트 편집기에서 벗어나지 않고 디자인 파일 탐색 및 점검, 디자이너와의 협업, 변경 사항 추적, 구현 속도 향상을 가능하게 합니다.
+추천하는 확장 프로그램의 일부입니다.
-## Collaboration
+## 협업
-1. **Using Comments:** You are welcome to use the comment feature by clicking on the bubble icon in the left part of the toolbar.
-2. **Cursor chat:** A nice feature of Figma is the Cursor chat. Just press `;` on Mac and `/` on Windows to send a message if you see someone else using Figma as the same time as you.
+1. **댓글 사용하기:** 툴바 왼쪽의 말풍선 아이콘을 클릭하여 댓글 기능을 사용할 수 있습니다.
+2. **커서 채팅:** Figma의 멋진 기능 중 하나는 커서 채팅입니다. Figma를 다른 누군가와 동시에 사용하는 것을 보면 `;` (Mac)이나 `/` (Windows) 키를 눌러 메시지를 보낼 수 있습니다.
diff --git a/packages/twenty-docs/l/ko/developers/contribute/capabilities/local-setup.mdx b/packages/twenty-docs/l/ko/developers/contribute/capabilities/local-setup.mdx
index 004b28dc4c..2a41f5d2e4 100644
--- a/packages/twenty-docs/l/ko/developers/contribute/capabilities/local-setup.mdx
+++ b/packages/twenty-docs/l/ko/developers/contribute/capabilities/local-setup.mdx
@@ -1,13 +1,13 @@
---
-title: Local Setup
-description: The guide for contributors (or curious developers) who want to run Twenty locally.
+title: 로컬 설정
+description: 콘트리뷰터(기여자)나 호기심 많은 개발자를 위한 가이드로서, Twenty를 로컬에서 실행하고자 하는 분들에게 드리는 안내입니다.
---
-## Prerequisites
+## 사전 준비
-
- Before you can install and use Twenty, make sure you install the following on your computer:
+
+ Twenty를 설치하고 사용하기 전에, 먼저 컴퓨터에 다음을 설치하세요:
* [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)
* [Node v24.5.0](https://nodejs.org/en/download)
@@ -15,25 +15,25 @@ description: The guide for contributors (or curious developers) who want to run
* [nvm](https://github.com/nvm-sh/nvm/blob/master/README.md)
- `npm` won't work, you should use `yarn` instead. Yarn is now shipped with Node.js, so you don't need to install it separately.
- You only have to run `corepack enable` to enable Yarn if you haven't done it yet.
+ `npm`은 사용할 수 없으며, 대신 `yarn`을 사용해야 합니다. Yarn은 이제 Node.js와 함께 제공되기 때문에 별도로 설치할 필요가 없습니다.
+ 아직 하지 않았다면 `corepack enable`을 실행하여 Yarn을 사용할 수 있도록 설정하세요.
-
- 1. Install WSL
- Open PowerShell as Administrator and run:
+
+ 1. WSL 설치
+ PowerShell을 관리자 권한으로 열고 다음을 실행하세요:
```powershell
wsl --install
```
- You should now see a prompt to restart your computer. If not, restart it manually.
+ 이제 컴퓨터를 재시작하라는 프롬프트가 나타날 것입니다. 그렇지 않으면 수동으로 재시작하세요.
- Upon restart, a powershell window will open and install Ubuntu. This may take up some time.
- You'll see a prompt to create a username and password for your Ubuntu installation.
+ 재시작 후, powershell 창이 열리고 Ubuntu가 설치됩니다. 이 작업은 다소 시간이 걸릴 수 있습니다.
+ Ubuntu 설치 시 사용자 이름과 암호를 만드는 프롬프트가 나타납니다.
- 2. Install and configure git
+ 2. Git 설치 및 구성
```bash
sudo apt-get install git
@@ -43,10 +43,10 @@ description: The guide for contributors (or curious developers) who want to run
git config --global user.email "youremail@domain.com"
```
- 3. Install nvm, node.js and yarn
+ 3. nvm, node.js 및 yarn 설치
- Use `nvm` to install the correct `node` version. The `.nvmrc` ensures all contributors use the same version.
+ 적절한 `node` 버전을 설치하기 위해 `nvm`을 사용하세요. `.nvmrc`는 모든 기여자가 동일한 버전을 사용하도록 보장합니다.
```bash
@@ -55,7 +55,7 @@ description: The guide for contributors (or curious developers) who want to run
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | bash
```
- Close and reopen your terminal to use nvm. Then run the following commands.
+ nvm을 사용하려면 터미널을 닫았다가 다시 여세요. 그런 다음 다음 명령어를 실행하세요.
```bash
@@ -70,13 +70,13 @@ description: The guide for contributors (or curious developers) who want to run
---
-## Step 1: Git Clone
+## 1단계: Git 복제
-In your terminal, run the following command.
+터미널에서 다음 명령어를 실행하세요.
-
- If you haven't already set up SSH keys, you can learn how to do so [here](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/about-ssh).
+
+ 아직 SSH 키를 설정하지 않은 경우, [여기](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/about-ssh)를 참조하여 설정하는 방법을 배우세요.
```bash
git clone git@github.com:twentyhq/twenty.git
@@ -90,36 +90,36 @@ In your terminal, run the following command.
-## Step 2: Position yourself at the root
+## 2단계: 루트 위치 설정
```bash
cd twenty
```
-You should run all commands in the following steps from the root of the project.
+다음 단계의 모든 명령어는 프로젝트 루트에서 실행하세요.
-## Step 3: Set up a PostgreSQL Database
+## 3단계: PostgreSQL 데이터베이스 설정
-
- **Option 1 (preferred):** To provision your database locally:
- Use the following link to install Postgresql on your Linux machine: [Postgresql Installation](https://www.postgresql.org/download/linux/)
+
+ **옵션 1 (권장):** 데이터베이스를 로컬에서 프로비저닝하려면:
+ Linux 기기에 Postgresql을 설치하려면 다음 링크를 사용하십시오: [Postgresql 설치](https://www.postgresql.org/download/linux/)
```bash
psql postgres -c "CREATE DATABASE \"default\";" -c "CREATE DATABASE test;"
```
- Note: You might need to add `sudo -u postgres` to the command before `psql` to avoid permission errors.
+ 참고: 권한 오류를 피하기 위해 `psql` 명령어 앞에 `sudo -u postgres`를 추가해야 할 수 있습니다.
- **Option 2:** If you have docker installed:
+ **옵션 2:** 도커가 설치된 경우:
```bash
- make postgres-on-docker
+ make -C packages/twenty-docker postgres-on-docker
```
-
- **Option 1 (preferred):** To provision your database locally with `brew`:
+
+ **옵션 1 (권장):** `brew`로 로컬에서 데이터베이스를 프로비저닝하려면:
```bash
brew install postgresql@16
@@ -128,16 +128,17 @@ You should run all commands in the following steps from the root of the project.
psql postgres -c "CREATE DATABASE \"default\";" -c "CREATE DATABASE test;"
```
- You can verify if the PostgreSQL server is running by executing:
+ PostgreSQL 서버가 실행 중인지 확인하려면 다음을 실행하세요:
```bash
brew services list
```
- The installer might not create the `postgres` user by default when installing
- via Homebrew on MacOS. Instead, it creates a PostgreSQL role that matches your macOS
- username (e.g., "john").
- To check and create the `postgres` user if necessary, follow these steps:
+ 설치 시 기본적으로 `postgres` 사용자가 생성되지 않을 수 있습니다.
+ macOS에서 Homebrew로 설치할 경우, 설치 시스템 계정과 일치하는 PostgreSQL 역할이 생성됩니다(예: "john"). 대신 사용자의 macOS
+ 사용자 이름(예: "john")과 일치하는 PostgreSQL 역할을 생성합니다.# PostgreSQL 접속psql postgres
+ 또는
+ psql -U $(whoami) -d postgres
```bash
# Connect to PostgreSQL
@@ -146,14 +147,14 @@ You should run all commands in the following steps from the root of the project.
psql -U $(whoami) -d postgres
```
- Once at the psql prompt (postgres=#), run:
+ psql 프롬프트에서(postgres=#), 다음을 실행하세요:
```bash
# List existing PostgreSQL roles
\du
```
- You'll see output similar to:
+ 출력은 다음과 비슷해야 합니다:
```bash
Role name | Attributes | Member of
@@ -161,98 +162,98 @@ You should run all commands in the following steps from the root of the project.
john | Superuser | {}
```
- If you do not see a `postgres` role listed, proceed to the next step.
- Create the `postgres` role manually:
+ `postgres` 역할이 나열되지 않으면 다음 단계를 계속하십시오.
+ `postgres` 역할을 수동으로 만드세요:
```bash
CREATE ROLE postgres WITH SUPERUSER LOGIN;
```
- This creates a superuser role named `postgres` with login access.
+ 이는 로그인 액세스가 있는 슈퍼유저 역할 `postgres`를 생성합니다.
- **Option 2:** If you have docker installed:
+ **옵션 2:** 도커가 설치된 경우:
```bash
- make postgres-on-docker
+ make -C packages/twenty-docker postgres-on-docker
```
-
- All the following steps are to be run in the WSL terminal (within your virtual machine)
+
+ 다음 단계는 모두 WSL 터미널(가상 머신 내)에서 실행됩니다.
- **Option 1:** To provision your Postgresql locally:
- Use the following link to install Postgresql on your Linux virtual machine: [Postgresql Installation](https://www.postgresql.org/download/linux/)
+ **옵션 1:** Postgresql을 로컬에서 프로비저닝하려면:
+ Linux 가상 머신에 Postgresql을 설치하려면 다음 링크를 사용하세요: [Postgresql 설치](https://www.postgresql.org/download/linux/)
```bash
psql postgres -c "CREATE DATABASE \"default\";" -c "CREATE DATABASE test;"
```
- Note: You might need to add `sudo -u postgres` to the command before `psql` to avoid permission errors.
+ 참고: 권한 오류를 피하기 위해 `psql` 명령어 앞에 `sudo -u postgres`를 추가해야 할 수 있습니다.
- **Option 2:** If you have docker installed:
- Running Docker on WSL adds an extra layer of complexity.
- Only use this option if you are comfortable with the extra steps involved, including turning on [Docker Desktop WSL2](https://docs.docker.com/desktop/wsl).
+ **옵션 2:** 도커가 설치된 경우:
+ WSL에서 Docker를 실행하면 추가적인 복잡성이 발생합니다.
+ 이 옵션은 [Docker Desktop WSL2](https://docs.docker.com/desktop/wsl)를 켠 상태에서의 추가 설정 단계를 수반할 수 있다는 점에서 편안할 때만 사용하십시오.
```bash
- make postgres-on-docker
+ make -C packages/twenty-docker postgres-on-docker
```
-You can now access the database at [localhost:5432](localhost:5432), with user `postgres` and password `postgres` .
+이제 [localhost:5432](localhost:5432)에서 데이터베이스에 액세스할 수 있으며, 사용자 `postgres`와 비밀번호 `postgres` 를 사용합니다.
-## Step 4: Set up a Redis Database (cache)
+## 4단계: Redis 데이터베이스 (캐시) 설정
-Twenty requires a redis cache to provide the best performance
+Twenty는 최상의 성능을 제공하기 위해 redis 캐시가 필요합니다.
-
- **Option 1:** To provision your Redis locally:
- Use the following link to install Redis on your Linux machine: [Redis Installation](https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/install-redis-on-linux/)
+
+ **옵션 1:** Redis를 로컬에서 프로비저닝하려면:
+ 리눅스 기기에 Redis를 설치하려면 다음 링크를 사용하십시오: [Redis 설치](https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/install-redis-on-linux/)
- **Option 2:** If you have docker installed:
+ **옵션 2:** 도커가 설치된 경우:
```bash
- make redis-on-docker
+ make -C packages/twenty-docker redis-on-docker
```
-
- **Option 1 (preferred):** To provision your Redis locally with `brew`:
+
+ **옵션 1 (권장):** `brew`로 Redis를 로컬에서 프로비저닝하려면:
```bash
brew install redis
```
- Start your redis server:
+ redis 서버를 시작하세요:
`brew services start redis`
- **Option 2:** If you have docker installed:
+ **옵션 2:** 도커가 설치된 경우:
```bash
- make redis-on-docker
+ make -C packages/twenty-docker redis-on-docker
```
-
- **Option 1:** To provision your Redis locally:
- Use the following link to install Redis on your Linux virtual machine: [Redis Installation](https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/install-redis-on-linux/)
+
+ **옵션 1:** Redis를 로컬에서 프로비저닝하려면:
+ Linux 가상 머신에 Redis를 설치하려면 다음 링크를 사용하세요: [Redis 설치](https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/install-redis-on-linux/)
- **Option 2:** If you have docker installed:
+ **옵션 2:** 도커가 설치된 경우:
```bash
- make redis-on-docker
+ make -C packages/twenty-docker redis-on-docker
```
-If you need a Client GUI, we recommend [redis insight](https://redis.io/insight/) (free version available)
+클라이언트 GUI가 필요한 경우에는 [redis insight](https://redis.io/insight/) (무료 버전 제공)을 권장합니다.
-## Step 5: Setup environment variables
+## 5단계: 환경 변수 설정
-Use environment variables or `.env` files to configure your project. More info [here](/l/ko/developers/self-host/capabilities/setup)
+프로젝트를 구성하기 위해 환경 변수나 `.env` 파일을 사용하세요. 자세한 내용은 [여기](/l/ko/developers/self-host/capabilities/setup)에서 확인하세요.
-Copy the `.env.example` files in `/front` and `/server`:
+`/front`와 `/server`의 `.env.example` 파일을 복사하세요:
```bash
cp ./packages/twenty-front/.env.example ./packages/twenty-front/.env
@@ -260,48 +261,48 @@ 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/ko/developers/self-host/capabilities/setup#multi-workspace-mode) for details.
+ **멀티 워크스페이스 모드:** 기본적으로 Twenty는 하나의 워크스페이스만 생성할 수 있는 단일 워크스페이스 모드로 실행됩니다. 멀티 워크스페이스 지원을 활성화하려면(서브도메인 기반 기능을 테스트할 때 유용합니다), 서버의 `.env` 파일에서 `IS_MULTIWORKSPACE_ENABLED=true`로 설정하세요. 자세한 내용은 [멀티 워크스페이스 모드](/l/ko/developers/self-host/capabilities/setup#multi-workspace-mode)를 참조하세요.
-## Step 6: Installing dependencies
+## 6단계: 의존성 설치
-To build Twenty server and seed some data into your database, run the following command:
+Twenty 서버를 빌드하고 데이터베이스에 몇 가지 데이터를 시드하기 위해, 다음 명령어를 실행하세요:
```bash
yarn
```
-Note that `npm` or `pnpm` won't work
+`npm`이나 `pnpm`은 작동하지 않음을 주의하세요.
-## Step 7: Running the project
+## 7단계: 프로젝트 실행
-
- Depending on your Linux distribution, Redis server might be started automatically.
- If not, check the [Redis installation guide](https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/) for your distro.
+
+ 리눅스 배포판에 따라 Redis 서버가 자동으로 시작될 수 있습니다.
+ 시작되지 않는다면, 각 배포판에 맞는 [Redis 설치 가이드](https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/)를 확인하세요.
-
- Redis should already be running. If not, run:
+
+ Redis가 이미 실행 중이어야 합니다. 그렇지 않으면 다음을 실행하세요:
```bash
brew services start redis
```
-
- Depending on your Linux distribution, Redis server might be started automatically.
- If not, check the [Redis installation guide](https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/) for your distro.
+
+ 리눅스 배포판에 따라 Redis 서버가 자동으로 시작될 수 있습니다.
+ 시작되지 않는다면, 각 배포판에 맞는 [Redis 설치 가이드](https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/)를 확인하세요.
-Set up your database with the following command:
+다음 명령어로 데이터베이스를 설정하세요:
```bash
npx nx database:reset twenty-server
```
-Start the server, the worker and the frontend services:
+서버, 워커 및 프론트엔드 서비스를 시작하세요:
```bash
npx nx start twenty-server
@@ -309,25 +310,25 @@ npx nx worker twenty-server
npx nx start twenty-front
```
-Alternatively, you can start all services at once:
+또한, 모든 서비스를 한 번에 시작할 수도 있습니다:
```bash
npx nx start
```
-## Step 8: Use Twenty
+## 8단계: Twenty 사용하기
-**Frontend**
+**프론트엔드**
-Twenty's frontend will be running at [http://localhost:3001](http://localhost:3001).
-You can log in using the default demo account: `tim@apple.dev` (password: `tim@apple.dev`)
+Twenty의 프론트엔드는 [http://localhost:3001](http://localhost:3001)에서 실행됩니다.
+기본 데모 계정을 사용하여 로그인할 수 있습니다: `tim@apple.dev` (비밀번호: `tim@apple.dev`)
-**Backend**
+**백엔드**
-* Twenty's server will be up and running at [http://localhost:3000](http://localhost:3000)
-* The GraphQL API can be accessed at [http://localhost:3000/graphql](http://localhost:3000/graphql)
-* The REST API can be reached at [http://localhost:3000/rest](http://localhost:3000/rest)
+* Twenty의 서버는 [http://localhost:3000](http://localhost:3000)에서 실행됩니다.
+* GraphQL API는 [http://localhost:3000/graphql](http://localhost:3000/graphql)에서 액세스할 수 있습니다
+* REST API는 [http://localhost:3000/rest](http://localhost:3000/rest)에서 액세스할 수 있습니다
-## Troubleshooting
+## 문제 해결
-If you encounter any problem, check [Troubleshooting](/l/ko/developers/self-host/capabilities/troubleshooting) for solutions.
+문제가 발생하면 [문제 해결](/l/ko/developers/self-host/capabilities/troubleshooting)에서 해결책을 확인하십시오.
diff --git a/packages/twenty-docs/l/ko/developers/contribute/contribute.mdx b/packages/twenty-docs/l/ko/developers/contribute/contribute.mdx
index 9737c61b7c..6b194cfe75 100644
--- a/packages/twenty-docs/l/ko/developers/contribute/contribute.mdx
+++ b/packages/twenty-docs/l/ko/developers/contribute/contribute.mdx
@@ -1,32 +1,32 @@
---
-title: Contribute
-description: Contribute to Twenty's open-source development.
+title: 기여
+description: Twenty의 오픈 소스 개발에 기여하세요.
---
-## Overview
+## 개요
-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 기반 UI 작업에 참여하세요
+* **백엔드 개발**: NestJS 서버에 기여하세요
-## Getting Started
+## 시작하기
-
- Report issues or request features
+
+ 문제를 보고하거나 기능을 요청하세요
-
- Contribute to the UI
+
+ UI에 기여하세요
diff --git a/packages/twenty-docs/l/ko/developers/extend/capabilities/apis.mdx b/packages/twenty-docs/l/ko/developers/extend/capabilities/apis.mdx
index 9ca53aae82..e5dc9555a0 100644
--- a/packages/twenty-docs/l/ko/developers/extend/capabilities/apis.mdx
+++ b/packages/twenty-docs/l/ko/developers/extend/capabilities/apis.mdx
@@ -1,147 +1,147 @@
---
-title: APIs
-description: Query and modify your CRM data programmatically using REST or GraphQL.
+title: API
+description: REST 또는 GraphQL을 사용해 프로그래밍 방식으로 CRM 데이터를 쿼리하고 수정하세요.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-Twenty was built to be developer-friendly, offering powerful APIs that adapt to your custom data model. We provide four distinct API types to meet different integration needs.
+Twenty는 개발자 친화적으로 설계되어 있으며, 맞춤형 데이터 모델에 적합한 강력한 API를 제공합니다. 우리는 여러 통합 요구에 맞는 네 가지 고유한 API 유형을 제공합니다.
-## Developer-First Approach
+## 개발자 우선 접근 방식
-Twenty generates APIs specifically for your data model:
+Twenty는 귀하의 데이터 모델에 맞는 API를 특별히 생성합니다:
-* **No long IDs required**: Use your object and field names directly in endpoints
-* **Standard and custom objects treated equally**: Your custom objects get the same API treatment as built-in ones
-* **Dedicated endpoints**: Each object and field gets its own API endpoint
-* **Custom documentation**: Generated specifically for your workspace's data model
+* **긴 ID가 필요하지 않습니다**: 객체 및 필드 이름을 직접 엔드포인트에 사용합니다.
+* **표준 및 사용자 정의 객체가 동등하게 처리됩니다**: 내장된 객체와 동일한 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 유형
### Core API
-Accessed on `/rest/` or `/graphql/`
+`/rest/` 또는 `/graphql/`에서 접근할 수 있습니다.
-Work with your actual **records** (the data):
+실제 **레코드**(데이터)로 작업합니다:
-* Create, read, update, delete People, Companies, Opportunities, etc.
-* Query and filter data
-* Manage record relationships
+* People, Companies, Opportunities 등을 생성, 조회, 업데이트, 삭제합니다.
+* 데이터를 쿼리하고 필터링합니다
+* 데이터 기록의 관계를 관리합니다.
-### Metadata API
+### 메타데이터 API
-Accessed on `/rest/metadata/` or `/metadata/`
+`/rest/metadata/` 또는 `/metadata/`에서 접근할 수 있습니다.
-Manage your **workspace and data model**:
+**워크스페이스와 데이터 모델** 관리:
-* Create, modify, or delete objects and fields
-* Configure workspace settings
-* Define relationships between objects
+* 객체 및 필드를 생성, 수정 또는 삭제합니다.
+* 작업 공간 설정을 구성합니다.
+* 객체 간 관계를 정의합니다
-## REST vs GraphQL
+## REST와 GraphQL
-Both Core and Metadata APIs are available in REST and GraphQL formats:
+코어 및 메타데이터 API는 REST와 GraphQL 형식으로 제공됩니다:
-| Format | Available Operations |
-| ----------- | ---------------------------------------------------------- |
-| **REST** | CRUD, batch operations, upserts |
-| **GraphQL** | Same + **batch upserts**, relationship queries in one call |
+| 형식 | 사용 가능한 작업 |
+| ----------- | ------------------------------- |
+| **REST** | CRUD, 배치 작업, 업서트 |
+| **GraphQL** | 동일 + **배치 업서트**, 한 번의 호출로 관계 쿼리 |
-Choose based on your needs — both formats access the same data.
+필요에 따라 선택하세요 — 두 형식 모두 동일한 데이터에 접근합니다.
-## API Endpoints
+## API 엔드포인트
-| Environment | Base URL |
-| --------------- | ------------------------- |
-| **Cloud** | `https://api.twenty.com/` |
-| **Self-Hosted** | `https://{your-domain}/` |
+| 환경 | 기본 URL |
+| ---------- | ------------------------- |
+| **클라우드** | `https://api.twenty.com/` |
+| **셀프 호스팅** | `https://{your-domain}/` |
-## Authentication
+## 인증
-Every API request requires an API key in the header:
+모든 API 요청에는 헤더에 API 키가 필요합니다:
```
Authorization: Bearer YOUR_API_KEY
```
-### Create an API Key
+### API 키 생성
-1. Go to **Settings → APIs & Webhooks**
-2. Click **+ Create key**
-3. Configure:
- * **Name**: Descriptive name for the key
- * **Expiration Date**: When the key expires
-4. Click **Save**
-5. **Copy immediately** — the key is only shown once
+1. **설정 → API 및 웹훅**으로 이동하세요
+2. **+ 키 생성**을 클릭하세요
+3. 구성:
+ * **이름**: 키를 설명하는 이름
+ * **만료 날짜**: 키가 만료되는 시점
+4. **저장** 클릭
+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. Go to **Settings → Roles**
-2. Click on the role to assign
-3. Open the **Assignment** tab
-4. Under **API Keys**, click **+ Assign to API key**
-5. Select the API key
+1. **설정 → 역할**로 이동
+2. 할당할 역할을 클릭하세요
+3. **배정** 탭 열기
+4. **API 키**에서 **+ API 키에 할당**을 클릭하세요
+5. API 키를 선택하세요
-The key will inherit that role's permissions. See [Permissions](/l/ko/user-guide/permissions-access/capabilities/permissions) for details.
+키가 해당 역할의 권한을 상속받습니다. 자세한 내용은 [권한](/l/ko/user-guide/permissions-access/capabilities/permissions)을 참조하세요.
-### Manage API Keys
+### 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. Go to **Settings → APIs & Webhooks**
-2. Create an API key (required)
-3. Click on **REST API** or **GraphQL API** to open the playground
+1. **설정 → API 및 웹훅**으로 이동하세요
+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.
+플레이그라운드는 사용자 지정 객체와 필드를 반영하므로 문서는 항상 워크스페이스에 대해 정확합니다.
-## Batch Operations
+## 배치 작업
-Both REST and GraphQL support batch operations:
+REST와 GraphQL 모두 배치 작업을 지원합니다:
-* **Batch size**: Up to 60 records per request
-* **Operations**: Create, update, delete multiple records
+* **배치 크기**: 요청당 최대 60개의 기록
+* **작업**: 여러 기록을 생성, 업데이트, 삭제합니다
-**GraphQL-only features:**
+**GraphQL 전용 기능:**
-* **Batch Upsert**: Create or update in one call
-* Use plural object names (e.g., `CreateCompanies` instead of `CreateCompany`)
+* **배치 업서트**: 한 번의 호출로 생성하거나 업데이트합니다
+* 복수형 객체 이름을 사용하세요(예: `CreateCompanies` 대신 `CreateCompany`)
-## Rate Limits
+## 속도 제한
-API requests are throttled to ensure platform stability:
+플랫폼 안정성을 위해 API 요청에는 제한이 적용됩니다:
-| Limit | Value |
-| -------------- | -------------------- |
-| **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.
+ 처리량을 극대화하려면 배치 작업을 사용하세요 — 개별 요청 대신 단일 API 호출로 최대 60개의 기록을 처리할 수 있습니다.
diff --git a/packages/twenty-docs/l/ko/developers/extend/capabilities/apps.mdx b/packages/twenty-docs/l/ko/developers/extend/capabilities/apps.mdx
index dc528fa780..e517025a20 100644
--- a/packages/twenty-docs/l/ko/developers/extend/capabilities/apps.mdx
+++ b/packages/twenty-docs/l/ko/developers/extend/capabilities/apps.mdx
@@ -1,81 +1,88 @@
---
-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 맞춤설정을 **코드로** 구축하고 관리할 수 있습니다. 모든 것을 UI에서 구성하는 대신, 데이터 모델과 서버리스 함수를 코드로 정의합니다 — 이를 통해 더 빠르게 구축·유지 관리하고 여러 워크스페이스에 배포할 수 있습니다.
-**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
+* 사용자 정의 UI 레이아웃 및 컴포넌트
-## Prerequisites
+## 사전 준비
-* 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
+# 새 앱 초기 구조 생성
npx create-twenty-app@latest my-twenty-app
cd my-twenty-app
-# Authenticate using your API key (you'll be prompted)
-yarn auth
+# yarn@4를 사용하지 않는 경우
+corepack enable
+yarn install
-# Start dev mode: automatically syncs local changes to your workspace
-yarn dev
+# API 키로 인증합니다(입력하라는 메시지가 표시됩니다)
+yarn auth:login
+
+# 개발 모드 시작: 로컬 변경 사항이 워크스페이스와 자동으로 동기화됩니다
+yarn app:dev
```
-From here you can:
+여기에서 다음 작업을 수행할 수 있습니다:
```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
```
-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).
+참고: [create-twenty-app](https://www.npmjs.com/package/create-twenty-app) 및 [twenty-sdk CLI](https://www.npmjs.com/package/twenty-sdk)의 CLI 참고 페이지도 확인하세요.
-## 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 구성을 추가합니다
+* `twenty` CLI와 연결된 설정 파일과 스크립트를 생성합니다
+* 기본 애플리케이션 구성과 기본 함수 역할을 생성합니다
-A freshly scaffolded app looks like this:
+새로 스캐폴딩된 앱은 다음과 같습니다:
```text filename="my-twenty-app/"
my-twenty-app/
@@ -85,79 +92,144 @@ my-twenty-app/
.nvmrc
.yarnrc.yml
.yarn/
- releases/
- yarn-4.9.2.cjs
install-state.gz
eslint.config.mjs
tsconfig.json
README.md
src/
- application.config.ts
- role.config.ts
- // your entities, actions, and other app files
+ app/
+ application.config.ts # Required - main application configuration
+ default-function.role.ts # Default role for serverless functions
+ // your entities (*.object.ts, *.function.ts, *.role.ts)
+ utils/ # Optional - handler implementations & utilities
```
-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/**: 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.config.ts`: Default function role used by your serverless functions. See “Default function role” below.
- * Future entities, actions/functions, and any supporting code you add.
+애플리케이션은 파일 접미사로 엔티티를 감지하는 **관례 우선** 접근 방식을 사용합니다. 이를 통해 `src/app/` 폴더 내에서 유연하게 구성할 수 있습니다:
-Later commands will add more files and folders:
+| 파일 접미사 | 엔티티 유형 |
+| --------------- | ------------ |
+| `*.object.ts` | 사용자 정의 객체 정의 |
+| `*.function.ts` | 서버리스 함수 정의 |
+| `*.role.ts` | 역할 정의 |
-* `yarn generate` will create a `generated/` folder (typed Twenty client + workspace types).
-* `yarn create-entity` will add entity definition files under `src/` for your custom objects.
+### 지원되는 폴더 구성 방식
-## Authentication
+엔티티를 다음 패턴 중 어느 것으로든 구성할 수 있습니다:
-The first time you run `yarn auth`, you'll be prompted for:
+**전통적(유형별):**
-* API URL (defaults to http://localhost:3000 or your current workspace profile)
-* API key
+```text
+src/app/
+├── application.config.ts
+├── objects/
+│ └── postCard.object.ts
+├── functions/
+│ └── createPostCard.function.ts
+└── roles/
+ └── admin.role.ts
+```
-Your credentials are stored per-user in `~/.twenty/config.json`. You can maintain multiple profiles and switch using `--workspace `.
+**기능 기반:**
-Examples:
+```text
+src/app/
+├── application.config.ts
+└── post-card/
+ ├── postCard.object.ts
+ ├── createPostCard.function.ts
+ └── postCardAdmin.role.ts
+```
+
+**플랫:**
+
+```text
+src/app/
+├── application.config.ts
+├── postCard.object.ts
+├── createPostCard.function.ts
+└── admin.role.ts
+```
+
+개요:
+
+* **package.json**: 앱 이름, 버전, 엔진(Node 24+, Yarn 4)을 선언하고, `twenty-sdk`와 함께 `dev`, `sync`, `generate`, `create-entity`, `logs`, `uninstall`, `auth` 같은 스크립트를 추가합니다. 이 스크립트들은 로컬 `twenty` CLI에 위임됩니다.
+* **.gitignore**: `node_modules`, `.yarn`, `generated/`(타입드 클라이언트), `dist/`, `build/`, 커버리지 폴더, 로그 파일, `.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`: 앱의 전역 구성(메타데이터 및 런타임 연결)입니다. 아래의 "Application config"를 참조하세요.
+ * `*.role.ts`: 서버리스 함수에서 사용하는 역할 정의. 아래의 "Default function role"을 참조하세요.
+ * `*.object.ts`: 사용자 정의 객체 정의.
+ * `*.function.ts`: 서버리스 함수 정의.
+* **src/utils/**: 핸들러 구현 및 유틸리티를 위한 선택적 폴더.
+
+이후 명령을 실행하면 더 많은 파일과 폴더가 추가됩니다:
+
+* `yarn app:generate`는 `generated/` 폴더를 생성합니다(타입드 Twenty 클라이언트 + 워크스페이스 타입).
+* `yarn app:create-entity`는 사용자 정의 객체, 함수, 역할에 대한 엔티티 정의 파일을 `src/app/` 아래에 추가합니다.
+ l
+
+## 인증
+
+처음 `yarn auth:login`을 실행하면 다음을 입력하라는 프롬프트가 표시됩니다:
+
+* API URL(기본값은 http://localhost:3000 또는 현재 워크스페이스 프로필)
+* API 키
+
+자격 증명은 사용자별로 `~/.twenty/config.json`에 저장됩니다. 여러 프로필을 유지하고 프로필 간에 전환할 수 있습니다.
+
+### 작업 공간 관리
```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
```
-## Use the SDK resources (types & config)
+한 번 `auth:switch`로 작업 공간을 전환하면, 이후의 모든 명령은 기본적으로 해당 작업 공간을 사용합니다. 여전히 `--workspace `로 일시적으로 재정의할 수 있습니다.
-The twenty-sdk provides typed building blocks you use inside your app. Below are the key pieces you'll touch most often.
+## SDK 리소스(타입 및 구성) 사용
-### Defining objects
+twenty-sdk는 앱 내부에서 사용하는 타입드 빌딩 블록과 헬퍼 함수를 제공합니다. 가장 자주 사용하게 될 핵심 요소는 다음과 같습니다.
-Custom objects are regular TypeScript classes annotated with decorators from `twenty-sdk`. They live under `src/objects/` in your app and describe both schema and behavior for records in your workspace.
+### 헬퍼 함수
-Here is an example `postCard` object from the Hello World app:
+SDK는 앱 엔티티를 정의할 때 사용할 수 있는, 내장 검증이 포함된 네 가지 헬퍼 함수를 제공합니다:
+
+| 함수 | 목적 |
+| ------------------ | ------------------- |
+| `defineApp()` | 애플리케이션 메타데이터 구성 |
+| `defineObject()` | 필드가 있는 사용자 정의 객체 정의 |
+| `defineFunction()` | 핸들러가 있는 서버리스 함수 정의 |
+| `defineRole()` | 역할 권한과 객체 접근 구성 |
+
+이 함수들은 런타임에 구성을 검증하고, 더 나은 IDE 자동 완성과 타입 안정성을 제공합니다.
+
+### 객체 정의하기
+
+사용자 정의 객체는 워크스페이스의 레코드에 대한 스키마와 동작을 모두 정의합니다. `defineObject()`를 사용해 내장 검증과 함께 객체를 정의하세요:
```typescript
-import { type Note } from '../../generated';
-
-import {
- type AddressField,
- Field,
- FieldType,
- type FullNameField,
- Object,
- OnDeleteAction,
- Relation,
- RelationType,
- STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS,
-} from 'twenty-sdk';
+// src/app/postCard.object.ts
+import { defineObject, FieldType } from 'twenty-sdk';
enum PostCardStatus {
DRAFT = 'DRAFT',
@@ -166,176 +238,186 @@ enum PostCardStatus {
RETURNED = 'RETURNED',
}
-@Object({
+export default defineObject({
universalIdentifier: '54b589ca-eeed-4950-a176-358418b85c05',
nameSingular: 'postCard',
namePlural: 'postCards',
- labelSingular: 'Post card',
- labelPlural: 'Post cards',
- description: ' A post card object',
+ labelSingular: 'Post Card',
+ labelPlural: 'Post Cards',
+ description: 'A post card object',
icon: 'IconMail',
-})
-export class PostCard {
- @Field({
- universalIdentifier: '58a0a314-d7ea-4865-9850-7fb84e72f30b',
- type: FieldType.TEXT,
- label: 'Content',
- description: "Postcard's content",
- icon: 'IconAbc',
- })
- content: string;
-
- @Field({
- universalIdentifier: 'c6aa31f3-da76-4ac6-889f-475e226009ac',
- type: FieldType.FULL_NAME,
- label: 'Recipient name',
- icon: 'IconUser',
- })
- recipientName: FullNameField;
-
- @Field({
- universalIdentifier: '95045777-a0ad-49ec-98f9-22f9fc0c8266',
- type: FieldType.ADDRESS,
- label: 'Recipient address',
- icon: 'IconHome',
- })
- recipientAddress: AddressField;
-
- @Field({
- universalIdentifier: '87b675b8-dd8c-4448-b4ca-20e5a2234a1e',
- type: FieldType.SELECT,
- label: 'Status',
- icon: 'IconSend',
- defaultValue: `'${PostCardStatus.DRAFT}'`,
- options: [
- { value: PostCardStatus.DRAFT, label: 'Draft', position: 0, color: 'gray' },
- { value: PostCardStatus.SENT, label: 'Sent', position: 1, color: 'orange' },
- { value: PostCardStatus.DELIVERED, label: 'Delivered', position: 2, color: 'green' },
- { value: PostCardStatus.RETURNED, label: 'Returned', position: 3, color: 'orange' },
- ],
- })
- status: PostCardStatus;
-
- @Relation({
- universalIdentifier: 'c9e2b4f4-b9ad-4427-9b42-9971b785edfe',
- type: RelationType.ONE_TO_MANY,
- label: 'Notes',
- icon: 'IconComment',
- inverseSideTargetUniversalIdentifier: STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS.note,
- onDelete: OnDeleteAction.CASCADE,
- })
- notes: Note[];
-
- @Field({
- universalIdentifier: 'e06abe72-5b44-4e7f-93be-afc185a3c433',
- type: FieldType.DATE_TIME,
- label: 'Delivered at',
- icon: 'IconCheck',
- isNullable: true,
- defaultValue: null,
- })
- deliveredAt?: Date;
-}
+ fields: [
+ {
+ universalIdentifier: '58a0a314-d7ea-4865-9850-7fb84e72f30b',
+ name: 'content',
+ type: FieldType.TEXT,
+ label: 'Content',
+ description: "Postcard's content",
+ icon: 'IconAbc',
+ },
+ {
+ universalIdentifier: 'c6aa31f3-da76-4ac6-889f-475e226009ac',
+ name: 'recipientName',
+ type: FieldType.FULL_NAME,
+ label: 'Recipient name',
+ icon: 'IconUser',
+ },
+ {
+ universalIdentifier: '95045777-a0ad-49ec-98f9-22f9fc0c8266',
+ name: 'recipientAddress',
+ type: FieldType.ADDRESS,
+ label: 'Recipient address',
+ icon: 'IconHome',
+ },
+ {
+ universalIdentifier: '87b675b8-dd8c-4448-b4ca-20e5a2234a1e',
+ name: 'status',
+ type: FieldType.SELECT,
+ label: 'Status',
+ icon: 'IconSend',
+ defaultValue: `'${PostCardStatus.DRAFT}'`,
+ options: [
+ { value: PostCardStatus.DRAFT, label: 'Draft', position: 0, color: 'gray' },
+ { value: PostCardStatus.SENT, label: 'Sent', position: 1, color: 'orange' },
+ { value: PostCardStatus.DELIVERED, label: 'Delivered', position: 2, color: 'green' },
+ { value: PostCardStatus.RETURNED, label: 'Returned', position: 3, color: 'orange' },
+ ],
+ },
+ {
+ universalIdentifier: 'e06abe72-5b44-4e7f-93be-afc185a3c433',
+ name: 'deliveredAt',
+ type: FieldType.DATE_TIME,
+ label: 'Delivered at',
+ icon: 'IconCheck',
+ isNullable: true,
+ defaultValue: null,
+ },
+ ],
+});
```
-Key points:
+핵심 요점:
-* The `@Object` decorator defines the object identity and labels used across the workspace; its `universalIdentifier` must be unique and stable across deployments.
-* Each `@Field` decorator defines a field on the object with a type, label, and its own stable `universalIdentifier`.
-* `@Relation` wires this object to other objects (standard or custom) and controls cascade behavior with `onDelete`.
-* You can scaffold new objects using `yarn create-entity`, which guides you through naming, fields, and relationships, then generates object files similar to the `postCard` example.
+* 내장 검증과 더 나은 IDE 지원을 위해 `defineObject()`를 사용하세요.
+* `universalIdentifier`는 배포 전반에서 고유하고 안정적이어야 합니다.
+* 각 필드는 `name`, `type`, `label` 및 고유하고 안정적인 `universalIdentifier`가 필요합니다.
+* `fields` 배열은 선택 사항입니다. 사용자 정의 필드 없이도 객체를 정의할 수 있습니다.
+* `yarn app:create-entity`를 사용하여 새 객체를 스캐폴딩할 수 있으며, 이름, 필드, 관계 설정 과정을 안내합니다.
-### Application config (application.config.ts)
+
+ **기본 필드는 자동으로 생성됩니다.** 사용자 정의 객체를 정의하면 Twenty가 `name`, `createdAt`, `updatedAt`, `createdBy`, `position`, `deletedAt` 등의 표준 필드를 자동으로 추가합니다. 이 필드들은 `fields` 배열에 정의할 필요가 없습니다. 사용자 정의 필드만 추가하세요.
+
-Every app has a single `application.config.ts` file that describes:
+
+ TypeScript 데코레이터를 사용하여 객체를 정의할 수도 있습니다. 이 접근 방식은 `@Object`, `@Field`, `@Relation` 데코레이터를 사용하는 클래스 기반 문법을 사용합니다:
-* **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.
+ ```typescript
+ import {
+ type AddressField,
+ Field,
+ FieldType,
+ type FullNameField,
+ Object,
+ OnDeleteAction,
+ Relation,
+ RelationType,
+ STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS,
+ } from 'twenty-sdk';
+ import { type Note } from '../../generated';
-When you scaffold a new app, you start with a minimal config:
+ @Object({
+ universalIdentifier: '54b589ca-eeed-4950-a176-358418b85c05',
+ nameSingular: 'postCard',
+ namePlural: 'postCards',
+ labelSingular: 'Post card',
+ labelPlural: 'Post cards',
+ description: 'A post card object',
+ icon: 'IconMail',
+ })
+ export class PostCard {
+ @Field({
+ universalIdentifier: '58a0a314-d7ea-4865-9850-7fb84e72f30b',
+ type: FieldType.TEXT,
+ label: 'Content',
+ description: "Postcard's content",
+ icon: 'IconAbc',
+ })
+ content: string;
+
+ @Relation({
+ universalIdentifier: 'c9e2b4f4-b9ad-4427-9b42-9971b785edfe',
+ type: RelationType.ONE_TO_MANY,
+ label: 'Notes',
+ icon: 'IconComment',
+ inverseSideTargetUniversalIdentifier: STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS.note,
+ onDelete: OnDeleteAction.CASCADE,
+ })
+ notes: Note[];
+ }
+ ```
+
+ 참고: 데코레이터 접근 방식은 TypeScript 구성에서 `experimentalDecorators`가 필요합니다.
+
+
+### 애플리케이션 구성(application.config.ts)
+
+모든 앱에는 다음을 설명하는 단일 `application.config.ts` 파일이 있습니다:
+
+* **앱에 대한 정보**: 식별자, 표시 이름, 설명.
+* **함수가 실행되는 방식**: 권한을 위해 사용하는 역할.
+* **(선택 사항) 변수**: 함수에 환경 변수로 노출되는 키–값 쌍.
+
+`defineApp()`을 사용해 애플리케이션 구성을 정의하세요:
```typescript
-import { type ApplicationConfig } from 'twenty-sdk';
+// src/app/application.config.ts
+import { defineApp } from 'twenty-sdk';
+import { DEFAULT_FUNCTION_ROLE_UNIVERSAL_IDENTIFIER } from './default-function.role';
-const config: ApplicationConfig = {
- universalIdentifier: '',
+export default defineApp({
+ universalIdentifier: '4ec0391d-18d5-411c-b2f3-266ddc1c3ef7',
displayName: 'My Twenty App',
description: 'My first Twenty app',
- functionRoleUniversalIdentifier: '',
-};
-
-export default config;
-```
-
-You can gradually extend this file as your app grows. For example, you can add an icon and application-scoped variables:
-
-```typescript
-import { type ApplicationConfig } from 'twenty-sdk';
-
-const config: ApplicationConfig = {
- universalIdentifier: '',
- displayName: 'My App',
- description: 'What your app does',
- icon: 'IconWorld', // Choose an icon by name
+ icon: 'IconWorld',
applicationVariables: {
DEFAULT_RECIPIENT_NAME: {
- universalIdentifier: '',
- description: 'Default recipient used by functions',
+ universalIdentifier: '19e94e59-d4fe-4251-8981-b96d0a9f74de',
+ description: 'Default recipient name for postcards',
value: 'Jane Doe',
isSecret: false,
},
},
- functionRoleUniversalIdentifier: '',
-};
-
-export default config;
+ functionRoleUniversalIdentifier: DEFAULT_FUNCTION_ROLE_UNIVERSAL_IDENTIFIER,
+});
```
-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 `role.config.ts` (see below).
+* `universalIdentifier` 필드는 고유하고 결정적인 ID입니다. 한 번 생성한 후 동기화 전반에 걸쳐 안정적으로 유지하세요.
+* `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.
+애플리케이션은 워크스페이스의 객체와 작업에 대한 권한을 캡슐화하는 역할을 정의할 수 있습니다. `application.config.ts`의 `functionRoleUniversalIdentifier` 필드는 앱의 서버리스 함수가 사용하는 기본 역할을 지정합니다.
-* 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.
+* `TWENTY_API_KEY`로 주입되는 런타임 API 키는 이 기본 함수 역할에서 파생됩니다.
+* 타입드 클라이언트는 해당 역할에 부여된 권한으로 제한됩니다.
+* 최소 권한 원칙을 따르세요. 함수에 필요한 권한만 가진 전용 역할을 만들고, 해당 역할의 universal identifier를 참조하세요.
-##### Default function role (role.config.ts)
+##### 기본 함수 역할(\*.role.ts)
-When you scaffold a new app, the CLI also creates `src/role.config.ts`. This file exports the default role your serverless functions will use at runtime:
+새 앱을 스캐폴딩하면, CLI가 기본 역할 파일도 생성합니다. `defineRole()`을 사용해 내장 검증과 함께 역할을 정의하세요:
```typescript
-import { PermissionFlag, type RoleConfig } from 'twenty-sdk';
+// src/app/default-function.role.ts
+import { defineRole, PermissionFlag } from 'twenty-sdk';
-export const functionRole: RoleConfig = {
- universalIdentifier: '',
- label: 'My Twenty App default function role',
- description: 'My Twenty App default function role',
- canReadAllObjectRecords: true,
- canUpdateAllObjectRecords: true,
- canSoftDeleteAllObjectRecords: true,
- canDestroyAllObjectRecords: false,
-};
-```
+export const DEFAULT_FUNCTION_ROLE_UNIVERSAL_IDENTIFIER =
+ 'b648f87b-1d26-4961-b974-0908fd991061';
-The `universalIdentifier` of this role is automatically wired into `application.config.ts` as `functionRoleUniversalIdentifier`. In other words:
-
-* **role.config.ts** defines what the default function role can do.
-* **application.config.ts** points to that role so your functions inherit its permissions.
-
-As you move beyond the initial scaffold, you should tighten this role and make it explicit about what it can access. A more production-ready role might look closer to:
-
-```typescript
-import { PermissionFlag, type RoleConfig } from 'twenty-sdk';
-
-export const functionRole: RoleConfig = {
- universalIdentifier: '',
+export default defineRole({
+ universalIdentifier: DEFAULT_FUNCTION_ROLE_UNIVERSAL_IDENTIFIER,
label: 'Default function role',
description: 'Default role for function Twenty client',
canReadAllObjectRecords: false,
@@ -363,41 +445,41 @@ export const functionRole: RoleConfig = {
canUpdateFieldValue: false,
},
],
- permissionFlags: ['APPLICATIONS'],
-};
+ permissionFlags: [PermissionFlag.APPLICATIONS],
+});
```
-Notes:
+이 역할의 `universalIdentifier`는 `application.config.ts`에서 `functionRoleUniversalIdentifier`로 참조됩니다. 다시 말해:
-* 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).
+* **\*.role.ts**는 기본 함수 역할이 수행할 수 있는 작업을 정의합니다.
+* **application.config.ts**는 해당 역할을 가리키므로, 함수는 그 권한을 상속받습니다.
-### Serverless function config and entrypoint
+노트:
-Each function exports a main handler and a config describing its triggers. You can mix multiple trigger types.
+* 스캐폴딩된 역할에서 시작하여, 최소 권한 원칙에 따라 점진적으로 제한하세요.
+* `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).
+
+### 서버리스 함수 구성과 엔트리포인트
+
+각 함수 파일은 `defineFunction()`을 사용해 핸들러와 선택적 트리거가 포함된 구성을 내보냅니다. 자동 감지를 위해 `*.function.ts` 파일 접미사를 사용하세요.
```typescript
-// src/actions/create-new-post-card.ts
-import type {
- FunctionConfig,
- DatabaseEventPayload,
- ObjectRecordCreateEvent,
- CronPayload,
-} from 'twenty-sdk';
-import Twenty, { type Person } from '../generated';
+// src/app/createPostCard.function.ts
+import { defineFunction } from 'twenty-sdk';
+import type { DatabaseEventPayload, ObjectRecordCreateEvent, CronPayload, RoutePayload } from 'twenty-sdk';
+import Twenty, { type Person } from '../../generated';
-// main handler can accept parameters from route, cron, or database events
-export const main = async (
+const handler = async (
params:
- | { name?: string }
+ | RoutePayload
| DatabaseEventPayload>
| CronPayload,
) => {
const client = new Twenty(); // generated typed client
- const name = 'name' in params
- ? params.name ?? process.env.DEFAULT_RECIPIENT_NAME ?? 'Hello world'
+ const name = 'name' in params.queryStringParameters
+ ? params.queryStringParameters.name ?? process.env.DEFAULT_RECIPIENT_NAME ?? 'Hello world'
: 'Hello world';
const result = await client.mutation({
@@ -410,14 +492,15 @@ export const main = async (
return result;
};
-export const config: FunctionConfig = {
- universalIdentifier: '',
+export default defineFunction({
+ universalIdentifier: 'e56d363b-0bdc-4d8a-a393-6f0d1c75bdcf',
name: 'create-new-post-card',
timeoutSeconds: 2,
+ handler,
triggers: [
// Public HTTP route trigger '/s/post-card/create'
{
- universalIdentifier: '',
+ universalIdentifier: 'c9f84c8d-b26d-40d1-95dd-4f834ae5a2c6',
type: 'route',
path: '/post-card/create',
httpMethod: 'GET',
@@ -425,39 +508,137 @@ export const config: FunctionConfig = {
},
// Cron trigger (CRON pattern)
{
- universalIdentifier: '',
+ universalIdentifier: 'dd802808-0695-49e1-98c9-d5c9e2704ce2',
type: 'cron',
pattern: '0 0 1 1 *',
},
// Database event trigger
{
- universalIdentifier: '',
+ universalIdentifier: '203f1df3-4a82-4d06-a001-b8cf22a31156',
type: 'databaseEvent',
- eventName: 'person.created',
+ eventName: 'person.updated',
+ updatedFields: ['name'],
},
],
+});
+```
+
+일반적인 트리거 유형:
+
+* **route**: **`/s/` 엔드포인트** 아래에서 HTTP 경로와 메서드로 함수를 노출합니다:
+
+> 예: `path: '/post-card/create',` -> `/s/post-card/create`에서 호출
+
+* **cron**: CRON 식을 사용하여 예약된 일정으로 함수를 실행합니다.
+* **databaseEvent**: 워크스페이스 객체 라이프사이클 이벤트에서 실행됩니다. 이벤트 작업이 `updated`인 경우, 수신할 특정 필드를 `updatedFields` 배열에 지정할 수 있습니다. 정의하지 않거나 비워두면, 어떤 업데이트든 함수가 트리거됩니다.
+
+> 예: `person.updated`
+
+노트:
+
+* `triggers` 배열은 선택 사항입니다. 트리거가 없는 함수는 다른 함수에서 호출되는 유틸리티 함수로 사용할 수 있습니다.
+* 하나의 함수에서 여러 트리거 유형을 혼합할 수 있습니다.
+
+### 라우트 트리거 페이로드
+
+
+ **호환성 파괴적 변경(v1.16, 2026년 1월):** 라우트 트리거 페이로드 형식이 변경되었습니다. v1.16 이전에는 쿼리 매개변수, 경로 매개변수, 그리고 본문이 페이로드로 직접 전송되었습니다. v1.16부터는 이들이 구조화된 `RoutePayload` 객체 내부에 중첩됩니다.
+
+ **v1.16 이전:**
+
+ ```typescript
+ const handler = async (params) => {
+ const { param1, param2 } = params; // Direct access
+ };
+ ```
+
+ **v1.16 이후:**
+
+ ```typescript
+ const handler = async (event: RoutePayload) => {
+ const { param1, param2 } = event.body; // Access via .body
+ const { queryParam } = event.queryStringParameters;
+ const { id } = event.pathParameters;
+ };
+ ```
+
+ **기존 함수 마이그레이션 방법:** 핸들러에서 params 객체에서 직접 구조 분해하는 대신 `event.body`, `event.queryStringParameters`, 또는 `event.pathParameters`에서 구조 분해하도록 업데이트하세요.
+
+
+라우트 트리거가 함수를 호출하면, AWS HTTP API v2 형식을 따르는 `RoutePayload` 객체를 받습니다. `twenty-sdk`에서 해당 타입을 임포트하세요:
+
+```typescript
+import { defineFunction, type RoutePayload } from 'twenty-sdk';
+
+const handler = async (event: RoutePayload) => {
+ // Access request data
+ const { headers, queryStringParameters, pathParameters, body } = event;
+
+ // HTTP method and path are available in requestContext
+ const { method, path } = event.requestContext.http;
+
+ return { message: 'Success' };
};
```
-Common trigger types:
+`RoutePayload` 타입은 다음과 같은 구조입니다:
-* route: Exposes your function on an HTTP path and method **under the `/s/` endpoint**:
+| 속성 | 유형 | 설명 |
+| ---------------------------- | ------------------------------------- | ------------------------------------------------------- |
+| `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` | 원시 요청 경로 |
-> e.g. `path: '/post-card/create',` -> call on `/s/post-card/create`
+### HTTP 헤더 전달
-* cron: Runs your function on a schedule using a CRON expression.
-* databaseEvent: Runs on workspace object lifecycle events
+기본적으로 보안상의 이유로 들어오는 요청의 HTTP 헤더는 서버리스 함수로 **전달되지 않습니다**. 특정 헤더에 접근하려면 `forwardedRequestHeaders` 배열에 명시적으로 나열하세요:
-> e.g. `person.created`
+```typescript
+export default defineFunction({
+ universalIdentifier: 'e56d363b-0bdc-4d8a-a393-6f0d1c75bdcf',
+ name: 'webhook-handler',
+ handler,
+ triggers: [
+ {
+ universalIdentifier: 'c9f84c8d-b26d-40d1-95dd-4f834ae5a2c6',
+ type: 'route',
+ path: '/webhook',
+ httpMethod: 'POST',
+ isAuthRequired: false,
+ forwardedRequestHeaders: ['x-webhook-signature', 'content-type'],
+ },
+ ],
+});
+```
-You can create new functions in two ways:
+핸들러에서 다음과 같이 해당 헤더에 접근할 수 있습니다:
-* **Scaffolded**: Run `yarn create-entity --path ` and choose the option to add a new function. This generates a starter file under `` with a `main` handler and a `config` block similar to the example above.
-* **Manual**: Create a new file and export `main` and `config` yourself, following the same pattern.
+```typescript
+const handler = async (event: RoutePayload) => {
+ const signature = event.headers['x-webhook-signature'];
+ const contentType = event.headers['content-type'];
-### Generated typed client
+ // Validate webhook signature...
+ return { received: true };
+};
+```
-Run yarn generate to create a local typed client in generated/ based on your workspace schema. Use it in your functions:
+
+ 헤더 이름은 소문자로 정규화됩니다. 소문자 키를 사용해 접근하세요(예: `event.headers['content-type']`).
+
+
+새 함수를 만드는 방법은 두 가지입니다:
+
+* **스캐폴딩**: `yarn app:create-entity`를 실행하고 새 함수를 추가하는 옵션을 선택하세요. 이렇게 하면 핸들러와 구성이 포함된 시작 파일이 생성됩니다.
+* **수동**: 새 `*.function.ts` 파일을 만들고 동일한 패턴에 따라 `defineFunction()`을 사용하세요.
+
+### 생성된 타입드 클라이언트
+
+워크스페이스 스키마를 기반으로 generated/에 로컬 타입드 클라이언트를 생성하려면 yarn app:generate를 실행하세요. 함수에서 사용하세요:
```typescript
import Twenty from './generated';
@@ -466,34 +647,34 @@ const client = new Twenty();
const { me } = await client.query({ me: { id: true, displayName: true } });
```
-The client is re-generated by `yarn generate`. Re-run after changing your objects and `yarn 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`: 앱이 대상으로 하는 Twenty API의 기본 URL.
+* `TWENTY_API_KEY`: 애플리케이션의 기본 함수 역할 범위로 제한된 단기 키.
-Notes:
+노트:
-* 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 키를 전달할 필요가 없습니다. 런타임에 process.env에서 `TWENTY_API_URL`과 `TWENTY_API_KEY`를 읽습니다.
+* API 키의 권한은 `application.config.ts`에서 `functionRoleUniversalIdentifier`를 통해 참조된 역할에 의해 결정됩니다. 이는 애플리케이션의 서버리스 함수에서 사용하는 기본 역할입니다.
+* 애플리케이션은 최소 권한 원칙을 따르도록 역할을 정의할 수 있습니다. 함수에 필요한 권한만 부여하고, `functionRoleUniversalIdentifier`를 해당 역할의 universal identifier로 지정하세요.
-### 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"
{
@@ -510,13 +691,13 @@ Then add scripts like these:
}
```
-Now you can run the same commands via Yarn, e.g. `yarn dev`, `yarn sync`, etc.
+이제 Yarn을 통해 동일한 명령을 실행할 수 있습니다. 예: `yarn app:dev`, `yarn app:sync` 등
-## Troubleshooting
+## 문제 해결
-* Authentication errors: run `yarn auth` 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 generate` and then `yarn dev`.
-* Dev mode not syncing: ensure `yarn dev` is running and that changes are not ignored by your environment.
+* 인증 오류: `yarn auth:login`를 실행하고 API 키에 필요한 권한이 있는지 확인하세요.
+* 서버에 연결할 수 없음: API URL과 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/ko/developers/extend/capabilities/webhooks.mdx b/packages/twenty-docs/l/ko/developers/extend/capabilities/webhooks.mdx
index a6f0454aae..b3f0262779 100644
--- a/packages/twenty-docs/l/ko/developers/extend/capabilities/webhooks.mdx
+++ b/packages/twenty-docs/l/ko/developers/extend/capabilities/webhooks.mdx
@@ -1,44 +1,44 @@
---
title: Webhooks
-description: Receive real-time notifications when events occur in your CRM.
+description: CRM에서 이벤트가 발생하면 실시간 알림을 받으세요.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-Webhooks push data to your systems in real-time when events occur in Twenty — no polling required. Use them to keep external systems in sync, trigger automations, or send alerts.
+웹훅은 Twenty에서 이벤트가 발생하면 데이터를 실시간으로 귀하의 시스템으로 푸시합니다 — 폴링이 필요 없습니다. 이를 사용하여 외부 시스템을 동기화 상태로 유지하고, 자동화를 트리거하거나, 알림을 보낼 수 있습니다.
-## Create a Webhook
+## Webhook 생성
-1. Go to **Settings → APIs & Webhooks → Webhooks**
-2. Click **+ Create webhook**
-3. Enter your webhook URL (must be publicly accessible)
-4. Click **Save**
+1. **설정 → API 및 웹훅 → 웹훅**으로 이동
+2. **+ Webhook 생성** 클릭
+3. 웹훅 URL을 입력하세요(공개적으로 액세스 가능해야 함)
+4. **저장** 클릭
-The webhook activates immediately and starts sending notifications.
+웹훅이 즉시 활성화되어 알림 전송을 시작합니다.
-
+
-### Manage Webhooks
+### 웹훅 관리
-**Edit**: Click the webhook → Update URL → **Save**
+**편집**: 웹훅을 클릭 → URL 업데이트 → **저장**
-**Delete**: Click the webhook → **Delete** → Confirm
+**삭제**: 웹훅을 클릭 → **삭제** → 확인
-## Events
+## 이벤트
-Twenty sends webhooks for these event types:
+Twenty는 다음 이벤트 유형에 대해 웹훅을 전송합니다:
-| Event | Example |
-| ------------------ | ---------------------------------------------------------- |
-| **Record Created** | `person.created`, `company.created`, `note.created` |
-| **Record Updated** | `person.updated`, `company.updated`, `opportunity.updated` |
-| **Record Deleted** | `person.deleted`, `company.deleted` |
+| 이벤트 | 예시 |
+| ------------- | ---------------------------------------------------------- |
+| **레코드 생성됨** | `person.created`, `company.created`, `note.created` |
+| **레코드 업데이트됨** | `person.updated`, `company.updated`, `opportunity.updated` |
+| **레코드 삭제됨** | `person.deleted`, `company.deleted` |
-All event types are sent to your webhook URL. Event filtering may be added in future releases.
+모든 이벤트 유형은 귀하의 웹훅 URL로 전송됩니다. 이벤트 필터링은 향후 릴리스에서 추가될 수 있습니다.
-## Payload Format
+## 페이로드 형식
-Each webhook sends an HTTP POST with a JSON body:
+각 웹훅은 JSON 본문을 포함한 HTTP POST를 전송합니다:
```json
{
@@ -55,35 +55,35 @@ Each webhook sends an HTTP POST with a JSON body:
}
```
-| Field | Description |
-| ----------- | ------------------------------------------------ |
-| `event` | What happened (e.g., `person.created`) |
-| `data` | The full record that was created/updated/deleted |
-| `timestamp` | When the event occurred (UTC) |
+| 필드 | 설명 |
+| ------- | -------------------------------- |
+| `이벤트` | 무슨 일이 발생했는지(예: `person.created`) |
+| `데이터` | 생성/업데이트/삭제된 전체 레코드 |
+| `타임스탬프` | 이벤트가 발생한 시각(UTC) |
- Respond with a **2xx HTTP status** (200-299) to acknowledge receipt. Non-2xx responses are logged as delivery failures.
+ 수신을 확인하기 위해 **2xx HTTP 상태**(200-299)로 응답하세요. 2xx가 아닌 응답은 전달 실패로 기록됩니다.
-## Webhook Validation
+## 웹훅 검증
-Twenty signs each webhook request for security. Validate signatures to ensure requests are authentic.
+Twenty는 보안을 위해 각 웹훅 요청에 서명합니다. 요청의 진위를 보장하기 위해 서명을 검증하세요.
-### Headers
+### 헤더
-| Header | Description |
-| ---------------------------- | --------------------- |
-| `X-Twenty-Webhook-Signature` | HMAC SHA256 signature |
-| `X-Twenty-Webhook-Timestamp` | Request timestamp |
+| 헤더 | 설명 |
+| ---------------------------- | -------------- |
+| `X-Twenty-Webhook-Signature` | HMAC SHA256 서명 |
+| `X-Twenty-Webhook-Timestamp` | 요청 타임스탬프 |
-### Validation Steps
+### 검증 단계
-1. Get the timestamp from `X-Twenty-Webhook-Timestamp`
-2. Create the string: `{timestamp}:{JSON payload}`
-3. Compute HMAC SHA256 using your webhook secret
-4. Compare with `X-Twenty-Webhook-Signature`
+1. `X-Twenty-Webhook-Timestamp`에서 타임스탬프를 가져옵니다
+2. 다음 문자열을 생성합니다: `{timestamp}:{JSON payload}`
+3. 웹훅 비밀을 사용하여 HMAC SHA256을 계산합니다
+4. `X-Twenty-Webhook-Signature`와 비교합니다
-### Example (Node.js)
+### 예시(Node.js)
```javascript
const crypto = require("crypto");
@@ -101,12 +101,12 @@ const expectedSignature = crypto
const isValid = expectedSignature === req.headers["x-twenty-webhook-signature"];
```
-## Webhooks vs Workflows
+## 웹훅 vs 워크플로
-| Method | Direction | Use Case |
-| ---------------------------- | --------- | ---------------------------------------------------------- |
-| **Webhooks** | OUT | Automatically notify external systems of any record change |
-| **Workflow + HTTP Request** | OUT | Send data out with custom logic (filters, transformations) |
-| **Workflow Webhook Trigger** | IN | Receive data into Twenty from external systems |
+| 방법 | 방향 | 사용 사례 |
+| ------------------ | --- | ---------------------------------- |
+| **웹훅** | OUT | 레코드 변경 사항을 외부 시스템에 자동으로 알립니다 |
+| **워크플로 + HTTP 요청** | OUT | 사용자 지정 로직(필터, 변환)으로 데이터를 외부로 전송합니다 |
+| **워크플로 웹훅 트리거** | IN | 외부 시스템에서 Twenty로 데이터를 수신합니다 |
-For receiving external data, see [Set Up a Webhook Trigger](/l/ko/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger).
+외부 데이터를 수신하려면 [웹훅 트리거 설정](/l/ko/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger)을 참조하세요.
diff --git a/packages/twenty-docs/l/ko/developers/extend/extend.mdx b/packages/twenty-docs/l/ko/developers/extend/extend.mdx
index ab7ec0682f..a76782a4db 100644
--- a/packages/twenty-docs/l/ko/developers/extend/extend.mdx
+++ b/packages/twenty-docs/l/ko/developers/extend/extend.mdx
@@ -1,34 +1,34 @@
---
-title: Extend
-description: Extend Twenty's functionality with APIs, webhooks, and custom apps.
+title: 확장
+description: API, 웹훅 및 맞춤형 앱으로 Twenty의 기능을 확장하세요.
---
-## Overview
+## 개요
-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!
+* **API**: REST 또는 GraphQL을 사용해 프로그래밍 방식으로 CRM 데이터를 쿼리하고 수정하세요
+* **웹훅**: Twenty에서 이벤트가 발생하면 실시간 알림을 받으세요
+* **앱**: Twenty의 기능을 확장하는 맞춤형 앱을 구축하세요 - 곧 제공됩니다!
-## Getting Started
+## 시작하기
-
- Connect to Twenty programmatically
+
+ 프로그래밍 방식으로 Twenty에 연결하세요
-
- Get notified of events in real-time
+
+ 이벤트에 대한 실시간 알림을 받으세요
-
- Build customizations as code (Alpha)
+
+ 코드로 사용자 지정을 구축하세요(알파)
diff --git a/packages/twenty-docs/l/ko/developers/introduction.mdx b/packages/twenty-docs/l/ko/developers/introduction.mdx
index 359205d949..35dd83dfd8 100644
--- a/packages/twenty-docs/l/ko/developers/introduction.mdx
+++ b/packages/twenty-docs/l/ko/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를 확장하고, 자체 호스팅하며, 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/ko/developers/self-host/capabilities/cloud-providers.mdx b/packages/twenty-docs/l/ko/developers/self-host/capabilities/cloud-providers.mdx
index 809388612a..db56866128 100644
--- a/packages/twenty-docs/l/ko/developers/self-host/capabilities/cloud-providers.mdx
+++ b/packages/twenty-docs/l/ko/developers/self-host/capabilities/cloud-providers.mdx
@@ -1,45 +1,45 @@
---
-title: Other methods
+title: 기타 방법
---
- This document is maintained by the community. It might contain issues.
+ 이 문서는 커뮤니티에서 관리됩니다. 문제점이 있을 수 있습니다.
-## Kubernetes via Terraform and Manifests
+## Terraform 및 매니페스트를 통한 Kubernetes
-Community-led documentation for Kubernetes deployment is available [here](https://github.com/twentyhq/twenty/tree/main/packages/twenty-docker/k8s)
+Kubernetes 배포에 대한 커뮤니티 주도 문서는 [여기](https://github.com/twentyhq/twenty/tree/main/packages/twenty-docker/k8s)에서 확인할 수 있습니다.
### Coolify
-Deploy Twenty on servers using Coolify. (official image on Coolify will be available soon)
+Coolify를 사용하여 서버에 Twenty를 배포하세요. (Coolify의 공식 이미지가 곧 제공될 예정입니다)
-[Coolify documentation](https://coolify.io/docs/get-started/introduction)
+[Coolify 문서](https://coolify.io/docs/get-started/introduction)
### EasyPanel
-Deploy Twenty on EasyPanel with the community maintained template below.
+아래의 커뮤니티가 유지 관리하는 템플릿으로 EasyPanel에 Twenty를 배포하세요.
-[Deploy on EasyPanel](https://easypanel.io/docs/templates/twenty)
+[EasyPanel에 배포](https://easypanel.io/docs/templates/twenty)
### Elest.io
-Deploy Twenty on servers with Elest.io using link below.
+아래 링크를 통해 Elest.io에서 서버에 Twenty를 배포하세요.
-[Deploy on Elest.io](https://elest.io/open-source/twenty)
+[Elest.io에 배포](https://elest.io/open-source/twenty)
-### Twenty on Railway
+### Railway에서의 Twenty
-Deploy Twenty on Railway with the community maintained template below.
+아래의 커뮤니티가 유지 관리하는 템플릿으로 Railway에 Twenty를 배포하세요.
-[](https://railway.com/deploy/nAL3hA)
+[](https://railway.com/deploy/nAL3hA)
-### Twenty on Sealos
+### Sealos에서의 Twenty
-Deploy Twenty on Sealos with the community maintained template below.
+아래의 커뮤니티가 유지 관리하는 템플릿으로 Sealos에 Twenty를 배포하세요.
-[](https://sealos.io/products/app-store/twenty)
+[](https://sealos.io/products/app-store/twenty)
-## Others
+## 기타
-Please feel free to Open a PR to add more Cloud Provider options.
+더 많은 클라우드 제공자 옵션을 추가하기 위해 PR을 자유롭게 열어주세요.
diff --git a/packages/twenty-docs/l/ko/developers/self-host/capabilities/docker-compose.mdx b/packages/twenty-docs/l/ko/developers/self-host/capabilities/docker-compose.mdx
index 4c1ff39462..b56cab0109 100644
--- a/packages/twenty-docs/l/ko/developers/self-host/capabilities/docker-compose.mdx
+++ b/packages/twenty-docs/l/ko/developers/self-host/capabilities/docker-compose.mdx
@@ -1,253 +1,253 @@
---
-title: 1-Click w/ Docker Compose
+title: Docker Compose로 1-클릭
---
- Docker containers are for production hosting or self-hosting, for the contribution please check the [Local Setup](/l/ko/developers/contribute/capabilities/local-setup).
+ Docker 컨테이너는 프로덕션 호스팅 또는 셀프 호스팅을 위한 것입니다. 기여를 원하시면 [로컬 설정](/l/ko/developers/contribute/capabilities/local-setup)을 확인하세요.
-## Overview
+## 개요
-This guide provides step-by-step instructions to install and configure the Twenty application using Docker Compose. The aim is to make the process straightforward and prevent common pitfalls that could break your setup.
+이 가이드는 Docker Compose를 사용하여 Twenty 애플리케이션을 설치 및 구성하기 위한 단계별 지침을 제공합니다. 프로세스를 간단하게 만들고 설정을 망칠 수 있는 일반적인 함정을 피하는 것이 목적입니다.
-**Important:** Only modify settings explicitly mentioned in this guide. Altering other configurations may lead to issues.
+**중요:** 이 가이드에서 명시적으로 언급된 설정만 수정하세요. 다른 구성을 변경하면 문제가 발생할 수 있습니다.
-See docs [Setup Environment Variables](/l/ko/developers/self-host/capabilities/setup) for advanced configuration. All environment variables must be declared in the docker-compose.yml file at the server and / or worker level depending on the variable.
+고급 설정을 위해 [환경 변수 설정](/l/ko/developers/self-host/capabilities/setup) 문서를 참조하세요. 모든 환경 변수는 서버 및/또는 작업자 수준에서 docker-compose.yml 파일에 선언되어야 합니다.
-## System Requirements
+## 시스템 요구 사항
-* RAM: Ensure your environment has at least 2GB of RAM. Insufficient memory can cause processes to crash.
-* Docker & Docker Compose: Make sure both are installed and up-to-date.
+* RAM: 환경에 최소 2GB의 RAM이 있는지 확인하십시오. 메모리가 충분하지 않으면 프로세스가 중단될 수 있습니다.
+* Docker 및 Docker Compose: 둘 다 설치되고 최신 상태인지 확인하세요.
-## Option 1: One-line script
+## 옵션 1: 한 줄 스크립트
-Install the latest stable version of Twenty with a single command:
+단일 명령으로 최신 안정 버전의 Twenty를 설치하십시오:
```bash
bash <(curl -sL https://raw.githubusercontent.com/twentyhq/twenty/main/packages/twenty-docker/scripts/install.sh)
```
-To install a specific version or branch:
+특정 버전 또는 브랜치를 설치하려면:
```bash
VERSION=vx.y.z BRANCH=branch-name bash <(curl -sL https://raw.githubusercontent.com/twentyhq/twenty/main/packages/twenty-docker/scripts/install.sh)
```
-* Replace x.y.z with the desired version number.
-* Replace branch-name with the name of the branch you want to install.
+* 원하는 버전 번호로 x.y.z를 대체하십시오.
+* 설치할 브랜치 이름으로 branch-name을 대체하십시오.
-## Option 2: Manual steps
+## 옵션 2: 수동 단계
-Follow these steps for a manual setup.
+수동 설정을 위해 다음 단계를 따릅니다.
-### Step 1: Set Up the Environment File
+### 단계 1: 환경 파일 설정
-1. **Create the .env File**
+1. **.env 파일 생성**
- Copy the example environment file to a new .env file in your working directory:
+ 예제 환경 파일을 워킹 디렉토리의 새 .env 파일로 복사합니다.
```bash
curl -o .env https://raw.githubusercontent.com/twentyhq/twenty/refs/heads/main/packages/twenty-docker/.env.example
```
-2. **Generate Secret Tokens**
+2. **비밀 토큰 생성**
- Run the following command to generate a unique random string:
+ 고유한 랜덤 문자열을 생성하기 위해 다음 명령을 실행하세요:
```bash
openssl rand -base64 32
```
- **Important:** Keep this value secret / do not share it.
+ **중요:** 이 값을 비공개로 유지/공유하지 마십시오.
-3. **Update the `.env`**
+3. **`.env` 업데이트**
- Replace the placeholder value in your .env file with the generated token:
+ 생성된 토큰으로 .env 파일의 플레이스홀더 값을 대체합니다.
```ini
APP_SECRET=first_random_string
```
-4. **Set the Postgres Password**
+4. **Postgres 비밀번호 설정**
- Update the `PG_DATABASE_PASSWORD` value in the .env file with a strong password without special characters.
+ .env 파일에서 특수 문자가 없는 강력한 비밀번호로 `PG_DATABASE_PASSWORD` 값을 업데이트하십시오.
```ini
PG_DATABASE_PASSWORD=my_strong_password
```
-### Step 2: Obtain the Docker Compose File
+### 단계 2: Docker Compose 파일 얻기
-Download the `docker-compose.yml` file to your working directory:
+작업 디렉토리에 `docker-compose.yml` 파일을 다운로드합니다.
```bash
curl -o docker-compose.yml https://raw.githubusercontent.com/twentyhq/twenty/refs/heads/main/packages/twenty-docker/docker-compose.yml
```
-### Step 3: Launch the Application
+### 단계 3: 애플리케이션 시작
-Start the Docker containers:
+Docker 컨테이너 시작:
```bash
docker compose up -d
```
-### Step 4: Access the Application
+### 단계 4: 애플리케이션에 액세스
-If you host twentyCRM on your own computer, open your browser and navigate to [http://localhost:3000](http://localhost:3000).
+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
```
-## Configuration
+## 구성
-### Expose Twenty to External Access
+### Twenty를 외부 액세스에 노출
-By default, Twenty runs on `localhost` at port `3000`. To access it via an external domain or IP address, you need to configure the `SERVER_URL` in your `.env` file.
+기본적으로 Twenty는 `localhost`의 포트 `3000`에서 실행됩니다. 외부 도메인 또는 IP 주소로 액세스하려면 `.env` 파일의 `SERVER_URL`을 구성해야 합니다.
-#### Understanding `SERVER_URL`
+#### `SERVER_URL` 이해하기
-* **Protocol:** Use `http` or `https` depending on your setup.
- * Use `http` if you haven't set up SSL.
- * Use `https` if you have SSL configured.
-* **Domain/IP:** This is the domain name or IP address where your application is accessible.
-* **Port:** Include the port number if you're not using the default ports (`80` for `http`, `443` for `https`).
+* **프로토콜:** 구성에 따라 `http` 또는 `https`를 사용하십시오.
+ * SSL을 설정하지 않은 경우 `http`를 사용합니다.
+ * SSL이 구성되어 있으면 `https`를 사용하십시오.
+* **도메인/IP:** 애플리케이션을 액세스할 수 있는 도메인 이름 또는 IP 주소입니다.
+* **포트:** 기본 포트(`http`의 경우 `80`, `https`의 경우 `443`)를 사용하지 않는 경우 포트 번호를 포함하십시오.
-### SSL Requirements
+### SSL 요구 사항
-SSL (HTTPS) is required for certain browser features to work properly. While these features might work during local development (as browsers treat localhost differently), a proper SSL setup is needed when hosting Twenty on a regular domain.
+SSL(HTTPS)는 일부 브라우저 기능이 제대로 작동하기 위해 필수입니다. 이러한 기능은 로컬 개발 중에는 작동할 수 있지만 (브라우저는 localhost를 다르게 처리합니다), 일반 도메인에 Twenty를 호스팅할 때는 적절한 SSL 설정이 필요합니다.
-For example, the clipboard API might require a secure context - some features like copy buttons throughout the application might not work without HTTPS enabled.
+예를 들어, 클립보드 API는 안전한 컨텍스트가 필요할 수 있습니다. 응용 프로그램 내 복사 버튼과 같은 일부 기능은 HTTPS가 활성화되지 않으면 작동하지 않을 수 있습니다.
-We strongly recommend setting up Twenty behind a reverse proxy with SSL termination for optimal security and functionality.
+최적의 보안 및 기능을 위해 SSL 종료와 함께 Reverse Proxy 뒤에 Twenty를 설정하는 것을 강력히 권장합니다.
-#### Configuring `SERVER_URL`
+#### `SERVER_URL` 설정
-1. **Determine Your Access URL**
- * **Without Reverse Proxy (Direct Access):**
+1. **접속 URL 결정**
+ * **리버스 프록시 없이(직접 접속):**
- If you're accessing the application directly without a reverse proxy:
+ 리버스 프록시 없이 애플리케이션에 직접 액세스:
```ini
SERVER_URL=http://your-domain-or-ip:3000
```
- * **With Reverse Proxy (Standard Ports):**
+ * **리버스 프록시 사용 (표준 포트):**
- If you're using a reverse proxy like Nginx or Traefik and have SSL configured:
+ SSL이 구성된 Nginx 또는 Traefik과 같은 리버스 프록시를 사용하는 경우:
```ini
SERVER_URL=https://your-domain-or-ip
```
- * **With Reverse Proxy (Custom Ports):**
+ * **리버스 프록시 사용 (사용자 지정 포트):**
- If you're using non-standard ports:
+ 비표준 포트를 사용하는 경우:
```ini
SERVER_URL=https://your-domain-or-ip:custom-port
```
-2. **Update the `.env` File**
+2. **`.env` 파일 업데이트**
- Open your `.env` file and update the `SERVER_URL`:
+ `.env` 파일을 열고 `SERVER_URL`을 업데이트하십시오:
```ini
SERVER_URL=http(s)://your-domain-or-ip:your-port
```
- **Examples:**
+ **예시:**
- * Direct access without SSL:
+ * SSL 없이 직접 접근:
```ini
SERVER_URL=http://123.45.67.89:3000
```
- * Access via domain with SSL:
+ * SSL을 사용한 도메인 접근:
```ini
SERVER_URL=https://mytwentyapp.com
```
-3. **Restart the Application**
+3. **애플리케이션 재시작**
- For changes to take effect, restart the Docker containers:
+ 변경 사항을 적용하기 위해 Docker 컨테이너를 재시작하십시오.
```bash
docker compose down
docker compose up -d
```
-#### Considerations
+#### 고려 사항
-* **Reverse Proxy Configuration:**
+* **리버스 프록시 구성:**
- Ensure your reverse proxy forwards requests to the correct internal port (`3000` by default). Configure SSL termination and any necessary headers.
+ 리버스 프록시가 올바른 내부 포트(`3000` 기본값)로 요청을 전달하도록 확인하십시오. SSL 종료와 필요한 헤더를 구성하십시오.
-* **Firewall Settings:**
+* **방화벽 설정:**
- Open necessary ports in your firewall to allow external access.
+ 외부 액세스를 허용하기 위해 방화벽에서 필요한 포트를 엽니다.
-* **Consistency:**
+* **일관성:**
- The `SERVER_URL` must match how users access your application in their browsers.
+ `SERVER_URL`은 사용자가 브라우저에서 애플리케이션에 액세스하는 방식과 일치해야 합니다.
-#### Persistence
+#### 영속성
-* **Data Volumes:**
+* **데이터 볼륨:**
- The Docker Compose configuration uses volumes to persist data for the database and server storage.
+ Docker Compose 구성은 데이터베이스 및 서버 저장소의 데이터를 영구적으로 저장하기 위해 볼륨을 사용합니다.
-* **Stateless Environments:**
+* **무상태 환경:**
- If deploying to a stateless environment (e.g., certain cloud services), configure external storage to persist data.
+ 무상태 환경(예: 특정 클라우드 서비스)에 배포하는 경우 데이터 지속성을 위해 외부 저장소를 구성합니다.
-## 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 등)를 사용하세요
+* **민감한 데이터를 암호화하세요** — 암호화를 통해 백업을 보호하세요
+* **여러 사본을 유지하세요** — 일간, 주간, 월간 백업을 보관하세요
-## Troubleshooting
+## 문제 해결
-If you encounter any problem, check [Troubleshooting](/l/ko/developers/self-host/capabilities/troubleshooting) for solutions.
+문제가 발생하면 [문제 해결](/l/ko/developers/self-host/capabilities/troubleshooting)에서 해결책을 확인하십시오.
diff --git a/packages/twenty-docs/l/ko/developers/self-host/capabilities/setup.mdx b/packages/twenty-docs/l/ko/developers/self-host/capabilities/setup.mdx
index 99992f611a..508da9034b 100644
--- a/packages/twenty-docs/l/ko/developers/self-host/capabilities/setup.mdx
+++ b/packages/twenty-docs/l/ko/developers/self-host/capabilities/setup.mdx
@@ -1,146 +1,146 @@
---
-title: Setup
+title: 설정
---
-# Configuration Management
+# 구성 관리
- **First time installing?** Follow the [Docker Compose installation guide](/l/ko/developers/self-host/capabilities/docker-compose) to get Twenty running, then return here for configuration.
+ **처음 설치하시나요?** [Docker Compose 설치 가이드](/l/ko/developers/self-host/capabilities/docker-compose)를 따라 Twenty를 실행하고, 이곳으로 돌아와 구성을 진행하세요.
-Twenty offers **two configuration modes** to suit different deployment needs:
+Twenty는 다른 배포 요구에 맞추기 위해 **두 가지 구성 모드**를 제공합니다:
-**Admin panel access:** Only users with admin privileges (`canAccessFullAdminPanel: true`) can access the configuration interface.
+**관리자 패널 접근:** 관리자 권한이 있는 사용자만 (`canAccessFullAdminPanel: true`) 구성 인터페이스에 접근할 수 있습니다.
-## 1. Admin Panel Configuration (Default)
+## 1. 관리자 패널 구성 (기본값)
```bash
IS_CONFIG_VARIABLES_IN_DB_ENABLED=true # default
```
-**Most configuration happens through the UI** after installation:
+설치 후 **대부분의 구성은 UI를 통해 이루어집니다:**
-1. Access your Twenty instance (usually `http://localhost:3000`)
-2. Go to **Settings / Admin Panel / Configuration Variables**
-3. Configure integrations, email, storage, and more
-4. Changes take effect immediately (within 15 seconds for multi-container deployments)
+1. Twenty 인스턴스에 접근하십시오 (보통 `http://localhost:3000`)
+2. **설정 / 관리자 패널 / 구성 변수**로 이동하세요
+3. 통합, 이메일, 저장소 등을 구성하세요
+4. 변경 사항은 즉시 적용됩니다 (멀티 컨테이너 배포의 경우 15초 이내)
- **Multi-Container Deployments:** When using database configuration (`IS_CONFIG_VARIABLES_IN_DB_ENABLED=true`), both server and worker containers read from the same database. Admin panel changes affect both automatically, eliminating the need to duplicate environment variables between containers (except for infrastructure variables).
+ **멀티 컨테이너 배포:** 데이터베이스 구성을 사용할 때 (`IS_CONFIG_VARIABLES_IN_DB_ENABLED=true`), 서버와 작업자 컨테이너 모두 동일한 데이터베이스에서 읽습니다. 관리자 패널의 변경은 둘 다 자동으로 영향을 미쳐 환경 변수를 컨테이너 간에 복제할 필요가 없습니다 (인프라 변수 제외).
-**What you can configure through the admin panel:**
+**관리자 패널에서 구성할 수 있는 내용:**
-* **Authentication** - Google/Microsoft OAuth, password settings
-* **Email** - SMTP settings, templates, verification
-* **Storage** - S3 configuration, local storage paths
-* **Integrations** - Gmail, Google Calendar, Microsoft services
-* **Workflow & Rate Limiting** - Execution limits, API throttling
-* **And much more...**
+* **인증** - Google/Microsoft OAuth, 비밀번호 설정
+* **이메일** - SMTP 설정, 템플릿, 확인
+* **저장소** - S3 구성, 로컬 저장 경로
+* **통합** - Gmail, Google 캘린더, Microsoft 서비스
+* **워크플로우 및 속도 제한** - 실행 제한, API 스로틀링
+* **그리고 훨씬 더...**
-
+
- Each variable is documented with descriptions in your admin panel at **Settings → Admin Panel → Configuration Variables**.
- Some infrastructure settings like database connections (`PG_DATABASE_URL`), server URLs (`SERVER_URL`), and app secrets (`APP_SECRET`) can only be configured via `.env` file.
+ 각 변수는 **설정 → 관리자 패널 → 구성 변수**의 관리자 패널에 설명과 함께 문서화되어 있습니다.
+ 데이터베이스 연결 (`PG_DATABASE_URL`), 서버 URL (`SERVER_URL`), 앱 비밀 (`APP_SECRET`)과 같은 일부 인프라 설정은 `.env` 파일을 통해서만 구성할 수 있습니다.
- [Complete technical reference →](https://github.com/twentyhq/twenty/blob/main/packages/twenty-server/src/engine/core-modules/twenty-config/config-variables.ts)
+ [완전한 기술적 참조 →](https://github.com/twentyhq/twenty/blob/main/packages/twenty-server/src/engine/core-modules/twenty-config/config-variables.ts)
-## 2. Environment-Only Configuration
+## 2. 환경 전용 구성
```bash
IS_CONFIG_VARIABLES_IN_DB_ENABLED=false
```
-**All configuration managed through `.env` files:**
+**모든 구성이 `.env` 파일을 통해 관리됩니다:**
-1. Set `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false` in your `.env` file
-2. Add all configuration variables to your `.env` file
-3. Restart containers for changes to take effect
-4. Admin panel will show current values but cannot modify them
+1. `.env` 파일에서 `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false`로 설정하세요
+2. 모든 구성 변수를 `.env` 파일에 추가하세요
+3. 변경 사항이 적용되도록 컨테이너를 재시작하세요
+4. 관리자 패널에서는 현재 값을 표시하며 수정할 수 없습니다
-## Multi-Workspace Mode
+## 멀티 워크스페이스 모드
-By default, Twenty runs in **single-workspace mode** — ideal for most self-hosted deployments where you need one CRM instance for your organization.
+기본적으로 Twenty는 **단일 워크스페이스 모드**로 실행됩니다 — 조직에 하나의 CRM 인스턴스가 필요한 대부분의 자가 호스팅 배포에 적합합니다.
-### Single-Workspace Mode (Default)
+### 단일 워크스페이스 모드(기본값)
```bash
IS_MULTIWORKSPACE_ENABLED=false # default
```
-* One workspace per Twenty instance
-* First user automatically becomes admin with full privileges (`canImpersonate` and `canAccessFullAdminPanel`)
-* New signups are disabled after the first workspace is created
-* Simple URL structure: `https://your-domain.com`
+* Twenty 인스턴스당 하나의 워크스페이스
+* 첫 번째 사용자는 자동으로 전체 권한(`canImpersonate` 및 `canAccessFullAdminPanel`)을 가진 관리자가 됩니다
+* 첫 번째 워크스페이스가 생성된 후에는 신규 가입이 비활성화됩니다
+* 간단한 URL 구조: `https://your-domain.com`
-### Enabling Multi-Workspace Mode
+### 멀티 워크스페이스 모드 활성화
```bash
IS_MULTIWORKSPACE_ENABLED=true
DEFAULT_SUBDOMAIN=app # default value
```
-Enable multi-workspace mode for SaaS-like deployments where multiple independent teams need their own workspaces on the same Twenty instance.
+여러 독립적인 팀이 동일한 Twenty 인스턴스에서 자체 워크스페이스가 필요한 SaaS형 배포에서 멀티 워크스페이스 모드를 활성화하세요.
-**Key differences from single-workspace mode:**
+**단일 워크스페이스 모드와의 주요 차이점:**
-* Multiple workspaces can be created on the same instance
-* Each workspace gets its own subdomain (e.g., `sales.your-domain.com`, `marketing.your-domain.com`)
-* Users sign up and log in at `{DEFAULT_SUBDOMAIN}.your-domain.com` (e.g., `app.your-domain.com`)
-* No automatic admin privileges — first user in each workspace is a regular user
-* Workspace-specific settings like subdomain and custom domain become available in workspace settings
+* 동일한 인스턴스에서 여러 워크스페이스를 생성할 수 있습니다
+* 각 워크스페이스는 자체 서브도메인을 갖습니다 (예: `sales.your-domain.com`, `marketing.your-domain.com`)
+* 사용자는 `{DEFAULT_SUBDOMAIN}.your-domain.com`에서 가입하고 로그인합니다 (예: `app.your-domain.com`)
+* 관리자 권한이 자동으로 부여되지 않습니다 — 각 워크스페이스의 첫 번째 사용자는 일반 사용자입니다
+* 서브도메인 및 사용자 지정 도메인과 같은 워크스페이스 전용 설정이 워크스페이스 설정에서 제공됩니다
- **Environment-only setting:** `IS_MULTIWORKSPACE_ENABLED` can only be configured via `.env` file and requires a restart. It cannot be changed through the admin panel.
+ **환경 전용 설정:** `IS_MULTIWORKSPACE_ENABLED`는 `.env` 파일을 통해서만 구성할 수 있으며 재시작이 필요합니다. 관리자 패널을 통해 변경할 수 없습니다.
-### DNS Configuration for Multi-Workspace
+### 멀티 워크스페이스를 위한 DNS 구성
-When using multi-workspace mode, configure your DNS with a wildcard record to allow dynamic subdomain creation:
+멀티 워크스페이스 모드를 사용할 때, 동적 서브도메인 생성을 허용하도록 와일드카드 레코드로 DNS를 구성하세요:
```
*.your-domain.com -> your-server-ip
```
-This enables automatic subdomain routing for new workspaces without manual DNS configuration.
+이렇게 하면 수동 DNS 구성 없이 새 워크스페이스에 대한 서브도메인 라우팅이 자동으로 활성화됩니다.
-### Restricting Workspace Creation
+### 워크스페이스 생성 제한
-In multi-workspace mode, you may want to limit who can create new workspaces:
+멀티 워크스페이스 모드에서, 누가 새 워크스페이스를 생성할 수 있는지 제한하고 싶을 수 있습니다:
```bash
IS_WORKSPACE_CREATION_LIMITED_TO_SERVER_ADMINS=true
```
-When enabled, only users with `canAccessFullAdminPanel` can create additional workspaces. Users can still create their first workspace during initial signup.
+활성화되면 `canAccessFullAdminPanel` 권한이 있는 사용자만 추가 워크스페이스를 생성할 수 있습니다. 사용자는 초기 가입 과정에서 첫 번째 워크스페이스를 여전히 생성할 수 있습니다.
-## Gmail & Google Calendar Integration
+## Gmail & Google 캘린더 통합
-### Create Google Cloud Project
+### Google 클라우드 프로젝트 생성
-1. Go to [Google Cloud Console](https://console.cloud.google.com/)
-2. Create a new project or select existing one
-3. Enable these APIs:
+1. [Google Cloud Console](https://console.cloud.google.com/)로 이동하세요
+2. 새 프로젝트를 생성하거나 기존 프로젝트를 선택하세요
+3. 이 API들을 활성화하세요:
* [Gmail API](https://console.cloud.google.com/apis/library/gmail.googleapis.com)
-* [Google Calendar API](https://console.cloud.google.com/apis/library/calendar-json.googleapis.com)
+* [Google 캘린더 API](https://console.cloud.google.com/apis/library/calendar-json.googleapis.com)
* [People API](https://console.cloud.google.com/apis/library/people.googleapis.com)
-### Configure OAuth
+### OAuth 구성
-1. Go to [Credentials](https://console.cloud.google.com/apis/credentials)
-2. Create OAuth 2.0 Client ID
-3. Add these redirect URIs:
- * `https://{your-domain}/auth/google/redirect` (for SSO)
- * `https://{your-domain}/auth/google-apis/get-access-token` (for integrations)
+1. [자격 증명](https://console.cloud.google.com/apis/credentials)으로 이동하세요
+2. OAuth 2.0 클라이언트 ID를 생성하세요
+3. 이러한 리디렉션 URI를 추가하세요:
+ * `https://{your-domain}/auth/google/redirect` (SSO용)
+ * `https://{your-domain}/auth/google-apis/get-access-token` (통합용)
-### Configure in Twenty
+### Twenty에서 구성하기
-1. Go to **Settings → Admin Panel → Configuration Variables**
-2. Find the **Google Auth** section
-3. Set these variables:
+1. **설정 → 관리자 패널 → 구성 변수**로 이동하세요
+2. **Google 인증** 섹션을 찾으세요
+3. 다음 변수를 설정하세요:
* `MESSAGING_PROVIDER_GMAIL_ENABLED=true`
* `CALENDAR_PROVIDER_GOOGLE_ENABLED=true`
* `AUTH_GOOGLE_CLIENT_ID={client-id}`
@@ -149,35 +149,35 @@ When enabled, only users with `canAccessFullAdminPanel` can create additional wo
* `AUTH_GOOGLE_APIS_CALLBACK_URL=https://{your-domain}/auth/google-apis/get-access-token`
- **Environment-only mode:** If you set `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false`, add these variables to your `.env` file instead.
+ **환경 전용 모드:** `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false`로 설정한 경우, `.env` 파일에 이러한 변수를 추가하세요.
-**Required scopes** (automatically configured):
-[See relevant source code](https://github.com/twentyhq/twenty/blob/main/packages/twenty-server/src/engine/core-modules/auth/utils/get-google-apis-oauth-scopes.ts#L4-L10)
+**필요한 범위** (자동 구성됨):
+[관련 소스 코드 보기](https://github.com/twentyhq/twenty/blob/main/packages/twenty-server/src/engine/core-modules/auth/utils/get-google-apis-oauth-scopes.ts#L4-L10)
* `https://www.googleapis.com/auth/calendar.events`
* `https://www.googleapis.com/auth/gmail.readonly`
* `https://www.googleapis.com/auth/profile.emails.read`
-### If your app is in test mode
+### 앱이 테스트 모드인 경우
-If your app is in test mode, you will need to add test users to your project.
+앱이 테스트 모드인 경우, 프로젝트에 테스트 사용자를 추가해야 합니다.
-Under [OAuth consent screen](https://console.cloud.google.com/apis/credentials/consent), add your test users to the "Test users" section.
+[OAuth 승인 화면](https://console.cloud.google.com/apis/credentials/consent)에서 "테스트 사용자" 섹션에 테스트 사용자를 추가하세요.
-## Microsoft 365 Integration
+## Microsoft 365 통합
- Users must have a [Microsoft 365 Licence](https://admin.microsoft.com/Adminportal/Home) to be able to use the Calendar and Messaging API. They will not be able to sync their account on Twenty without one.
+ 사용자는 캘린더 및 메시징 API를 사용하려면 [Microsoft 365 라이선스](https://admin.microsoft.com/Adminportal/Home)를 보유해야 합니다. 없이는 Twenty에서 계정을 동기화할 수 없습니다.
-### Create a project in Microsoft Azure
+### Microsoft Azure에 프로젝트 생성
-You will need to create a project in [Microsoft Azure](https://portal.azure.com/#view/Microsoft_AAD_IAM/AppGalleryBladeV2) and get the credentials.
+[Microsoft Azure](https://portal.azure.com/#view/Microsoft_AAD_IAM/AppGalleryBladeV2)에서 프로젝트를 생성하고 자격 증명을 확보해야 합니다.
-### Enable APIs
+### API 활성화
-On Microsoft Azure Console enable the following APIs in "Permissions":
+Microsoft Azure 콘솔에서 "권한"에서 다음 API를 활성화하세요:
* Microsoft Graph: Mail.ReadWrite
* Microsoft Graph: Mail.Send
@@ -188,20 +188,20 @@ On Microsoft Azure Console enable the following APIs in "Permissions":
* Microsoft Graph: profile
* Microsoft Graph: offline_access
-Note: "Mail.ReadWrite" and "Mail.Send" are only mandatory if you want to send emails using our workflow actions. You can use "Mail.Read" instead if you only want to receive emails.
+참고: "Mail.ReadWrite"와 "Mail.Send"는 워크플로우 작업을 통해 이메일을 보내려면 필수입니다. 수신 이메일만 원하시면 "Mail.Read"를 사용하실 수 있습니다.
-### Authorized redirect URIs
+### 인가된 리디렉션 URI
-You need to add the following redirect URIs to your project:
+프로젝트에 다음 리디렉션 URI를 추가해야 합니다:
-* `https://{your-domain}/auth/microsoft/redirect` if you want to use Microsoft SSO
+* Microsoft SSO를 사용하려면 `https://{your-domain}/auth/microsoft/redirect`
* `https://{your-domain}/auth/microsoft-apis/get-access-token`
-### Configure in Twenty
+### Twenty에서 구성하기
-1. Go to **Settings → Admin Panel → Configuration Variables**
-2. Find the **Microsoft Auth** section
-3. Set these variables:
+1. **설정 → 관리자 패널 → 구성 변수**로 이동하세요
+2. **Microsoft 인증** 섹션을 찾으세요
+3. 다음 변수를 설정하세요:
* `MESSAGING_PROVIDER_MICROSOFT_ENABLED=true`
* `CALENDAR_PROVIDER_MICROSOFT_ENABLED=true`
* `AUTH_MICROSOFT_ENABLED=true`
@@ -211,32 +211,32 @@ You need to add the following redirect URIs to your project:
* `AUTH_MICROSOFT_APIS_CALLBACK_URL=https://{your-domain}/auth/microsoft-apis/get-access-token`
- **Environment-only mode:** If you set `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false`, add these variables to your `.env` file instead.
+ **환경 전용 모드:** `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false`로 설정한 경우, `.env` 파일에 이러한 변수를 추가하세요.
-### Configure scopes
+### 범위 구성
-[See relevant source code](https://github.com/twentyhq/twenty/blob/main/packages/twenty-server/src/engine/core-modules/auth/utils/get-microsoft-apis-oauth-scopes.ts#L2-L9)
+[관련 소스 코드 보기](https://github.com/twentyhq/twenty/blob/main/packages/twenty-server/src/engine/core-modules/auth/utils/get-microsoft-apis-oauth-scopes.ts#L2-L9)
* 'openid'
-* 'email'
-* 'profile'
+* '이메일'
+* '프로필'
* 'offline_access'
* 'Mail.ReadWrite'
* 'Mail.Send'
* 'Calendars.Read'
-### If your app is in test mode
+### 앱이 테스트 모드인 경우
-If your app is in test mode, you will need to add test users to your project.
+앱이 테스트 모드인 경우, 프로젝트에 테스트 사용자를 추가해야 합니다.
-Add your test users to the "Users and groups" section.
+"사용자 및 그룹" 섹션에 테스트 사용자를 추가하세요.
-## Background Jobs for Calendar & Messaging
+## 캘린더 및 메시징을 위한 배경 작업
-After configuring Gmail, Google Calendar, or Microsoft 365 integrations, you need to start the background jobs that sync data.
+Gmail, Google 캘린더 또는 Microsoft 365 통합을 구성한 후, 데이터를 동기화하는 배경 작업을 시작해야 합니다.
-Register the following recurring jobs in your worker container:
+작업자 컨테이너에 다음 주기 작업을 등록하세요:
```bash
# from your worker container
@@ -249,15 +249,15 @@ yarn command:prod cron:calendar:ongoing-stale
yarn command:prod cron:workflow:automated-cron-trigger
```
-## Email Configuration
+## 이메일 구성
-1. Go to **Settings → Admin Panel → Configuration Variables**
-2. Find the **Email** section
-3. Configure your SMTP settings:
+1. **설정 → 관리자 패널 → 구성 변수**로 이동하세요
+2. **이메일** 섹션을 찾으세요
+3. SMTP 설정을 구성하세요:
-
+
- You will need to provision an [App Password](https://support.google.com/accounts/answer/185833).
+ [App Password](https://support.google.com/accounts/answer/185833)를 프로비저닝해야 합니다.
* EMAIL_DRIVER=smtp
* EMAIL_SMTP_HOST=smtp.gmail.com
@@ -267,7 +267,7 @@ yarn command:prod cron:workflow:automated-cron-trigger
- Keep in mind that if you have 2FA enabled, you will need to provision an [App Password](https://support.microsoft.com/en-us/account-billing/manage-app-passwords-for-two-step-verification-d6dc8c6d-4bf7-4851-ad95-6d07799387e9).
+ 2단계 인증을 사용 중인 경우, [앱 비밀번호](https://support.microsoft.com/en-us/account-billing/manage-app-passwords-for-two-step-verification-d6dc8c6d-4bf7-4851-ad95-6d07799387e9)를 발급받아야 합니다.
* EMAIL_DRIVER=smtp
* EMAIL_SMTP_HOST=smtp.office365.com
@@ -277,11 +277,11 @@ yarn command:prod cron:workflow:automated-cron-trigger
- **smtp4dev** is a fake SMTP email server for development and testing.
+ **smtp4dev**는 개발 및 테스트를 위한 가상의 SMTP 이메일 서버입니다.
- * Run the smtp4dev image: `docker run --rm -it -p 8090:80 -p 2525:25 rnwood/smtp4dev`
- * Access the smtp4dev ui here: [http://localhost:8090](http://localhost:8090)
- * Set the following variables:
+ * smtp4dev 이미지를 실행하세요: `docker run --rm -it -p 8090:80 -p 2525:25 rnwood/smtp4dev`
+ * smtp4dev UI에 여기에 접근하세요: [http://localhost:8090](http://localhost:8090)
+ * 다음 변수를 설정하세요:
* EMAIL_DRIVER=smtp
* EMAIL_SMTP_HOST=localhost
* EMAIL_SMTP_PORT=2525
@@ -289,5 +289,49 @@ yarn command:prod cron:workflow:automated-cron-trigger
- **Environment-only mode:** If you set `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false`, add these variables to your `.env` file instead.
+ **환경 전용 모드:** `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false`로 설정한 경우, `.env` 파일에 이러한 변수를 추가하세요.
+
+## 서버리스 함수
+
+Twenty는 워크플로 및 사용자 지정 로직을 위해 서버리스 함수를 지원합니다. `SERVERLESS_TYPE` 환경 변수를 통해 실행 환경을 구성합니다.
+
+
+ **보안 공지:** 로컬 서버리스 드라이버 (`SERVERLESS_TYPE=LOCAL`)는 샌드박싱 없이 호스트의 Node.js 프로세스에서 코드를 직접 실행합니다. 개발 환경에서 신뢰할 수 있는 코드에만 사용해야 합니다. 신뢰할 수 없는 코드를 처리하는 프로덕션 배포의 경우 `SERVERLESS_TYPE=LAMBDA` 또는 `SERVERLESS_TYPE=DISABLED` 사용을 강력히 권장합니다.
+
+
+### 사용 가능한 드라이버
+
+| 드라이버 | 환경 변수 | 사용 사례 | 보안 수준 |
+| ------ | -------------------------- | ------------------------- | --------------- |
+| 비활성화 | `SERVERLESS_TYPE=DISABLED` | 서버리스 함수를 완전히 비활성화 | 해당 없음 |
+| 로컬 | `SERVERLESS_TYPE=LOCAL` | 개발 및 신뢰할 수 있는 환경 | 낮음 (샌드박싱 없음) |
+| Lambda | `SERVERLESS_TYPE=LAMBDA` | 신뢰할 수 없는 코드를 처리하는 프로덕션 환경 | 높음 (하드웨어 수준 격리) |
+
+### 권장 구성
+
+**개발:**
+
+```bash
+SERVERLESS_TYPE=LOCAL # default
+```
+
+**프로덕션(AWS):**
+
+```bash
+SERVERLESS_TYPE=LAMBDA
+SERVERLESS_LAMBDA_REGION=us-east-1
+SERVERLESS_LAMBDA_ROLE=arn:aws:iam::123456789:role/your-lambda-role
+SERVERLESS_LAMBDA_ACCESS_KEY_ID=your-access-key
+SERVERLESS_LAMBDA_SECRET_ACCESS_KEY=your-secret-key
+```
+
+**서버리스 함수를 비활성화하려면:**
+
+```bash
+SERVERLESS_TYPE=DISABLED
+```
+
+
+ `SERVERLESS_TYPE=DISABLED`를 사용하는 경우 서버리스 함수를 실행하려는 모든 시도는 오류를 반환합니다. 서버리스 함수 기능 없이 Twenty를 실행하려는 경우 유용합니다.
+
diff --git a/packages/twenty-docs/l/ko/developers/self-host/capabilities/troubleshooting.mdx b/packages/twenty-docs/l/ko/developers/self-host/capabilities/troubleshooting.mdx
index d2187aedac..591bab724b 100644
--- a/packages/twenty-docs/l/ko/developers/self-host/capabilities/troubleshooting.mdx
+++ b/packages/twenty-docs/l/ko/developers/self-host/capabilities/troubleshooting.mdx
@@ -1,26 +1,25 @@
---
-title: Troubleshooting
+title: 문제 해결
---
-## Troubleshooting
+## 문제 해결
-If you encounter any problem while setting up environment for development, upgrading your instance or self-hosting,
-here are some solutions for common problems.
+개발 환경을 설정하거나 인스턴스를 업그레이드하거나 자체 호스팅하는 도중 문제가 발생하는 경우, 여기에는 일반적인 문제들에 대한 몇 가지 해결책이 있습니다.
-### Self-hosting
+### 셀프 호스팅
-#### First install results in `password authentication failed for user "postgres"`
+#### 첫 설치 시 `사용자 "postgres"에 대한 비밀번호 인증 실패`라는 메시지가 표시됨
-🚨 **IMPORTANT: This solution is ONLY for fresh installations** 🚨
-If you have an existing Twenty instance with production data, **DO NOT** follow these steps as they will permanently delete your database!
+⚠️ 경고: 다음 단계는 데이터베이스 데이터를 **영구적으로 삭제합니다!** ⚠️
+중요한 데이터가 없는 새 설치인 경우에만 진행하십시오.
-While installing Twenty for the first time, you might want to change the default database password.
-The password you set during the first installation becomes permanently stored in the database volume. If you later try to change this password in your configuration without removing the old volume, you'll get authentication errors because the database is still using the original password.
+Twenty를 처음 설치할 때, 기본 데이터베이스 비밀번호를 변경하고 싶을 수 있습니다.
+첫 설치 시 설정한 비밀번호는 데이터베이스 볼륨에 영구 저장됩니다. 나중에 기존의 볼륨을 제거하지 않고 설정에서 비밀번호를 변경하려고 하면, 데이터베이스에서 원래 비밀번호를 사용하고 있기 때문에 인증 오류가 발생할 수 있습니다.
-⚠️ WARNING: Following steps will PERMANENTLY DELETE all database data! ⚠️
-Only proceed if this is a fresh installation with no important data.
+⚠️ 경고: 다음 단계는 데이터베이스 데이터를 **영구적으로 삭제합니다!** ⚠️ 경고: 다음 단계는 데이터베이스 데이터를 **영구적으로 삭제합니다!** ⚠️
+중요한 데이터가 없는 새 설치인 경우에만 진행하십시오.
-In order to update the `PG_DATABASE_PASSWORD` you need to:
+`PG_DATABASE_PASSWORD`를 업데이트하려면 다음을 수행하십시오:
```sh
# Update the PG_DATABASE_PASSWORD in .env
@@ -28,33 +27,33 @@ docker compose down --volumes
docker compose up -d
```
-#### CR line breaks found [Windows]
+#### CR 줄바꿈이 발견되었습니다 [Windows]
-This is due to the line break characters of Windows and the git configuration. Try running:
+이는 Windows 줄바꿈 문자와 git 설정 때문입니다. 다음 명령을 실행해 보세요:
```
git config --global core.autocrlf false
```
-Then delete the repository and clone it again.
+그런 다음 저장소를 삭제하고 다시 클론하세요.
-#### Missing metadata schema
+#### 메타데이터 스키마 누락
-During Twenty installation, you need to provision your postgres database with the right schemas, extensions, and users.
-If you're successful in running this provisioning, you should have `default` and `metadata` schemas in your database.
-If you don't, make sure you don't have more than one postgres instance running on your computer.
+Twenty 설치 중에 적절한 스키마, 확장, 사용자를 사용하여 postgres 데이터베이스를 프로비저닝해야 합니다.
+프로비저닝이 성공적으로 이루어지면 데이터베이스에 `기본` 및 `메타데이터` 스키마가 있어야 합니다.
+그렇지 않을 경우, 컴퓨터에서 여러 개의 postgres 인스턴스가 실행되지 않도록 하십시오.
-#### Cannot find module 'twenty-emails' or its corresponding type declarations.
+#### 모듈 'twenty-emails' 또는 해당 형식 선언을 찾을 수 없습니다.
-You have to build the package `twenty-emails` before running the initialization of the database with `npx nx run twenty-emails:build`
+데이터베이스 초기화하기 전에 `twenty-emails` 패키지를 빌드해야 합니다: `npx nx run twenty-emails:build`
-#### Missing twenty-x package
+#### twenty-x 패키지가 누락됨
-Make sure to run yarn in the root directory and then run `npx nx server:dev twenty-server`. If this still doesn't work try building the missing package manually.
+루트 디렉토리에서 yarn을 실행한 다음 `npx nx server:dev twenty-server` 를 실행하십시오. 여전히 작동하지 않으면 누락된 패키지를 수동으로 빌드해보세요.
-#### Lint on Save not working
+#### 저장 시 린트가 작동하지 않음
-This should work out of the box with the eslint extension installed. If this doesn't work try adding this to your vscode setting (on the dev container scope):
+eslint 확장 프로그램이 설치된 상태에서는 기본 설정으로 작동해야 합니다. 작동하지 않으면 vscode 설정(개발 컨테이너 범위)에 다음을 추가해 보세요:
```
"editor.codeActionsOnSave": {
@@ -64,85 +63,85 @@ This should work out of the box with the eslint extension installed. If this doe
}
```
-#### While running `npx nx start` or `npx nx start twenty-front`, Out of memory error is thrown
+#### `npx nx start` 또는 `npx nx start twenty-front` 실행 시 메모리 부족 오류 발생
-In `packages/twenty-front/.env` uncomment `VITE_DISABLE_TYPESCRIPT_CHECKER=true` to disable background checks thus reducing amount of needed RAM.
+`packages/twenty-front/.env`에서 `VITE_DISABLE_TYPESCRIPT_CHECKER=true`와 `VITE_DISABLE_ESLINT_CHECKER=true`를 주석 해제하여 백그라운드 검사 기능을 비활성화하여 필요한 RAM의 양을 줄입니다.
-**If it does not work:**
-Run only the services you need, instead of `npx nx start`. For instance, if you work on the server, run only `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:
+**작동하지 않는 경우:**
+WSL에서 `npx nx run twenty-server:start`만 실행하려고 했으나 아래의 메모리 오류로 실패할 경우:
-`FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory`
+`치명적인 오류: 효과적인 마크-컴팩트 임계값 인근 할당 실패 - JavaScript 힙 메모리 부족`
-Workaround is to execute below command in terminal or add it in .bashrc profile to get setup automatically:
+해결 방법은 아래 명령을 터미널에서 실행하거나 .bashrc 프로파일에 추가하여 자동 설정을 하는 것입니다:
`export NODE_OPTIONS="--max-old-space-size=8192"`
-The --max-old-space-size=8192 flag sets an upper limit of 8GB for the Node.js heap; usage scales with application demand.
-Reference: https://stackoverflow.com/questions/56982005/where-do-i-set-node-options-max-old-space-size-2048
+\--max-old-space-size=8192 플래그는 Node.js 힙의 상한선을 8GB로 설정합니다. 사용량은 애플리케이션 수요에 따라 조정됩니다.
+참고: 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. At Twenty, we noticed that some VScode extensions were taking a lot of RAM so we temporarily disable them.
+**작동하지 않는 경우:**
+어떤 프로세스가 대부분의 머신 RAM을 소모하고 있는지 조사하십시오. Twenty에서는 일부 VScode 확장이 많은 RAM을 소모하고 있음을 발견하여 임시로 비활성화했습니다.
-**If it does not work:**
-Restart your machine helps to clean up ghost processes.
+**작동하지 않는 경우:**
+머신을 다시 시작하면 유령 프로세스를 정리하는 데 도움이 됩니다.
-#### While running `npx nx start` there are weird [0] and [1] in logs
+#### `npx nx start`를 실행할 때 로그에 이상한 [0]과 [1]이 표시됨
-That's expected as command `npx nx start` is running more commands under the hood
+이는 `npx nx start` 명령이 내부적으로 더 많은 명령을 실행하기 때문에 예상된 것입니다.
-#### No emails are sent
+#### 이메일이 전송되지 않음
-Most of the time, it's because the `worker` is not running in the background. Try to run
+대부분의 경우, 이는 `worker`가 백그라운드에서 실행되지 않기 때문입니다. 실행해 보세요
```
npx nx worker twenty-server
```
-#### Cannot connect my Microsoft 365 account
+#### Microsoft 365 계정에 연결할 수 없음
-Most of the time, it's because your admin has not enabled the Microsoft 365 Licence for your account. Check [https://admin.microsoft.com/](https://admin.microsoft.com/Adminportal/Home).
+대부분의 경우, 관리자님께서 계정에 대한 Microsoft 365 라이센스를 활성화하지 않았기 때문입니다. [https://admin.microsoft.com/](https://admin.microsoft.com/Adminportal/Home)에서 확인하십시오.
-If you have an error code `AADSTS50020`, it probably means that you are using a personal Microsoft account. This is not supported yet. More info [here](https://learn.microsoft.com/fr-fr/troubleshoot/entra/entra-id/app-integration/error-code-aadsts50020-user-account-identity-provider-does-not-exist)
+`AADSTS50020` 오류 코드가 표시되는 경우, 개인 Microsoft 계정을 사용하고 있을 가능성이 높습니다. 이는 아직 지원되지 않습니다. 추가 정보는 [여기](https://learn.microsoft.com/fr-fr/troubleshoot/entra/entra-id/app-integration/error-code-aadsts50020-user-account-identity-provider-does-not-exist)에서 확인하십시오
-#### While running `yarn` warnings appear in console
+#### `yarn`을 실행하는 동안 콘솔에 경고가 나타남
-Warnings are informing about pulling additional dependencies which aren't explicitly stated in `package.json`, so as long as no breaking error appears, everything should work as expected.
+경고는 `package.json`에 명시적으로 나타나지 않는 추가 종속성을 끌어오는 것에 대한 정보입니다. 중대한 오류가 나타나지 않는 한 모든 것이 예상대로 작동해야 합니다.
-#### When user accesses login page, error about unauthorized user trying to access workspace appears in logs
+#### 사용자가 로그인 페이지에 접근할 때 로그에 작업 공간에 접근하려는 승인되지 않은 사용자 오류 발생
-That's expected as user is unauthorized when logged out since its identity is not verified.
+이는 로그아웃된 상태에서 사용자 신분이 확인되지 않기 때문에 예상된 것입니다.
-#### How to check if your worker is running?
+#### 작업자가 작동 중인지 확인하는 방법은?
-* Go to [webhook-test.com](https://webhook-test.com/) and copy **Your Unique Webhook URL**.
+* [webhook-test.com](https://webhook-test.com/)으로 이동하여 **고유한 웹훅 URL**을 복사하십시오.
-
+
-* Open your Twenty app, navigate to `/settings`, and enable the **Advanced** toggle at the bottom left of the screen.
-* Create a new webhook.
-* Paste **Your Unique Webhook URL** in the **Endpoint Url** field in Twenty. Set the **Filters** to `Companies` and `Created`.
+* Twenty 앱을 열고 `/settings`로 이동하여 화면 왼쪽 하단에 있는 **고급** 토글을 활성화하십시오.
+* 새 웹훅 생성.
+* **고유한 웹훅 URL**을 Twenty의 **엔드포인트 URL** 필드에 붙여넣습니다. **필터**를 `회사`와 `생성됨`으로 설정하십시오.
-
+
-* Go to `/objects/companies` and create a new company record.
-* Return to [webhook-test.com](https://webhook-test.com/) and check if a new **POST request** has been received.
+* `/objects/companies`로 이동하여 새 회사 레코드를 만드십시오.
+* [webhook-test.com](https://webhook-test.com/)으로 돌아가 새 **POST 요청**이 수신되었는지 확인하십시오.
-
+
-* If a **POST request** is received, your worker is running successfully. Otherwise, you need to troubleshoot your worker.
+* **POST 요청**이 수신된 경우, 작업자가 성공적으로 실행 중입니다. 그렇지 않으면, 작업자에 대한 문제 해결이 필요합니다.
-#### Front-end fails to start and returns error TS5042: Option 'project' cannot be mixed with source files on a command line
+#### 프런트엔드 시작 실패 및 TS5042 오류: 명령줄에서 소스 파일과 함께 옵션 '프로젝트'를 사용할 수 없음
-Comment out checker plugin in `packages/twenty-ui/vite-config.ts` like in example below
+`packages/twenty-ui/vite-config.ts`의 체크 플러그인을 아래 예와 같이 주석 처리하십시오
```
plugins: [
@@ -166,62 +165,62 @@ plugins: [
],
```
-#### Admin panel not accessible
+#### 관리자 패널에 액세스할 수 없음
-Run `UPDATE core."user" SET "canAccessFullAdminPanel" = TRUE WHERE email = 'you@yourdomain.com';` in database container to get access to admin panel.
+데이터베이스 컨테이너에서 관리자 패널에 액세스하기 위해 `UPDATE core."user" SET "canAccessFullAdminPanel" = TRUE WHERE email = 'you@yourdomain.com';`을 실행하십시오.
-### 1-click Docker compose
+### 1-클릭 Docker 구성
-#### Unable to Log In
+#### 로그인할 수 없음
-If you can't log in after setup:
+설정 후 로그인할 수 없는 경우:
-1. Run the following commands:
+1. 다음 명령어를 실행하십시오:
```bash
docker exec -it twenty-server-1 yarn
docker exec -it twenty-server-1 npx nx database:reset --configuration=no-seed
```
-2. Restart the Docker containers:
+2. Docker 컨테이너를 다시 시작하십시오:
```bash
docker compose down
docker compose up -d
```
-Note the database:reset command will completely erase your database and recreate it from scratch.
+database:reset 명령은 데이터베이스를 완전히 지우고 처음부터 다시 만듭니다.
-#### Connection Issues Behind a Reverse Proxy
+#### 리버스 프록시 뒤에서 연결 문제
-If you're running Twenty behind a reverse proxy and experiencing connection issues:
+Twenty를 리버스 프록시 뒤에서 실행 중이며 연결 문제가 있는 경우:
-1. **Verify SERVER_URL:**
+1. **SERVER_URL 확인:**
- Ensure `SERVER_URL` in your `.env` file matches your external access URL, including `https` if SSL is enabled.
+ `.env` 파일의 `SERVER_URL`이 SSL이 활성화된 경우 외부 액세스 URL과 `https`까지 일치하는지 확인하십시오.
-2. **Check Reverse Proxy Settings:**
+2. **리버스 프록시 설정 확인:**
- * Confirm that your reverse proxy is correctly forwarding requests to the Twenty server.
- * Ensure headers like `X-Forwarded-For` and `X-Forwarded-Proto` are properly set.
+ * 리버스 프록시가 Twenty 서버로 요청을 정확히 전달하는지 확인하십시오.
+ * `X-Forwarded-For`, `X-Forwarded-Proto`와 같은 헤더가 적절히 설정되어 있는지 확인하십시오.
-3. **Restart Services:**
+3. **서비스 재시작:**
- After making changes, restart both the reverse proxy and Twenty containers.
+ 변경 후, 리버스 프록시와 Twenty 컨테이너를 모두 다시 시작하십시오.
-#### Error when uploading an image - permission denied
+#### 이미지 업로드 시 권한 거부 오류 발생
-Switching the data folder ownership on the host from root to another user and group resolves this problem.
+호스트의 데이터 폴더 소유권을 루트에서 다른 사용자 및 그룹으로 전환하면 이 문제가 해결됩니다.
-## Getting Help
+## 도움 받기
-If you encounter issues not covered in this guide:
+이 가이드에 다루지 않은 문제를 겪는 경우:
-* Check Logs:
+* 로그 확인:
- View container logs for error messages:
+ 컨테이너 로그에서 오류 메시지 확인:
```bash
docker compose logs
```
-* Community Support:
+* 커뮤니티 지원:
- Reach out to the [Twenty community](https://github.com/twentyhq/twenty/issues) or [support channels](https://discord.gg/cx5n4Jzs57) for assistance.
+ [Twenty 커뮤니티](https://github.com/twentyhq/twenty/issues)나 [지원 채널](https://discord.gg/cx5n4Jzs57)에 문의하십시오.
diff --git a/packages/twenty-docs/l/ko/developers/self-host/capabilities/upgrade-guide.mdx b/packages/twenty-docs/l/ko/developers/self-host/capabilities/upgrade-guide.mdx
index 03a53f5685..2f2a313e88 100644
--- a/packages/twenty-docs/l/ko/developers/self-host/capabilities/upgrade-guide.mdx
+++ b/packages/twenty-docs/l/ko/developers/self-host/capabilities/upgrade-guide.mdx
@@ -1,40 +1,40 @@
---
-title: Upgrade guide
+title: 업그레이드 가이드
---
-## General guidelines
+## 일반 가이드라인
-**Always make sure to back up your database before starting the upgrade process** by running `docker exec -it {db_container_name_or_id} pg_dumpall -U {postgres_user} > databases_backup.sql`.
+**업그레이드 프로세스를 시작하기 전에 다음 명령을 실행하여 데이터베이스를 반드시 백업하십시오**: `docker exec -it {db_container_name_or_id} pg_dumpall -U {postgres_user} > databases_backup.sql`.
-To restore backup, run `cat databases_backup.sql | docker exec -i {db_container_name_or_id} psql -U {postgres_user}`.
+백업을 복원하려면 `cat databases_backup.sql | docker exec -i {db_container_name_or_id} psql -U {postgres_user}`를 실행하십시오.
-If you used Docker Compose, follow these steps:
+Docker Compose를 사용한 경우, 다음 단계를 따르십시오:
-1. In a terminal, on the host where Twenty is running, turn off Twenty: `docker compose down`
+1. Twenty가 실행되고 있는 호스트의 터미널에서 Twenty를 종료하십시오: `docker compose down`
-2. Upgrade the version by changing the `TAG` value in the .env file near your docker-compose. ( We recommend consuming `major.minor` version such as `v0.53` )
+2. `TAG` 값을 docker-compose와 가까운 .env 파일에 변경하여 버전을 업그레이드하십시오. ( `v0.53`과 같은 `major.minor` 버전 사용을 권장합니다 )
-3. Bring Twenty back online with `docker compose up -d`
+3. `docker compose up -d`로 Twenty를 다시 온라인 상태로 전환하십시오.
-If you want to upgrade your instance by few versions, e.g. from v0.33.0 to v0.35.0, you have to upgrade your instance sequentially, in this example from v0.33.0 to v0.34.0, then from v0.34.0 to v0.35.0.
+여러 버전으로 인스턴스를 업그레이드하려는 경우, 예를 들어 v0.33.0에서 v0.35.0으로 업그레이드하려면 v0.33.0에서 v0.34.0으로, 그런 다음 v0.34.0에서 v0.35.0으로 업그레이드하십시오.
-**Make sure that after each upgraded version you have non-corrupted backup.**
+**각 버전 업그레이드 후마다 백업이 손상되지 않았는지 확인하십시오.**
-## Version-specific upgrade steps
+## 버전별 업그레이드 단계
## v1.0
-Hello Twenty v1.0! 🎉
+안녕하세요 Twenty v1.0! 🎉
## v0.60
-### Performance Enhancements
+### 성능 개선
-All interactions with the metadata API have been optimized for better performance, particularly for object metadata manipulation and workspace creation operations.
+메타데이터 API와의 모든 상호작용이 최적화되어, 특히 객체 메타데이터 조작 및 워크스페이스 생성 작업에서 성능이 향상되었습니다.
-We've refactored our caching strategy to prioritize cache hits over database queries when possible, significantly improving the performance of metadata API operations.
+데이터베이스 쿼리보다는 캐시 히트를 우선시하도록 캐싱 전략을 재구성하여 메타데이터 API 작업의 성능을 대폭 향상시켰습니다.
-If you encounter any runtime issues after upgrading, you may need to flush your cache to ensure it's synchronized with the latest changes. Run this command in your twenty-server container:
+업그레이드 후 실행 중 문제가 발생하면 캐시를 플러시하여 최신 변경 사항과 동기화해야 할 수도 있습니다. twenty-server 컨테이너에서 이 명령을 실행하십시오:
```bash
yarn command:prod cache:flush
@@ -42,64 +42,64 @@ yarn command:prod cache:flush
### v0.55
-Upgrade your Twenty instance to use v0.55 image
+Twenty 인스턴스를 v0.55 이미지로 업그레이드하십시오.
-You don't need to run any command anymore, the new image will automatically care about running all required migrations.
+이제 명령어를 실행할 필요가 없으며, 새로운 이미지는 모든 필요한 마이그레이션을 자동으로 처리할 것입니다.
-### `User does not have permission` error
+### `사용자에게 권한이 없습니다` 오류
-If you encounter authorization errors on most requests after upgrading, you may need to flush your cache to recompute the latest permissions.
+업그레이드 후 대부분의 요청에서 권한 오류가 발생하면 캐시를 플러시하여 최신 권한을 다시 계산해야 할 수도 있습니다.
-In your `twenty-server` container, run:
+`twenty-server` 컨테이너에서 실행하십시오:
```bash
yarn command:prod cache:flush
```
-This issue is specific to this Twenty version and should not be required for future upgrades.
+이 문제는 이 Twenty 버전에만 해당하며, 향후 업그레이드에서는 필요하지 않을 것입니다.
### v0.54
-Since version `0.53`, no manual actions needed.
+버전 `0.53` 이후로 수동 작업이 필요하지 않습니다.
-#### Metadata schema deprecation
+#### 메타데이터 스키마 사용 중단
-We've merged the `metadata` schema into the `core` one to simplify data retrieval from `TypeORM`.
-We have merged the `migrate` command step within the `upgrade` command. We do not recommend running `migrate` manually within any of your server/worker containers.
+`metadata` 스키마를 `core` 스키마로 병합하여 `TypeORM`에서 데이터 검색을 간소화했습니다.
+`migrate` 명령 단계를 `upgrade` 명령과 통합했습니다. 서버/작업자 컨테이너 내에서 `migrate`를 수동으로 실행하지 않는 것을 권장합니다.
### Since v0.53
-Starting from `0.53`, upgrade is programmatically done within the `DockerFile`, this means from now on, you shouldn't have to run any command manually anymore.
+`0.53`부터 업그레이드는 `DockerFile` 내에서 프로그래밍 방식으로 수행되므로 앞으로는 수동으로 명령을 실행할 필요가 없습니다.
-Make sure to keep upgrading your instance sequentially, without skipping any major version (e.g. `0.43.3` to `0.44.0` is allowed, but `0.43.1` to `0.45.0` isn't), else could lead to workspace version desynchronization that could result in runtime error and missing functionality.
+인스턴스를 순차적으로 업그레이드하고 주요 버전을 건너뛰지 마십시오(e.g. `0.43.3`에서 `0.44.0`으로의 업그레이드는 가능하지만 `0.43.1`에서 `0.45.0`으로의 업그레이드는 불가능), 그렇지 않으면 워크스페이스 버전 비동기화가 발생하여 런타임 오류 및 기능 누락이 발생할 수 있습니다.
-To check if a workspace has been correctly migrated you can review its version in database in `core.workspace` table.
+워크스페이스가 올바르게 마이그레이션되었는지 확인하려면 `core.workspace` 테이블에서 데이터베이스의 버전을 검토할 수 있습니다.
-It should always be in the range of your current Twenty's instance `major.minor` version, you can view your instance version in the admin panel (at `/settings/admin-panel`, accessible if your user has `canAccessFullAdminPanel` property set to true in the database) or by running `echo $APP_VERSION` in your `twenty-server` container.
+항상 현재 Twenty 인스턴스의 `주.소` 버전 범위 내에 있어야 하며, 인스턴스 버전은 admin 패널에서 볼 수 있습니다(`/설정/admin-panel`, 사용자가 데이터베이스에서 `canAccessFullAdminPanel` 속성이 true로 설정된 경우 접근 가능) 또는 `twenty-server` 컨테이너에서 `echo $APP_VERSION`을 실행하여 확인할 수 있습니다.
-To fix a desynchronized workspace version, you will have to upgrade from the corresponding twenty's version following related upgrade guide sequentially and so on until it reaches desired version.
+비동기화된 워크스페이스 버전을 수정하려면 해당 Twenty 버전의 관련 업그레이드 가이드를 따르고 원하는 버전에 도달할 때까지 순차적으로 업그레이드해야 합니다.
-#### `auditLog` removal
+#### `auditLog` 제거
-We've removed the auditLog standard object, which means your backup size might be significantly reduced after this migration.
+auditLog 표준 객체를 제거했으며, 이로 인해 이 마이그레이션 이후 백업 크기가 상당히 줄어들 수 있습니다.
### v0.51 to v0.52
-Upgrade your Twenty instance to use v0.52 image
+Twenty 인스턴스를 v0.52 이미지로 업그레이드하십시오.
```
yarn database:migrate:prod
yarn command:prod upgrade
```
-#### I have a workspace blocked in version between `0.52.0` and `0.52.6`
+#### 버전이 `0.52.0`과 `0.52.6` 사이에 차단된 워크스페이스가 있습니다.
-Unfortunately `0.52.0` and `0.52.6` have been completely removed from dockerHub.
-You will have to manually update your workspace version to `0.51.0` in database and upgrade using twenty version `0.52.11` following its just above upgrade guide.
+불행히도 `0.52.0` 및 `0.52.6`은 dockerHub에서 완전히 삭제되었습니다.
+데이터베이스의 워크스페이스 버전을 `0.51.0`으로 수동 업데이트하고 바로 위 업그레이드 가이드를 따라 Twenty 버전 `0.52.11`로 업그레이드해야 합니다.
### v0.50 to v0.51
-Upgrade your Twenty instance to use v0.51 image
+Twenty 인스턴스를 v0.51 이미지로 업그레이드하십시오.
```
yarn database:migrate:prod
@@ -108,21 +108,21 @@ yarn command:prod upgrade
### v0.44.0 to v0.50.0
-Upgrade your Twenty instance to use v0.50.0 image
+Twenty 인스턴스를 v0.50.0 이미지로 업그레이드하십시오.
```
yarn database:migrate:prod
yarn command:prod upgrade
```
-#### Docker-compose.yml mutation
+#### Docker-compose.yml 변경
-This version includes a `docker-compose.yml` mutation to give `worker` service access to the `server-local-data` volume.
-Please update your local `docker-compose.yml` with [v0.50.0 docker-compose.yml](https://github.com/twentyhq/twenty/blob/v0.50.0/packages/twenty-docker/docker-compose.yml)
+이 버전은 `worker` 서비스가 `server-local-data` 볼륨에 접근할 수 있도록 `docker-compose.yml` 변경을 포함합니다.
+로컬 `docker-compose.yml`을 [v0.50.0 docker-compose.yml](https://github.com/twentyhq/twenty/blob/v0.50.0/packages/twenty-docker/docker-compose.yml)로 업데이트하십시오.
### v0.43.0 to v0.44.0
-Upgrade your Twenty instance to use v0.44.0 image
+Twenty 인스턴스를 v0.44.0 이미지로 업그레이드하십시오.
```
yarn database:migrate:prod
@@ -131,24 +131,24 @@ yarn command:prod upgrade
### v0.42.0 to v0.43.0
-Upgrade your Twenty instance to use v0.43.0 image
+Twenty 인스턴스를 v0.43.0 이미지로 업그레이드하십시오.
```
yarn database:migrate:prod
yarn command:prod upgrade
```
-In this version, we have also switched to postgres:16 image in docker-compose.yml.
+이 버전에서는 docker-compose.yml 이미지가 postgres:16으로 전환되었습니다.
-#### (Option 1) Database migration
+#### (옵션 1) 데이터베이스 마이그레이션
-Keeping the existing postgres-spilo image is fine, but you will have to freeze the version in your docker-compose.yml to be 0.43.0.
+기존 postgres-spilo 이미지를 유지해도 되지만, docker-compose.yml에서 버전을 0.43.0으로 고정해야 합니다.
-#### (Option 2) Database migration
+#### (옵션 2) 데이터베이스 마이그레이션
-If you want to migrate your database to the new postgres:16 image, please follow these steps:
+데이터베이스를 새로운 postgres:16 이미지로 마이그레이션하려면, 다음 단계를 따르십시오:
-1. Dump your database from the old postgres-spilo container
+1. 이전 postgres-spilo 컨테이너에서 데이터베이스를 덤프하십시오.
```
docker exec -it twenty-db-1 sh
@@ -157,11 +157,11 @@ exit
docker cp twenty-db-1:/home/postgres/databases_backup.sql .
```
-Make sure your dump file is not empty.
+덤프 파일이 비어 있지 않은지 확인하십시오.
-2. Upgrade your docker-compose.yml to use postgres:16 image as in the [docker-compose.yml](https://raw.githubusercontent.com/twentyhq/twenty/main/packages/twenty-docker/docker-compose.yml) file.
+2. docker-compose.yml을 postgres:16 이미지를 사용하도록 [docker-compose.yml](https://raw.githubusercontent.com/twentyhq/twenty/main/packages/twenty-docker/docker-compose.yml) 파일에 따라 업그레이드하십시오.
-3. Restore the database to the new postgres:16 container
+3. 새로운 postgres:16 컨테이너에 데이터베이스를 복원하십시오.
```
docker cp databases_backup.sql twenty-db-1:/databases_backup.sql
@@ -172,84 +172,82 @@ exit
### v0.41.0 to v0.42.0
-Upgrade your Twenty instance to use v0.42.0 image
+Twenty 인스턴스를 v0.42.0 이미지로 업그레이드하십시오.
```
yarn database:migrate:prod
yarn command:prod upgrade-0.42
```
-**Environment Variables**
+**환경 변수**
-* Removed: `FRONT_PORT`, `FRONT_PROTOCOL`, `FRONT_DOMAIN`, `PORT`
-* Added: `FRONTEND_URL`, `NODE_PORT`, `MAX_NUMBER_OF_WORKSPACES_DELETED_PER_EXECUTION`, `MESSAGING_PROVIDER_MICROSOFT_ENABLED`, `CALENDAR_PROVIDER_MICROSOFT_ENABLED`, `IS_MICROSOFT_SYNC_ENABLED`
+* 삭제됨: `FRONT_PORT`, `FRONT_PROTOCOL`, `FRONT_DOMAIN`, `PORT`
+* 추가됨: `FRONTEND_URL`, `NODE_PORT`, `MAX_NUMBER_OF_WORKSPACES_DELETED_PER_EXECUTION`, `MESSAGING_PROVIDER_MICROSOFT_ENABLED`, `CALENDAR_PROVIDER_MICROSOFT_ENABLED`, `IS_MICROSOFT_SYNC_ENABLED`
### v0.40.0 to v0.41.0
-Upgrade your Twenty instance to use v0.41.0 image
+Twenty 인스턴스를 v0.41.0 이미지로 업그레이드하십시오.
```
yarn database:migrate:prod
yarn command:prod upgrade-0.41
```
-**Environment Variables**
+**환경 변수**
-* Removed: `AUTH_MICROSOFT_TENANT_ID`
+* 삭제됨: `AUTH_MICROSOFT_TENANT_ID`
### v0.35.0 to v0.40.0
-Upgrade your Twenty instance to use v0.40.0 image
+Twenty 인스턴스를 v0.40.0 이미지로 업그레이드하십시오.
```
yarn database:migrate:prod
yarn command:prod upgrade-0.40
```
-**Environment Variables**
+**환경 변수**
-* Added: `IS_EMAIL_VERIFICATION_REQUIRED`, `EMAIL_VERIFICATION_TOKEN_EXPIRES_IN`, `WORKFLOW_EXEC_THROTTLE_LIMIT`, `WORKFLOW_EXEC_THROTTLE_TTL`
+* 추가됨: `IS_EMAIL_VERIFICATION_REQUIRED`, `EMAIL_VERIFICATION_TOKEN_EXPIRES_IN`, `WORKFLOW_EXEC_THROTTLE_LIMIT`, `WORKFLOW_EXEC_THROTTLE_TTL`
### v0.34.0 to v0.35.0
-Upgrade your Twenty instance to use v0.35.0 image
+Twenty 인스턴스를 v0.35.0 이미지로 업그레이드하십시오.
```
yarn database:migrate:prod
yarn command:prod upgrade-0.35
```
-The `yarn database:migrate:prod` command will apply the migrations to the database structure (core and metadata schemas)
-The `yarn command:prod upgrade-0.35` takes care of the data migration of all workspaces.
+`yarn database:migrate:prod` 명령은 데이터베이스 구조(핵심 및 메타데이터 스키마)에 마이그레이션을 적용합니다. `yarn command:prod upgrade-0.35`는 모든 워크스페이스의 데이터 마이그레이션을 처리합니다.
-**Environment Variables**
+**환경 변수**
-* We replaced `ENABLE_DB_MIGRATIONS` with `DISABLE_DB_MIGRATIONS` (default value is now `false`, you probably don't have to set anything)
+* `ENABLE_DB_MIGRATIONS`를 `DISABLE_DB_MIGRATIONS`로 교체했습니다(기본값은 이제 `false`이며, 별도의 설정이 필요하지 않을 것입니다.)
### v0.33.0 to v0.34.0
-Upgrade your Twenty instance to use v0.34.0 image
+Twenty 인스턴스를 v0.34.0 이미지로 업그레이드하십시오.
```
yarn database:migrate:prod
yarn command:prod upgrade-0.34
```
-The `yarn database:migrate:prod` command will apply the migrations to the database structure (core and metadata schemas)
-The `yarn command:prod upgrade-0.34` takes care of the data migration of all workspaces.
+`yarn database:migrate:prod` 명령은 데이터베이스 구조(핵심 및 메타데이터 스키마)에 마이그레이션을 적용합니다. `yarn command:prod upgrade-0.34`는 모든 워크스페이스의 데이터 마이그레이션을 처리합니다.
-**Environment Variables**
+**환경 변수**
-* Removed: `FRONT_BASE_URL`
-* Added: `FRONT_DOMAIN`, `FRONT_PROTOCOL`, `FRONT_PORT`
+* 삭제됨: `FRONT_BASE_URL`
+* 추가됨: `FRONT_DOMAIN`, `FRONT_PROTOCOL`, `FRONT_PORT`
-We have updated the way we handle the frontend URL.
-You can now set the frontend URL using the `FRONT_DOMAIN`, `FRONT_PROTOCOL` and `FRONT_PORT` variables.
-If FRONT_DOMAIN is not set, the frontend URL will fall back to `SERVER_URL`.
+프런트엔드 URL을 처리하는 방식을 업데이트했습니다.
+이제 `FRONT_DOMAIN`, `FRONT_PROTOCOL` 및 `FRONT_PORT` 변수를 사용하여 프런트엔드 URL을 설정할 수 있습니다.
+`FRONT_DOMAIN`이 설정되지 않은 경우 프런트엔드 URL은 `SERVER_URL`로 대체됩니다.
### v0.32.0 to v0.33.0
-Upgrade your Twenty instance to use v0.33.0 image
+Twenty 인스턴스를 v0.33.0 이미지로 업그레이드하십시오.
```
yarn command:prod cache:flush
@@ -257,68 +255,65 @@ yarn database:migrate:prod
yarn command:prod upgrade-0.33
```
-The `yarn command:prod cache:flush` command will flush the Redis cache.
-The `yarn database:migrate:prod` command will apply the migrations to the database structure (core and metadata schemas)
-The `yarn command:prod upgrade-0.33` takes care of the data migration of all workspaces.
+`yarn command:prod cache:flush` 명령은 Redis 캐시를 플러시합니다.
+`yarn database:migrate:prod` 명령은 데이터베이스 구조(핵심 및 메타데이터 스키마)에 마이그레이션을 적용합니다. `yarn command:prod upgrade-0.33`는 모든 워크스페이스의 데이터 마이그레이션을 처리합니다.
-Starting from this version, twenty-postgres image for DB became deprecated and twenty-postgres-spilo is used instead.
-If you want to keep using twenty-postgres image, simply replace `twentycrm/twenty-postgres:${TAG}` with `twentycrm/twenty-postgres` in docker-compose.yml.
+이 버전부터 DB용으로 twenty-postgres 이미지가 폐기되어 twenty-postgres-spilo가 대신 사용되었습니다.
+twenty-postgres 이미지를 계속 사용하려면, docker-compose.yml에서 `twentycrm/twenty-postgres:${TAG}`를 `twentycrm/twenty-postgres`로 교체하십시오.
### v0.31.0 to v0.32.0
-Upgrade your Twenty instance to use v0.32.0 image
+Twenty 인스턴스를 v0.32.0 이미지로 업그레이드하십시오.
-**Schema and data migration**
+**스키마 및 데이터 마이그레이션**
```
yarn database:migrate:prod
yarn command:prod upgrade-0.32
```
-The `yarn database:migrate:prod` command will apply the migrations to the database structure (core and metadata schemas)
-The `yarn command:prod upgrade-0.32` takes care of the data migration of all workspaces.
+`yarn database:migrate:prod` 명령은 데이터베이스 구조(핵심 및 메타데이터 스키마)에 마이그레이션을 적용합니다. `yarn command:prod upgrade-0.32`는 모든 워크스페이스의 데이터 마이그레이션을 처리합니다.
-**Environment Variables**
+**환경 변수**
-We have updated the way we handle the Redis connection.
+Redis 연결을 처리하는 방식을 업데이트했습니다.
-* Removed: `REDIS_HOST`, `REDIS_PORT`, `REDIS_USERNAME`, `REDIS_PASSWORD`
-* Added: `REDIS_URL`
+* 삭제됨: `REDIS_HOST`, `REDIS_PORT`, `REDIS_USERNAME`, `REDIS_PASSWORD`
+* 추가됨: `REDIS_URL`
-Update your `.env` file to use the new `REDIS_URL` variable instead of the individual Redis connection parameters.
+`.env` 파일을 업데이트하여 개별 Redis 연결 매개변수 대신 새 `REDIS_URL` 변수를 사용하십시오.
-We have also simplified the way we handle the JWT tokens.
+JWT 토큰을 처리하는 방식도 간소화했습니다.
-* Removed: `ACCESS_TOKEN_SECRET`, `LOGIN_TOKEN_SECRET`, `REFRESH_TOKEN_SECRET`, `FILE_TOKEN_SECRET`
-* Added: `APP_SECRET`
+* 삭제됨: `ACCESS_TOKEN_SECRET`, `LOGIN_TOKEN_SECRET`, `REFRESH_TOKEN_SECRET`, `FILE_TOKEN_SECRET`
+* 추가됨: `APP_SECRET`
-Update your `.env` file to use the new `APP_SECRET` variable instead of the individual tokens secrets (you can use the same secret as before or generate a new random string)
+.env 파일을 업데이트하여 개별 토큰 비밀 대신 새로운 `APP_SECRET` 변수를 사용하십시오 (이전 비밀을 그대로 사용하거나 새 임의 문자열을 생성할 수 있습니다.)
-**Connected Account**
+**연결된 계정**
-If you are using connected account to synchronize your Google emails and calendars, you will need to activate the [People API](https://developers.google.com/people) on your Google Admin console.
+Google 이메일 및 캘린더 동기화를 위해 연결된 계정을 사용하는 경우, Google 관리 콘솔에서 [People API](https://developers.google.com/people)를 활성화해야 합니다.
### v0.30.0 to v0.31.0
-Upgrade your Twenty instance to use v0.31.0 image
+Twenty 인스턴스를 v0.31.0 이미지로 업그레이드하십시오.
-**Schema and data migration**:
+**스키마 및 데이터 마이그레이션**:
```
yarn database:migrate:prod
yarn command:prod upgrade-0.31
```
-The `yarn database:migrate:prod` command will apply the migrations to the database structure (core and metadata schemas)
-The `yarn command:prod upgrade-0.31` takes care of the data migration of all workspaces.
+`yarn database:migrate:prod` 명령은 데이터베이스 구조(핵심 및 메타데이터 스키마)에 마이그레이션을 적용합니다. `yarn command:prod upgrade-0.31`는 모든 워크스페이스의 데이터 마이그레이션을 처리합니다.
### v0.24.0 to v0.30.0
-Upgrade your Twenty instance to use v0.30.0 image
+Twenty 인스턴스를 v0.30.0 이미지로 업그레이드하십시오.
-**Breaking change**:
-To enhance performances, Twenty now requires redis cache to be configured. We have updated our [docker-compose.yml](https://raw.githubusercontent.com/twentyhq/twenty/main/packages/twenty-docker/docker-compose.yml) to reflect this.
-Make sure to update your configuration and to update your environment variables accordingly:
+**중대한 변경 사항**:
+성능을 개선하기 위해, 이제 Twenty는 redis 캐시 구성이 필요합니다. [docker-compose.yml](https://raw.githubusercontent.com/twentyhq/twenty/main/packages/twenty-docker/docker-compose.yml)을 업데이트하여 이를 반영했습니다.
+구성을 업데이트하고 환경 변수를 적절히 업데이트하십시오:
```
REDIS_HOST={your-redis-host}
@@ -326,49 +321,47 @@ REDIS_PORT={your-redis-port}
CACHE_STORAGE_TYPE=redis
```
-**Schema and data migration**:
+**스키마 및 데이터 마이그레이션**:
```
yarn database:migrate:prod
yarn command:prod upgrade-0.30
```
-The `yarn database:migrate:prod` command will apply the migrations to the database structure (core and metadata schemas)
-The `yarn command:prod upgrade-0.30` takes care of the data migration of all workspaces.
+`yarn database:migrate:prod` 명령은 데이터베이스 구조(핵심 및 메타데이터 스키마)에 마이그레이션을 적용합니다. `yarn command:prod upgrade-0.30`는 모든 워크스페이스의 데이터 마이그레이션을 처리합니다.
### v0.23.0 to v0.24.0
-Upgrade your Twenty instance to use v0.24.0 image
+Twenty 인스턴스를 v0.24.0 이미지로 업그레이드하십시오.
-Run the following commands:
+다음 명령어를 실행하십시오:
```
yarn database:migrate:prod
yarn command:prod upgrade-0.24
```
-The `yarn database:migrate:prod` command will apply the migrations to the database structure (core and metadata schemas)
-The `yarn command:prod upgrade-0.24` takes care of the data migration of all workspaces.
+`yarn database:migrate:prod` 명령은 데이터베이스 구조(핵심 및 메타데이터 스키마)에 마이그레이션을 적용합니다. `yarn command:prod upgrade-0.24`는 모든 워크스페이스의 데이터 마이그레이션을 처리합니다.
### v0.22.0 to v0.23.0
-Upgrade your Twenty instance to use v0.23.0 image
+Twenty 인스턴스를 v0.23.0 이미지로 업그레이드하십시오.
-Run the following commands:
+다음 명령어를 실행하십시오:
```
yarn database:migrate:prod
yarn command:prod upgrade-0.23
```
-The `yarn database:migrate:prod` command will apply the migrations to the Database.
-The `yarn command:prod upgrade-0.23` takes care of the data migration, including transferring activities to tasks/notes.
+`yarn database:migrate:prod` 명령은 데이터베이스에 마이그레이션을 적용합니다.
+`yarn command:prod upgrade-0.23`는 데이터 마이그레이션을 처리하며, 활동을 작업/노트로 전송하는 것도 포함합니다.
### v0.21.0 to v0.22.0
-Upgrade your Twenty instance to use v0.22.0 image
+Twenty 인스턴스를 v0.22.0 이미지로 업그레이드하십시오.
-Run the following commands:
+다음 명령어를 실행하십시오:
```
yarn database:migrate:prod
@@ -376,6 +369,6 @@ yarn command:prod workspace:sync-metadata -f
yarn command:prod upgrade-0.22
```
-The `yarn database:migrate:prod` command will apply the migrations to the Database.
-The `yarn command:prod workspace:sync-metadata -f` command will sync the definition of standard objects to the metadata tables and apply to required migrations to existing workspaces.
-The `yarn command:prod upgrade-0.22` command will apply specific data transformations to adapt to the new object defaultRequestInstrumentationOptions.
+`yarn database:migrate:prod` 명령은 데이터베이스에 마이그레이션을 적용합니다.
+`yarn command:prod workspace:sync-metadata -f` 명령은 표준 객체의 정의를 메타데이터 테이블에 동기화하고 기존 워크스페이스에 필요한 마이그레이션을 적용합니다.
+`yarn command:prod upgrade-0.22` 명령은 새 객체 defaultRequestInstrumentationOptions에 적응하기 위한 특정 데이터 변환을 적용합니다.
diff --git a/packages/twenty-docs/l/ko/developers/self-host/self-host.mdx b/packages/twenty-docs/l/ko/developers/self-host/self-host.mdx
index 5f3a7d8bbe..f79ebff064 100644
--- a/packages/twenty-docs/l/ko/developers/self-host/self-host.mdx
+++ b/packages/twenty-docs/l/ko/developers/self-host/self-host.mdx
@@ -1,30 +1,30 @@
---
-title: Self-Host
-description: Deploy and manage Twenty on your own infrastructure.
+title: 셀프 호스팅
+description: 자체 인프라에 Twenty를 배포하고 관리하세요.
---
-## Overview
+## 개요
-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/ko/navigation.json b/packages/twenty-docs/l/ko/navigation.json
index 8096fbf4ac..4b27d9e5ce 100644
--- a/packages/twenty-docs/l/ko/navigation.json
+++ b/packages/twenty-docs/l/ko/navigation.json
@@ -1,72 +1,72 @@
{
"tabs": {
"userGuide": {
- "label": "User Guide",
+ "label": "사용자 안내서",
"groups": {
"discoverTwenty": {
- "label": "Discover Twenty",
+ "label": "Twenty 알아보기",
"groups": {
"gettingStartedCapabilities": {
- "label": "Capabilities"
+ "label": "기능"
},
"gettingStartedHowTos": {
- "label": "How-Tos"
+ "label": "사용 방법"
}
}
},
"dataModel": {
- "label": "Data Model",
+ "label": "데이터 모델",
"groups": {
"dataModelCapabilities": {
- "label": "Capabilities"
+ "label": "기능"
},
"dataModelHowTos": {
- "label": "How-Tos"
+ "label": "사용 방법"
}
}
},
"dataMigration": {
- "label": "Data Migration",
+ "label": "데이터 마이그레이션",
"groups": {
"dataMigrationCapabilities": {
- "label": "Capabilities"
+ "label": "기능"
},
"dataMigrationHowTos": {
- "label": "How-Tos"
+ "label": "사용 방법"
}
}
},
"calendarEmails": {
- "label": "Calendar & Emails",
+ "label": "캘린더 및 이메일",
"groups": {
"calendarEmailsCapabilities": {
- "label": "Capabilities"
+ "label": "기능"
},
"calendarEmailsHowTos": {
- "label": "How-Tos"
+ "label": "사용 방법"
}
}
},
"workflows": {
- "label": "Workflows",
+ "label": "워크플로우",
"groups": {
"workflowsCapabilities": {
- "label": "Capabilities"
+ "label": "기능"
},
"workflowsHowTos": {
- "label": "How-Tos",
+ "label": "사용 방법",
"groups": {
"crmAutomations": {
- "label": "CRM Automations"
+ "label": "CRM 자동화"
},
"connectToOtherTools": {
- "label": "Connect to Other Tools"
+ "label": "다른 도구에 연결하기"
},
"advancedConfigurations": {
- "label": "Advanced Configurations"
+ "label": "고급 설정"
},
"needMoreHelp": {
- "label": "Need More Help"
+ "label": "추가 도움이 필요하십니까"
}
}
}
@@ -76,122 +76,122 @@
"label": "AI",
"groups": {
"aiCapabilities": {
- "label": "Capabilities"
+ "label": "기능"
},
"aiHowTos": {
- "label": "How-Tos"
+ "label": "사용 방법"
}
}
},
"viewsPipelines": {
- "label": "Views & Pipelines",
+ "label": "뷰 및 파이프라인",
"groups": {
"viewsPipelinesCapabilities": {
- "label": "Capabilities"
+ "label": "기능"
},
"viewsPipelinesHowTos": {
- "label": "How-Tos"
+ "label": "사용 방법"
}
}
},
"dashboards": {
- "label": "Dashboards",
+ "label": "대시보드",
"groups": {
"dashboardsCapabilities": {
- "label": "Capabilities"
+ "label": "기능"
},
"dashboardsHowTos": {
- "label": "How-Tos"
+ "label": "사용 방법"
}
}
},
"permissionsAccess": {
- "label": "Permissions & Access",
+ "label": "권한 및 접근",
"groups": {
"permissionsAccessCapabilities": {
- "label": "Capabilities"
+ "label": "기능"
},
"permissionsAccessHowTos": {
- "label": "How-Tos"
+ "label": "사용 방법"
}
}
},
"billing": {
- "label": "Billing",
+ "label": "청구",
"groups": {
"billingCapabilities": {
- "label": "Capabilities"
+ "label": "기능"
},
"billingHowTos": {
- "label": "How-Tos"
+ "label": "사용 방법"
}
}
},
"settings": {
- "label": "Settings",
+ "label": "설정",
"groups": {
"settingsCapabilities": {
- "label": "Capabilities"
+ "label": "기능"
},
"settingsHowTos": {
- "label": "How-Tos"
+ "label": "사용 방법"
}
}
}
}
},
"developers": {
- "label": "Developers",
+ "label": "개발자",
"groups": {
"developersGroup": {
- "label": "Developers"
+ "label": "개발자"
},
"extend": {
- "label": "Extend",
+ "label": "확장",
"groups": {
"extendCapabilities": {
- "label": "Capabilities"
+ "label": "기능"
}
}
},
"selfHost": {
- "label": "Self-Host",
+ "label": "셀프 호스팅",
"groups": {
"selfHostCapabilities": {
- "label": "Capabilities"
+ "label": "기능"
}
}
},
"contribute": {
- "label": "Contribute",
+ "label": "기여",
"groups": {
"contributeCapabilities": {
- "label": "Capabilities",
+ "label": "기능",
"groups": {
"frontendDevelopment": {
- "label": "Frontend Development",
+ "label": "프론트엔드 개발",
"groups": {
"twentyUi": {
"label": "Twenty UI",
"groups": {
"display": {
- "label": "Display"
+ "label": "표시"
},
"feedback": {
- "label": "Feedback"
+ "label": "피드백"
},
"input": {
- "label": "Input"
+ "label": "입력"
},
"navigation": {
- "label": "Navigation"
+ "label": "네비게이션"
}
}
}
}
},
"backendDevelopment": {
- "label": "Backend Development"
+ "label": "백엔드 개발"
}
}
}
diff --git a/packages/twenty-docs/l/ko/twenty-ui/display/app-tooltip.mdx b/packages/twenty-docs/l/ko/twenty-ui/display/app-tooltip.mdx
index 4e620eedc7..8448e053a0 100644
--- a/packages/twenty-docs/l/ko/twenty-ui/display/app-tooltip.mdx
+++ b/packages/twenty-docs/l/ko/twenty-ui/display/app-tooltip.mdx
@@ -1,16 +1,16 @@
---
-title: App Tooltip
+title: 앱 툴팁
image: /images/user-guide/tips/light-bulb.png
---
-
+
-A brief message that displays additional information when a user interacts with an element.
+요소와 상호작용할 때 추가 정보를 표시하는 간단한 메시지입니다.
-
+
```jsx
import { AppTooltip } from "@/ui/display/tooltip/AppTooltip";
@@ -37,27 +37,27 @@ A brief message that displays additional information when a user interacts with
```
-
- | Props | Type | Description |
- | ---------------- | ---------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
- | className | string | Optional CSS class for additional styling |
- | anchorSelect | CSS selector | Selector for the tooltip anchor (the element that triggers the tooltip) |
- | content | string | The content you want to display within the tooltip |
- | delayHide | number | The delay in seconds before hiding the tooltip after the cursor leaves the anchor |
- | offset | number | The offset in pixels for positioning the tooltip |
- | noArrow | boolean | If `true`, hides the arrow on the tooltip |
- | isOpen | boolean | If `true`, the tooltip is open by default |
- | place | `PlacesType` string from `react-tooltip` | Specifies the placement of the tooltip. Values include `bottom`, `left`, `right`, `top`, `top-start`, `top-end`, `right-start`, `right-end`, `bottom-start`, `bottom-end`, `left-start`, and `left-end` |
- | positionStrategy | `PositionStrategy` string from `react-tooltip` | Position strategy for the tooltip. Has two values: `absolute` and `fixed` |
+
+ | 프로퍼티 | 유형 | 설명 |
+ | ------ | --------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+ | 클래스 네임 | 문자열 | 추가 스타일링을 위한 선택적 CSS 클래스 |
+ | 앵커 선택 | CSS 선택자 | 툴팁 앵커(툴팁을 트리거하는 요소)의 선택자 |
+ | 내용 | 문자열 | 툴팁 내에 표시할 내용을 입력하세요 |
+ | 지연 숨기기 | 숫자 | 커서가 앵커를 떠난 후 툴팁이 숨겨지기까지의 지연 시간(초) |
+ | 오프셋 | 숫자 | 툴팁 위치 조건을 위한 픽셀 단위의 오프셋 |
+ | 화살표 없음 | 부울 | `true`이면 툴팁의 화살표가 숨겨집니다 |
+ | 열림 여부 | 부울 | `true`이면 툴팁이 기본적으로 열려 있습니다 |
+ | 위치 | `react-tooltip`의 `PlacesType` 문자열 | 툴팁의 배치를 지정합니다. 값으로는 `bottom`, `left`, `right`, `top`, `top-start`, `top-end`, `right-start`, `right-end`, `bottom-start`, `bottom-end`, `left-start`, `left-end` 등이 있습니다. |
+ | 위치 전략 | `react-tooltip`의 `PositionStrategy` 문자열 | 툴팁에 대한 위치 전략입니다. 두 가지 값: `absolute` 및 `fixed` |
-## Overflowing Text with Tooltip
+## 툴팁이 포함된 오버플로 텍스트
-Handles overflowing text and displays a tooltip when the text overflows.
+텍스트가 넘칠 경우 처리하고 툴팁을 표시합니다.
-
+
```jsx
import { OverflowingTextWithTooltip } from 'twenty-ui/display';
@@ -70,9 +70,9 @@ Handles overflowing text and displays a tooltip when the text overflows.
```
-
- | Props | Type | Description |
- | ----- | ------ | ------------------------------------------------------------ |
- | text | string | The content you want to display in the overflowing text area |
+
+ | 프로퍼티 | 유형 | 설명 |
+ | ---- | --- | -------------------------- |
+ | 텍스트 | 문자열 | 오버플로 텍스트 영역에 표시할 내용을 입력하세요 |
diff --git a/packages/twenty-docs/l/ko/twenty-ui/display/checkmark.mdx b/packages/twenty-docs/l/ko/twenty-ui/display/checkmark.mdx
index ef84d5c2d5..bfa4ef553c 100644
--- a/packages/twenty-docs/l/ko/twenty-ui/display/checkmark.mdx
+++ b/packages/twenty-docs/l/ko/twenty-ui/display/checkmark.mdx
@@ -1,16 +1,16 @@
---
-title: Checkmark
+title: 체크마크
image: /images/user-guide/tasks/tasks_header.png
---
-
+
-Represents a successful or completed action.
+성공하거나 완료된 작업을 나타냅니다.
-
+
```jsx
import { Checkmark } from 'twenty-ui/display';
@@ -20,17 +20,17 @@ Represents a successful or completed action.
```
-
- Extends `React.ComponentPropsWithoutRef<'div'>` and accepts all the props of a regular `div` element.
+
+ `React.ComponentPropsWithoutRef<'div'>` 를 확장하며 일반 `div` 요소의 모든 속성을 수용합니다.
-## Animated Checkmark
+## 애니메이션 체크마크
-Represents a checkmark icon with the added feature of animation.
+애니메이션 기능이 추가된 체크마크 아이콘을 나타냅니다.
-
+
```jsx
import { AnimatedCheckmark } from 'twenty-ui/display';
@@ -47,12 +47,12 @@ Represents a checkmark icon with the added feature of animation.
```
-
- | Props | Type | Description | Default |
- | ----------- | ------- | ------------------------------------------- | ----------- |
- | isAnimating | boolean | Controls whether the checkmark is animating | false |
- | color | string | Color of the checkmark | |
- | duration | number | The duration of the animation in seconds | 0.5 seconds |
- | size | number | The size of the checkmark | 28 pixels |
+
+ | 프로퍼티 | 유형 | 설명 | 기본값 |
+ | ----------- | --- | -------------------------- | ----- |
+ | isAnimating | 부울 | 체크마크가 애니메이션 중인지 여부를 제어합니다. | 거짓 |
+ | 색상 | 문자열 | 체크마크의 색상 | |
+ | 지속 시간 | 숫자 | 애니메이션의 지속 시간(초) | 0.5초 |
+ | 크기 | 숫자 | 체크마크의 크기 | 28 픽셀 |
diff --git a/packages/twenty-docs/l/ko/twenty-ui/display/chip.mdx b/packages/twenty-docs/l/ko/twenty-ui/display/chip.mdx
index ded2fd1c77..3feb3a3bbb 100644
--- a/packages/twenty-docs/l/ko/twenty-ui/display/chip.mdx
+++ b/packages/twenty-docs/l/ko/twenty-ui/display/chip.mdx
@@ -1,16 +1,16 @@
---
-title: Chip
+title: 칩
image: /images/user-guide/github/github-header.png
---
-
+
-A visual element that you can use as a clickable or non-clickable container with a label, optional left and right components, and various styling options to display labels and tags.
+레이블, 선택적 왼쪽 및 오른쪽 컴포넌트, 다양한 스타일 옵션을 갖춘 시각적 요소로, 레이블과 태그를 표시하는 클릭 가능 또는 클릭 불가 컨테이너로 사용할 수 있습니다.
-
+
```jsx
import { Chip } from 'twenty-ui/components';
@@ -18,7 +18,7 @@ A visual element that you can use as a clickable or non-clickable container with
return (
-
- | Props | Type | Description |
- | ------------ | ------------------------ | -------------------------------------------------------------------------------------------- |
- | linkToEntity | string | The link to the entity |
- | entityId | string | The unique identifier for the entity |
- | name | string | The name of the entity |
- | pictureUrl | string | s picture", |
- | avatarType | Avatar Type | The type of avatar you want to display. Has two options: `rounded` and `squared` |
- | variant | `EntityChipVariant` enum | Variant of the entity chip you want to display. Has two options: `regular` and `transparent` |
- | LeftIcon | IconComponent | A React component representing an icon. Displayed on the left side of the chip |
+
+ | 프로퍼티 | 유형 | 설명 |
+ | ------------ | ----------------------- | --------------------------------------------------------- |
+ | linkToEntity | 문자열 | 엔티티에 대한 링크 |
+ | entityId | 문자열 | 엔티티의 고유 식별자 |
+ | 이름 | 문자열 | 엔티티의 이름 |
+ | pictureUrl | 문자열 | 사진", |
+ | avatarType | 아바타 유형 | 표시할 아바타의 유형입니다. 두 가지 옵션이 있습니다: `rounded`와 `squared` |
+ | 변형 | `EntityChipVariant` 열거형 | 표시할 엔티티 칩의 변형입니다. 두 가지 옵션이 있습니다: `regular`와 `transparent` |
+ | 왼쪽 아이콘 | 아이콘 컴포넌트 | 아이콘을 나타내는 React 컴포넌트입니다. 칩의 왼쪽에 표시됩니다. |
-## Examples
+## 예시
-### Transparent Disabled Chip
+### 투명 비활성 칩
```jsx
import { Chip } from 'twenty-ui/components';
@@ -57,7 +57,7 @@ export const MyComponent = () => {
return (
{
-### Disabled Chip with Tooltip
+### 툴팁이 포함된 비활성 칩
```jsx
import { Chip } from "twenty-ui/components";
@@ -82,7 +82,7 @@ export const MyComponent = () => {
return (
{
};
```
-## Entity Chip
+## 엔티티 칩
-A Chip-like element to display information about an entity.
+엔티티에 대한 정보를 표시하기 위한 칩 유사 요소입니다.
-
+
```jsx
import { BrowserRouter as Router } from 'react-router-dom';
import { IconTwentyStar } from 'twenty-ui/display';
@@ -112,7 +112,7 @@ A Chip-like element to display information about an entity.
-
- | Props | Type | Description |
- | ------------ | ------------------------ | -------------------------------------------------------------------------------------------- |
- | linkToEntity | string | The link to the entity |
- | entityId | string | The unique identifier for the entity |
- | name | string | The name of the entity |
- | pictureUrl | string | s picture", |
- | avatarType | Avatar Type | The type of avatar you want to display. Has two options: `rounded` and `squared` |
- | variant | `EntityChipVariant` enum | Variant of the entity chip you want to display. Has two options: `regular` and `transparent` |
- | LeftIcon | IconComponent | A React component representing an icon. Displayed on the left side of the chip |
+
+ | 프로퍼티 | 유형 | 설명 |
+ | ------------ | ----------------------- | --------------------------------------------------------- |
+ | linkToEntity | 문자열 | 엔티티에 대한 링크 |
+ | entityId | 문자열 | 엔티티의 고유 식별자 |
+ | 이름 | 문자열 | 엔티티의 이름 |
+ | pictureUrl | 문자열 | 사진", |
+ | avatarType | 아바타 유형 | 표시할 아바타의 유형입니다. 두 가지 옵션이 있습니다: `rounded`와 `squared` |
+ | 변형 | `EntityChipVariant` 열거형 | 표시할 엔티티 칩의 변형입니다. 두 가지 옵션이 있습니다: `regular`와 `transparent` |
+ | 왼쪽 아이콘 | 아이콘 컴포넌트 | 아이콘을 나타내는 React 컴포넌트입니다. 칩의 왼쪽에 표시됩니다. |
diff --git a/packages/twenty-docs/l/ko/twenty-ui/display/icons.mdx b/packages/twenty-docs/l/ko/twenty-ui/display/icons.mdx
index 2d73154c8d..905961eddf 100644
--- a/packages/twenty-docs/l/ko/twenty-ui/display/icons.mdx
+++ b/packages/twenty-docs/l/ko/twenty-ui/display/icons.mdx
@@ -1,20 +1,20 @@
---
-title: Icons
+title: 아이콘들
image: /images/user-guide/objects/objects.png
---
-
+
-A list of icons used throughout our app.
+앱 전반에 걸쳐 사용되는 아이콘 목록입니다.
-## Tabler Icons
+## 타블러 아이콘
-We use Tabler icons for React throughout the app.
+앱 전반에 걸쳐 React에 타블러 아이콘을 사용합니다.
-
+
```
@@ -22,8 +22,8 @@ We use Tabler icons for React throughout the app.
```
-
- You can import each icon as a component. Here's an example:
+
+ 각 아이콘을 컴포넌트로 가져올 수 있습니다. 다음은 예시입니다:
@@ -36,25 +36,25 @@ We use Tabler icons for React throughout the app.
```
-
- | Props | Type | Description | Default |
- | ------ | ------ | ------------------------------------------ | ------------ |
- | size | number | The height and width of the icon in pixels | 24 |
- | color | string | The color of the icons | currentColor |
- | stroke | number | The stroke width of the icon in pixels | 2 |
+
+ | 프로퍼티 | 유형 | 설명 | 기본값 |
+ | ---- | --- | ------------------ | ------------ |
+ | 크기 | 숫자 | 픽셀 단위의 아이콘 높이와 너비 | 24 |
+ | 색상 | 문자열 | 아이콘의 색상 | currentColor |
+ | 스트로크 | 숫자 | 픽셀 단위의 아이콘 스트로크 너비 | 2 |
-## Custom Icons
+## 커스텀 아이콘
-In addition to Tabler icons, the app also uses some custom icons.
+타블러 아이콘 외에도 앱에는 일부 커스텀 아이콘이 사용됩니다.
-### Icon Address Book
+### 아이콘 주소록
-Displays an address book icon.
+주소록 아이콘을 표시합니다.
-
+
```jsx
import { IconAddressBook } from 'twenty-ui/display';
@@ -64,10 +64,10 @@ Displays an address book icon.
```
-
- | Props | Type | Description | Default |
- | ------ | ------ | ------------------------------------------ | ------- |
- | size | number | The height and width of the icon in pixels | 24 |
- | stroke | number | The stroke width of the icon in pixels | 2 |
+
+ | 프로퍼티 | 유형 | 설명 | 기본값 |
+ | ---- | -- | ------------------ | --- |
+ | 크기 | 숫자 | 픽셀 단위의 아이콘 높이와 너비 | 24 |
+ | 스트로크 | 숫자 | 픽셀 단위의 아이콘 스트로크 너비 | 2 |
diff --git a/packages/twenty-docs/l/ko/twenty-ui/display/soon-pill.mdx b/packages/twenty-docs/l/ko/twenty-ui/display/soon-pill.mdx
index 56ace0bae7..3e9c1ddc16 100644
--- a/packages/twenty-docs/l/ko/twenty-ui/display/soon-pill.mdx
+++ b/packages/twenty-docs/l/ko/twenty-ui/display/soon-pill.mdx
@@ -1,13 +1,13 @@
---
-title: Soon Pill
+title: 제공 예정 배지
image: /images/user-guide/kanban-views/kanban.png
---
-
+
-A small badge or "pill" to indicate something is coming soon.
+무언가가 곧 제공될 것임을 나타내는 작은 배지 또는 "pill"입니다.
```jsx
import { SoonPill } from "@/ui/display/pill/components/SoonPill";
diff --git a/packages/twenty-docs/l/ko/twenty-ui/display/tag.mdx b/packages/twenty-docs/l/ko/twenty-ui/display/tag.mdx
index a2226c88d4..630ba62a0e 100644
--- a/packages/twenty-docs/l/ko/twenty-ui/display/tag.mdx
+++ b/packages/twenty-docs/l/ko/twenty-ui/display/tag.mdx
@@ -1,16 +1,16 @@
---
-title: Tag
+title: 태그
image: /images/user-guide/table-views/table.png
---
-
+
-Component to visually categorize or label content.
+콘텐츠를 시각적으로 분류하거나 라벨을 붙이는 구성 요소입니다.
-
+
```jsx
import { Tag } from "@/ui/display/tag/components/Tag";
@@ -19,7 +19,7 @@ Component to visually categorize or label content.
console.log("click")}
/>
);
@@ -27,12 +27,12 @@ Component to visually categorize or label content.
```
-
- | Props | Type | Description |
- | --------- | -------- | --------------------------------------------------------------------------------------------------------------------------- |
- | className | string | Optional name for additional styling |
- | color | string | Color of the tag. Options include: `green`, `turquoise`, `sky`, `blue`, `purple`, `pink`, `red`, `orange`, `yellow`, `gray` |
- | text | string | The content of the tag |
- | onClick | function | Optional function called when a user clicks on the tag |
+
+ | 프로퍼티 | 유형 | 설명 |
+ | ------- | --- | ----------------------------------------------------------------------------------- |
+ | 클래스 네임 | 문자열 | 추가 스타일링을 위한 선택적 이름 |
+ | 색상 | 문자열 | 태그의 색상. 옵션은 `녹색`, `터키옥색`, `하늘색`, `파랑`, `보라색`, `핑크`, `빨강`, `오렌지`, `노랑`, `회색`을 포함합니다. |
+ | 텍스트 | 문자열 | 태그의 콘텐츠 |
+ | onClick | 함수 | 사용자가 태그를 클릭할 때 호출되는 선택적 함수 |
diff --git a/packages/twenty-docs/l/ko/twenty-ui/input.mdx b/packages/twenty-docs/l/ko/twenty-ui/input.mdx
index 2da701caf5..74f860155d 100644
--- a/packages/twenty-docs/l/ko/twenty-ui/input.mdx
+++ b/packages/twenty-docs/l/ko/twenty-ui/input.mdx
@@ -1,8 +1,8 @@
---
-title: Input
+title: 입력
image: /images/user-guide/tips/light-bulb.png
---
-
+
diff --git a/packages/twenty-docs/l/ko/twenty-ui/input/block-editor.mdx b/packages/twenty-docs/l/ko/twenty-ui/input/block-editor.mdx
index 9943fa5f5d..589e48078c 100644
--- a/packages/twenty-docs/l/ko/twenty-ui/input/block-editor.mdx
+++ b/packages/twenty-docs/l/ko/twenty-ui/input/block-editor.mdx
@@ -1,16 +1,16 @@
---
-title: Block Editor
+title: 블록 편집기
image: /images/user-guide/api/api.png
---
-
+
-Uses a block-based rich text editor from [BlockNote](https://www.blocknotejs.org/) to allow users to edit and view blocks of content.
+사용자는 [BlockNote](https://www.blocknotejs.org/)의 블록 기반 리치 텍스트 편집기를 사용해 콘텐츠 블록을 편집하고 볼 수 있습니다.
-
+
```jsx
import { useBlockNote } from "@blocknote/react";
import { BlockEditor } from "@/ui/input/editor/components/BlockEditor";
@@ -23,9 +23,9 @@ Uses a block-based rich text editor from [BlockNote](https://www.blocknotejs.org
```
-
- | Props | Type | Description |
- | ------ | ----------------- | ------------------------------------------ |
- | editor | `BlockNoteEditor` | The block editor instance or configuration |
+
+ | 프로퍼티 | 유형 | 설명 |
+ | ---- | ----------------- | ----------------- |
+ | 편집기 | `BlockNoteEditor` | 블록 편집기 인스턴스 또는 구성 |
diff --git a/packages/twenty-docs/l/ko/twenty-ui/input/buttons.mdx b/packages/twenty-docs/l/ko/twenty-ui/input/buttons.mdx
index 1c53eb1816..1b7652b71a 100644
--- a/packages/twenty-docs/l/ko/twenty-ui/input/buttons.mdx
+++ b/packages/twenty-docs/l/ko/twenty-ui/input/buttons.mdx
@@ -1,18 +1,18 @@
---
-title: Buttons
+title: 버튼들
image: /images/user-guide/views/filter.png
---
-
+
-A list of buttons and button groups used throughout the app.
+앱 전반에 걸쳐 사용되는 버튼 및 버튼 그룹의 목록.
-## Button
+## 버튼
-
+
```jsx
import { Button } from "@/ui/input/button/components/Button";
@@ -21,7 +21,7 @@ A list of buttons and button groups used throughout the app.
-
- | Props | Type | Description |
- | --------- | --------------------- | -------------------------------------------------------------------------------------------------------------------- |
- | className | string | Optional class name for additional styling |
- | Icon | `React.ComponentType` | An optional icon component that's displayed within the button |
- | title | string | The text content of the button |
- | fullWidth | boolean | Defines whether the button should span the whole width of its container |
- | variant | string | The visual style variant of the button. Options include `primary`, `secondary`, and `tertiary` |
- | size | string | The size of the button. Has two options: `small` and `medium` |
- | position | string | The position of the button in relation to its siblings. Options include: `standalone`, `left`, `right`, and `middle` |
- | accent | string | The accent color of the button. Options include: `default`, `blue`, and `danger` |
- | soon | boolean | Indicates if the button is marked as "soon" (such as for upcoming features) |
- | disabled | boolean | Specifies whether the button is disabled or not |
- | focus | boolean | Determines if the button has focus |
- | onClick | function | A callback function that triggers when the user clicks on the button |
+
+ | 프로퍼티 | 유형 | 설명 |
+ | --------- | --------------------- | -------------------------------------------------------------------------------------------- |
+ | 클래스 네임 | 문자열 | 추가 스타일을 위한 선택적 클래스 이름 |
+ | 아이콘 | `React.ComponentType` | 버튼 내에 표시되는 선택적 아이콘 구성 요소 |
+ | 제목 | 문자열 | 버튼의 텍스트 내용 |
+ | fullWidth | 부울 | 버튼이 컨테이너의 전체 너비를 차지할 것인지 정의합니다 |
+ | 변형 | 문자열 | 버튼의 시각적 스타일 변형. 옵션에는 `primary`, `secondary` 및 `tertiary`가 포함됩니다 |
+ | 크기 | 문자열 | 버튼의 크기. 두 가지 옵션이 있습니다: `small` 및 `medium` |
+ | 위치 | 문자열 | 버튼의 위치가 형제 요소와의 관계에서 어디에 존재하는지 나타냅니다. 옵션에는: `standalone`, `left`, `right`, 및 `middle`가 포함됩니다 |
+ | 강조 | 문자열 | 버튼의 강조 색상. 옵션에는: `default`, `blue`, 및 `danger`가 포함됩니다 |
+ | 곧 | 부울 | 버튼이 "곧 출시"로 표시되는지 여부를 나타냅니다 (예: 곧 출시할 기능) |
+ | 비활성 | 부울 | 버튼이 비활성 상태인지 여부를 지정합니다 |
+ | 포커스 | 부울 | 버튼에 포커스가 있는지 나타냅니다 |
+ | onClick | function | 사용자가 버튼을 클릭할 때 트리거되는 콜백 함수 |
-## Button Group
+## 버튼 그룹
-
+
```jsx
import { Button } from "@/ui/input/button/components/Button";
import { ButtonGroup } from "@/ui/input/button/components/ButtonGroup";
@@ -69,7 +69,7 @@ A list of buttons and button groups used throughout the app.
-
- | Props | Type | Description |
- | --------- | --------- | ---------------------------------------------------------------------------------------------------------------- |
- | variant | string | The visual style variant of the buttons within the group. Options include `primary`, `secondary`, and `tertiary` |
- | size | string | The size of the buttons within the group. Has two options: `medium` and `small` |
- | accent | string | The accent color of the buttons within the group. Options include `default`, `blue` and `danger` |
- | className | string | Optional class name for additional styling |
- | children | ReactNode | An array of React elements representing the individual buttons within the group |
+
+ | 프로퍼티 | 유형 | 설명 |
+ | -------- | --------- | --------------------------------------------------------------------- |
+ | 변형 | 문자열 | 그룹 내 버튼의 시각적 스타일 변형. 옵션에는 `primary`, `secondary`, 및 `tertiary`가 포함됩니다 |
+ | 크기 | 문자열 | 그룹 내 버튼의 크기. 두 가지 옵션이 있습니다: `medium` 및 `small` |
+ | 강조 | 문자열 | 그룹 내 버튼의 강조 색상. 옵션에는 `default`, `blue` 및 `danger`가 포함됩니다 |
+ | 클래스 네임 | 문자열 | 추가 스타일을 위한 선택적 클래스 이름 |
+ | children | ReactNode | 그룹 내 각 버튼을 나타내는 React 요소의 배열 |
-## Floating Button
+## 떠 있는 버튼
-
+
```jsx
import { FloatingButton } from "@/ui/input/button/components/FloatingButton";
import { IconSearch } from "@tabler/icons-react";
@@ -139,7 +139,7 @@ A list of buttons and button groups used throughout the app.
-
- | Props | Type | Description |
- | ----------- | --------------------- | ---------------------------------------------------------------------------------------------------------------- |
- | className | string | Optional name for additional styling |
- | Icon | `React.ComponentType` | An optional icon component that's displayed within the button |
- | title | string | The text content of the button |
- | size | string | The size of the button. Has two options: `small` and `medium` |
- | position | string | The position of the button in relation to its siblings. Options include: `standalone`, `left`, `middle`, `right` |
- | applyShadow | boolean | Determines whether to apply shadow to a button |
- | applyBlur | boolean | Determines whether to apply a blur effect to the button |
- | disabled | boolean | Determines whether the button is disabled |
- | focus | boolean | Indicates if the button has focus |
+
+ | 프로퍼티 | 유형 | 설명 |
+ | ------ | --------------------- | -------------------------------------------------------------------------------------------- |
+ | 클래스 네임 | 문자열 | 추가 스타일을 위한 선택적 이름 |
+ | 아이콘 | `React.ComponentType` | 버튼 내에 표시되는 선택적 아이콘 구성 요소 |
+ | 제목 | 문자열 | 버튼의 텍스트 내용 |
+ | 크기 | 문자열 | 버튼의 크기. 두 가지 옵션이 있습니다: `small` 및 `medium` |
+ | 위치 | 문자열 | 버튼의 위치가 형제 요소와의 관계에서 어디에 존재하는지 나타냅니다. 옵션에는: `standalone`, `left`, `middle`, 및 `right`가 포함됩니다 |
+ | 그림자 적용 | 부울 | 버튼에 그림자를 적용할지 여부를 결정합니다 |
+ | 블러 적용 | 부울 | 버튼에 블러 효과를 적용할지 여부를 결정합니다 |
+ | 비활성 | 부울 | 버튼이 비활성 상태인지 여부를 결정합니다 |
+ | 포커스 | 부울 | 버튼에 포커스가 있는지 나타냅니다 |
-## Floating Button Group
+## 떠 있는 버튼 그룹
-
+
```jsx
import { FloatingButton } from "@/ui/input/button/components/FloatingButton";
import { FloatingButtonGroup } from "@/ui/input/button/components/FloatingButtonGroup";
@@ -206,18 +206,18 @@ A list of buttons and button groups used throughout the app.
```
-
- | Props | Type | Description | Default |
- | -------- | --------- | ------------------------------------------------------------------------------- | ------- |
- | size | string | The size of the button. Has two options: `small` and `medium` | small |
- | children | ReactNode | An array of React elements representing the individual buttons within the group | |
+
+ | 프로퍼티 | 유형 | 설명 | 기본값 |
+ | -------- | --------- | ----------------------------------------- | --- |
+ | 크기 | 문자열 | 버튼의 크기. 두 가지 옵션이 있습니다: `small` 및 `medium` | 작은 |
+ | children | ReactNode | 그룹 내 각 버튼을 나타내는 React 요소의 배열 | |
-## Floating Icon Button
+## 떠 있는 아이콘 버튼
-
+
```jsx
import { FloatingIconButton } from "@/ui/input/button/components/FloatingIconButton";
import { IconSearch } from "@tabler/icons-react";
@@ -241,26 +241,26 @@ A list of buttons and button groups used throughout the app.
```
-
- | Props | Type | Description |
- | ----------- | --------------------- | -------------------------------------------------------------------------------------------------------------------- |
- | className | string | Optional name for additional styling |
- | Icon | `React.ComponentType` | An optional icon component that's displayed within the button |
- | size | string | The size of the button. Has two options: `small` and `medium` |
- | position | string | The position of the button in relation to its siblings. Options include: `standalone`, `left`, `right`, and `middle` |
- | applyShadow | boolean | Determines whether to apply shadow to a button |
- | applyBlur | boolean | Determines whether to apply a blur effect to the button |
- | disabled | boolean | Determines whether the button is disabled |
- | focus | boolean | Indicates if the button has focus |
- | onClick | function | A callback function that triggers when the user clicks on the button |
- | isActive | boolean | Determines if the button is in an active state |
+
+ | 프로퍼티 | 유형 | 설명 |
+ | ---------- | --------------------- | -------------------------------------------------------------------------------------------- |
+ | 클래스 네임 | 문자열 | 추가 스타일을 위한 선택적 이름 |
+ | 아이콘 | `React.ComponentType` | 버튼 내에 표시되는 선택적 아이콘 구성 요소 |
+ | 크기 | 문자열 | 버튼의 크기. 두 가지 옵션이 있습니다: `small` 및 `medium` |
+ | 위치 | 문자열 | 버튼의 위치가 형제 요소와의 관계에서 어디에 존재하는지 나타냅니다. 옵션에는: `standalone`, `left`, `right`, 및 `middle`가 포함됩니다 |
+ | 그림자 적용 | 부울 | 버튼에 그림자를 적용할지 여부를 결정합니다 |
+ | 블러 적용 | 부울 | 버튼에 블러 효과를 적용할지 여부를 결정합니다 |
+ | 비활성 | 부울 | 버튼이 비활성 상태인지 여부를 결정합니다 |
+ | 포커스 | 부울 | 버튼에 포커스가 있는지 나타냅니다 |
+ | onClick | function | 사용자가 버튼을 클릭할 때 트리거되는 콜백 함수 |
+ | 활성 상태인지 여부 | 부울 | 버튼이 활성 상태인지 여부를 결정합니다 |
-## Floating Icon Button Group
+## 떠 있는 아이콘 버튼 그룹
-
+
```jsx
import { FloatingIconButtonGroup } from "@/ui/input/button/components/FloatingIconButtonGroup";
import { IconClipboardText, IconCheckbox } from "@tabler/icons-react";
@@ -290,19 +290,19 @@ A list of buttons and button groups used throughout the app.
```
-
- | Props | Type | Description |
- | ----------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
- | className | string | Optional name for additional styling |
- | size | string | The size of the button. Has two options: `small` and `medium` |
- | iconButtons | array | An array of objects, each representing an icon button in the group. Each object should include the icon component you want to display in the button, the function you want to call when a user clicks on the button, and whether the button should be active or not. |
+
+ | 프로퍼티 | 유형 | 설명 |
+ | ------ | --- | --------------------------------------------------------------------------------------------------------- |
+ | 클래스 네임 | 문자열 | 추가 스타일을 위한 선택적 이름 |
+ | 크기 | 문자열 | 버튼의 크기. 두 가지 옵션이 있습니다: `small` 및 `medium` |
+ | 아이콘 버튼 | 배열 | 그룹 내 각 아이콘 버튼을 나타내는 객체의 배열. 각 객체에는 버튼에 표시할 아이콘 컴포넌트, 사용자가 버튼을 클릭할 때 호출할 함수, 그리고 버튼이 활성 상태인지 여부를 포함해야 합니다. |
-## Light Button
+## 라이트 버튼
-
+
```jsx
import { LightButton } from "@/ui/input/button/components/LightButton";
@@ -310,7 +310,7 @@ A list of buttons and button groups used throughout the app.
return
-
- | Props | Type | Description |
- | --------- | ----------------- | --------------------------------------------------------------------------- |
- | className | string | Optional name for additional styling |
- | icon | `React.ReactNode` | The icon you want to display in the button |
- | title | string | The text content of the button |
- | accent | string | The accent color of the button. Options include: `secondary` and `tertiary` |
- | active | boolean | Determines if the button is in an active state |
- | disabled | boolean | Determines whether the button is disabled |
- | focus | boolean | Indicates if the button has focus |
- | onClick | function | A callback function that triggers when the user clicks on the button |
+
+ | 프로퍼티 | 유형 | 설명 |
+ | ------- | ----------------- | ------------------------------------------------ |
+ | 클래스 네임 | 문자열 | 추가 스타일을 위한 선택적 이름 |
+ | 아이콘 | `React.ReactNode` | 버튼에 표시할 아이콘 |
+ | 제목 | 문자열 | 버튼의 텍스트 내용 |
+ | 강조 | 문자열 | 버튼의 강조 색상. 옵션에는: `secondary` 및 `tertiary`가 포함됩니다 |
+ | 활성 | 부울 | 버튼이 활성 상태인지 여부를 결정합니다 |
+ | 비활성 | 부울 | 버튼이 비활성 상태인지 여부를 결정합니다 |
+ | 포커스 | 부울 | 버튼에 포커스가 있는지 나타냅니다 |
+ | onClick | 기능 | 사용자가 버튼을 클릭할 때 트리거되는 콜백 함수 |
-## Light Icon Button
+## 라이트 아이콘 버튼
-
+
```jsx
import { LightIconButton } from "@/ui/input/button/components/LightIconButton";
import { IconSearch } from "@tabler/icons-react";
@@ -349,7 +349,7 @@ A list of buttons and button groups used throughout the app.
className
testId="test1"
Icon={IconSearch}
- title="Title"
+ title="제목"
size="small"
accent="secondary"
active={true}
@@ -362,26 +362,26 @@ A list of buttons and button groups used throughout the app.
```
-
- | Props | Type | Description |
- | --------- | --------------------- | --------------------------------------------------------------------------- |
- | className | string | Optional name for additional styling |
- | testId | string | Test identifier for the button |
- | Icon | `React.ComponentType` | An optional icon component that's displayed within the button |
- | title | string | The text content of the button |
- | size | string | The size of the button. Has two options: `small` and `medium` |
- | accent | string | The accent color of the button. Options include: `secondary` and `tertiary` |
- | active | boolean | Determines if the button is in an active state |
- | disabled | boolean | Determines whether the button is disabled |
- | focus | boolean | Indicates if the button has focus |
- | onClick | function | A callback function that triggers when the user clicks on the button |
+
+ | 프로퍼티 | 유형 | 설명 |
+ | ------- | --------------------- | ------------------------------------------------ |
+ | 클래스 네임 | 문자열 | 추가 스타일을 위한 선택적 이름 |
+ | 테스트ID | 문자열 | 버튼의 테스트 식별자 |
+ | 아이콘 | `React.ComponentType` | 버튼 내에 표시되는 선택적 아이콘 구성 요소 |
+ | 제목 | 문자열 | 버튼의 텍스트 내용 |
+ | 크기 | 문자열 | 버튼의 크기. 두 가지 옵션이 있습니다: `small` 및 `medium` |
+ | 강조 | 문자열 | 버튼의 강조 색상. 옵션에는: `secondary` 및 `tertiary`가 포함됩니다 |
+ | 활성 | 부울 | 버튼이 활성 상태인지 여부를 결정합니다 |
+ | 비활성 | 부울 | 버튼이 비활성 상태인지 여부를 결정합니다 |
+ | 포커스 | 부울 | 버튼에 포커스가 있는지 나타냅니다 |
+ | onClick | 기능 | 사용자가 버튼을 클릭할 때 트리거되는 콜백 함수 |
-## Main Button
+## 메인 버튼
-
+
```jsx
import { MainButton } from "@/ui/input/button/components/MainButton";
import { IconCheckbox } from "@tabler/icons-react";
@@ -389,7 +389,7 @@ A list of buttons and button groups used throughout the app.
export const MyComponent = () => {
return (
-
- | Props | Type | Description |
- | -------------------- | -------------------------------- | --------------------------------------------------------------------------------- |
- | title | string | The text content of the button |
- | fullWidth | boolean | Defines whether the button should span the whole width of its container |
- | variant | string | The visual style variant of the button. Options include `primary` and `secondary` |
- | soon | boolean | Indicates if the button is marked as "soon" (such as for upcoming features) |
- | Icon | `React.ComponentType` | An optional icon component that's displayed within the button |
- | React `button` props | `React.ComponentProps<'button'>` | All standard HTML button props are supported |
+
+ | 프로퍼티 | 유형 | 설명 |
+ | ----------------- | -------------------------------- | --------------------------------------------------- |
+ | 제목 | 문자열 | 버튼의 텍스트 내용 |
+ | 전체 폭 | 부울 | 버튼이 컨테이너의 전체 너비를 차지할 것인지 정의합니다 |
+ | 변형 | 문자열 | 버튼의 시각적 스타일 변형. 옵션에는 `primary` 및 `secondary`가 포함됩니다 |
+ | 곧 | 부울 | 버튼이 "곧 출시"로 표시되는지 여부를 나타냅니다 (예: 곧 출시할 기능) |
+ | 아이콘 | `React.ComponentType` | 버튼 내에 표시되는 선택적 아이콘 구성 요소 |
+ | React `button` 속성 | `React.ComponentProps<'button'>` | 모든 표준 HTML 버튼 속성을 지원합니다 |
-## Rounded Icon Button
+## 둥근 아이콘 버튼
-
+
```jsx
import { RoundedIconButton } from "@/ui/input/button/components/RoundedIconButton";
import { IconSearch } from "@tabler/icons-react";
@@ -430,10 +430,10 @@ A list of buttons and button groups used throughout the app.
```
-
- | Props | Type | Description |
- | -------------------- | ----------------------------------------------- | ----------- |
- | Icon | `React.ComponentType` | |
- | React `button` props | `React.ButtonHTMLAttributes` | |
+
+ | 프로퍼티 | 유형 | 설명 |
+ | ----------------- | ----------------------------------------------- | -- |
+ | 아이콘 | `React.ComponentType` | |
+ | React `button` 속성 | `React.ButtonHTMLAttributes` | |
diff --git a/packages/twenty-docs/l/ko/twenty-ui/input/checkbox.mdx b/packages/twenty-docs/l/ko/twenty-ui/input/checkbox.mdx
index b25eeba052..027ef5da9c 100644
--- a/packages/twenty-docs/l/ko/twenty-ui/input/checkbox.mdx
+++ b/packages/twenty-docs/l/ko/twenty-ui/input/checkbox.mdx
@@ -1,16 +1,16 @@
---
-title: Checkbox
+title: 체크박스
image: /images/user-guide/tasks/tasks_header.png
---
-
+
-Used when a user needs to select multiple values from several options.
+사용자가 여러 옵션 중 여러 값을 선택해야 할 때 사용됩니다.
-
+
```jsx
import { Checkbox } from "twenty-ui/display";
@@ -30,15 +30,15 @@ Used when a user needs to select multiple values from several options.
```
-
- | Props | Type | Description |
- | --------------- | -------- | -------------------------------------------------------------------------------------------- |
- | checked | boolean | Indicates whether the checkbox is checked |
- | indeterminate | boolean | Indicates whether the checkbox is in an indeterminate state (neither checked nor unchecked) |
- | onChange | function | The callback function you want to trigger when the checkbox state changes |
- | onCheckedChange | function | The callback function you want to trigger when the `checked` state changes |
- | variant | string | The visual style variant of the box. Options include: `primary`, `secondary`, and `tertiary` |
- | size | string | The size of the checkbox. Has two options: `small` and `large` |
- | shape | string | The shape of the checkbox. Has two options: `squared` and `rounded` |
+
+ | 프로퍼티 | 유형 | 설명 |
+ | --------------- | --- | ----------------------------------------------------------------- |
+ | 체크됨 | 부울 | 체크박스가 체크된 상태인지 나타냅니다 |
+ | 불확정 | 부울 | 체크박스가 불확정 상태(체크되지 않음과 체크됨의 중간)에 있는지 나타냅니다 |
+ | onChange | 함수 | 체크박스 상태가 변경될 때 호출할 콜백 함수입니다. |
+ | onCheckedChange | 함수 | `checked` 상태가 변경될 때 호출할 콜백 함수입니다. |
+ | 변형 | 문자열 | 박스의 시각적 스타일 변형입니다. 옵션에는 `primary`, `secondary`, `tertiary`가 포함됩니다 |
+ | 크기 | 문자열 | 체크박스의 크기입니다. 두 가지 옵션이 있습니다: `small`과 `large` |
+ | 모양 | 문자열 | 체크박스의 모양입니다. 두 가지 옵션이 있습니다: `squared`와 `rounded` |
diff --git a/packages/twenty-docs/l/ko/twenty-ui/input/color-scheme.mdx b/packages/twenty-docs/l/ko/twenty-ui/input/color-scheme.mdx
index 1b1505d481..e520556a91 100644
--- a/packages/twenty-docs/l/ko/twenty-ui/input/color-scheme.mdx
+++ b/packages/twenty-docs/l/ko/twenty-ui/input/color-scheme.mdx
@@ -1,18 +1,18 @@
---
-title: Color Scheme
+title: 색 구성표
image: /images/user-guide/fields/field.png
---
-
+
-## Color Scheme Card
+## 색상 구성표 카드
-Represents different color schemes and is specially tailored for light and dark themes.
+다양한 색상 구성표를 나타내며, 밝은 테마와 어두운 테마를 위해 특별히 설계되었습니다.
-
+
```jsx
import { ColorSchemeCard } from "twenty-ui/display";
@@ -27,21 +27,21 @@ Represents different color schemes and is specially tailored for light and dark
```
-
- | Props | Type | Description | Default |
- | ---------------- | --------------------------------------- | ----------------------------------------------------------------------- | ------- |
- | variant | string | The color scheme variant. Options include `Dark`, `Light`, and `System` | light |
- | selected | boolean | If `true`, displays a checkmark to indicate the selected color scheme | |
- | additional props | `React.ComponentPropsWithoutRef<'div'>` | Standard HTML `div` element props | |
+
+ | 프로퍼티 | 유형 | 설명 | 기본값 |
+ | ----- | --------------------------------------- | --------------------------------------------------- | --- |
+ | 변형 | 문자열 | 색상 구성표 변형. 옵션에는 `Dark`, `Light`, 및 `System`이 포함됩니다. | 라이트 |
+ | 선택됨 | 부울 | `true`이면 선택한 색상 구성표를 나타내는 체크 표시가 나타납니다. | |
+ | 추가 속성 | `React.ComponentPropsWithoutRef<'div'>` | 기본 HTML `div` 요소 속성 | |
-## Color Scheme Picker
+## 색상 구성표 선택기
-Allows users to choose between different color schemes.
+사용자가 다양한 색상 구성표를 선택할 수 있도록 합니다.
-
+
```jsx
import { ColorSchemePicker } from "twenty-ui/display";
@@ -54,10 +54,10 @@ Allows users to choose between different color schemes.
```
-
- | Props | Type | Description |
- | -------- | -------------- | ---------------------------------------------------------------------------- |
- | value | `Color Scheme` | The currently selected color scheme |
- | onChange | function | The callback function you want to trigger when a user selects a color scheme |
+
+ | 프로퍼티 | 유형 | 설명 |
+ | -------- | ------- | ----------------------------- |
+ | 값 | `색 구성표` | 현재 선택된 색상 구성표 |
+ | onChange | 함수 | 사용자가 색상 구성표를 선택할 때 트리거할 콜백 함수 |
diff --git a/packages/twenty-docs/l/ko/twenty-ui/input/icon-picker.mdx b/packages/twenty-docs/l/ko/twenty-ui/input/icon-picker.mdx
index 59d269242e..7b3bef1abf 100644
--- a/packages/twenty-docs/l/ko/twenty-ui/input/icon-picker.mdx
+++ b/packages/twenty-docs/l/ko/twenty-ui/input/icon-picker.mdx
@@ -1,16 +1,16 @@
---
-title: Icon Picker
+title: 아이콘 선택기
image: /images/user-guide/github/github-header.png
---
-
+
-A dropdown-based icon picker that allows users to select an icon from a list.
+드롭다운 기반의 아이콘 선택기로 사용자가 목록에서 아이콘을 선택할 수 있습니다.
-
+
```jsx
import { RecoilRoot } from "recoil";
import React, { useState } from "react";
@@ -38,15 +38,15 @@ A dropdown-based icon picker that allows users to select an icon from a list.
```
-
- | Props | Type | Description |
- | --------------- | -------- | ------------------------------------------------------------------------------------------------------------------------- |
- | disabled | boolean | Disables the icon picker if set to `true` |
- | onChange | function | The callback function triggered when the user selects an icon. It receives an object with `iconKey` and `Icon` properties |
- | selectedIconKey | string | The key of the initially selected icon |
- | onClickOutside | function | Callback function triggered when the user clicks outside the dropdown |
- | onClose | function | Callback function triggered when the dropdown is closed |
- | onOpen | function | Callback function triggered when the dropdown is opened |
- | variant | string | The visual style variant of the clickable icon. Options include: `primary`, `secondary`, and `tertiary` |
+
+ | 프로퍼티 | 유형 | 설명 |
+ | -------------- | --- | -------------------------------------------------------------------------- |
+ | 비활성화됨 | 부울 | `true`로 설정하면 아이콘 선택기가 비활성화됩니다. |
+ | onChange | 함수 | 사용자가 아이콘을 선택할 때 호출되는 콜백 함수입니다. `iconKey`와 `Icon` 속성을 포함한 객체를 수신합니다. |
+ | 선택된 아이콘 키 | 문자열 | 처음 선택된 아이콘의 키입니다. |
+ | onClickOutside | 함수 | 사용자가 드롭다운 외부를 클릭했을 때 호출되는 콜백 함수입니다. |
+ | onClose | 함수 | 드롭다운이 닫힐 때 호출되는 콜백 함수입니다. |
+ | onOpen | 함수 | 드롭다운이 열릴 때 호출되는 콜백 함수입니다. |
+ | 변형 | 문자열 | 클릭 가능한 아이콘의 시각적 스타일 변형입니다. 옵션에는 `primary`, `secondary`, `tertiary`가 포함됩니다. |
diff --git a/packages/twenty-docs/l/ko/twenty-ui/input/image-input.mdx b/packages/twenty-docs/l/ko/twenty-ui/input/image-input.mdx
index 0d563d7c37..9f27f5d1c5 100644
--- a/packages/twenty-docs/l/ko/twenty-ui/input/image-input.mdx
+++ b/packages/twenty-docs/l/ko/twenty-ui/input/image-input.mdx
@@ -1,16 +1,16 @@
---
-title: Image Input
+title: 이미지 입력
image: /images/user-guide/objects/objects.png
---
-
+
-Allows users to upload and remove an image.
+사용자가 이미지를 업로드하고 제거할 수 있도록 합니다.
-
+
```jsx
import { ImageInput } from "@/ui/input/components/ImageInput";
@@ -20,15 +20,15 @@ Allows users to upload and remove an image.
```
-
- | Props | Type | Description |
- | ------------ | -------- | ------------------------------------------------------------------------------------------------- |
- | picture | string | The image source URL |
- | onUpload | function | The function called when a user uploads a new image. It receives the `File` object as a parameter |
- | onRemove | function | The function called when the user clicks on the remove button |
- | onAbort | function | The function called when a user clicks on the abort button during image upload |
- | isUploading | boolean | Indicates whether an image is currently being uploaded |
- | errorMessage | string | An optional error message to display below the image input |
- | disabled | boolean | If `true`, the entire input is disabled, and the buttons are not clickable |
+
+ | 프로퍼티 | 유형 | 설명 |
+ | ------------ | --- | ----------------------------------------------------- |
+ | 사진 | 문자열 | 이미지 소스 URL |
+ | onUpload | 함수 | 사용자가 새 이미지를 업로드할 때 호출되는 함수입니다. `File` 객체를 매개변수로 받습니다. |
+ | onRemove | 함수 | 사용자가 제거 버튼을 클릭할 때 호출되는 함수입니다. |
+ | onAbort | 함수 | 사용자가 이미지 업로드 중 중단 버튼을 클릭할 때 호출되는 함수입니다. |
+ | isUploading | 부울 | 이미지가 현재 업로드 중인지 여부를 나타냅니다. |
+ | errorMessage | 문자열 | 이미지 입력 아래에 표시할 선택적 오류 메시지입니다. |
+ | disabled | 부울 | `true`인 경우 전체 입력이 비활성화되고 버튼을 클릭할 수 없습니다. |
diff --git a/packages/twenty-docs/l/ko/twenty-ui/input/radio.mdx b/packages/twenty-docs/l/ko/twenty-ui/input/radio.mdx
index e6246e631f..52918c4dcb 100644
--- a/packages/twenty-docs/l/ko/twenty-ui/input/radio.mdx
+++ b/packages/twenty-docs/l/ko/twenty-ui/input/radio.mdx
@@ -1,16 +1,16 @@
---
-title: Radio
+title: 라디오
image: /images/user-guide/create-workspace/workspace-cover.png
---
-
+
-Used when users may only choose one option from a series of options.
+사용자가 여러 옵션 중에서 하나만 선택할 수 있을 때 사용됩니다.
-
+
```jsx
import { Radio } from "twenty-ui/display";
@@ -41,27 +41,27 @@ Used when users may only choose one option from a series of options.
```
-
- | Props | Type | Description |
- | --------------- | ---------------------- | ------------------------------------------------------------------------------------------------ |
- | style | `React.CSS` properties | Additional inline styles for the component |
- | className | string | Optional CSS class for additional styling |
- | checked | boolean | Indicates whether the radio button is checked |
- | value | string | The label or text associated with the radio button |
- | onChange | function | The function called when the selected radio button is changed |
- | onCheckedChange | function | The function called when the `checked` state of the radio button changes |
- | size | string | The size of the radio button. Options include: `large` and `small` |
- | disabled | boolean | If `true`, the radio button is disabled and not clickable |
- | labelPosition | string | The position of the label text relative to the radio button. Has two options: `left` and `right` |
+
+ | 프로퍼티 | 유형 | 설명 |
+ | --------------- | -------------- | ----------------------------------------------------- |
+ | 스타일 | `React.CSS` 속성 | 컴포넌트의 추가 인라인 스타일 |
+ | 클래스 네임 | 문자열 | 추가 스타일링을 위한 선택적 CSS 클래스 |
+ | 체크됨 | 부울 | 라디오 버튼이 체크되었는지 여부를 나타냅니다 |
+ | 값 | 문자열 | 라디오 버튼과 연결된 라벨 또는 텍스트 |
+ | onChange | 함수 | 선택된 라디오 버튼이 변경될 때 호출되는 기능 |
+ | onCheckedChange | 함수 | 라디오 버튼의 `체크` 상태가 변경될 때 호출되는 기능 |
+ | 크기 | 문자열 | 라디오 버튼의 크기입니다. 옵션에는 `large`와 `small`이 포함됩니다 |
+ | 비활성화됨 | 부울 | `참`이면 라디오 버튼이 비활성화되어 클릭할 수 없습니다 |
+ | 라벨 위치 | 문자열 | 라벨 텍스트의 라디오 버튼에 대한 상대 위치입니다. 두 가지 옵션: `left`와 `right` |
-## Radio Group
+## 라디오 그룹
-Groups together related radio buttons.
+관련된 라디오 버튼들을 그룹화합니다.
-
+
```jsx
import React, { useState } from "react";
import { Radio, RadioGroup } from "twenty-ui/display";
@@ -86,12 +86,12 @@ Groups together related radio buttons.
```
-
- | Props | Type | Description |
- | ------------- | ----------------- | ---------------------------------------------------------------------------------- |
- | value | string | The value of the currently selected radio button |
- | onChange | function | The callback function triggered when the radio button is changed |
- | onValueChange | function | The callback function triggered when the selected value in the group changes. |
- | children | `React.ReactNode` | Allows you to pass React components (such as Radio) as children to the Radio Group |
+
+ | 프로퍼티 | 유형 | 설명 |
+ | ------------- | ----------------- | -------------------------------------------------- |
+ | 값 | 문자열 | 현재 선택된 라디오 버튼의 값 |
+ | onChange | 기능 | 라디오 버튼이 변경될 때 트리거되는 콜백 기능 |
+ | onValueChange | 기능 | 그룹에서 선택된 값이 변경될 때 트리거되는 콜백 기능. |
+ | 자식 | `React.ReactNode` | Radio와 같은 React 컴포넌트를 자식으로 Radio Group에 전달할 수 있습니다 |
diff --git a/packages/twenty-docs/l/ko/twenty-ui/input/select.mdx b/packages/twenty-docs/l/ko/twenty-ui/input/select.mdx
index d685bf4012..82e8840066 100644
--- a/packages/twenty-docs/l/ko/twenty-ui/input/select.mdx
+++ b/packages/twenty-docs/l/ko/twenty-ui/input/select.mdx
@@ -1,16 +1,16 @@
---
-title: Select
+title: 선택
image: /images/user-guide/what-is-twenty/20.png
---
-
+
-Allows users to pick a value from a list of predefined options.
+사용자가 미리 정의된 옵션 목록에서 값을 선택할 수 있도록 합니다.
-
+
```jsx
import { RecoilRoot } from 'recoil';
import { IconTwentyStar } from 'twenty-ui/display';
@@ -24,10 +24,10 @@ Allows users to pick a value from a list of predefined options.
@@ -38,14 +38,14 @@ Allows users to pick a value from a list of predefined options.
```
-
- | Props | Type | Description |
- | --------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
- | className | string | Optional CSS class for additional styling |
- | disabled | boolean | When set to `true`, disables user interaction with the component |
- | label | string | The label to describe the purpose of the `Select` component |
- | onChange | function | The function called when the selected values change |
- | options | array | Represents the options available for the `Selected` component. It's an array of objects where each object has a `value` (the unique identifier), `label` (the unique identifier), and an optional `Icon` |
- | value | string | Represents the currently selected value. It should match one of the `value` properties in the `options` array |
+
+ | 프로퍼티 | 유형 | 설명 |
+ | -------- | --- | ---------------------------------------------------------------------------------------------- |
+ | 클래스 네임 | 문자열 | 추가 스타일링을 위한 선택적 CSS 클래스 |
+ | disabled | 부울 | `true`로 설정하면 사용자는 이 구성 요소와 상호작용할 수 없습니다. |
+ | 라벨 | 문자열 | `선택` 구성 요소의 목적을 설명하는 라벨 |
+ | onChange | 함수 | 선택된 값이 변경될 때 호출되는 함수 |
+ | 옵션 | 배열 | `선택된` 구성 요소에 사용할 수 있는 옵션들을 나타냅니다. 각 객체에는 `값`(고유 식별자), `라벨`(고유 식별자) 및 선택적 `아이콘`이 포함된 객체의 배열입니다. |
+ | 값 | 문자열 | 현재 선택된 값을 나타냅니다. `옵션` 배열에서 하나의 `값` 속성과 일치해야 합니다. |
diff --git a/packages/twenty-docs/l/ko/twenty-ui/input/text.mdx b/packages/twenty-docs/l/ko/twenty-ui/input/text.mdx
index 8cad1352ae..bab31198fc 100644
--- a/packages/twenty-docs/l/ko/twenty-ui/input/text.mdx
+++ b/packages/twenty-docs/l/ko/twenty-ui/input/text.mdx
@@ -1,72 +1,71 @@
---
-title: Text
+title: 텍스트
image: /images/user-guide/notes/notes_header.png
---
-
+
-## Text Input
+## 텍스트 입력
-Allows users to enter and edit text.
+사용자가 텍스트를 입력하고 편집할 수 있습니다.
-
+
```jsx
import { RecoilRoot } from "recoil";
import { TextInput } from "@/ui/input/components/TextInput";
export const MyComponent = () => {
const handleChange = (text) => {
- console.log("Input changed:", text);
+ console.log("입력 변경됨:", text);
};
const handleKeyDown = (event) => {
- console.log("Key pressed:", event.key);
+ console.log("키가 눌림:", event.key);
};
return (
);
};
-
```
-
- | Props | Type | Description |
- | -------------- | ------------- | ---------------------------------------------------------------------------------------------------------------------- |
- | className | string | Optional name for additional styling |
- | label | string | Represents the label for the input |
- | onChange | function | The function called when the input value changes |
- | fullWidth | boolean | Indicates whether the input should take up 100% of the width |
- | disableHotkeys | boolean | Indicates whether hotkeys are enabled for the input |
- | error | string | Represents the error message to be displayed. When provided, it also adds an icon error on the right side of the input |
- | onKeyDown | function | Called when a key is pressed down while the input field is focused. Receives a `React.KeyboardEvent` as an argument |
- | RightIcon | IconComponent | An optional icon component displayed on the right side of the input |
+
+ | 프로퍼티 | 유형 | 설명 |
+ | -------------- | ------------- | -------------------------------------------------------------- |
+ | 클래스 네임 | 문자열 | 추가 스타일링을 위한 선택적 이름 |
+ | 레이블 | 문자열 | 입력의 레이블을 나타냅니다. |
+ | onChange | function | 입력 값이 변경될 때 호출되는 함수 |
+ | fullWidth | 부울 | 입력이 너비의 100%를 차지해야 하는지 여부를 나타냅니다. |
+ | disableHotkeys | 부울 | 입력에 대해 단축키가 활성화되었는지 여부를 나타냅니다. |
+ | 오류 | 문자열 | 표시될 오류 메시지를 나타냅니다. 제공되면 입력의 오른쪽에 오류 아이콘도 추가됩니다 |
+ | onKeyDown | function | 입력 필드가 포커스될 때 키가 눌린 경우 호출됩니다. `React.KeyboardEvent`를 인수로 받습니다. |
+ | RightIcon | IconComponent | 입력 오른쪽에 표시되는 선택적 아이콘 컴포넌트 |
- The component also accepts other HTML input element props.
+ 이 컴포넌트는 다른 HTML 입력 요소 속성도 허용합니다.
-## Autosize Text Input
+## 자동 크기 조정 텍스트 입력
-Text input component that automatically adjusts its height based on the content.
+내용에 따라 자동으로 높이가 조정되는 텍스트 입력 컴포넌트.
-
+
```jsx
import { RecoilRoot } from "recoil";
import { AutosizeTextInput } from "@/ui/input/components/AutosizeTextInput";
@@ -75,13 +74,13 @@ Text input component that automatically adjusts its height based on the content.
return (
console.log("onValidate function fired")}
+ onValidate={() => console.log("onValidate 함수 실행됨")}
minRows={1}
- placeholder="Write a comment"
- onFocus={() => console.log("onFocus function fired")}
+ placeholder="댓글을 작성하세요"
+ onFocus={() => console.log("onFocus 함수 실행됨")}
variant="icon"
buttonTitle
- value="Task: "
+ value="작업: "
/>
);
@@ -89,25 +88,25 @@ Text input component that automatically adjusts its height based on the content.
```
-
- | Props | Type | Description |
- | ----------- | -------- | --------------------------------------------------------------------------- |
- | onValidate | function | The callback function you want to trigger when the user validates the input |
- | minRows | number | The minimum number of rows for the text area |
- | placeholder | string | The placeholder text you want to display when the text area is empty |
- | onFocus | function | The callback function you want to trigger when the text area gains focus |
- | variant | string | The variant of the input. Options include: `default`, `icon`, and `button` |
- | buttonTitle | string | The title for the button (only applicable for the button variant) |
- | value | string | The initial value for the text area |
+
+ | 프로퍼티 | 유형 | 설명 |
+ | ----------- | -------- | ------------------------------------------------ |
+ | onValidate | function | 사용자가 입력을 검증할 때 트리거하려는 콜백 함수 |
+ | minRows | 숫자 | 텍스트 영역의 최소 행 수 |
+ | placeholder | 문자열 | 텍스트 영역이 비어 있을 때 표시할 자리 표시자 텍스트 |
+ | onFocus | function | 텍스트 영역에 초점이 맞춰졌을 때 트리거하려는 콜백 함수 |
+ | variant | 문자열 | 입력의 변형. 옵션에는 `default`, `icon`, `button`이 포함됩니다. |
+ | buttonTitle | 문자열 | (버튼 변형에만 적용됨) 버튼의 제목 |
+ | 값 | 문자열 | 텍스트 영역의 초기 값 |
-## Text Area
+## 텍스트 영역
-Allows you to create multi-line text inputs.
+다중 라인 텍스트 입력을 만들 수 있습니다.
-
+
```jsx
import { TextArea } from "@/ui/input/components/TextArea";
@@ -116,8 +115,8 @@ Allows you to create multi-line text inputs.
-
- | Props | Type | Description |
- | ----------- | -------- | -------------------------------------------------------------- |
- | disabled | boolean | Indicates whether the text area is disabled |
- | minRows | number | Minimum number of visible rows for the text area. |
- | onChange | function | Callback function triggered when the text area content changes |
- | placeholder | string | Placeholder text displayed when the text area is empty |
- | value | string | The current value of the text area |
+
+ | 프로퍼티 | 유형 | 설명 |
+ | ----------- | --- | ------------------------------ |
+ | disabled | 부울 | 텍스트 영역이 비활성화되어 있는지 여부를 나타냅니다. |
+ | minRows | 숫자 | 텍스트 영역의 최소 표시 행 수. |
+ | onChange | 기능 | 텍스트 영역의 내용이 변경될 때 호출되는 콜백 함수 |
+ | placeholder | 문자열 | 텍스트 영역이 비어 있을 때 표시할 자리 표시자 텍스트 |
+ | 값 | 문자열 | 텍스트 영역의 현재 값 |
diff --git a/packages/twenty-docs/l/ko/twenty-ui/input/toggle.mdx b/packages/twenty-docs/l/ko/twenty-ui/input/toggle.mdx
index 39f1645abd..fc48e6cf49 100644
--- a/packages/twenty-docs/l/ko/twenty-ui/input/toggle.mdx
+++ b/packages/twenty-docs/l/ko/twenty-ui/input/toggle.mdx
@@ -1,14 +1,14 @@
---
-title: Toggle
+title: 토글
image: /images/user-guide/table-views/table.png
---
-
+
-
+
```jsx
import { Toggle } from "twenty-ui/input";
@@ -25,12 +25,12 @@ image: /images/user-guide/table-views/table.png
```
-
- | Props | Type | Description | Default |
- | ---------- | -------- | ------------------------------------------------------------------------------------------- | ------------ |
- | value | boolean | The current state of the toggle | `false` |
- | onChange | function | Callback function triggered when the toggle state changes | |
- | color | string | Color of the toggle when it\ | s blue color |
- | toggleSize | string | Size of the toggle, affecting both height and weight. Has two options: `small` and `medium` | medium |
+
+ | 프로퍼티 | 유형 | 설명 | 기본값 |
+ | -------- | -------- | -------------------------------------------------------- | ------------ |
+ | 값 | 부울 | 현재 토글의 상태 | `거짓` |
+ | onChange | function | 토글 상태가 변경될 때 호출되는 콜백 함수 | |
+ | 색상 | 문자열 | Color of the toggle when it\ | s blue color |
+ | 토글 크기 | 문자열 | 토글의 크기는 높이와 너비에 영향을 미칩니다. 옵션은 'small'과 'medium' 두 가지입니다. | 중간 |
diff --git a/packages/twenty-docs/l/ko/twenty-ui/introduction.mdx b/packages/twenty-docs/l/ko/twenty-ui/introduction.mdx
index 143cb5d7b5..b04c9dcba6 100644
--- a/packages/twenty-docs/l/ko/twenty-ui/introduction.mdx
+++ b/packages/twenty-docs/l/ko/twenty-ui/introduction.mdx
@@ -1,30 +1,30 @@
---
-title: Overview
-description: Component library for Twenty CRM
+title: 개요
+description: Twenty CRM을 위한 구성 요소 라이브러리
---
import { CardTitle } from "/snippets/card-title.mdx"
-## Components
+## 구성 요소
- Display
- Display components for showing information visually
+ 디스플레이
+ 시각적으로 정보를 표시하기 위한 구성 요소
- Feedback
- Feedback components for user notifications
+ 피드백
+ 사용자 알림을 위한 피드백 구성 요소
- Input
- Input components for user interaction
+ 입력
+ 사용자 상호작용을 위한 입력 구성 요소
- Navigation
- Navigation components for user interface
+ 네비게이션
+ 사용자 인터페이스를 위한 네비게이션 구성 요소
diff --git a/packages/twenty-docs/l/ko/twenty-ui/navigation.mdx b/packages/twenty-docs/l/ko/twenty-ui/navigation.mdx
index b17dad4220..e9a819550b 100644
--- a/packages/twenty-docs/l/ko/twenty-ui/navigation.mdx
+++ b/packages/twenty-docs/l/ko/twenty-ui/navigation.mdx
@@ -1,8 +1,8 @@
---
-title: Navigation
+title: 네비게이션
image: /images/user-guide/tasks/tasks_header.png
---
-
+
diff --git a/packages/twenty-docs/l/ko/twenty-ui/navigation/breadcrumb.mdx b/packages/twenty-docs/l/ko/twenty-ui/navigation/breadcrumb.mdx
index aadbee8ee4..a521d9572b 100644
--- a/packages/twenty-docs/l/ko/twenty-ui/navigation/breadcrumb.mdx
+++ b/packages/twenty-docs/l/ko/twenty-ui/navigation/breadcrumb.mdx
@@ -4,13 +4,13 @@ image: /images/user-guide/fields/field.png
---
-
+
-Renders a breadcrumb navigation bar.
+브레드크럼 내비게이션 바를 렌더링합니다.
-
+
```jsx
import { BrowserRouter } from "react-router-dom";
import { Breadcrumb } from "@/ui/navigation/bread-crumb/components/Breadcrumb";
@@ -32,10 +32,10 @@ Renders a breadcrumb navigation bar.
```
-
- | Props | Type | Description |
- | --------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
- | className | string | Optional class name for additional styling |
- | links | array | An array of objects, each representing a breadcrumb link. Each object has a `children` property (the text content of the link) and an optional `href` property (the URL to navigate to when the link is clicked) |
+
+ | 프로퍼티 | 유형 | 설명 |
+ | ------ | --- | ------------------------------------------------------------------------------------------------------ |
+ | 클래스 네임 | 문자열 | 추가 스타일을 위한 선택적 클래스 이름 |
+ | 링크 | 배열 | 각 브레드크럼 링크를 나타내는 객체의 배열. 각 객체는 `children` 속성(링크의 텍스트 콘텐츠)과 선택적 `href` 속성(링크를 클릭할 때 이동할 URL)을 가지고 있습니다. |
diff --git a/packages/twenty-docs/l/ko/twenty-ui/navigation/links.mdx b/packages/twenty-docs/l/ko/twenty-ui/navigation/links.mdx
index e9f7e3d80f..f4964e86d3 100644
--- a/packages/twenty-docs/l/ko/twenty-ui/navigation/links.mdx
+++ b/packages/twenty-docs/l/ko/twenty-ui/navigation/links.mdx
@@ -1,18 +1,18 @@
---
-title: Links
+title: 링크
image: /images/user-guide/what-is-twenty/20.png
---
-
+
-## Contact Link
+## 연락 링크
-A stylized link component for displaying contact information.
+연락처 정보를 표시하기 위한 스타일화된 링크 구성 요소입니다.
-
+
```jsx
import { BrowserRouter as Router } from 'react-router-dom';
@@ -38,22 +38,22 @@ A stylized link component for displaying contact information.
```
-
- | Props | Type | Description |
- | --------- | ----------------- | ---------------------------------------------------------- |
- | className | string | Optional name for additional styling |
- | href | string | The target URL or path for the link |
- | onClick | function | Callback function to be triggered when the link is clicked |
- | children | `React.ReactNode` | The content to be displayed inside the link |
+
+ | 프로퍼티 | 유형 | 설명 |
+ | -------- | ----------------- | --------------------- |
+ | 클래스 네임 | 문자열 | 추가 스타일을 위한 선택적 이름 |
+ | href | 문자열 | 링크의 대상 URL 또는 경로 |
+ | onClick | function | 링크가 클릭될 때 트리거되는 콜백 함수 |
+ | children | `React.ReactNode` | 링크 내부에 표시할 콘텐츠 |
-## Raw Link
+## 원시 링크
-A stylized link component for displaying links.
+링크를 표시하기 위한 스타일화된 링크 구성 요소입니다.
-
+
```jsx
import { RawLink } from "/navigation";
import { BrowserRouter as Router } from "react-router-dom";
@@ -75,22 +75,22 @@ A stylized link component for displaying links.
```
-
- | Props | Type | Description |
- | --------- | ----------------- | ---------------------------------------------------------- |
- | className | string | Optional name for additional styling |
- | href | string | The target URL or path for the link |
- | onClick | function | Callback function to be triggered when the link is clicked |
- | children | `React.ReactNode` | The content to be displayed inside the link |
+
+ | 프로퍼티 | 유형 | 설명 |
+ | -------- | ----------------- | --------------------- |
+ | 클래스 네임 | 문자열 | 추가 스타일을 위한 선택적 이름 |
+ | href | 문자열 | 링크의 대상 URL 또는 경로 |
+ | onClick | function | 링크가 클릭될 때 트리거되는 콜백 함수 |
+ | children | `React.ReactNode` | 링크 내부에 표시할 콘텐츠 |
-## Rounded Link
+## 둥근 링크
-A rounded-styled link with a Chip component for links.
+Chip 구성 요소가 있는 라운드 스타일 링크입니다.
-
+
```jsx
import { RoundedLink } from "/navigation";
import { BrowserRouter as Router } from "react-router-dom";
@@ -111,21 +111,21 @@ A rounded-styled link with a Chip component for links.
```
-
- | Props | Type | Description |
- | -------- | ----------------- | ---------------------------------------------------------- |
- | href | string | The target URL or path for the link |
- | children | `React.ReactNode` | The content to be displayed inside the link |
- | onClick | function | Callback function to be triggered when the link is clicked |
+
+ | 프로퍼티 | 유형 | 설명 |
+ | -------- | ----------------- | --------------------- |
+ | href | 문자열 | 링크의 대상 URL 또는 경로 |
+ | children | `React.ReactNode` | 링크 내부에 표시할 콘텐츠 |
+ | onClick | 기능 | 링크가 클릭될 때 트리거되는 콜백 함수 |
-## Social Link
+## 소셜 링크
-Stylized social links, with support for various social link types, such as URLs, LinkedIn, and X (or Twitter).
+URL, LinkedIn 및 X(또는 Twitter)와 같은 다양한 소셜 링크 유형을 지원하는 스타일화된 소셜 링크입니다.
-
+
```jsx
import { SocialLink } from "twenty-ui/navigation";
import { BrowserRouter as Router } from "react-router-dom";
@@ -143,12 +143,12 @@ Stylized social links, with support for various social link types, such as URLs,
```
-
- | Props | Type | Description |
- | -------- | ----------------- | --------------------------------------------------------------------------- |
- | href | string | The target URL or path for the link |
- | children | `React.ReactNode` | The content to be displayed inside the link |
- | type | string | The type of social links. Options include: `url`, `LinkedIn`, and `Twitter` |
- | onClick | function | Callback function to be triggered when the link is clicked |
+
+ | 프로퍼티 | 유형 | 설명 |
+ | -------- | ----------------- | ------------------------------------------------------- |
+ | href | 문자열 | 링크의 대상 URL 또는 경로 |
+ | children | `React.ReactNode` | 링크 내부에 표시할 콘텐츠 |
+ | 유형 | 문자열 | 소셜 링크 유형입니다. 옵션은 다음과 같습니다: `url`, `LinkedIn`, `Twitter` |
+ | onClick | 기능 | 링크를 클릭할 때 호출되는 콜백 함수 |
diff --git a/packages/twenty-docs/l/ko/twenty-ui/navigation/menu-item.mdx b/packages/twenty-docs/l/ko/twenty-ui/navigation/menu-item.mdx
index 209c6270ea..682cf2a1ee 100644
--- a/packages/twenty-docs/l/ko/twenty-ui/navigation/menu-item.mdx
+++ b/packages/twenty-docs/l/ko/twenty-ui/navigation/menu-item.mdx
@@ -1,16 +1,16 @@
---
-title: Menu Item
+title: 메뉴 항목
image: /images/user-guide/kanban-views/kanban.png
---
-
+
-A versatile menu item designed to be used in a menu or navigation list.
+메뉴 또는 탐색 목록에서 사용할 수 있도록 설계된 다용도 메뉴 항목입니다.
-
+
```jsx
import { IconBell } from "@tabler/icons-react";
import { IconAlertCircle } from "@tabler/icons-react";
@@ -41,30 +41,30 @@ A versatile menu item designed to be used in a menu or navigation list.
```
-
- | Props | Type | Description |
- | ------------- | ------------- | ---------------------------------------------------------------------------------------------------- |
- | LeftIcon | IconComponent | An optional left icon displayed before the text in the menu item |
- | accent | string | Specifies the accent color of the menu item. Options include: `default`, `danger`, and `placeholder` |
- | text | string | The text content of the menu item |
- | iconButtons | array | An array of objects representing additional icon buttons associated with the menu item |
- | isTooltipOpen | boolean | Controls the visibility of the tooltip associated with the menu item |
- | testId | string | The data-testid attribute for testing purposes |
- | onClick | function | Callback function triggered when the menu item is clicked |
- | className | string | Optional name for additional styling |
+
+ | 프로퍼티 | 유형 | 설명 |
+ | -------- | -------- | ----------------------------------------------------------------------- |
+ | 왼쪽 아이콘 | 아이콘 컴포넌트 | 메뉴 항목의 텍스트 앞에 표시되는 선택적 왼쪽 아이콘 |
+ | 강조 | 문자열 | 메뉴 항목의 강조 색상을 지정합니다. 옵션에는: `default`, `danger`, 및 `placeholder`가 포함됩니다. |
+ | 텍스트 | 문자열 | 메뉴 항목의 텍스트 콘텐츠 |
+ | 아이콘 버튼 | 배열 | 메뉴 항목과 연결된 추가 아이콘 버튼을 나타내는 객체 배열 |
+ | 툴팁 열림 여부 | 부울 | 메뉴 항목과 연결된 툴팁의 가시성을 제어합니다 |
+ | 테스트ID | 문자열 | 테스트용 데이터-testid 속성 |
+ | 클릭 시 | function | 메뉴 항목을 클릭할 때 트리거되는 콜백 함수 |
+ | 클래스 네임 | 문자열 | 추가 스타일링을 위한 선택적 이름 |
-## Variants
+## 변형
-The different variants of the menu item component include the following:
+메뉴 항목 컴포넌트의 다양한 변형은 다음과 같습니다.
-### Command
+### 명령
-A command-style menu item within a menu to indicate keyboard shortcuts.
+키보드 단축키를 나타내기 위한 명령 스타일 메뉴 항목
-
+
```jsx
import { IconBell } from "@tabler/icons-react";
import { MenuItemCommand } from "twenty-ui/display";
@@ -89,25 +89,25 @@ A command-style menu item within a menu to indicate keyboard shortcuts.
```
-
- | Props | Type | Description |
- | ------------ | ------------- | ---------------------------------------------------------------- |
- | LeftIcon | IconComponent | An optional left icon displayed before the text in the menu item |
- | text | string | The text content of the menu item |
- | firstHotKey | string | The first keyboard shortcut associated with the command |
- | secondHotKey | string | The second keyboard shortcut associated with the command |
- | isSelected | boolean | Indicates whether the menu item is selected or highlighted |
- | onClick | function | Callback function triggered when the menu item is clicked |
- | className | string | Optional name for additional styling |
+
+ | 프로퍼티 | 유형 | 설명 |
+ | -------- | -------- | ------------------------------- |
+ | 왼쪽 아이콘 | 아이콘 컴포넌트 | 메뉴 항목의 텍스트 앞에 표시되는 선택적 왼쪽 아이콘 |
+ | 텍스트 | 문자열 | 메뉴 항목의 텍스트 콘텐츠 |
+ | 첫 번째 단축키 | 문자열 | 명령어와 연결된 첫 번째 키보드 단축키 |
+ | 두 번째 단축키 | 문자열 | 명령어와 연결된 두 번째 키보드 단축키 |
+ | 선택됨 | 부울 | 메뉴 항목이 선택되었거나 강조 되었는지 여부를 나타냅니다 |
+ | 클릭 시 | 함수 | 메뉴 항목을 클릭할 때 트리거되는 콜백 함수 |
+ | 클래스 네임 | 문자열 | 추가 스타일링을 위한 선택적 이름 |
-### Draggable
+### 드래그 가능한
-A draggable menu item component designed to be used in a menu or list where items can be dragged, and additional actions can be performed through icon buttons.
+아이콘 버튼을 통해 추가 작업을 수행할 수 있도록 드래그 가능한 메뉴 항목 컴포넌트
-
+
```jsx
import { IconBell } from "@tabler/icons-react";
import { IconAlertCircle } from "@tabler/icons-react";
@@ -134,26 +134,26 @@ A draggable menu item component designed to be used in a menu or list where item
```
-
- | Props | Type | Description |
- | -------------- | ------------- | ------------------------------------------------------------------------------------------ |
- | LeftIcon | IconComponent | An optional left icon displayed before the text in the menu item |
- | accent | string | The accent color of the menu item. It can either be `default`, `placeholder`, and `danger` |
- | iconButtons | array | An array of objects representing additional icon buttons associated with the menu item |
- | isTooltipOpen | boolean | Controls the visibility of the tooltip associated with the menu item |
- | onClick | function | Callback function to be triggered when the link is clicked |
- | text | string | The text content of the menu item |
- | isDragDisabled | boolean | Indicates whether dragging is disabled |
- | className | string | Optional name for additional styling |
+
+ | 프로퍼티 | 유형 | 설명 |
+ | -------- | -------- | ----------------------------------------------- |
+ | 왼쪽 아이콘 | 아이콘 컴포넌트 | 메뉴 항목의 텍스트 앞에 표시되는 선택적 왼쪽 아이콘 |
+ | 강조 | 문자열 | 메뉴 항목의 강조 색상입니다. 기본, 플레이스홀더, 위험 중 하나가 될 수 있습니다. |
+ | 아이콘 버튼 | 배열 | 메뉴 항목과 연결된 추가 아이콘 버튼을 나타내는 객체 배열 |
+ | 툴팁 열림 여부 | 부울 | 메뉴 항목과 연결된 툴팁의 가시성을 제어합니다 |
+ | 클릭 시 | 함수 | 링크가 클릭될 때 트리거되는 콜백 함수 |
+ | 텍스트 | 문자열 | 메뉴 항목의 텍스트 콘텐츠 |
+ | 드래그 비활성화 | 부울 | 드래그가 비활성화 되었는지 여부를 나타냅니다 |
+ | 클래스 네임 | 문자열 | 추가 스타일링을 위한 선택적 이름 |
-### Multi Select
+### 다중 선택
-Provides a way to implement multi-select functionality with an associated checkbox.
+체크박스와 연결된 멀티 선택 기능을 구현하는 방법을 제공합니다.
-
+
```jsx
import { IconBell } from "@tabler/icons-react";
import { MenuItemMultiSelect } from "twenty-ui/display";
@@ -172,23 +172,23 @@ Provides a way to implement multi-select functionality with an associated checkb
```
-
- | Props | Type | Description |
- | -------------- | ------------- | ---------------------------------------------------------------- |
- | LeftIcon | IconComponent | An optional left icon displayed before the text in the menu item |
- | text | string | The text content of the menu item |
- | selected | boolean | Indicates whether the menu item is selected (checked) |
- | onSelectChange | function | Callback function triggered when the checkbox state changes |
- | className | string | Optional name for additional styling |
+
+ | 프로퍼티 | 유형 | 설명 |
+ | ------- | -------- | ----------------------------- |
+ | 왼쪽 아이콘 | 아이콘 컴포넌트 | 메뉴 항목의 텍스트 앞에 표시되는 선택적 왼쪽 아이콘 |
+ | 텍스트 | 문자열 | 메뉴 항목의 텍스트 콘텐츠 |
+ | 선택됨 | 부울 | 메뉴 항목이 선택(체크)되었는지 여부를 나타냅니다 |
+ | 선택 변경 시 | 함수 | 체크박스 상태가 변경되었을 때 호출되는 콜백 함수 |
+ | 클래스 네임 | 문자열 | 추가 스타일링을 위한 선택적 이름 |
-### Multi Select Avatar
+### 다중 선택 아바타
-A multi-select menu item with an avatar, a checkbox for selection, and textual content.
+아바타, 선택할 수 있는 체크박스를 포함한 다중 선택 메뉴 아이템
-
+
```jsx
import { MenuItemMultiSelectAvatar } from "twenty-ui/display";
@@ -208,23 +208,23 @@ A multi-select menu item with an avatar, a checkbox for selection, and textual c
```
-
- | Props | Type | Description |
- | -------------- | ----------- | -------------------------------------------------------------------- |
- | avatar | `ReactNode` | The avatar or icon to be displayed on the left side of the menu item |
- | text | string | The text content of the menu item |
- | selected | boolean | Indicates whether the menu item is selected (checked) |
- | onSelectChange | function | Callback function triggered when the checkbox state changes |
- | className | string | Optional name for additional styling |
+
+ | 프로퍼티 | 유형 | 설명 |
+ | ------- | ----------- | --------------------------- |
+ | 아바타 | `ReactNode` | 메뉴 항목의 왼쪽에 표시될 아바타 또는 아이콘 |
+ | 텍스트 | 문자열 | 메뉴 항목의 텍스트 콘텐츠 |
+ | 선택됨 | 부울 | 메뉴 항목이 선택(체크)되었는지 여부를 나타냅니다 |
+ | 선택 변경 시 | 함수 | 체크박스 상태가 변경되었을 때 호출되는 콜백 함수 |
+ | 클래스 네임 | 문자열 | 추가 스타일링을 위한 선택적 이름 |
-### Navigate
+### 탐색
-A menu item featuring an optional left icon, textual content, and a right-chevron icon.
+왼쪽에 선택적 아이콘, 텍스트 콘텐츠 및 오른쪽 화살표 아이콘을 포함한 메뉴 항목
-
+
```jsx
import { IconBell } from "@tabler/icons-react";
import { MenuItemNavigate } from "twenty-ui/display";
@@ -246,22 +246,22 @@ A menu item featuring an optional left icon, textual content, and a right-chevro
```
-
- | Props | Type | Description |
- | --------- | ------------- | ---------------------------------------------------------------- |
- | LeftIcon | IconComponent | An optional left icon displayed before the text in the menu item |
- | text | string | The text content of the menu item |
- | onClick | function | Callback function to be triggered when the menu item is clicked |
- | className | string | Optional name for additional styling |
+
+ | 프로퍼티 | 유형 | 설명 |
+ | ------- | -------- | ----------------------------- |
+ | 왼쪽 아이콘 | 아이콘 컴포넌트 | 메뉴 항목의 텍스트 앞에 표시되는 선택적 왼쪽 아이콘 |
+ | 텍스트 | 문자열 | 메뉴 항목의 텍스트 콘텐츠 |
+ | onClick | 함수 | 메뉴 항목을 클릭할 때 트리거되는 콜백 함수 |
+ | 클래스 네임 | 문자열 | 추가 스타일링을 위한 선택적 이름 |
-### Select
+### 선택
-A selectable menu item, featuring optional left content (icon and text) and an indicator (check icon) for the selected state.
+선택적 왼쪽 콘텐츠(아이콘 및 텍스트)와 상태 표시기(체크 아이콘)를 포함한 선택 가능한 메뉴 항목
-
+
```jsx
import { IconBell } from "@tabler/icons-react";
import { MenuItemSelect } from "twenty-ui/display";
@@ -286,25 +286,25 @@ A selectable menu item, featuring optional left content (icon and text) and an i
```
-
- | Props | Type | Description |
- | --------- | ------------- | ---------------------------------------------------------------- |
- | LeftIcon | IconComponent | An optional left icon displayed before the text in the menu item |
- | text | string | The text content of the menu item |
- | selected | boolean | Indicates whether the menu item is selected (checked) |
- | disabled | boolean | Indicates whether the menu item is disabled |
- | hovered | boolean | Indicates whether the menu item is currently being hovered over |
- | onClick | function | Callback function to be triggered when the menu item is clicked |
- | className | string | Optional name for additional styling |
+
+ | 프로퍼티 | 유형 | 설명 |
+ | -------- | -------- | ------------------------------- |
+ | 왼쪽 아이콘 | 아이콘 컴포넌트 | 메뉴 항목의 텍스트 앞에 표시되는 선택적 왼쪽 아이콘 |
+ | 텍스트 | 문자열 | 메뉴 항목의 텍스트 콘텐츠 |
+ | 선택됨 | 부울 | 메뉴 항목이 선택(체크)되었는지 여부를 나타냅니다 |
+ | disabled | 부울 | 메뉴 항목이 비활성화 되었는지 여부를 나타냅니다 |
+ | 호버됨 | 부울 | 메뉴 항목이 현재 마우스 오버 상태인지 여부를 나타냅니다 |
+ | onClick | 함수 | 메뉴 항목을 클릭할 때 트리거되는 콜백 함수 |
+ | 클래스 네임 | 문자열 | 추가 스타일링을 위한 선택적 이름 |
-### Select Avatar
+### 선택 아바타
-A selectable menu item with an avatar, featuring optional left content (avatar and text) and an indicator (check icon) for the selected state.
+아바타가 있는 선택 가능한 메뉴 항목으로, 선택적 왼쪽 콘텐츠(아바타 및 텍스트)와 선택 상태 표시기(체크 아이콘)를 포함합니다.
-
+
```jsx
import { MenuItemSelectAvatar } from "twenty-ui/display";
@@ -333,26 +333,26 @@ A selectable menu item with an avatar, featuring optional left content (avatar a
```
-
- | Props | Type | Description |
- | --------- | ----------- | -------------------------------------------------------------------- |
- | avatar | `ReactNode` | The avatar or icon to be displayed on the left side of the menu item |
- | text | string | The text content of the menu item |
- | selected | boolean | Indicates whether the menu item is selected (checked) |
- | disabled | boolean | Indicates whether the menu item is disabled |
- | hovered | boolean | Indicates whether the menu item is currently being hovered over |
- | testId | string | The data-testid attribute for testing purposes |
- | onClick | function | Callback function to be triggered when the menu item is clicked |
- | className | string | Optional name for additional styling |
+
+ | 프로퍼티 | 유형 | 설명 |
+ | -------- | ----------- | ------------------------------- |
+ | 아바타 | `ReactNode` | 메뉴 항목의 왼쪽에 표시될 아바타 또는 아이콘 |
+ | 텍스트 | 문자열 | 메뉴 항목의 텍스트 콘텐츠 |
+ | 선택됨 | 부울 | 메뉴 항목이 선택(체크)되었는지 여부를 나타냅니다 |
+ | disabled | 부울 | 메뉴 항목이 비활성화 되었는지 여부를 나타냅니다 |
+ | 호버됨 | 부울 | 메뉴 항목이 현재 마우스 오버 상태인지 여부를 나타냅니다 |
+ | 테스트ID | 문자열 | 테스트 목적의 데이터-testid 속성 |
+ | onClick | 함수 | 메뉴 항목을 클릭할 때 트리거되는 콜백 함수 |
+ | 클래스 네임 | 문자열 | 추가 스타일링을 위한 선택적 이름 |
-### Select Color
+### 색상 선택
-A selectable menu item with a color sample for scenarios where you want users to choose a color from a menu.
+사용자가 메뉴에서 색상을 선택하도록 하는 시나리오를 위한 색상 샘플이 있는 선택 가능한 메뉴 항목.
-
+
```jsx
import { MenuItemSelectColor } from "twenty-ui/display";
@@ -376,25 +376,25 @@ A selectable menu item with a color sample for scenarios where you want users to
```
-
- | Props | Type | Description |
- | --------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
- | color | string | The theme color to be displayed as a sample in the menu item. Options include: `green`, `turquoise`, `sky`, `blue`, `purple`, `pink`, `red`, `orange`, `yellow`, and `gray` |
- | selected | boolean | Indicates whether the menu item is selected (checked) |
- | disabled | boolean | Indicates whether the menu item is disabled |
- | hovered | boolean | Indicates whether the menu item is currently being hovered over |
- | variant | string | The variant of the color sample. It can either be `default` or `pipeline` |
- | onClick | function | Callback function to be triggered when the menu item is clicked |
- | className | string | Optional name for additional styling |
+
+ | 프로퍼티 | 유형 | 설명 |
+ | -------- | --- | ------------------------------------------------------------------------------------------------------------------------------ |
+ | 색상 | 문자열 | 메뉴 항목에 샘플로 표시할 테마 색상입니다. 옵션에는 `green`, `turquoise`, `sky`, `blue`, `purple`, `pink`, `red`, `orange`, `yellow`, `gray`가 포함됩니다. |
+ | 선택됨 | 부울 | 메뉴 항목이 선택(체크)되었는지를 나타냅니다. |
+ | disabled | 부울 | 메뉴 항목이 비활성화되었는지를 나타냅니다. |
+ | 호버됨 | 부울 | 메뉴 항목에 현재 커서가 오버되어 있는지를 나타냅니다. |
+ | 변형 | 문자열 | 색상 샘플의 변형입니다. `default` 또는 `pipeline` 중 하나일 수 있습니다. |
+ | 클릭 시 | 함수 | 메뉴 항목을 클릭할 때 트리거되는 콜백 함수 |
+ | 클래스 네임 | 문자열 | 추가 스타일링을 위한 선택적 이름 |
-### Toggle
+### 전환
-A menu item with an associated toggle switch to allow users to enable or disable a specific feature
+사용자가 특정 기능을 활성화하거나 비활성화할 수 있도록 전환 스위치가 있는 메뉴 항목
-
+
```jsx
import { IconBell } from '@tabler/icons-react';
@@ -415,14 +415,14 @@ A menu item with an associated toggle switch to allow users to enable or disable
```
-
- | Props | Type | Description |
- | -------------- | ------------- | ----------------------------------------------------------------- |
- | LeftIcon | IconComponent | An optional left icon displayed before the text in the menu item |
- | text | string | The text content of the menu item |
- | toggled | boolean | Indicates whether the toggle switch is in the "on" or "off" state |
- | onToggleChange | function | Callback function triggered when the toggle switch state changes |
- | toggleSize | string | The size of the toggle switch. It can be either \ |
- | className | string | Optional name for additional styling |
+
+ | 프로퍼티 | 유형 | 설명 |
+ | -------------- | -------- | ------------------------------------- |
+ | 왼쪽 아이콘 | 아이콘 컴포넌트 | 메뉴 항목의 텍스트 앞에 표시되는 선택적 왼쪽 아이콘 |
+ | 텍스트 | 문자열 | 메뉴 항목의 텍스트 콘텐츠 |
+ | 토글됨 | 부울 | 전환 스위치가 "켬"인지 "끔"인지 상태를 나타냅니다. |
+ | onToggleChange | 함수 | 토글 스위치 상태가 변경될 때 트리거되는 콜백 함수 |
+ | 토글 크기 | 문자열 | 토글 스위치의 크기입니다. 다음 두 가지 중 하나일 수 있습니다 \ |
+ | 클래스 네임 | 문자열 | 추가 스타일링을 위한 선택적 이름 |
diff --git a/packages/twenty-docs/l/ko/twenty-ui/navigation/navigation-bar.mdx b/packages/twenty-docs/l/ko/twenty-ui/navigation/navigation-bar.mdx
index a77e9f34e6..1cb5532a71 100644
--- a/packages/twenty-docs/l/ko/twenty-ui/navigation/navigation-bar.mdx
+++ b/packages/twenty-docs/l/ko/twenty-ui/navigation/navigation-bar.mdx
@@ -1,16 +1,16 @@
---
-title: Navigation Bar
+title: 내비게이션 바
image: /images/user-guide/table-views/table.png
---
-
+
-Renders a navigation bar that contains multiple `NavigationBarItem` components.
+여러 `NavigationBarItem` 구성 요소를 포함하는 탐색 막대를 렌더링합니다.
-
+
```jsx
import { IconHome, IconUser, IconSettings } from '@tabler/icons-react';
import { NavigationBar } from "@/ui/navigation/navigation-bar/components/NavigationBar";
@@ -40,10 +40,10 @@ Renders a navigation bar that contains multiple `NavigationBarItem` components.
```
-
- | Props | Type | Description |
- | -------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
- | activeItemName | string | The name of the currently active navigation item |
- | items | array | An array of objects representing each navigation item. Each object contains the `name` of the item, the `Icon` component to display, and an `onClick` function to be called when the item is clicked |
+
+ | 프로퍼티 | 유형 | 설명 |
+ | -------------- | --- | ------------------------------------------------------------------------------------------------- |
+ | activeItemName | 문자열 | 현재 활성화된 탐색 항목의 이름 |
+ | 항목 | 배열 | 각 탐색 항목을 나타내는 객체 배열입니다. 각 객체에는 항목의 `name`, 표시할 `Icon` 구성 요소 및 항목이 클릭될 때 호출되는 `onClick` 함수가 포함됩니다. |
diff --git a/packages/twenty-docs/l/ko/twenty-ui/navigation/step-bar.mdx b/packages/twenty-docs/l/ko/twenty-ui/navigation/step-bar.mdx
index 66c420f561..5758161934 100644
--- a/packages/twenty-docs/l/ko/twenty-ui/navigation/step-bar.mdx
+++ b/packages/twenty-docs/l/ko/twenty-ui/navigation/step-bar.mdx
@@ -1,16 +1,16 @@
---
-title: Step Bar
+title: 단계 막대
image: /images/user-guide/api/api.png
---
-
+
-Displays progress through a sequence of numbered steps by highlighting the active step. It renders a container with steps, each represented by the `Step` component.
+활성 단계가 강조 표시되어 있는 다단계 진행 상황을 표시합니다. 각각의 `Step` 구성 요소로 표현되는 단계를 포함하는 컨테이너를 렌더링합니다.
-
+
```jsx
import { StepBar } from "@/ui/navigation/step-bar/components/StepBar";
@@ -26,9 +26,9 @@ Displays progress through a sequence of numbered steps by highlighting the activ
```
-
- | Props | Type | Description |
- | ---------- | ------ | ------------------------------------------------------------------------------------------------- |
- | activeStep | number | The index of the currently active step. This determines which step should be visually highlighted |
+
+ | 프로퍼티 | 유형 | 설명 |
+ | ---------- | -- | --------------------------------------------------- |
+ | activeStep | 숫자 | 현재 활성 단계의 인덱스입니다. 어느 단계가 시각적으로 강조 표시되어야 하는지를 결정합니다. |
diff --git a/packages/twenty-docs/l/ko/twenty-ui/progress-bar.mdx b/packages/twenty-docs/l/ko/twenty-ui/progress-bar.mdx
index 2e4735ab30..8c84a08e8e 100644
--- a/packages/twenty-docs/l/ko/twenty-ui/progress-bar.mdx
+++ b/packages/twenty-docs/l/ko/twenty-ui/progress-bar.mdx
@@ -1,16 +1,16 @@
---
-title: Feedback
+title: 피드백
image: /images/user-guide/emails/emails_header.png
---
-
+
-Indicates progress or countdown and moves from right to left.
+진행 또는 카운트다운을 나타내며 오른쪽에서 왼쪽으로 이동합니다.
-
+
```jsx
import { ProgressBar } from "twenty-ui/feedback";
@@ -29,24 +29,24 @@ Indicates progress or countdown and moves from right to left.
```
-
- | Props | Type | Description | Default |
- | --------- | ------- | ------------------------------------------------------------------------------------ | --------- |
- | duration | number | The total duration of the progress bar animation in milliseconds | 3 |
- | delay | number | The delay in starting the progress bar animation in milliseconds | 0 |
- | easing | string | Easing function for the progress bar animation | easeInOut |
- | barHeight | number | The height of the bar in pixels | 24 |
- | barColor | string | The color of the bar | gray80 |
- | autoStart | boolean | If `true`, the progress bar animation starts automatically when the component mounts | `true` |
+
+ | 프로퍼티 | 유형 | 설명 | 기본값 |
+ | --------- | --- | ------------------------------------------------ | --------- |
+ | 지속 시간 | 숫자 | 진행 표시줄 애니메이션의 전체 지속시간 (밀리초 단위) | 3 |
+ | 지연 | 숫자 | 진행 표시줄 애니메이션 시작 지연 시간 (밀리초 단위) | 0 |
+ | 이징 | 문자열 | 진행 표시줄 애니메이션을 위한 이징 함수 | easeInOut |
+ | barHeight | 숫자 | 바의 높이 (픽셀 단위) | 24 |
+ | barColor | 문자열 | 바의 색상 | gray80 |
+ | autoStart | 부울 | `true`이면, 컴포넌트가 마운트될 때 진행 표시줄 애니메이션이 자동으로 시작됩니다. | `참` |
-## Circular Progress Bar
+## 원형 진행 표시줄
-Indicates the progress of a task, often used in loading screens or areas where you want to communicate ongoing processes to the user.
+작업의 진행 상황을 나타내며, 로딩 화면이나 진행 중인 프로세스를 사용자에게 전달하고자 할 때 자주 사용됩니다.
-
+
```jsx
import { CircularProgressBar } from "@/ui/feedback/progress-bar/components/CircularProgressBar";
@@ -56,11 +56,11 @@ Indicates the progress of a task, often used in loading screens or areas where y
```
-
- | Props | Type | Description | Default |
- | -------- | ------ | ------------------------------------- | ------------ |
- | size | number | The size of the circular progress bar | 50 |
- | barWidth | number | The width of the progress bar line | 5 |
- | barColor | string | The color of the progress bar | currentColor |
+
+ | 프로퍼티 | 유형 | 설명 | 기본값 |
+ | -------- | --- | ------------- | ------------ |
+ | 크기 | 숫자 | 원형 진행 표시줄의 크기 | 50 |
+ | barWidth | 숫자 | 진행 표시줄 선의 너비 | 5 |
+ | barColor | 문자열 | 진행 표시줄의 색상 | currentColor |
diff --git a/packages/twenty-docs/l/ko/user-guide/ai/capabilities/ai-agents.mdx b/packages/twenty-docs/l/ko/user-guide/ai/capabilities/ai-agents.mdx
index bc746c751b..cd30dd70cb 100644
--- a/packages/twenty-docs/l/ko/user-guide/ai/capabilities/ai-agents.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/ai/capabilities/ai-agents.mdx
@@ -1,34 +1,34 @@
---
-title: AI Agents
-description: Integrate AI capabilities directly into your automation workflows.
+title: AI 에이전트
+description: 자동화 워크플로우에 AI 기능을 직접 통합합니다.
---
- This feature is in development and will be available in beta soon.
+ 이 기능은 현재 개발 중이며 곧 베타로 제공될 예정입니다.
-## Overview
+## 개요
-Integrate AI capabilities directly into your automation workflows for intelligent data processing and decision-making.
+지능형 데이터 처리와 의사결정을 위해 자동화 워크플로우에 AI 기능을 직접 통합합니다.
-## Capabilities
+## 기능
-| Feature | Description |
-| ------------------- | ------------------------------------------------ |
-| **AI actions** | Add AI-powered steps to any workflow |
-| **Data enrichment** | Automatically enhance records with external data |
-| **Classification** | Categorize records based on content analysis |
-| **Summarization** | Generate summaries from text fields |
-| **Custom prompts** | Define exactly how AI processes your data |
+| 기능 | 설명 |
+| --------------- | ---------------------------- |
+| **AI 작업** | 모든 워크플로우에 AI 기반 단계를 추가합니다. |
+| **데이터 강화** | 외부 데이터를 사용해 레코드를 자동으로 강화합니다. |
+| **분류** | 콘텐츠 분석을 기반으로 레코드를 분류합니다. |
+| **요약** | 텍스트 필드에서 요약을 생성합니다. |
+| **사용자 지정 프롬프트** | AI가 데이터를 처리하는 방식을 정확히 정의합니다. |
-## Use Cases
+## 사용 사례
-* **Lead scoring**: Automatically score and prioritize inbound leads
-* **Data cleanup**: Standardize company names and contact information
-* **Email drafts**: Generate follow-up emails based on meeting notes
-* **Record routing**: Assign records to the right team member based on content
+* **리드 스코어링**: 유입 리드에 자동으로 점수를 매기고 우선순위를 지정합니다.
+* **데이터 정리**: 회사명과 연락처 정보를 표준화합니다.
+* **이메일 초안**: 회의 메모를 기반으로 후속 이메일을 생성합니다.
+* **레코드 라우팅**: 콘텐츠를 기반으로 적합한 팀 구성원에게 레코드를 할당합니다.
-## Related
+## 관련 항목
-* [Workflows Overview](/l/ko/user-guide/workflows/overview) — automation basics
-* [AI Permissions](/l/ko/user-guide/ai/capabilities/permissions-access-control) — access control for AI agents
+* [워크플로우 개요](/l/ko/user-guide/workflows/overview) — 자동화 기본 사항
+* [AI 권한](/l/ko/user-guide/ai/capabilities/permissions-access-control) — AI 에이전트에 대한 액세스 제어
diff --git a/packages/twenty-docs/l/ko/user-guide/ai/capabilities/ai-chatbot.mdx b/packages/twenty-docs/l/ko/user-guide/ai/capabilities/ai-chatbot.mdx
index d7cbbc04fc..8740de4070 100644
--- a/packages/twenty-docs/l/ko/user-guide/ai/capabilities/ai-chatbot.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/ai/capabilities/ai-chatbot.mdx
@@ -1,41 +1,41 @@
---
-title: AI Chatbot
-description: An intelligent assistant that helps you interact with your CRM data using natural language.
+title: AI 챗봇
+description: 자연어로 CRM 데이터와 상호작용할 수 있도록 도와주는 지능형 어시스턴트입니다.
---
- This feature is in development and will be available in beta soon.
+ 이 기능은 현재 개발 중이며 곧 베타로 제공될 예정입니다.
-## Overview
+## 개요
-An intelligent assistant that helps you interact with your CRM data using natural language.
+자연어로 CRM 데이터와 상호작용할 수 있도록 도와주는 지능형 어시스턴트입니다.
-## Capabilities
+## 기능
-| Feature | Description |
-| ---------------------------- | ------------------------------------------------------------------------- |
-| **Natural language queries** | Ask questions in plain English instead of building filters |
-| **Full data access** | Query records, relationships, and metrics across your workspace |
-| **Page context** | Reference "this company" or "this opportunity" based on your current view |
-| **Conversational** | Follow-up questions maintain context from previous queries |
+| 기능 | 설명 |
+| ------------- | ------------------------------------------------------------- |
+| **자연어 질의** | 필터를 만들 필요 없이 쉬운 영어로 질문할 수 있습니다. |
+| **전체 데이터 접근** | 워크스페이스 전반의 레코드, 관계, 지표를 조회합니다. |
+| **페이지 컨텍스트** | 현재 보고 있는 화면을 기준으로 "this company" 또는 "this opportunity"를 참조합니다 |
+| **대화형** | 후속 질문도 이전 질의의 컨텍스트를 유지합니다. |
-## Example Interactions
+## 상호작용 예시
-### Finding Records
+### 레코드 찾기
-* "Show me all opportunities over $50,000"
-* "Find contacts I haven't emailed in 2 weeks"
-* "List companies in the healthcare industry"
+* "$50,000 이상인 모든 영업 기회를 보여줘"
+* "지난 2주 동안 내가 이메일을 보내지 않은 연락처를 찾아줘"
+* "헬스케어 산업의 회사를 목록으로 보여줘"
-### Getting Insights
+### 인사이트 얻기
-* "What's my total pipeline value?"
-* "How many deals closed last month?"
-* "Which stage has the most stuck opportunities?"
+* "내 전체 파이프라인 가치는 얼마야?"
+* "지난달에 성사된 거래는 몇 건이야?"
+* "어느 단계에서 정체된 영업 기회가 가장 많아?"
-### Using Page Context
+### 페이지 컨텍스트 사용
-* "Summarize my interactions with this person" (on a contact page)
-* "What opportunities are linked to this company?" (on a company page)
-* "When was this deal last updated?" (on an opportunity page)
+* "이 사람과의 상호작용을 요약해 줘" (연락처 페이지에서)
+* "이 회사와 연결된 영업 기회는 무엇이야?" (회사 페이지에서)
+* "이 거래는 마지막으로 언제 업데이트됐어?" (영업 기회 페이지에서)
diff --git a/packages/twenty-docs/l/ko/user-guide/ai/capabilities/permissions-access-control.mdx b/packages/twenty-docs/l/ko/user-guide/ai/capabilities/permissions-access-control.mdx
index 804b1ccb98..3000589dc0 100644
--- a/packages/twenty-docs/l/ko/user-guide/ai/capabilities/permissions-access-control.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/ai/capabilities/permissions-access-control.mdx
@@ -1,35 +1,35 @@
---
-title: Permissions & Access Control
-description: Control what AI agents can access and modify in your workspace.
+title: 권한 및 액세스 제어
+description: 워크스페이스에서 AI 에이전트가 액세스하고 수정할 수 있는 범위를 제어하세요.
---
-## Overview
+## 개요
-AI agents respect your existing permission structure. This is particularly important for teams who want to control exactly what automated AI processes can access or modify in their workspace.
+AI 에이전트는 기존 권한 구조를 준수합니다. 이는 워크스페이스에서 자동화된 AI 프로세스가 액세스하거나 수정할 수 있는 대상을 정확히 통제하려는 팀에게 특히 중요합니다.
-## Assign a Role to an AI Agent
+## AI 에이전트에 역할 할당
-1. Go to **Settings → Roles**
-2. Click on the role you want to assign
-3. Open the **Assignment** tab
-4. Under **AI Agents**, click **+ Assign to AI agent**
-5. Select the AI agent from the list
-6. Confirm the assignment
+1. **설정 → 역할**로 이동
+2. 할당할 역할 클릭
+3. **배정** 탭 열기
+4. **AI Agents**에서 **+ Assign to AI agent**를 클릭합니다
+5. 목록에서 AI 에이전트를 선택합니다
+6. 할당 확인
-## Why Assign Roles to AI Agents?
+## 왜 AI 에이전트에 역할을 할당하나요?
-| Benefit | Description |
-| ---------------- | ------------------------------------------------- |
-| **Security** | Limit what data AI agents can access or modify |
-| **Compliance** | Ensure AI only processes the data it needs |
-| **Control** | Prevent unintended actions from AI automations |
-| **Auditability** | Track which actions were performed by which agent |
+| 이점 | 설명 |
+| ---------- | ----------------------------------- |
+| **보안** | AI 에이전트가 액세스하거나 수정할 수 있는 데이터를 제한합니다 |
+| **규정 준수** | AI가 필요한 데이터만 처리하도록 보장합니다 |
+| **제어** | AI 자동화의 의도하지 않은 동작을 방지합니다 |
+| **감사 가능성** | 어떤 에이전트가 어떤 작업을 수행했는지 추적합니다 |
- For AI agents running within workflows, role assignment ensures the agent cannot access or modify data outside its intended scope—even if the workflow has broader permissions.
+ 워크플로 내에서 실행되는 AI 에이전트의 경우, 역할 할당은 워크플로에 더 광범위한 권한이 있더라도 해당 에이전트가 의도된 범위를 벗어난 데이터에 액세스하거나 수정하지 못하도록 보장합니다.
-## Related
+## 관련
-* [Permissions](/l/ko/user-guide/permissions-access/capabilities/permissions) — detailed information on creating and managing roles
-* [AI Agents](/l/ko/user-guide/ai/capabilities/ai-agents) — AI capabilities in workflows
+* [권한](/l/ko/user-guide/permissions-access/capabilities/permissions) — 역할 생성 및 관리에 대한 자세한 정보
+* [AI 에이전트](/l/ko/user-guide/ai/capabilities/ai-agents) — 워크플로에서의 AI 기능
diff --git a/packages/twenty-docs/l/ko/user-guide/ai/how-tos/ai-faq.mdx b/packages/twenty-docs/l/ko/user-guide/ai/how-tos/ai-faq.mdx
index 774eae15c4..06fda314ad 100644
--- a/packages/twenty-docs/l/ko/user-guide/ai/how-tos/ai-faq.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/ai/how-tos/ai-faq.mdx
@@ -1,29 +1,29 @@
---
-title: AI FAQ
-description: Frequently asked questions about AI features in Twenty.
+title: AI 자주 묻는 질문
+description: Twenty의 AI 기능에 관한 자주 묻는 질문입니다.
---
-
- AI features are currently in development and will be released in beta soon. Stay tuned for updates!
+
+ AI 기능은 현재 개발 중이며 곧 베타로 출시될 예정입니다. 업데이트 소식을 계속 지켜봐 주세요!
-
- We're building two main AI capabilities:
+
+ 저희는 두 가지 주요 AI 기능을 개발하고 있습니다:
- 1. **AI Chatbot**: A context-aware assistant that can access your Twenty data and help you with queries
- 2. **AI Agents in Workflows**: Intelligent automation that can process data, make decisions, and execute tasks within your workflows
+ 1. **AI Chatbot**: 사용자의 Twenty 데이터에 액세스하고 질문을 도와주는 컨텍스트 인식형 도우미
+ 2. **AI Agents in Workflows**: 사용자의 워크플로 내에서 데이터를 처리하고 의사 결정을 내리며 작업을 실행할 수 있는 지능형 자동화
-
- AI agents will operate under the permission system. You can assign specific roles to AI agents under **Settings → Roles**, giving you full control over what data they can access and what actions they can perform.
+
+ AI 에이전트는 권한 시스템 하에서 작동합니다. **설정 → 역할**에서 AI 에이전트에 특정 역할을 할당하여, 액세스할 수 있는 데이터와 수행할 수 있는 작업을 완전히 제어할 수 있습니다.
-
- AI actions will consume workflow credits based on the complexity of the task and the AI model used. More details will be available when the features launch.
+
+ AI 작업은 작업의 복잡도와 사용된 AI 모델에 따라 워크플로 크레딧을 소모합니다. 자세한 내용은 기능 출시 시 제공될 예정입니다.
-
- Initially, Twenty will use built-in AI models. Support for custom or external AI models may be added in future releases based on user feedback.
+
+ 초기에는 Twenty가 기본 제공 AI 모델을 사용합니다. 사용자 피드백에 따라 향후 릴리스에서 맞춤형 또는 외부 AI 모델에 대한 지원이 추가될 수 있습니다.
diff --git a/packages/twenty-docs/l/ko/user-guide/ai/overview.mdx b/packages/twenty-docs/l/ko/user-guide/ai/overview.mdx
index bd4ee68a79..c31f9eecb6 100644
--- a/packages/twenty-docs/l/ko/user-guide/ai/overview.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/ai/overview.mdx
@@ -1,62 +1,62 @@
---
title: AI
-description: AI-powered features coming soon to Twenty.
+description: AI 기반 기능이 곧 Twenty에 제공됩니다.
---
-## What's Coming
+## 예정된 기능
-Twenty is building AI capabilities to help your team work smarter. We're focusing on two major areas:
+Twenty는 팀이 더 스마트하게 일할 수 있도록 AI 기능을 구축하고 있습니다. 현재 두 가지 주요 영역에 집중하고 있습니다:
-### 1. AI Chatbot
+### 1. AI 챗봇
-A conversational assistant that understands your context and has access to all your Twenty data.
+사용자의 맥락을 이해하고 사용자의 Twenty 데이터 전체에 액세스할 수 있는 대화형 어시스턴트입니다.
-**Key capabilities:**
+**주요 기능:**
-* **Full data access**: Query any record, relationship, or metric in your workspace
-* **Page context awareness**: Reference "this company" or "this opportunity" based on where you are in Twenty
-* **Natural language**: Ask questions and get answers without navigating menus
+* **전체 데이터 액세스**: 워크스페이스의 모든 레코드, 관계, 지표를 쿼리합니다
+* **페이지 맥락 인식**: Twenty에서 현재 위치에 따라 "this company" 또는 "this opportunity"를 참조합니다
+* **자연어**: 메뉴를 탐색하지 않고 질문하고 답변을 받아보세요
-**Example prompts:**
+**프롬프트 예시:**
-* "What opportunities are closing this month?"
-* "Which deals have been in Negotiation for more than 30 days?"
-* "Summarize my interactions with this person"
+* "이번 달에 성사될 기회는 무엇인가요?"
+* "30일 이상 협상 단계에 머무른 거래는 무엇인가요?"
+* "이 사람과의 상호작용을 요약해 주세요"
-### 2. AI Agents in Workflows
+### 2. 워크플로우의 AI 에이전트
-Extend your workflows with AI-powered actions and autonomous agents.
+AI 기반 액션과 자율 에이전트로 워크플로우를 확장하세요.
-**Key capabilities:**
+**주요 기능:**
-* **AI actions**: Use AI to enrich data, classify records, generate summaries, and more
-* **Autonomous agents**: Let agents execute multi-step tasks within a workflow
-* **Custom prompts**: Define exactly how AI should process your data
+* **AI 액션**: AI로 데이터를 보강하고, 레코드를 분류하며, 요약을 생성하는 등 다양한 작업을 수행합니다
+* **자율 에이전트**: 워크플로우 내에서 에이전트가 다단계 작업을 수행하도록 합니다
+* **맞춤 프롬프트**: AI가 데이터를 어떻게 처리해야 하는지 정확히 정의합니다
-**Use cases:**
+**사용 사례:**
-* Automatically categorize inbound leads
-* Enrich company data from public sources
-* Generate follow-up email drafts based on meeting notes
-* Score opportunities based on engagement patterns
+* 유입 리드를 자동으로 분류
+* 공개 소스의 정보로 회사 데이터를 보강
+* 회의 메모를 기반으로 후속 이메일 초안을 생성
+* 참여 패턴을 기반으로 기회 점수를 산정
-## Permissions and Access Control
+## 권한 및 액세스 제어
-AI agents will be managed through the existing permissions system:
+AI 에이전트는 기존 권한 시스템을 통해 관리됩니다:
-1. Go to **Settings → Roles**
-2. Configure which data each AI agent can access
-3. Set read/write permissions per object
+1. **설정 → 역할**로 이동
+2. 각 AI 에이전트가 액세스할 수 있는 데이터를 설정
+3. 객체별 읽기/쓰기 권한을 설정
-This ensures AI agents respect your data governance policies and only access what they need.
+이를 통해 AI 에이전트가 데이터 거버넌스 정책을 준수하고 필요한 항목에만 액세스하도록 보장합니다.
-## Stay Updated
+## 업데이트 유지
-We'll update this section as AI features become available. In the meantime:
+AI 기능이 제공되면 이 섹션을 업데이트하겠습니다. 그동안:
-* Follow our [GitHub](https://github.com/twentyhq/twenty) for development updates
-* Join our [Discord](https://discord.gg/twenty) to share feedback and feature requests
+* 개발 업데이트를 받아보려면 저희 [GitHub](https://github.com/twentyhq/twenty)를 팔로우하세요
+* 피드백과 기능 요청을 공유하려면 저희 [Discord](https://discord.gg/twenty)에 참여하세요
diff --git a/packages/twenty-docs/l/ko/user-guide/billing/capabilities/pricing-plans.mdx b/packages/twenty-docs/l/ko/user-guide/billing/capabilities/pricing-plans.mdx
index 90bf7e7cbb..28440b6bb6 100644
--- a/packages/twenty-docs/l/ko/user-guide/billing/capabilities/pricing-plans.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/billing/capabilities/pricing-plans.mdx
@@ -1,79 +1,79 @@
---
-title: Pricing Plans
-description: Learn about Twenty's pricing plans and how to switch between them.
+title: "요금제 "
+description: Twenty의 요금제와 전환 방법을 알아보세요.
---
-## Overview
+## 개요
-Twenty offers flexible pricing to fit teams of all sizes, whether you prefer cloud hosting or self-hosting.
+Twenty는 클라우드 호스팅이든 셀프 호스팅이든, 모든 규모의 팀에 맞는 유연한 요금제를 제공합니다.
-## Cloud Plans
+## 클라우드 요금제
-### Pro (Cloud)
+### Pro(클라우드)
-For teams ready to scale:
+확장을 준비한 팀을 위한:
-* All core CRM features
-* Email and calendar sync
-* Workflows and automations
-* Standard support
+* 모든 핵심 CRM 기능
+* 이메일 및 캘린더 동기화
+* 워크플로와 자동화
+* 표준 지원
- Premium features (SSO and row-level permissions) are not included in the Pro plan.
+ 프리미엄 기능(SSO 및 행 수준 권한)은 Pro 요금제에 포함되지 않습니다.
-### Organization (Cloud)
+### 조직(클라우드)
-For larger teams with advanced needs:
+고급 기능이 필요한 대규모 팀용:
-* Everything in Pro
-* **Premium features**: SSO integration and row-level permissions
-* Priority support
+* Pro의 모든 기능
+* **프리미엄 기능**: SSO 통합 및 행 수준 권한
+* 우선 지원
-## Self-Hosted Plans
+## 셀프 호스팅 요금제
-### Free (Self-Hosted)
+### 무료(셀프 호스팅)
-Host Twenty on your own infrastructure at no cost:
+자체 인프라에 Twenty를 무료로 호스팅하세요:
-* All Pro features included
-* Community support via Discord
-* Full control over your data
+* Pro의 모든 기능 포함
+* Discord를 통한 커뮤니티 지원
+* 데이터에 대한 완전한 제어
-### Organization (Self-Hosted)
+### 조직(셀프 호스팅)
-For teams who need premium features while self-hosting:
+셀프 호스팅하면서 프리미엄 기능이 필요한 팀용:
-* All Pro features
-* **Premium features**: SSO integration and row-level permissions
-* Twenty team support
-* No requirement to publish custom code as open-source before distributing
+* Pro의 모든 기능
+* **프리미엄 기능**: SSO 통합 및 행 수준 권한
+* Twenty 팀의 지원
+* 배포 전에 커스텀 코드를 오픈 소스로 공개할 필요 없음
-## Premium Features
+## 프리미엄 기능
-Premium features are only available on the Organization plans (Cloud or Self-Hosted):
+프리미엄 기능은 조직 요금제(클라우드 또는 셀프 호스팅)에서만 제공됩니다:
-* **SSO integration**: Single Sign-On with your identity provider
-* **Row-level permissions**: Fine-grained access control at the record level
+* **SSO 통합**: ID 공급자와의 싱글 사인온
+* **행 수준 권한**: 레코드 수준의 세밀한 액세스 제어
-## Switching Plans
+## 요금제 전환
-### Upgrade to Organization
+### 조직으로 업그레이드
-1. Go to **Settings → Billing**
-2. Click **Switch to Organization**
-3. Confirm your upgrade
+1. **설정 → 결제**로 이동
+2. **조직으로 전환**을 클릭
+3. 업그레이드를 확인하세요
-### Downgrade to Pro
+### Pro로 다운그레이드
-Contact support to downgrade your plan.
+요금제를 다운그레이드하려면 지원팀에 문의하세요.
-### Switch to Yearly Billing
+### 연간 결제로 전환
-1. Go to **Settings → Billing**
-2. Click **Switch to Yearly**
-3. Save with annual billing
+1. **설정 → 결제**로 이동
+2. **연간으로 전환**을 클릭
+3. 연간 결제로 절약하세요
-### Switch to Monthly Billing
+### 월간 결제로 전환
-Contact support to switch back to monthly billing.
+월간 결제로 되돌리려면 지원팀에 문의하세요.
diff --git a/packages/twenty-docs/l/ko/user-guide/billing/capabilities/workflow-credits.mdx b/packages/twenty-docs/l/ko/user-guide/billing/capabilities/workflow-credits.mdx
index 0ce8e3be72..4b55dc9157 100644
--- a/packages/twenty-docs/l/ko/user-guide/billing/capabilities/workflow-credits.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/billing/capabilities/workflow-credits.mdx
@@ -1,49 +1,49 @@
---
-title: Workflow Credits
-description: Understanding workflow credits, consumption, and how to purchase more.
+title: 워크플로우 크레딧
+description: 워크플로우 크레딧, 소모량 및 추가 구매 방법 이해하기.
---
-## Overview
+## 개요
-Credits power your workflow automations in Twenty. Every workflow action consumes credits based on its complexity.
+워크플로우 크레딧은 Twenty에서 자동화를 지원합니다. 각 워크플로우 동작은 그 복잡성에 따라 크레딧을 소모합니다.
-## Credit Allocation
+## 크레딧 할당
-Credits are based on your billing cycle, not your plan:
+크레딧은 플랜이 아니라 청구 주기에 따라 결정됩니다:
-| Billing Cycle | Credits |
-| ------------- | --------------- |
-| Monthly | 5 million/month |
-| Yearly | 50 million/year |
+| 청구 주기 | 크레딧 |
+| ----- | ------ |
+| 월간 | 월 500만 |
+| 연간 | 연 5천만 |
- The 5 million monthly credits are designed to empower you to run automations without worrying about costs. For most workflows using standard actions, this is more than enough. You'll only need additional credits when running advanced code nodes or AI-powered features.
+ 월 500만 크레딧은 비용을 걱정하지 않고 자동화를 실행할 수 있도록 설계되었습니다. 표준 동작을 사용하는 대부분의 워크플로우에는 이 정도로 충분합니다. 고급 코드 노드나 AI 기반 기능을 실행할 때에만 추가 크레딧이 필요합니다.
-## Credit Consumption
+## 크레딧 소모
-Different actions consume different amounts of credits:
+동작에 따라 소모되는 크레딧 양이 다릅니다:
-| Action Type | Credit Usage |
-| ------------------------------------------------------- | ----------------------- |
-| **Basic operations** (search, update, create records) | Minimal |
-| **Complex operations** (code nodes, external API calls) | More credits |
-| **AI prompts** (coming soon) | Variable based on usage |
+| 동작 유형 | 크레딧 사용량 |
+| ----------------------------- | ----------- |
+| **기본 작업** (검색, 업데이트, 레코드 생성) | 최소 |
+| **복잡한 작업** (코드 노드, 외부 API 호출) | 더 많은 크레딧 소모 |
+| **AI 프롬프트** (곧 제공 예정) | 사용량에 따라 변동 |
-Credits are deducted in real-time when workflows execute.
+작업흐름이 실행될 때 크레딧은 실시간으로 차감됩니다.
-## Monitoring Usage
+## 사용량 모니터링
-Track your credit consumption:
+크레딧 소모량을 추적하세요:
-1. Go to **Settings → Billing**
-2. View your current usage and remaining credits
-3. Monitor trends to plan for additional credits if needed
+1. **설정 → 결제**로 이동
+2. 현재 사용량과 남은 크레딧을 확인하세요
+3. 추세를 모니터링하여 필요 시 추가 크레딧을 계획하세요
-## Purchasing Additional Credits
+## 추가 크레딧 구입
-Need more credits?
+크레딧이 더 필요하신가요?
-1. Go to **Settings → Billing**
-2. Click on the option to purchase additional credit packs
-3. Select the amount you need
+1. **설정 → 결제**로 이동
+2. 추가 크레딧 팩을 구매하는 옵션을 클릭하세요
+3. 필요한 크레딧 수량을 선택하세요
diff --git a/packages/twenty-docs/l/ko/user-guide/billing/how-tos/billing-faq.mdx b/packages/twenty-docs/l/ko/user-guide/billing/how-tos/billing-faq.mdx
index ee1d560cb1..4dee8e0b9e 100644
--- a/packages/twenty-docs/l/ko/user-guide/billing/how-tos/billing-faq.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/billing/how-tos/billing-faq.mdx
@@ -1,86 +1,86 @@
---
-title: Billing FAQ
-description: Frequently asked questions about Twenty pricing and billing.
+title: 청구 FAQ
+description: Twenty 요금 및 결제에 관한 자주 묻는 질문입니다.
---
-## Pricing
+## 가격
-
- Yes, you can use Twenty for free while self-hosting. You will get access to everything included in the Pro (Cloud) plan, except the support from our core-team. Support is accessible via our Discord community.
+
+ 네, 자기 호스팅할 때 Twenty를 무료로 사용할 수 있습니다. 당사 코어 팀의 지원을 제외하고 Pro (Cloud) 플랜에 포함된 모든 기능을 이용할 수 있습니다. 지원은 Discord 커뮤니티를 통해 제공됩니다.
- If you want to self-host and need the Premium features (SSO and row-level permissions), you can choose the paid Organization (Self-Hosted) license. This also includes support from the Twenty team and removes the requirement to publish custom code as open-source before distributing.
+ 자가 호스팅을 원하고 Premium 기능(SSO 및 행 수준 권한)이 필요하다면, 유료 Organization (Self-Hosted) 라이선스를 선택할 수 있습니다. 여기에는 Twenty 팀의 지원도 포함되며, 배포 전에 커스텀 코드를 오픈 소스로 공개해야 하는 요구 사항이 제거됩니다.
-
- Premium features are only available on the Organization plans (Cloud or Self-Hosted):
+
+ Premium 기능은 Organization 플랜(Cloud 또는 Self-Hosted)에서만 제공됩니다:
- * **SSO integration**: Single Sign-On with your identity provider
- * **Row-level permissions**: Fine-grained access control at the record level
+ * **SSO 통합**: 아이덴티티 공급자와의 단일 로그인
+ * **행 수준 권한**: 레코드 수준에서의 세밀한 액세스 제어
-
- We do not offer free seats. Pricing is per user and each user needs a licence to access Twenty.
+
+ 무료 좌석은 제공되지 않습니다. 가격은 사용자당 책정되며, 각 사용자는 Twenty에 접근하기 위해 라이센스가 필요합니다.
-
- You can do so under `Settings → Billing`. Then click on `Switch to Organization`.
+
+ `설정 → 청구`에서 가능합니다. 그 다음, `조직으로 전환`을 클릭하십시오.
-
- Please reach out to our team directly via the Support, there is no easy way to do this using the UI at the moment.
+
+ 현재 UI를 통해 쉽게 수행할 방법이 없으므로 지원에 직접 문의해 주세요.
-
- You can do so under `Settings → Billing`. Then click on `Switch to Yearly`.
+
+ `설정 → 청구`에서 가능합니다. 그 다음, `연간으로 전환`을 클릭하십시오.
-
- Please reach out to our team directly via the Support, there is no easy way to do this using the UI at the moment.
+
+ 현재 UI를 통해 쉽게 수행할 방법이 없으므로 지원에 직접 문의해 주세요.
-
- You will find this under `Settings → Billing`.
+
+ `설정 → 청구`에서 확인할 수 있습니다.
-
- The number of credits depends on your billing cycle, not your plan:
+
+ 크레딧 수는 플랜이 아니라 청구 주기에 따라 달라집니다:
- * **Monthly subscriptions**: 5 million credits per month
- * **Yearly subscriptions**: 50 million credits per year
+ * **월간 구독**: 월 500만 크레딧
+ * **연간 구독**: 연 5,000만 크레딧
-
- Each workflow action consumes credits based on its complexity:
+
+ 각 워크플로우 동작은 그 복잡성에 따라 크레딧을 소모합니다:
- * **Basic internal operations** (such as search, update, create records) consume very few credits
- * **More complex operations** like code nodes and requests to external services consume more credits
- * **AI prompts** (coming soon!) will also consume more credits based on usage
+ * **기본 내부 작업**(예: 검색, 업데이트, 레코드 생성)은 아주 적은 크레딧을 소모합니다
+ * **더 복잡한 작업**(코드 노드 및 외부 서비스에 대한 요청 등)은 더 많은 크레딧을 소모합니다
+ * **AI 프롬프트** (곧 제공 예정) 사용량에 따라 더 많은 크레딧을 소비하게 됩니다.
- Credits are deducted in real-time when workflows execute. You can monitor your usage in **Settings → Billing** to track consumption and remaining credits.
+ 작업흐름이 실행될 때 크레딧은 실시간으로 차감됩니다. 소비 및 남은 크레딧을 추적하기 위해 **설정 → 청구**에서 사용 내용을 모니터링할 수 있습니다.
-
- You can buy additional credits under `Settings → Billing`.
+
+ `설정 → 청구`에서 추가 크레딧을 구매할 수 있습니다.
-## Billing
+## 청구
-
- You can do so under `Settings → Billing`.
+
+ `설정 → 청구`에서 가능합니다.
-
- You can do so under `Settings → Billing`. Then click on `View billing details`. You'll be able to add a new payment method there.
+
+ `설정 → 청구`에서 가능합니다. 그 다음, `청구 세부 정보 보기`를 클릭하십시오. 새 지불 방법을 추가할 수 있습니다.
-
- You can do so under `Settings → Billing`. Then click on `View billing details`. You'll be able to edit the billing information there.
+
+ `설정 → 청구`에서 가능합니다. 그 다음, `청구 세부 정보 보기`를 클릭하십시오. 청구 정보를 편집할 수 있습니다.
-
- You can do so under `Settings → Billing`. Then click on `View billing details`. You'll see all your invoices at the bottom of the screen.
+
+ `설정 → 청구`에서 가능합니다. 그 다음, `청구 세부 정보 보기`를 클릭하십시오. 화면 하단에서 모든 인보이스를 볼 수 있습니다.
diff --git a/packages/twenty-docs/l/ko/user-guide/billing/overview.mdx b/packages/twenty-docs/l/ko/user-guide/billing/overview.mdx
index 3fbc87905d..c7898b223d 100644
--- a/packages/twenty-docs/l/ko/user-guide/billing/overview.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/billing/overview.mdx
@@ -1,45 +1,45 @@
---
-title: Billing
-description: Understand Twenty pricing and manage your subscription.
+title: 청구
+description: Twenty의 요금제를 이해하고 구독을 관리하세요.
image: /images/user-guide/setup/pricing.png
---
-
+
-Twenty offers flexible pricing plans to fit your team's needs. Manage your subscription, track workflow credits, and access invoices all from **Settings → Billing**.
+Twenty는 팀의 요구에 맞는 유연한 요금제를 제공합니다. **설정 → 결제**에서 구독을 관리하고 워크플로 크레딧을 확인하며 청구서를 확인할 수 있습니다.
-## What's in this section
+## 이 섹션의 내용
-
- Learn about Twenty's pricing plans and what's included.
+
+ Twenty의 요금제와 포함된 내용을 알아보세요.
- Frequently asked questions about pricing and billing.
+ 요금 및 결제에 관한 자주 묻는 질문입니다.
-## At a glance
+## 한눈에 보기
-| Plan | Key Features |
-| ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
-| **Free (Self-Hosted)** | All Pro features, community support |
-| **Pro (Cloud)** | Everything apart from the Premium features (SSO and row-level permissions), standard support |
-| **Organization (Cloud)** | All from Pro + the Premium features (SSO and row-level permissions), priority support |
-| **Organization (Self-Hosted)** | All from Pro + the Premium features (SSO, row-level permissions), Twenty team support, not required to publish your custom code as open-source before distributing |
+| 플랜 | 핵심 기능 |
+| -------------- | --------------------------------------------------------------------------------- |
+| **무료(자가 호스팅)** | 모든 Pro 기능, 커뮤니티 지원 |
+| **Pro(클라우드)** | 프리미엄 기능(SSO 및 행 단위 권한)을 제외한 모든 기능, 표준 지원 |
+| **조직(클라우드)** | Pro의 모든 것 + 프리미엄 기능(SSO 및 행 단위 권한), 우선 지원 |
+| **조직(자가 호스팅)** | Pro의 모든 것 + 프리미엄 기능(SSO, 행 단위 권한), Twenty 팀 지원, 배포 전에 사용자 지정 코드를 오픈 소스로 공개할 필요 없음 |
-## Quick answers
+## 빠른 답변
-**Where do I manage billing?**
-Go to **Settings → Billing** to view your plan, update payment methods, and access invoices.
+**결제 관리는 어디에서 하나요?**
+요금제를 확인하고 결제 수단을 업데이트하며 청구서를 확인하려면 **설정 → 결제**로 이동하세요.
-**Can I use Twenty for free?**
-Yes! Self-host Twenty and get all Pro features at no cost.
+**Twenty를 무료로 사용할 수 있나요?**
+네! Twenty를 자가 호스팅하면 모든 Pro 기능을 무료로 사용할 수 있습니다.
-**How do I upgrade?**
-Go to **Settings → Billing** and click **Switch to Organization** or **Switch to Yearly**.
+**업그레이드는 어떻게 하나요?**
+**설정 → 결제**로 이동하여 **조직으로 전환** 또는 **연간 요금으로 전환**을 클릭하세요.
-For more questions, see the [Billing FAQ](/l/ko/user-guide/billing/how-tos/billing-faq).
+추가 질문은 [결제 FAQ](/l/ko/user-guide/billing/how-tos/billing-faq)를 참조하세요.
diff --git a/packages/twenty-docs/l/ko/user-guide/calendar-emails/capabilities/calendar.mdx b/packages/twenty-docs/l/ko/user-guide/calendar-emails/capabilities/calendar.mdx
index 4c1818a5f6..6e25cee656 100644
--- a/packages/twenty-docs/l/ko/user-guide/calendar-emails/capabilities/calendar.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/calendar-emails/capabilities/calendar.mdx
@@ -1,43 +1,43 @@
---
-title: Calendar
-description: Understanding calendar integration features in Twenty.
+title: 캘린더
+description: Twenty의 캘린더 통합 기능 이해하기.
---
-**Note**: To connect your calendar and configure sync settings, visit [Email & Calendar Setup](/l/ko/user-guide/calendar-emails/overview).
+**참고**: 캘린더를 연결하고 동기화 설정을 구성하려면 [이메일 및 일정 설정](/l/ko/user-guide/calendar-emails/overview)을 방문하세요.
-## How Calendar Integration Works
+## 캘린더 통합 작동 방식
-Twenty automatically syncs your calendar events and links them to the relevant CRM records, giving you a complete view of your meeting history with contacts and companies.
+Twenty는 캘린더 이벤트를 자동으로 동기화하고 관련 CRM 레코드에 연결하여 연락처 및 회사와의 미팅 이력을 완벽하게 파악할 수 있도록 합니다.
-## Calendar Tab
+## 캘린더 탭
-Next to the Emails tab on records, you'll find a `Calendar` tab that contains the history of meetings scheduled with the record.
+레코드의 이메일 탭 옆에 `캘린더` 탭이 있으며, 해당 레코드와 예정된 미팅의 이력을 확인할 수 있습니다.
-### Available For
+### 사용 가능 대상
-* **People**: View all meetings scheduled with a specific contact
-* **Companies**: See all meetings related to a company and its employees
-* **Opportunities**: Access meeting history related to the company linked to this opportunity
+* **사람들**: 특정 연락처와 예정된 모든 미팅 보기
+* **회사**: 회사 및 직원과 관련된 모든 미팅 보기
+* **기회**: 이 기회와 연결된 회사와 관련된 미팅 기록에 접근
-### Viewing Meeting History
+### 미팅 기록 보기
-1. **Navigate to a Record**: Go to any Person, Company, or Opportunity record
-2. **Select the Calendar Tab**: Click on the `Calendar` tab next to the Emails tab
-3. **Browse Meeting History**: View all scheduled meetings and their details
-4. **Access Meeting Context**: See meeting participants, times, and related information
+1. **기록으로 이동**: 특정 사람, 회사 또는 기회 기록으로 이동
+2. **캘린더 탭 선택**: 이메일 탭 옆에 있는 `캘린더` 탭을 클릭합니다
+3. **미팅 기록 탐색**: 예정된 모든 미팅과 그 세부정보 보기
+4. **미팅 컨텍스트 접근**: 미팅 참가자, 시간 및 관련 정보 보기
-## Visibility Settings
+## 가시성 설정
-Calendar data follows the same visibility settings as emails, ensuring consistent privacy controls across both communication channels.
+캘린더 데이터는 이메일과 동일한 가시성 설정을 따르며, 두 커뮤니케이션 채널 전반에서 일관된 개인정보 보호를 보장합니다.
-## What Gets Synced
+## 동기화되는 내용
-* **External Meetings**: All meetings with contacts outside your organization
-* **Automatic Linking**: Meetings connect to existing People and Company records based on attendee email addresses
-* **Meeting Details**: Subject, time, duration, and participants
-* **Updates**: New calendar events sync automatically
+* **외부 미팅**: 조직 외부 연락처와의 모든 미팅
+* **자동 연결**: 참석자의 이메일 주소를 기준으로 미팅이 기존 사람 및 회사 레코드에 연결됩니다
+* **미팅 세부정보**: 제목, 시간, 기간, 참가자
+* **업데이트**: 새로운 캘린더 이벤트가 자동으로 동기화됩니다
-## What Doesn't Get Synced
+## 동기화되지 않는 항목
-* **Internal Meetings**: Meetings with only colleagues (same domain) remain private
-* **Private Events**: Events marked as private in your calendar
+* **내부 미팅**: 동료끼리만의 미팅(동일 도메인)은 비공개로 유지됩니다
+* **비공개 이벤트**: 캘린더에서 비공개로 표시된 이벤트
diff --git a/packages/twenty-docs/l/ko/user-guide/calendar-emails/capabilities/mailbox.mdx b/packages/twenty-docs/l/ko/user-guide/calendar-emails/capabilities/mailbox.mdx
index cd2a3172ea..eff3cabcb9 100644
--- a/packages/twenty-docs/l/ko/user-guide/calendar-emails/capabilities/mailbox.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/calendar-emails/capabilities/mailbox.mdx
@@ -1,85 +1,95 @@
---
-title: Mailbox
-description: Understanding email integration features in Twenty.
+title: 메일함
+description: Twenty의 이메일 통합 기능 이해하기.
---
-**Note**: To connect your email accounts and configure sync settings, visit [Email & Calendar Setup](/l/ko/user-guide/calendar-emails/overview).
+**참고**: 이메일 계정을 연결하고 동기화 설정을 구성하려면 [이메일 및 일정 설정](/l/ko/user-guide/calendar-emails/overview)을 방문하세요.
-## How Email Integration Works
+## 이메일 통합 작동 방식
-Twenty automatically links emails from your connected mailboxes to the relevant CRM records, keeping all communication history in one place.
+Twenty는 연결된 메일함에서 메일을 자동으로 해당 CRM 기록에 연결하여 모든 커뮤니케이션 이력을 한 곳에 유지합니다.
-### Objects Where Emails Can Be Found
+### 이메일을 확인할 수 있는 객체
-Email conversations appear in three main objects:
+이메일 대화는 세 가지 주요 객체에 나타납니다:
-* **People**: View all emails exchanged with a specific contact
-* **Companies**: See all emails related to a company and its employees
-* **Opportunities**: Access email threads related to the company linked to this opportunity. Email threads from individual people on the opportunity are not shown yet.
+* **사람들**: 특정 연락처와 교환한 모든 이메일 보기
+* **회사**: 회사 및 직원과 관련된 모든 이메일 보기
+* **기회**: 이 기회와 연결된 회사와 관련된 이메일 스레드에 접근합니다. 기회에 있는 개별 사람의 이메일 스레드는 아직 표시되지 않습니다.
-### Viewing Email Threads
+### 이메일 스레드 보기
-1. **Navigate to a Record**: Go to any Person, Company, or Opportunity record
-2. **Select the Emails Tab**: Click on the `Emails` tab to view synced emails
-3. **Open an Email Thread**: Click on any email to open and read the full conversation
-4. **Browse History**: Scroll through the complete email history with that contact
+1. **기록으로 이동**: 특정 사람, 회사 또는 기회 기록으로 이동
+2. **이메일 탭 선택**: 동기화된 이메일을 보려고 `이메일` 탭을 클릭하세요
+3. **이메일 스레드 열기**: 전체 대화를 열고 읽으려면 이메일을 클릭하세요
+4. **히스토리 탐색**: 해당 연락처와의 완전한 이메일 기록을 스크롤하여 확인하세요
-## What You'll See
+## 볼 수 있는 내용
-### Email Thread View
+### 이메일 스레드 보기
-When you open an email thread, you can:
+이메일 스레드를 열면 다음을 할 수 있습니다:
-* **Read Full Conversations**: See the complete email exchange
-* **View Participants**: See all people involved in the email thread
-* **Check Timestamps**: Know exactly when each email was sent
-* **Access Context**: Understand the full communication history
+* **전체 대화 읽기**: 전체 이메일 교환 보기
+* **참여자 보기**: 이메일 스레드에 참여한 모든 사람 보기
+* **타임스탬프 확인**: 각 이메일이 발송된 정확한 시간을 알기
+* **컨텍스트 접근**: 전체 커뮤니케이션 이력 이해하기
-### Email Visibility
+### 이메일 가시성
-Depending on your mailbox settings, you might see:
+메일함 설정에 따라 다음을 볼 수 있습니다:
-* **Full Content**: Complete email text and details
-* **Subject + Metadata**: Subject line, sender, recipient, and timestamp
-* **Metadata Only**: Basic information without email content
+* **전체 내용**: 이메일 텍스트 및 세부 내용 표시
+* **제목 + 메타데이터**: 제목, 발신자, 수신자 및 타임스탬프
+* **메타데이터만**: 이메일 내용 없이 기본 정보
-## Email Sync Behavior
+## 이메일 동기화 행동
-### What Gets Synced
+### 동기화 속도
-* **External Emails**: All emails with contacts outside your organization
-* **Automatic Linking**: Emails connect to existing People and Company records
-* **Multiple Addresses**: Emails from any address link to the same contact record
-* **Updates**: New emails appear within 5 minutes
+Twenty는 분당 약 **400건의 메시지**를 가져옵니다. 이 속도는 현재 Gmail API의 속도 제한에 의해 제한됩니다(다른 제공업체에도 유사하게 적용됩니다).
-### What Doesn't Get Synced
+참고:
-* **Internal Emails**: Emails between colleagues (same domain) remain private
-* **Group Emails**: Distribution lists and group emails are excluded
-* **Excluded Folders**: Folders you've chosen not to sync (configured under Settings → Accounts → Email)
+* 이메일 1,000개 → ~2.5분
+* 이메일 10,000개 → ~25분
+* 이메일 50,000개 → ~2시간
-### Selective Folder Sync (Lab Feature)
+### 동기화되는 내용
-Control which email folders sync with Twenty:
+* **외부 이메일**: 조직 외부 연락처와의 모든 이메일
+* **자동 연결**: 이메일이 기존 사람 및 회사 기록에 연결됩니다
+* **다중 주소**: 모든 주소의 이메일이 동일한 연락처 기록에 연결됩니다
+* **업데이트**: 새로운 이메일은 5분 내에 나타납니다
-1. Enable `Message Folder` in Settings → Releases → Lab
-2. Configure folders under Settings → Accounts → Email
-3. Choose specific folders to include or exclude (Inbox, Sent, Archive, custom folders)
+### 동기화되지 않는 항목
-## Troubleshooting Email Sync
+* **내부 이메일**: 동료 간 (같은 도메인)의 이메일은 개인적으로 유지됩니다
+* **그룹 이메일**: 배포 목록 및 그룹 이메일은 제외됩니다
+* **제외된 폴더**: 동기화하지 않도록 선택한 폴더 (설정 → 계정 → 이메일에서 구성됨)
-### Common Sync Issues
+### 선택적 폴더 동기화
-* **Sync Delays**: Emails appear within 5 minutes, but initial imports take longer
-* **Missing Emails**: Check if:
- * Folders are excluded in Message Folder settings
- * Contact auto-creation is disabled (emails need existing Twenty records)
- * Email is from colleagues (same domain) or group lists
- * Mailbox is still completing initial sync
+Twenty와 동기화할 이메일 폴더 제어:
-### Email Limitations
+1. **설정 → 계정**으로 이동하여 연결된 이메일 계정을 선택하세요.
+2. 이메일 섹션에서 폴더를 구성하세요.
+3. 특정 폴더를 포함하거나 제외하기 선택 (받은 편지함, 보낸 편지함, 보관함, 사용자 지정 폴더)
-* **System Folders**: Some email folders may not be available for sync
-* **Aliases**: Only true mailboxes can be connected (not email aliases)
+## 이메일 동기화 문제 해결
+
+### 일반 동기화 문제
+
+* **동기화 지연**: 이메일은 5분 내에 나타나지만 초기 가져오기는 시간이 더 걸립니다
+* **누락된 이메일**: 확인할 사항:
+ * 메시지 폴더 설정에서 폴더가 제외되어 있음
+ * 연락처 자동 생성이 비활성화됨(이메일에는 기존 Twenty 레코드가 필요함)
+ * 이메일은 동료 (같은 도메인) 또는 그룹 목록에서 검토 중이 아님
+ * 메일함이 초기 동기화를 완료하고 있음
+
+### 이메일 제한 사항
+
+* **시스템 폴더**: 일부 이메일 폴더는 동기화 가능하지 않을 수 있습니다
+* **별칭**: 실제 메일함만 연결할 수 있습니다 (이메일 별칭은 안됨)
diff --git a/packages/twenty-docs/l/ko/user-guide/calendar-emails/how-tos/can-i-book-meetings-from-twenty.mdx b/packages/twenty-docs/l/ko/user-guide/calendar-emails/how-tos/can-i-book-meetings-from-twenty.mdx
index edee83875d..0aaa50d18e 100644
--- a/packages/twenty-docs/l/ko/user-guide/calendar-emails/how-tos/can-i-book-meetings-from-twenty.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/calendar-emails/how-tos/can-i-book-meetings-from-twenty.mdx
@@ -1,28 +1,28 @@
---
-title: Can I Book Meetings from Twenty?
-description: Information about booking meetings directly from Twenty.
+title: Twenty에서 미팅을 예약할 수 있나요?
+description: Twenty에서 직접 미팅을 예약하는 것에 대한 정보.
---
-## Current Status
+## 현재 상태
-**No, Twenty does not currently support booking meetings directly from the platform.**
+**아니요, Twenty는 현재 플랫폼에서 직접 미팅 예약을 지원하지 않습니다.**
-Twenty's calendar integration is designed to **sync and display** your existing calendar events, not to create new ones. All meeting scheduling should be done through your native calendar application (Google Calendar, Microsoft Outlook, etc.).
+Twenty의 캘린더 통합은 새로운 이벤트를 생성하기 위한 것이 아니라 기존 캘린더 이벤트를 **동기화하고 표시**하도록 설계되었습니다. 모든 미팅 일정 예약은 기본 캘린더 애플리케이션(예: Google Calendar, Microsoft Outlook 등)을 통해 수행해야 합니다.
-## What You Can Do
+## 가능한 작업
-* **View meeting history** on People, Companies, and Opportunities records
-* **See upcoming meetings** with contacts in your CRM
-* **Track meeting context** alongside email communications
-* **Auto-create contacts** from meeting participants
+* 사람, 회사 및 기회 레코드에서 **미팅 기록 보기**
+* CRM의 연락처와의 **예정된 미팅 보기**
+* 이메일 커뮤니케이션과 함께 **미팅 맥락 추적**
+* 미팅 참가자를 기반으로 **연락처 자동 생성**
-## How to Schedule Meetings
+## 미팅을 예약하는 방법
-1. Use your native calendar app (Google Calendar, Outlook, etc.)
-2. Create the meeting as you normally would
-3. The meeting will automatically sync to Twenty within 5 minutes
-4. View the meeting on the relevant CRM records
+1. 기본 캘린더 앱(예: Google Calendar, Outlook 등)을 사용하세요
+2. 평소대로 미팅을 생성하세요
+3. 미팅은 5분 이내에 Twenty와 자동으로 동기화됩니다
+4. 해당 CRM 레코드에서 미팅을 확인하세요
-## Future Plans
+## 향후 계획
-Meeting creation from within Twenty is on our roadmap. Join our [GitHub discussions](https://github.com/twentyhq/twenty/discussions) to share your use case and help prioritize this feature.
+Twenty 내에서의 미팅 생성 기능은 로드맵에 포함되어 있습니다. 사용 사례를 공유하고 이 기능의 우선순위를 정하는 데 도움을 주기 위해 우리 [GitHub 토론](https://github.com/twentyhq/twenty/discussions)에 참여하세요.
diff --git a/packages/twenty-docs/l/ko/user-guide/calendar-emails/how-tos/can-i-send-emails-from-twenty.mdx b/packages/twenty-docs/l/ko/user-guide/calendar-emails/how-tos/can-i-send-emails-from-twenty.mdx
index eacc8054a0..817ff456a7 100644
--- a/packages/twenty-docs/l/ko/user-guide/calendar-emails/how-tos/can-i-send-emails-from-twenty.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/calendar-emails/how-tos/can-i-send-emails-from-twenty.mdx
@@ -1,44 +1,44 @@
---
-title: Can I Send Emails from Twenty?
-description: Information about sending emails directly from Twenty.
+title: Twenty에서 이메일을 보낼 수 있나요?
+description: Twenty에서 직접 이메일을 보내는 것에 대한 정보.
---
-## Current Status
+## 현재 상태
-Twenty's email integration is designed to **sync and display** your email history. Emails cannot be composed or sent directly from Twenty's interface.
+Twenty의 이메일 통합은 이메일 기록을 **동기화하고 표시**하도록 설계되었습니다. Twenty의 인터페이스에서 이메일을 작성하거나 직접 보낼 수 없습니다.
-When you view an email thread on a record page and click **Reply**, you'll be redirected to the original thread in your mailbox (Gmail, Outlook, etc.). This is where you compose and send your reply.
+레코드 페이지에서 이메일 스레드를 보고 **Reply**를 클릭하면, 사용자의 사서함(Gmail, Outlook 등)에서 원래 스레드로 리디렉션됩니다. 여기에서 답장을 작성하고 보냅니다.
-## What You Can Do Today
+## 현재 가능한 작업
-* **View email history** on People, Companies, and Opportunities records
-* **Read full email threads** with contacts in your CRM
-* **Track communication context** alongside calendar events
-* **Auto-create contacts** from email interactions
-* **Reply via redirect** — click Reply to jump to your mailbox
+* 사람, 회사 및 기회 레코드에서 **이메일 기록 보기**
+* CRM의 연락처와 주고받은 **전체 이메일 스레드 읽기**
+* 캘린더 이벤트와 함께 **커뮤니케이션 맥락 추적**
+* 이메일 상호작용에서 **연락처 자동 생성**
+* **리디렉션을 통한 답장** — Reply를 클릭하여 사서함으로 이동
-## Sending Emails via Workflows
+## 워크플로우를 통해 이메일 보내기
-While you can't send emails manually from Twenty, you **can send emails automatically using Workflows**. This is useful for:
+Twenty에서는 수동으로 이메일을 보낼 수 없지만, **워크플로우를 사용해 자동으로 이메일을 보낼 수 있습니다**. 다음에 유용합니다:
-* Automated follow-ups
-* Notifications to contacts
-* Triggered communications based on record changes
+* 자동 후속 조치
+* 연락처에 대한 알림
+* 레코드 변경을 기반으로 트리거되는 커뮤니케이션
-Emails sent via workflows go through your connected mailbox account.
+워크플로우를 통해 전송된 이메일은 연결된 사서함 계정을 통해 발송됩니다.
-→ Learn about the [Send Email action](/l/ko/user-guide/workflows/capabilities/workflow-actions#send-email)
+→ [Send Email 액션](/l/ko/user-guide/workflows/capabilities/workflow-actions#send-email)에 대해 알아보기
-## Email Sequences and Newsletters
+## 이메일 시퀀스 및 뉴스레터
-For email sequences and newsletters, we recommend using workflows to connect Twenty to a dedicated email marketing tool.
+이메일 시퀀스와 뉴스레터의 경우, Twenty를 전용 이메일 마케팅 도구와 연결하기 위해 워크플로우를 사용할 것을 권장합니다.
- Mass emails should not be sent directly from your mailbox to protect your domain reputation. Use a dedicated tool for bulk communications.
+ 도메인 평판을 보호하기 위해 대량 이메일은 사서함에서 직접 보내지 말아야 합니다. 대량 커뮤니케이션에는 전용 도구를 사용하세요.
-→ See [How to send emails from workflows](/l/ko/user-guide/workflows/capabilities/send-emails-from-workflows) for setup instructions
+→ 설정 방법은 [워크플로우에서 이메일을 보내는 방법](/l/ko/user-guide/workflows/capabilities/send-emails-from-workflows)을 참조하세요
-## Future Plans
+## 향후 계획
-Native email composition from within Twenty is on our roadmap. Join our [GitHub discussions](https://github.com/twentyhq/twenty/discussions) to share your use case and help prioritize this feature.
+Twenty 내에서의 네이티브 이메일 작성 기능은 로드맵에 포함되어 있습니다. 사용 사례를 공유하고 이 기능의 우선순위를 정하는 데 도움을 주기 위해 우리 [GitHub 토론](https://github.com/twentyhq/twenty/discussions)에 참여하세요.
diff --git a/packages/twenty-docs/l/ko/user-guide/calendar-emails/how-tos/can-i-track-email-activity-on-all-objects.mdx b/packages/twenty-docs/l/ko/user-guide/calendar-emails/how-tos/can-i-track-email-activity-on-all-objects.mdx
index de258baef3..6a48593c56 100644
--- a/packages/twenty-docs/l/ko/user-guide/calendar-emails/how-tos/can-i-track-email-activity-on-all-objects.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/calendar-emails/how-tos/can-i-track-email-activity-on-all-objects.mdx
@@ -1,35 +1,35 @@
---
-title: Can I Track Email Activity on All Objects?
-description: Understanding email activity tracking across different objects.
+title: 모든 객체에서 이메일 활동을 추적할 수 있나요?
+description: 다양한 객체 전반에서 이메일 활동이 어떻게 추적되는지 이해하기.
---
-## Supported Objects
+## 지원되는 객체
-Email activity is currently available on **three standard objects**:
+이메일 활동은 현재 **세 가지 표준 객체**에서 사용할 수 있습니다:
-| Object | What You See |
-| ----------------- | ---------------------------------------------------------------- |
-| **People** | All emails exchanged with that specific contact |
-| **Companies** | All emails with anyone from that company (based on email domain) |
-| **Opportunities** | Emails related to the company linked to the opportunity |
+| 객체 | 볼 수 있는 내용 |
+| ------- | ---------------------------------- |
+| **사람들** | 해당 특정 연락처와 주고받은 모든 이메일 |
+| **회사** | 해당 회사의 누구와 주고받은 모든 이메일(이메일 도메인 기준) |
+| **기회** | 해당 기회에 연결된 회사와 관련된 이메일 |
-## Why Only These Objects?
+## 왜 이러한 객체만 지원하나요?
-People, Companies, and Opportunities are the core relationship objects where email context adds the most value. Email threads are automatically linked based on:
+사람들, 회사, 기회는 이메일 맥락이 가장 큰 가치를 더하는 핵심 관계 객체입니다. 이메일 스레드는 다음을 기준으로 자동 연결됩니다:
-* **Email address** → matched to People records
-* **Email domain** → matched to Company records
-* **Company relation** → linked to Opportunities
+* **이메일 주소** → 사람 레코드와 매칭
+* **이메일 도메인** → 회사 레코드와 매칭
+* **회사 관계** → 기회와 연결
-## Custom Objects
+## 사용자 지정 개체
-**Email tracking is not available on custom objects** at this time.
+현재 **사용자 지정 객체에서는 이메일 추적을 사용할 수 없습니다**.
-If you need email context on a custom object, consider:
+사용자 지정 객체에서 이메일 맥락이 필요하다면 다음을 고려하세요:
-* Using a relation field to link your custom object to People or Companies
-* Viewing email history on the linked People/Company record
+* 관계 필드를 사용하여 사용자 지정 객체를 사람 또는 회사에 연결
+* 연결된 사람/회사 레코드에서 이메일 내역 보기
-## Future Plans
+## 향후 계획
-Extending email visibility to custom objects is being considered. Share your use case on our [GitHub discussions](https://github.com/twentyhq/twenty/discussions) to help prioritize this feature.
+이메일 가시성을 사용자 지정 객체로 확장하는 방안을 검토 중입니다. 이 기능의 우선순위 결정을 돕기 위해 사용 사례를 [GitHub 토론](https://github.com/twentyhq/twenty/discussions)에 공유해 주세요.
diff --git a/packages/twenty-docs/l/ko/user-guide/calendar-emails/how-tos/connect-several-mailboxes-per-user.mdx b/packages/twenty-docs/l/ko/user-guide/calendar-emails/how-tos/connect-several-mailboxes-per-user.mdx
index 83da30bd83..5dbbcfd561 100644
--- a/packages/twenty-docs/l/ko/user-guide/calendar-emails/how-tos/connect-several-mailboxes-per-user.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/calendar-emails/how-tos/connect-several-mailboxes-per-user.mdx
@@ -1,42 +1,42 @@
---
-title: Connect Several Mailboxes per User
-description: Connect multiple email accounts for a single user.
+title: 사용자당 다중 메일박스 연결
+description: 단일 사용자에 대해 여러 이메일 계정을 연결합니다.
---
-## Overview
+## 개요
-Twenty supports **unlimited email accounts per user**. This is useful if you manage multiple inboxes, such as:
+Twenty는 **사용자당 무제한 이메일 계정**을 지원합니다. 다음과 같이 여러 받은편지함을 관리하는 경우 유용합니다:
-* Personal work email + shared team inbox
-* Multiple client-facing email addresses
-* Different email accounts for different roles
+* 개인 업무용 이메일 + 팀 공유 받은편지함
+* 고객 대응용 이메일 주소 여러 개
+* 역할별로 서로 다른 이메일 계정
-## How to Add Multiple Mailboxes
+## 여러 메일박스를 추가하는 방법
-1. Go to **Settings → Accounts**
-2. Click **Add account**
-3. Connect your additional Google or Microsoft account
-4. Configure sync settings for this mailbox
-5. Repeat for each mailbox you want to connect
+1. **설정 → 계정**으로 이동
+2. **계정 추가**를 클릭
+3. 추가 Google 또는 Microsoft 계정을 연결하세요
+4. 이 메일박스의 동기화 설정을 구성하세요
+5. 연결하려는 각 메일박스에 대해 반복하세요
-## Managing Multiple Accounts
+## 여러 계정 관리
-Each connected mailbox has its own settings:
+연결된 각 메일박스에는 고유한 설정이 있습니다:
-* **Email visibility**: Choose what teammates can see
-* **Contact auto-creation**: Enable/disable per mailbox
-* **Folder selection**: Choose which folders to sync (Lab feature)
+* **이메일 가시성**: 팀원이 볼 수 있는 범위 선택
+* **연락처 자동 생성**: 메일박스별 사용/사용 안 함
+* **폴더 선택**: 동기화할 폴더 선택
-## How Emails Appear
+## 이메일 표시 방식
-Emails from all your connected mailboxes are synced to Twenty and appear on:
+연결된 모든 메일박스의 이메일이 Twenty와 동기화되어 다음 위치에 표시됩니다:
-* **People records**: Based on the contact's email address
-* **Company records**: Based on the email domain
-* **Opportunities**: Based on the linked company
+* **사람 레코드**: 연락처의 이메일 주소 기준
+* **회사 레코드**: 이메일 도메인 기준
+* **기회**: 연결된 회사 기준
-Each email shows which mailbox it was sent from/received to, so you can track which account was used for each communication.
+각 이메일에는 어떤 메일박스에서 발송되었는지/어떤 메일박스로 수신되었는지가 표시되므로, 각 커뮤니케이션에 어떤 계정이 사용되었는지 추적할 수 있습니다.
-## Important Notes
+## 중요 참고 사항
-Only true mailboxes can be connected. Email aliases that forward to another mailbox cannot be connected separately—they'll sync through the main mailbox.
+실제 메일박스만 연결할 수 있습니다. 다른 메일박스로 전달되는 이메일 별칭은 별도로 연결할 수 없습니다—기본 메일박스를 통해 동기화됩니다.
diff --git a/packages/twenty-docs/l/ko/user-guide/calendar-emails/how-tos/i-dont-see-emails-on-records.mdx b/packages/twenty-docs/l/ko/user-guide/calendar-emails/how-tos/i-dont-see-emails-on-records.mdx
index c5db7745a0..b73641d0ca 100644
--- a/packages/twenty-docs/l/ko/user-guide/calendar-emails/how-tos/i-dont-see-emails-on-records.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/calendar-emails/how-tos/i-dont-see-emails-on-records.mdx
@@ -1,53 +1,53 @@
---
-title: I Don't See Emails on Records
-description: Troubleshooting missing emails on records.
+title: 레코드에서 이메일이 보이지 않음
+description: 레코드에서 누락된 이메일 문제 해결.
---
-## Common Reasons
+## 일반적인 원인
-### 1. Initial Sync Still in Progress
+### 1. 초기 동기화가 아직 진행 중
-Email sync takes time, especially for large mailboxes.
+이메일 동기화에는 시간이 걸리며, 특히 메일함이 큰 경우 더 오래 걸립니다. Twenty는 분당 약 **400건의 메시지**를 가져옵니다(이것은 Gmail API의 속도 제한에 의해 제한됩니다).
-* **Calendar sync**: Completes in minutes
-* **Email sync**: Can take several hours for large mailboxes
+* **캘린더 동기화**: 몇 분 안에 완료됨
+* **이메일 동기화**: 메일함 크기에 따라 달라짐 (예: 이메일 10,000개 ≈ 25분, 50,000개 ≈ 2시간)
-**Solution**: Wait up to a few hours for the initial import to complete.
+**해결 방법**: 초기 가져오기가 완료될 때까지 기다리세요. 메일함 크기를 기준으로 소요 시간을 추정할 수 있습니다.
-### 2. Contact Doesn't Exist in Twenty
+### 2. Twenty에 연락처가 존재하지 않음
-Emails only appear on existing People records. If the contact wasn't created yet:
+이메일은 기존 사람 레코드에만 표시됩니다. 연락처가 아직 생성되지 않았다면:
-* Enable **Contact Auto-Creation** in your mailbox settings
-* Or manually create the Person record first
+* 메일함 설정에서 **연락처 자동 생성**을 활성화하세요
+* 또는 먼저 사람 레코드를 수동으로 생성하세요
-**Solution**: Go to **Settings → Accounts**, select your mailbox, and enable contact auto-creation.
+**해결 방법**: **Settings → Accounts**로 이동하여 메일함을 선택하고 연락처 자동 생성을 활성화하세요.
-### 3. Internal Emails Are Excluded
+### 3. 내부 이메일은 제외됨
-Emails between colleagues (same email domain) are never synced to maintain privacy.
+동료 간 이메일(같은 이메일 도메인)은 개인 정보 보호를 위해 절대 동기화되지 않습니다.
-**Solution**: This is expected behavior. Only external emails are synced.
+**해결 방법**: 이는 의도된 동작입니다. 외부 이메일만 동기화됩니다.
-### 4. Email Is from a Group or Distribution List
+### 4. 그룹 또는 배포 목록에서 온 이메일
-Group emails and distribution lists are excluded from sync.
+그룹 이메일과 배포 목록은 동기화에서 제외됩니다.
-**Solution**: This is expected behavior.
+**해결 방법**: 이는 의도된 동작입니다.
-### 5. Folder Not Selected for Sync
+### 5. 동기화 대상으로 폴더가 선택되지 않음
-If you're using the Message Folder feature, some folders might be excluded.
+Message Folder 기능을 사용하는 경우 일부 폴더가 제외되어 있을 수 있습니다.
-**Solution**: Go to **Settings → Accounts**, select your mailbox, and check folder sync settings.
+**해결 방법**: **Settings → Accounts**로 이동하여 메일함을 선택하고 폴더 동기화 설정을 확인하세요.
-### 6. Wrong Email Address on Record
+### 6. 레코드의 이메일 주소가 잘못됨
-The Person record might have a different email address than the one used in the email.
+사람 레코드에 이메일에서 사용된 주소와 다른 이메일 주소가 등록되어 있을 수 있습니다.
-**Solution**: Add the correct email address to the Person record.
+**해결 방법**: 올바른 이메일 주소를 사람 레코드에 추가하세요.
-## Still Not Working?
+## 아직도 작동하지 않나요?
-1. Try disconnecting and reconnecting your mailbox
-2. Contact support if issues persist
+1. 메일함 연결을 끊었다가 다시 연결해 보세요
+2. 문제가 지속되면 지원팀에 문의하세요
diff --git a/packages/twenty-docs/l/ko/user-guide/calendar-emails/how-tos/limit-emails-imported.mdx b/packages/twenty-docs/l/ko/user-guide/calendar-emails/how-tos/limit-emails-imported.mdx
index 9569d2651a..9ff464ace5 100644
--- a/packages/twenty-docs/l/ko/user-guide/calendar-emails/how-tos/limit-emails-imported.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/calendar-emails/how-tos/limit-emails-imported.mdx
@@ -1,52 +1,50 @@
---
-title: Limit Emails Imported
-description: Control which emails are imported into Twenty.
+title: 가져오는 이메일 제한
+description: 어떤 이메일을 Twenty로 가져올지 제어하세요.
---
-## Overview
+## 개요
-By default, Twenty syncs all external emails from your connected mailbox. You can limit what gets imported using **folder selection** and **visibility settings**.
+기본적으로 Twenty는 연결된 메일박스의 모든 외부 이메일을 동기화합니다. **폴더 선택**과 **표시 설정**을 사용하여 가져올 항목을 제한할 수 있습니다.
-## Method 1: Folder Selection (Recommended)
+## 방법 1: 폴더 선택(권장)
-Control which email folders sync with Twenty:
+Twenty와 동기화할 이메일 폴더 제어:
-1. Go to **Settings → Releases → Lab**
-2. Enable **Message Folder**
-3. Return to **Settings → Accounts**
-4. Select your connected email account
-5. Choose which folders to sync:
+1. **설정 → 계정**으로 이동
+2. 연결된 이메일 계정을 선택하세요.
+3. 동기화할 폴더를 선택하세요:
-| Folder | Description |
-| ------------------ | ----------------------------- |
-| **Inbox** | Primary incoming emails |
-| **Sent** | Outgoing emails you've sent |
-| **Archive** | Archived messages |
-| **Custom Folders** | Any specific folders you want |
+| 폴더 | 설명 |
+| ------------- | --------- |
+| **받은 편지함** | 주요 수신 이메일 |
+| **보낸 편지함** | 발송한 이메일 |
+| **보관함** | 보관된 메시지 |
+| **사용자 지정 폴더** | 원하는 특정 폴더 |
-6. Exclude folders you don't want synced (Spam, Trash, personal folders)
+6. 동기화하지 않을 폴더를 제외하세요(스팸, 휴지통, 개인 폴더).
-This gives you precise control over which emails appear in your CRM without syncing everything.
+모든 이메일을 전부 동기화하지 않고도 CRM에 표시되는 이메일을 정확하게 제어할 수 있습니다.
-## Method 2: Contact Auto-Creation Settings
+## 방법 2: 연락처 자동 생성 설정
-Control when contacts are created from emails:
+이메일에서 연락처를 생성할 시점을 제어하세요:
-1. Go to **Settings → Accounts**
-2. Select your connected mailbox
-3. Choose an option:
- * **Deactivated**: No contacts created, but emails still sync to existing contacts
- * **Sent & Received**: Create contacts from all external emails
- * **Sent Only**: Only create contacts from emails you send
+1. **설정 → 계정**으로 이동
+2. 연결된 메일박스를 선택하세요.
+3. 옵션을 선택하세요:
+ * **비활성화**: 연락처는 생성되지 않지만, 이메일은 기존 연락처와 계속 동기화됩니다
+ * **발신 및 수신**: 모든 외부 이메일에서 연락처를 생성합니다
+ * **발신만**: 사용자가 보낸 이메일에서만 연락처를 생성합니다
-## What's Always Excluded
+## 항상 제외되는 항목
-These emails are never synced, regardless of settings:
+설정과 관계없이 다음 이메일은 동기화되지 않습니다:
-* **Internal emails**: Messages between colleagues (same domain)
-* **Group emails**: Distribution lists and group messages
-* **Spam/Trash**: System folders are typically excluded
+* **내부 이메일**: 동료 간(동일 도메인) 메시지
+* **그룹 이메일**: 배포 목록 및 그룹 메시지
+* **스팸/휴지통**: 시스템 폴더는 일반적으로 제외됩니다
-## Important Note
+## 중요 참고 사항
-We don't provide a CC email address for selective syncing. Use the folder selection feature above to achieve the same level of control.
+선택적 동기화를 위한 CC 이메일 주소는 제공하지 않습니다. 위의 폴더 선택 기능을 사용하여 동일한 수준의 제어를 구현하세요.
diff --git a/packages/twenty-docs/l/ko/user-guide/calendar-emails/overview.mdx b/packages/twenty-docs/l/ko/user-guide/calendar-emails/overview.mdx
index a05105e13a..8d73763cbe 100644
--- a/packages/twenty-docs/l/ko/user-guide/calendar-emails/overview.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/calendar-emails/overview.mdx
@@ -1,132 +1,130 @@
---
-title: Calendar & Emails
-description: Connect your email and calendar accounts to Twenty.
+title: 캘린더 및 이메일
+description: Twenty에 이메일과 캘린더 계정을 연결하세요.
image: /images/user-guide/emails/emails_header.png
---
-
+
-## Connection Options
+## 연결 옵션
-### Google Account (Gmail & Google Calendar)
+### Google 계정 (Gmail 및 Google 캘린더)
-1. Go to **Settings → Accounts**
-2. Click **Add account**
-3. Select **Continue with Google**
-4. Authorize Twenty to access your Gmail and Google Calendar
-5. Configure email sync settings (visibility, auto-creation) → click **Next**
-6. Configure calendar sync settings (visibility, auto-creation) → click **Add Account**
-7. Your emails and calendar events will start syncing automatically
+1. **설정 → 계정**으로 이동
+2. **계정 추가**를 클릭
+3. **Google로 계속**을 선택
+4. Twenty에게 Gmail 및 Google 캘린더에 대한 접근 권한을 부여
+5. 이메일 동기화 설정(가시성, 자동 생성)을 구성한 뒤 → **다음**을 클릭
+6. 캘린더 동기화 설정(가시성, 자동 생성)을 구성한 뒤 → **계정 추가**를 클릭
+7. 이메일과 캘린더 이벤트가 자동으로 동기화되기 시작합니다.
-### Microsoft Account (Outlook & Microsoft Calendar)
+### Microsoft 계정 (Outlook 및 Microsoft 캘린더)
-1. Go to **Settings → Accounts**
-2. Click **Add account**
-3. Select **Continue with Microsoft**
-4. Authorize Twenty to access your Outlook and Microsoft Calendar
-5. Configure email sync settings (visibility, auto-creation) → click **Next**
-6. Configure calendar sync settings (visibility, auto-creation) → click **Add Account**
-7. Your emails and calendar events will start syncing automatically
+1. **설정 → 계정**으로 이동
+2. **계정 추가**를 클릭
+3. **Microsoft로 계속**을 선택
+4. Twenty에게 Outlook과 Microsoft 캘린더에 대한 접근 권한을 부여
+5. 이메일 동기화 설정(가시성, 자동 생성)을 구성한 뒤 → **다음**을 클릭
+6. 캘린더 동기화 설정(가시성, 자동 생성)을 구성한 뒤 → **계정 추가**를 클릭
+7. 이메일과 캘린더 이벤트가 자동으로 동기화되기 시작합니다.
-### SMTP/CalDAV Setup (Other Providers)
+### SMTP/CalDAV 설정 (다른 공급자)
-For other email and calendar providers:
+다른 이메일 및 캘린더 공급자의 경우:
-1. Go to **Settings → Releases → Lab** to enable the feature
-2. Return to **Settings → Accounts**
-3. Configure SMTP settings for email
-4. Configure CalDAV settings for calendar
-5. Test the connection
+1. **설정 → 계정**으로 이동
+2. 이메일을 위한 SMTP 설정을 구성합니다.
+3. 캘린더를 위한 CalDAV 설정을 구성합니다.
+4. 연결을 테스트하세요.
-### Multiple Mailboxes
+### 다중 메일박스
-* **Unlimited Accounts**: Connect multiple email accounts per user
-* **Account Management**: Switch between different mailboxes
-* **Sync Settings**: Configure different settings per mailbox
+* **무제한 계정**: 사용자당 여러 이메일 계정 연결
+* **계정 관리**: 다양한 메일박스 간 전환
+* **동기화 설정**: 메일박스 별 다른 설정 구성
- Only true mailboxes can be connected (e.g., support@domain.com with its own inbox). Email aliases that forward to another mailbox cannot be connected to Twenty.
+ 실제 메일박스만 연결할 수 있습니다 (예: 자신의 인박스를 가진 support@domain.com). 다른 메일박스로 전달되는 이메일 별칭은 Twenty에 연결할 수 없습니다.
-## Email Configuration
+## 이메일 구성
-### Message Visibility
+### 메시지 가시성
-Choose different levels of visibility for your emails:
+이메일에 대한 가시성 수준 선택:
-* **Metadata Only**: Share only basic information (sender, recipient, date, time)
-* **Subject and Metadata**: Share subject line along with metadata
-* **All Email Content**: Share entire email content including attachments
+* **메타데이터만**: 기본 정보만 공유 (발신자, 수신자, 날짜, 시간)
+* **제목 및 메타데이터**: 메타데이터와 제목 줄 공유
+* **모든 이메일 내용**: 첨부 파일을 포함한 전체 이메일 내용 공유
-### Contact Auto-Creation
+### 연락처 자동 생성
-* **Deactivated**: No automatic contact creation
-* **For messages sent & received**: Create contacts for all external email interactions
-* **For messages sent only**: Create contacts only for emails you send
-* **Note**: Internal emails (same domain) are never synced to maintain privacy
+* **비활성화됨**: 자동 연락처 생성 없음
+* **발송 및 수신 메시지용**: 모든 외부 이메일 상호작용에 대해 연락처 생성
+* **발송 메시지용**: 발송하는 이메일에 대해서만 연락처 생성
+* **참고**: 내부 이메일 (같은 도메인)은 개인 정보 보호 유지를 위해 동기화되지 않습니다.
-When enabled, contacts are automatically linked to their Company records based on their email domain. If the company doesn't exist yet, Twenty creates it for you.
+활성화하면 연락처는 이메일 도메인을 기준으로 해당 회사 레코드에 자동으로 연결됩니다. 아직 회사가 존재하지 않으면 Twenty가 생성합니다.
-### Control which emails get sync with Message Folder Selection (Lab Feature)
+### 메시지 폴더 선택으로 동기화할 이메일 제어
-Control which email folders sync with Twenty:
+Twenty와 동기화할 이메일 폴더 제어:
-1. Go to **Settings → Releases → Lab** and enable **Message Folder**
-2. Return to **Settings → Accounts** and select your connected email account
-3. Choose which folders to sync:
- * **Inbox**: Primary incoming emails
- * **Sent**: Outgoing emails you've sent
- * **Custom Folders**: Any specific folders you want to include
- * **Exclude Folders**: Skip folders like Spam, Trash, or personal folders
+1. **설정 → 계정**으로 이동하여 연결된 이메일 계정을 선택하세요.
+2. 동기화할 폴더를 선택하세요:
+ * **받은 편지함**: 주요 수신 이메일
+ * **보낸 편지함**: 발송한 이메일
+ * **사용자 지정 폴더**: 포함하고 싶은 특정 폴더
+ * **폴더 제외**: 스팸, 휴지통 또는 개인 폴더 건너뛰기
-This gives you precise control over which emails appear in your CRM without syncing everything.
+모든 이메일을 동기화하지 않고 CRM에 나타나는 이메일을 정확하게 제어할 수 있습니다.
-**What Gets Synced:**
+**동기화되는 항목:**
-* **External Emails**: All emails with external contacts from selected folders
-* **Internal Emails**: Not synced (same domain emails remain private)
-* **Attachments**: Coming in H1 2026
+* **외부 이메일**: 선택한 폴더에서 외부 연락처와의 모든 이메일
+* **내부 이메일**: 동기화되지 않음 (같은 도메인 이메일은 비공개 유지)
+* **첨부 파일**: 2026년 상반기 제공 예정
-**Note**: We don't provide a CC email address for selective syncing. Instead, use the Message Folder feature above to achieve the same level of control over which emails sync with Twenty.
+**참고**: 선택적 동기화를 위한 CC 이메일 주소를 제공하지 않습니다. 대신에 위의 메시지 폴더 기능을 사용하여 Twenty와 동기화할 이메일을 동일한 수준으로 제어할 수 있습니다.
-## Calendar Configuration
+## 캘린더 구성
-### Event Visibility
+### 이벤트 가시성
-Choose what will be visible to other users in your workspace:
+작업 공간의 다른 사용자에게 보이는 내용을 선택하세요:
-* **Everything**: The whole event details will be shared with your team
-* **Metadata**: Only date & participants will be shared with your team
+* **모든 것**: 팀과 이벤트의 모든 세부사항 공유
+* **메타데이터**: 날짜 및 참가자만 팀과 공유됨
-### Contact Auto-Creation for Meetings
+### 회의를 위한 연락처 자동 생성
-* **Yes**: Automatically create contacts for meeting participants not in your CRM
-* **No**: Only link meetings to existing contacts
+* **예**: CRM에 없는 회의 참가자를 위해 연락처 자동 생성
+* **아니오**: 기존 연락처에만 회의 연결
-When enabled, contacts are automatically linked to their Company records based on their email domain. If the company doesn't exist yet, Twenty creates it for you.
+활성화하면 연락처는 이메일 도메인을 기준으로 해당 회사 레코드에 자동으로 연결됩니다. 아직 회사가 존재하지 않으면 Twenty가 생성합니다.
-### Control which events get sync
+### 동기화할 이벤트 제어
-* **Meeting Import**: Automatically import calendar events
-* **Contact Linking**: Link meetings to People and Company records
+* **회의 가져오기**: 자동으로 캘린더 이벤트 가져오기
+* **연락처 연결**: 회의를 사람과 회사 기록에 연결
-**What Gets Synced:**
+**동기화되는 항목:**
-* **Meetings**: Calendar events with external participants
-* **Contact Linking**: Events automatically linked to CRM records
-* **Team Events**: Shared calendar visibility
+* **회의**: 외부 참가자가 있는 캘린더 이벤트
+* **연락처 연결**: CRM 기록에 자동으로 연결되는 이벤트
+* **팀 이벤트**: 공유된 캘린더 가시성
-## Sync Frequency
+## 동기화 빈도
-**Updates every 5 minutes**: Both email and calendar data sync automatically every 5 minutes after the initial import.
+**5분마다 업데이트**: 초기 가져오기를 마친 후 5분마다 이메일 및 캘린더 데이터가 자동으로 동기화됩니다.
- **Initial sync timing**: Calendar sync completes quickly (usually within minutes), while email sync takes longer for large mailboxes—up to a few hours depending on volume. Don't worry if you see contacts from calendar events appearing before your email contacts; this is normal behavior.
+ **초기 동기화 소요 시간**: 캘린더 동기화는 빠르게 완료됩니다(보통 몇 분 이내에), 반면 메일박스가 큰 경우 이메일 동기화에는 더 오래 걸립니다. Twenty는 분당 약 **400건의 메시지**를 가져옵니다(Gmail API의 속도 제한으로 제한됨). 따라서 10,000개의 이메일이 있는 메일박스는 약 25분이 걸립니다. 캘린더 이벤트의 연락처가 이메일 연락처보다 먼저 표시되어도 걱정하지 마세요. 이는 정상적인 동작입니다.
-## Next Steps
+## 다음 단계
-* [Mailbox capabilities](/l/ko/user-guide/calendar-emails/capabilities/mailbox)
-* [Troubleshoot missing emails](/l/ko/user-guide/calendar-emails/how-tos/i-dont-see-emails-on-records)
+* [메일박스 기능](/l/ko/user-guide/calendar-emails/capabilities/mailbox)
+* [누락된 이메일 문제 해결](/l/ko/user-guide/calendar-emails/how-tos/i-dont-see-emails-on-records)
diff --git a/packages/twenty-docs/l/ko/user-guide/dashboards/capabilities/chart-settings.mdx b/packages/twenty-docs/l/ko/user-guide/dashboards/capabilities/chart-settings.mdx
new file mode 100644
index 0000000000..3dba3fcd06
--- /dev/null
+++ b/packages/twenty-docs/l/ko/user-guide/dashboards/capabilities/chart-settings.mdx
@@ -0,0 +1,275 @@
+---
+title: 차트 설정
+description: 필요에 맞게 데이터를 정확히 표시하도록 차트를 구성하세요.
+---
+
+import { ChartIcon } from '/snippets/chart-icon.mdx';
+
+## 차트 설정에 액세스
+
+1. 대시보드 오른쪽 상단에서 **편집** 버튼을 클릭합니다
+
+
+
+2. 대시보드가 편집 모드로 전환됩니다
+3. 아무 위젯이나 클릭하여 선택합니다
+4. 오른쪽에 설정 패널이 열립니다
+
+설정은 다음 섹션으로 구성됩니다:
+
+* **데이터**: 가져올 데이터와 필터링 방법
+* **X축**: 범주를 그룹화하고 정렬하는 방법(막대/선 차트)
+* **Y축**: 무엇을 측정하고 어떻게 표시할지(막대/선 차트)
+* **스타일**: 색상, 레이블, 시각적 옵션
+
+
+ 일부 설정은 다른 설정이 구성되었을 때만 표시됩니다. 예를 들어, **날짜 세분성**은 날짜 필드를 선택했을 때만 표시됩니다.
+
+
+---
+
+## 데이터 설정
+
+### 소스
+
+데이터를 가져올 객체를 선택합니다.
+
+1. **소스**를 클릭합니다
+2. 객체를 선택합니다(기회, 사람, 회사 등).
+
+모든 표준 및 사용자 지정 객체를 사용할 수 있습니다. 선택한 객체에 따라 필드 옵션이 달라지므로 소스를 변경하면 다른 설정이 초기화됩니다.
+
+
+
+### 필터
+
+차트에 포함할 레코드를 제한합니다.
+
+1. **필터**를 클릭합니다
+2. 필터 빌더가 열립니다
+3. **+ 필터 추가**를 클릭합니다
+4. 필드, 조건, 값을 선택합니다
+5. 필요에 따라 필터를 더 추가합니다
+
+필터는 테이블 보기에서와 동일하게 동작합니다. 이를 사용해 데이터의 특정 세그먼트에 집중하세요.
+
+**예시**: 단계가 "Won"인 기회만 필터링하여 성사된 거래만 표시합니다.
+
+
+
+
+ 날짜 필드의 경우, 자동으로 업데이트되는 "지난 7일" 또는 "이번 달"과 같은 동적 필터를 만들려면 **Is relative**를 사용해 보세요.
+
+
+
+ 고급 필터를 지원합니다—여러 필터 규칙을 추가하고 **And** 또는 **Or** 로직으로 결합하세요.
+
+
+---
+
+## X축 설정
+
+이 설정은 막대 및 선 차트의 가로축을 제어하며, 일반적으로 데이터가 범주로 그룹화되는 방식을 결정합니다.
+
+### 표시할 데이터
+
+데이터를 그룹화할 필드를 선택합니다. X축에 표시될 범주가 결정됩니다.
+
+**예시**: "Stage"를 선택하면 파이프라인 단계별로 그룹화된 데이터를, "Created date"를 선택하면 시간 경과에 따른 데이터를 볼 수 있습니다.
+
+
+
+### 날짜 세분성
+
+날짜 필드로 그룹화할 때 그룹화 기간을 선택합니다.
+
+| 옵션 | 그룹화 기준 | 출력 예 |
+| ---------- | -------- | ------------------------ |
+| **일** | 각 날짜 | 1월 1일, 1월 2일, 1월 3일... |
+| **주** | 달력 기준 주 | 1주차, 2주차, 3주차... |
+| **월** | 달력 기준 월 | 1월, 2월, 3월... |
+| **분기** | 회계 분기 | Q1, Q2, Q3, Q4 |
+| **연도** | 달력 기준 연도 | 2023, 2024, 2025 |
+| **요일** | 요일(집계) | 월요일, 화요일... (모든 월요일 합산) |
+| **연도의 달** | 월(집계) | 1월, 2월... (모든 1월 합산) |
+| **연도의 분기** | 분기(집계) | Q1, Q2, Q3, Q4(모든 Q1 합산) |
+
+"요일/연도 기준" 옵션은 전체 기간에 걸쳐 집계됩니다. **요일**을 사용하면 어떤 요일에 거래가 가장 많은지 확인할 수 있습니다. **월**을 사용하면 월별 추세를 볼 수 있습니다.
+
+### 정렬 기준
+
+X축의 범주 순서를 제어합니다.
+
+* **위치** – Select 필드 설정에 정의된 순서를 사용
+* **알파벳순** – A에서 Z까지(날짜는 시간순)
+* **값 기준** – 지표값으로 정렬(최대 또는 최소 우선)
+* **수동** – 드래그하여 사용자 지정 순서로 설정
+
+
+
+**팁**: 파이프라인 단계에는 **위치**를 사용하여 영업 프로세스 순서(Lead → Qualified → Proposal → Won)대로 표시하세요.
+
+
+ 표시되는 옵션은 필드 유형에 따라 다릅니다. Select 필드는 모든 옵션을 제공하지만 날짜 및 텍스트 필드는 더 적습니다.
+
+
+
+ 수동 정렬에서는 범주를 드래그해 사용자 지정 순서를 만들 수 있습니다—특정 세그먼트를 강조하거나 데이터로 스토리를 전달하는 데 완벽합니다.
+
+
+### 0 값 제외
+
+값이 0이거나 데이터가 없는 범주를 숨깁니다.
+
+* **켜짐**: 레코드가 없는 범주를 숨김
+* **꺼짐**: 비어 있어도 모든 범주를 표시
+
+희소한 데이터가 있는 차트를 정리하는 데 사용합니다.
+
+---
+
+## Y축 설정
+
+측정 항목과 표시 방식을 제어합니다.
+
+### 표시할 데이터
+
+지표를 계산할 필드와 연산을 선택합니다.
+
+* **개수** – 전체 개수, 비어 있음 개수, 비어 있지 않음 개수, 고유 값 개수
+* **수학** – 합계, 평균, 최솟값, 최댓값(숫자 필드)
+* **백분율** – 비어 있음 비율, 비어 있지 않음 비율
+
+Boolean 필드에는 true/false 개수 옵션이 추가됩니다. 날짜 필드가 있는 집계 차트에는 Earliest/Latest가 표시됩니다.
+
+**예시**: "Amount"에 합계를 선택하면 범주별 총 거래 금액을, 전체 개수를 선택하면 거래 수를 볼 수 있습니다.
+
+
+
+
+ 표시되는 옵션은 필드 및 차트 유형에 따라 다릅니다. 예상한 연산이 보이지 않으면 필드 유형을 확인하세요.
+
+
+### 비율
+
+Select, Multi-select 또는 Boolean 필드의 경우 특정 값의 비율을 계산할 수 있습니다.
+
+1. Select, Multi-select 또는 Boolean 필드를 선택합니다
+2. **Ratio**를 활성화합니다
+3. 측정할 옵션을 선택합니다
+
+**예시**: 모든 기회 대비 "Won" 거래의 비율을 표시합니다. 총 50개 중 10개가 "Won"이라면 차트에는 20%가 표시됩니다.
+
+### 그룹화 기준
+
+두 번째 차원을 추가해 다중 시리즈(여러 막대 또는 선)를 만듭니다.
+
+1. 먼저 X축 필드를 설정합니다
+2. **그룹화 기준**을 클릭합니다
+3. 두 번째 필드를 선택합니다
+
+**예시**: 단계(X축)와 소유자(그룹화 기준)로 거래를 그룹화하여 각 사람의 파이프라인 분포를 나란히 비교합니다.
+
+
+
+그룹화 기준을 설정하면 차트에 여러 색상이 표시되고 범례가 나타납니다.
+
+### 날짜 세분성
+
+그룹화 기준이 날짜 필드일 때 기간을 선택합니다(X축과 동일한 옵션).
+
+### 정렬 기준
+
+그룹화 기준이 설정된 경우, 그룹 시리즈의 표시 순서를 제어합니다(예: 각 범주 안에서 어떤 소유자의 막대가 먼저 나타날지).
+
+X축 정렬과 동일한 옵션(위치, 알파벳순, 수동)을 사용할 수 있지만, 보조 그룹화에는 값 기준 정렬을 사용할 수 없습니다.
+
+### 누적
+
+개별 값 대신 누적 합계를 표시합니다.
+
+* **꺼짐**: 각 막대/포인트가 자신의 값을 표시
+* **켜짐**: 각 막대/포인트가 이전 값들의 합계에 자신의 값을 더한 값을 표시
+
+**예시**: 1월 = 10, 2월 = 15
+
+* 누적 꺼짐: 10과 15를 표시
+* 누적 켜짐: 10과 25(10 + 15)를 표시
+
+누적을 사용해 시간 경과에 따른 목표 달성 진행도를 추적하세요.
+
+
+
+### 최솟값 범위 / 최댓값 범위
+
+Y축의 최소/최대 값을 고정합니다.
+
+* 비워 두면 자동 스케일링
+* 숫자를 입력해 경계를 고정합니다
+
+**사용 시점:**
+
+* 정확한 시각적 비교를 위해 최소값을 0으로 설정하세요
+* 여러 차트에서 일관된 축 범위를 위해 둘 다 설정하세요
+* 둘 다 설정하여 특정 값 범위에 집중하세요
+
+---
+
+## 스타일 설정
+
+### 색상
+
+차트의 색 구성표를 설정합니다. 다양한 색상 팔레트 중에서 선택합니다.
+
+
+ Select 필드로 그룹화하는 경우 차트는 필드 설정에서 각 옵션에 정의된 색상을 자동으로 사용합니다.
+
+
+### 축 이름
+
+표시할 축 레이블을 선택합니다: **없음**, **X축**, **Y축**, 또는 **둘 다**(막대 및 선 차트 전용).
+
+### 누적 막대 / 누적 선
+
+그룹화가 설정된 경우 다중 시리즈의 표시 방식을 선택합니다.
+
+* **꺼짐(그룹형)**: 시리즈가 나란히 표시됩니다. 그룹 간 정확한 값을 비교할 때 사용합니다.
+* **켜짐(누적형)**: 시리즈가 위로 겹쳐 누적되어 표시됩니다. 부분이 전체를 어떻게 구성하는지(구성 비율)를 보여줄 때 사용합니다.
+
+**예시**: 단계별 거래, 소유자 기준 그룹화
+
+* 그룹형: 각 소유자의 정확한 수치를 나란히 확인
+* 누적형: 단계별 총 거래 수와 각 소유자의 기여도를 누적으로 확인
+
+### 데이터 레이블
+
+차트 요소(막대, 포인트, 조각)에 값을 직접 표시합니다.
+
+* **켜짐**: 값이 차트에 표시됩니다
+* **꺼짐**: 값이 표시되지 않습니다(더 깔끔함)
+
+### 범례
+
+범례를 표시하거나 숨깁니다(그룹화가 설정된 경우에만 표시).
+
+* **켜짐**: 각 색상이 의미하는 바를 범례에 표시
+* **꺼짐**: 범례를 표시하지 않음
+
+
+ **범례 항목 위에 마우스를 올리면** 해당 그룹이 강조 표시됩니다. **클릭**하여 차트에서 일시적으로 숨깁니다.
+
+
+---
+
+## 차트별 참고 사항
+
+### 파이 차트
+
+* **각 조각이 나타내는 것** – 조각의 그룹화 기준을 정의
+* **빈 범주 숨기기** – 값이 0인 조각 제거
+* **가운데에 값 표시** – 집계 값(합계, 평균, 개수 등) 표시
+
+### 집계 차트
+
+* **접두사** – 숫자 앞에 텍스트 추가(예: `$`)
+* **접미사** – 숫자 뒤에 텍스트 추가(예: `%`)
diff --git a/packages/twenty-docs/l/ko/user-guide/dashboards/capabilities/dashboards.mdx b/packages/twenty-docs/l/ko/user-guide/dashboards/capabilities/dashboards.mdx
index b3d731e668..37465f80ba 100644
--- a/packages/twenty-docs/l/ko/user-guide/dashboards/capabilities/dashboards.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/dashboards/capabilities/dashboards.mdx
@@ -1,74 +1,92 @@
---
-title: Dashboards
-description: Create and organize dashboards with tabs to visualize your CRM data.
+title: 대시보드
+description: CRM 데이터를 시각화하기 위해 탭으로 대시보드를 생성하고 구성합니다.
---
-## Overview
+## 개요
-Dashboards in Twenty are organized in a hierarchy: **Dashboards → Tabs → Widgets**. Each dashboard can contain multiple tabs, and each tab contains widgets (charts, numbers, iFrames).
+Twenty의 대시보드는 계층 구조로 구성됩니다: **대시보드 → 탭 → 위젯**. 각 대시보드에는 여러 개의 탭을 포함할 수 있으며, 각 탭에는 위젯(차트, 숫자, iFrames)이 포함됩니다.
-## Creating a Dashboard
+## 새 대시보드 생성
-1. Go to **Dashboards** in the navigation
-2. Click **+ New Dashboard**
-3. Give your dashboard a name
-4. Start adding tabs and widgets
+1. 내비게이션에서 **대시보드**로 이동합니다
+2. **+ 새 레코드**를 클릭합니다
-## Working with Tabs
+
-Tabs help you organize your dashboard into logical sections.
+3. 대시보드에 이름을 지정합니다
+4. 탭과 위젯을 추가하기 시작합니다
-### Creating Tabs
+## 탭으로 작업하기
-1. In edit mode, click **+ Add Tab**
-2. Name your tab (e.g., "Pipeline Overview", "Team Performance")
-3. Add widgets to the tab
+탭은 대시보드를 논리적인 섹션으로 구성하는 데 도움이 됩니다.
-### Duplicating Tabs
+### 탭 만들기
-1. Click on the tab you want to duplicate
-2. Click the **Duplicate** button in the side panel
+1. In edit mode, click **+** in the tab bar, side panel will open on the right
+2. 탭의 이름을 지정합니다(예: "파이프라인 개요", "팀 성과")
+3. 탭에 위젯을 추가합니다
-## Dashboard Layout
+### Reordering Tabs
-### Arranging Widgets
+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
-* Drag and drop to position
-* Resize for emphasis
-* Group related charts together
+### Deleting Tabs
-### Duplicating a Dashboard
+1. In edit mode, click on the tab you want to delete
+2. Click the **Delete** button in the command menu
-1. Exit edit mode (view mode only)
-2. Open the command bar with **Cmd + K** (or **Ctrl + K** on Windows)
-3. Select **Duplicate dashboard**
+### 탭 복제
-### Best Practices
+1. 복제하려는 탭을 클릭합니다
+2. 사이드 패널에서 **복제** 버튼을 클릭합니다
-* **Logical flow**: Arrange from overview to detail
-* **Visual hierarchy**: Larger charts for key metrics
-* **Consistent styling**: Use matching colors and fonts
+
-## Visibility & Access
+## 대시보드 레이아웃
-### Dashboard Visibility
+### 위젯 배치
-Dashboards are visible to everyone who has access to your Twenty workspace. There is no private dashboard option at the moment.
+* 드래그 앤 드롭하여 위치를 지정합니다
+* 강조를 위해 크기를 조정합니다
+* 관련 차트를 함께 그룹화합니다
-### Favorites
+### 대시보드 복제
-You can add dashboards to your favorites for quick access. This is a personal setting—your favorites are not visible to other users.
+1. Select the dashboard you want to duplicate
+2. **Cmd + K**(Windows에서는 **Ctrl + K**)로 명령 표시줄을 엽니다
+3. **대시보드 복제**를 선택합니다
-To add a dashboard to favorites, open the dashboard and click the star icon.
+
-### Timezone Behavior
+### 모범 사례
-Dashboards currently display data based on the timezone of the user viewing them. This means the same dashboard may show different metrics for team members in different regions (e.g., APAC vs. US).
+* **논리적 흐름**: 개요에서 세부 정보 순으로 배열합니다
+* **시각적 위계**: 핵심 지표에는 더 큰 차트를 사용합니다
+* **일관된 스타일**: 일치하는 색상과 글꼴을 사용합니다
+
+## 가시성 및 액세스
+
+### 대시보드 가시성
+
+대시보드는 Twenty 워크스페이스에 액세스 권한이 있는 모든 사용자에게 표시됩니다. 현재는 비공개 대시보드 옵션이 없습니다.
+
+### 즐겨찾기
+
+빠르게 액세스할 수 있도록 대시보드를 즐겨찾기에 추가할 수 있습니다. 이는 개인 설정—사용자의 즐겨찾기는 다른 사용자에게 표시되지 않습니다.
+
+대시보드를 즐겨찾기에 추가하려면 대시보드를 열고 별 아이콘을 클릭합니다.
+
+### 시간대 동작 방식
+
+현재 대시보드는 보는 사람의 시간대를 기준으로 데이터를 표시합니다. 즉, 동일한 대시보드라도 지역이 다른 팀 구성원에게는 서로 다른 지표가 표시될 수 있습니다(예: APAC vs. US).
- **Coming soon**: We will add the ability to set a specific timezone for a dashboard, so all users see consistent data regardless of their location.
+ **곧 제공 예정**: 모든 사용자가 위치와 관계없이 일관된 데이터를 볼 수 있도록 대시보드별로 특정 시간대를 설정하는 기능을 추가할 예정입니다.
- **Coming soon**: Dashboard-level filters will allow you to apply filters across all widgets at once, making it faster to explore your data.
+ **곧 제공 예정**: 대시보드 수준의 필터를 통해 모든 위젯에 한 번에 필터를 적용할 수 있어 데이터를 더 빠르게 탐색할 수 있습니다.
diff --git a/packages/twenty-docs/l/ko/user-guide/dashboards/capabilities/widgets.mdx b/packages/twenty-docs/l/ko/user-guide/dashboards/capabilities/widgets.mdx
index fc12e61339..825dfd04f5 100644
--- a/packages/twenty-docs/l/ko/user-guide/dashboards/capabilities/widgets.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/dashboards/capabilities/widgets.mdx
@@ -1,131 +1,149 @@
---
-title: Widgets
-description: Explore the widget types and visualization options in Twenty.
+title: 위젯
+description: Twenty에서 위젯 유형과 시각화 옵션을 살펴보세요.
---
-## Available Widgets
+import { ChartIcon } from '/snippets/chart-icon.mdx';
-Twenty provides various widget types to visualize your CRM data.
+## 사용 가능한 위젯
-### Bar Charts
+Twenty는 CRM 데이터를 시각화할 수 있는 다양한 위젯 유형을 제공합니다.
-Display data as horizontal or vertical bars.
+### 막대 차트
-**Best for:**
+데이터를 가로 또는 세로 막대로 표시합니다.
-* Comparing values across categories
-* Showing rankings
-* Tracking metrics by time period
+
+
+
-**Example uses:**
+**적합한 용도:**
-* Deals by stage
-* Revenue by sales rep
-* Contacts added per month
+* 범주별 값 비교
+* 순위 표시
+* 기간별 지표 추적
+
+**사용 예시:**
+
+* 단계별 거래
+* 영업 담당자별 매출
+* 월별 추가된 연락처
- **Display limits**: Bar charts can show a maximum of 100 bars (horizontal) or 50 bars (vertical). If you see the warning "Undisplayed data: max X bars per chart", add filters to narrow down your data or change the grouping (e.g., group by week instead of days).
+ **표시 제한**: 막대 차트는 막대 최대 100개를 표시할 수 있으며, Group By를 사용하는 경우 막대당 최대 50개의 그룹을 표시할 수 있습니다. 경고 "Undisplayed data: max X bars per chart"가 표시되면, 필터를 추가해 데이터 범위를 좁히거나 그룹화를 변경하세요(예: 일 단위 대신 주 단위로 그룹화).
-### Pie Charts
+### 파이 차트
-Show proportions of a whole.
+전체 대비 비율을 표시합니다.
-**Best for:**
+
+
+
-* Showing composition or distribution
-* Comparing parts to whole
-* Highlighting major segments
+**적합한 용도:**
-**Example uses:**
+* 구성 또는 분포 표시
+* 부분과 전체 비교
+* 주요 세그먼트 강조
-* Deal distribution by source
-* Contact breakdown by industry
-* Pipeline composition by owner
+**사용 예시:**
-### Line Charts
+* 소스별 거래 분포
+* 업종별 연락처 분포
+* 소유자별 파이프라인 구성
-Display trends over time.
+### 선형 차트
-**Best for:**
+시간에 따른 추세를 표시합니다.
-* Tracking changes over time
-* Identifying trends
-* Comparing multiple metrics
+
+
+
-**Example uses:**
+**적합한 용도:**
-* Monthly deal count trend
-* Revenue growth over quarters
-* Activity levels over time
+* 시간 경과에 따른 변화 추적
+* 추세 파악
+* 여러 지표 비교
-### Number Metrics
+**사용 예시:**
-Display single key values prominently.
+* 월별 거래 건수 추세
+* 분기별 매출 성장
+* 시간 경과에 따른 활동 수준
-**Best for:**
+### 집계 차트
-* Highlighting KPIs
-* Showing totals or averages
-* Quick status checks
+단일 핵심 값을 눈에 띄게 표시합니다.
-**Example uses:**
+
+
+
-* Total pipeline value
-* Number of open opportunities
-* Conversion rate
+**적합한 용도:**
-**Advanced options:**
+* KPI 강조
+* 합계 또는 평균 표시
+* 빠른 상태 확인
-* **Ratio**: For Select fields, calculate ratios between values. Go to **Data on display** → select your field → enable the **Ratio** option.
-* **Prefix & Suffix**: Add custom text before or after the number (e.g., "$" prefix or "%" suffix) for better readability.
+**사용 예시:**
-### iFrames
+* 총 파이프라인 가치
+* 열린 기회 수
+* 전환율
-Embed external tools and content directly in your dashboard.
+**고급 옵션:**
-**Best for:**
+* **Ratio**: Select 필드에서 값 간 비율을 계산합니다. **Data on display**로 이동 → 필드를 선택 → **Ratio** 옵션을 활성화하세요.
+* **Prefix & Suffix**: 가독성을 높이기 위해 숫자 앞이나 뒤에 사용자 지정 텍스트를 추가합니다(예: "$" 접두사 또는 "%" 접미사).
-* Displaying external reports or dashboards
-* Integrating third-party sales tools
-* Showing live content from other systems
+### iFrames
-**Example uses:**
+대시보드에 외부 도구와 콘텐츠를 직접 삽입합니다.
-* Metrics from your Support tool
-* Metrics from your dialer
-* Live content from your Sales sequence tool
+
+
+
+
+**적합한 용도:**
+
+* 외부 보고서 또는 대시보드 표시
+* 타사 영업 도구 통합
+* 다른 시스템의 실시간 콘텐츠 표시
+
+**사용 예시:**
+
+* 지원 도구의 지표
+* 다이얼러의 지표
+* 영업 시퀀스 도구의 실시간 콘텐츠
+
+### 서식 있는 텍스트
+
+대시보드에 서식 있는 텍스트와 콘텐츠를 직접 추가하세요.
+
+
+
+
+
+**적합한 용도:**
+
+* 컨텍스트 또는 지침 추가
+* 대시보드 설명
+* 노트 및 주석
+
+**기능:**
+
+* 서식 있는 텍스트 편집(굵게, 기울임, 목록 등)
+* 이미지 및 파일 업로드
+* Markdown 스타일 편집
- **Coming soon**: Gauge charts and tables are not yet available but are on our roadmap.
+ **곧 제공 예정**: 게이지 차트와 표는 아직 사용할 수 없지만 로드맵에 포함되어 있습니다.
-## Configuring Widgets
+### 위젯 복제
-### Data Source
-
-1. Select the object to visualize (Opportunities, People, etc.)
-2. Choose the metric to display (count, sum, average)
-3. Apply filters to focus on specific data
-
-### Grouping
-
-Group data by:
-
-* Fields (stage, owner, industry)
-* Time periods (day, week, month, quarter)
-* Custom segments
-
-### Styling
-
-Customize your charts with:
-
-* Colors and themes
-* Labels and legends
-* Size and positioning
-
-### Duplicating Widgets
-
-1. Click on the widget
-2. Open **Options**
-3. Click **Duplicate widget**
+1. 위젯을 클릭하세요
+2. **Options**를 여세요
+3. **Duplicate widget**을 클릭하세요
diff --git a/packages/twenty-docs/l/ko/user-guide/dashboards/how-tos/dashboards-faq.mdx b/packages/twenty-docs/l/ko/user-guide/dashboards/how-tos/dashboards-faq.mdx
index 7af41b4efa..de90677ba2 100644
--- a/packages/twenty-docs/l/ko/user-guide/dashboards/how-tos/dashboards-faq.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/dashboards/how-tos/dashboards-faq.mdx
@@ -1,59 +1,55 @@
---
-title: Dashboards FAQ
-description: Frequently asked questions about dashboards in Twenty.
+title: 대시보드 FAQ
+description: Twenty의 대시보드에 관한 자주 묻는 질문입니다.
---
-
- No, dashboards are currently visible to everyone with access to your Twenty workspace. Private dashboards are not yet available.
+
+ 아니요. 현재는 Twenty 워크스페이스에 접근 권한이 있는 모든 사용자에게 대시보드가 표시됩니다. 비공개 대시보드는 아직 제공되지 않습니다.
-
- Dashboards currently display data based on the viewer's timezone. If you're in different regions (e.g., APAC vs. US), you may see slightly different numbers for the same dashboard. We're working on adding a timezone setting per dashboard to ensure consistent data across teams.
+
+ 현재 대시보드는 보는 사람의 시간대를 기준으로 데이터를 표시합니다. 서로 다른 지역(예: APAC과 미국)에 있는 경우, 동일한 대시보드에서도 숫자가 약간 다르게 보일 수 있습니다. 팀 간 일관된 데이터를 보장하기 위해, 대시보드별 시간대 설정을 추가하는 작업을 진행 중입니다.
-
- Exporting dashboards is not available at the moment. This feature is on our roadmap.
+
+ 현재는 대시보드 내보내기를 지원하지 않습니다. 이 기능은 로드맵에 포함되어 있습니다.
-
- No, sharing dashboards with users outside your Twenty workspace (non-Twenty users) is not currently supported.
+
+ 아니요. 현재는 Twenty 워크스페이스 외부 사용자(비 Twenty 사용자)와 대시보드를 공유할 수 없습니다.
-
- Open the dashboard you want to favorite, then click the star icon. Favorites are personal—they won't affect other users.
+
+ 즐겨찾기에 추가할 대시보드를 연 다음 별 아이콘을 클릭하세요. 즐겨찾기는 개인 설정이며 다른 사용자에게는 영향을 주지 않습니다.
-
- * **Tabs** organize your dashboard into sections (like pages within the dashboard)
- * **Widgets** are the individual visualizations (charts, numbers, iFrames) within each tab
+
+ * **탭**은 대시보드를 섹션으로 구성합니다(대시보드 내의 페이지와 비슷함)
+ * **위젯**은 각 탭 안에 있는 개별 시각화 요소입니다(차트, 숫자, iFrame 등)
- Structure: Dashboard → Tabs → Widgets
+ 구성: 대시보드 → 탭 → 위젯
-
- Bar charts have display limits: 100 bars for horizontal charts, 50 for vertical. If your data exceeds this, add filters to narrow down the results or change the grouping (e.g., group by week instead of day).
+
+ 대시보드 수준의 필터는 아직 제공되지 않지만, 이 기능은 로드맵에 포함되어 있습니다. 현재는 각 위젯에 개별적으로 필터를 적용해야 합니다.
-
- Dashboard-level filters are not available yet, but this feature is on our roadmap. Currently, you need to apply filters to each widget individually.
+
+ 아직 안 됩니다. 게이지 차트와 표는 로드맵에 포함되어 있으며 향후 릴리스에 추가될 예정입니다.
-
- Not yet. Gauge charts and tables are on our roadmap and will be added in a future release.
+
+ 1. 보기 모드인지 확인하세요(편집 중이 아님).
+ 2. **Cmd + K**(Windows에서는 **Ctrl + K**)로 명령 표시줄을 여세요
+ 3. **대시보드 복제**를 선택하세요
-
- 1. Make sure you're in view mode (not editing)
- 2. Open the command bar with **Cmd + K** (or **Ctrl + K** on Windows)
- 3. Select **Duplicate dashboard**
-
+
+ CRM 데이터가 변경되면 위젯이 자동으로 업데이트됩니다:
-
- Widgets update automatically as your CRM data changes:
-
- * Real-time updates for most metrics
- * Use the refresh button for a manual update if needed
- * Historical data is preserved for trend analysis
+ * 대부분의 지표는 실시간으로 업데이트됩니다
+ * 필요 시 새로고침 버튼을 눌러 수동으로 업데이트하세요
+ * 추세 분석을 위해 과거 데이터가 보존됩니다
diff --git a/packages/twenty-docs/l/ko/user-guide/dashboards/how-tos/widget-faq.mdx b/packages/twenty-docs/l/ko/user-guide/dashboards/how-tos/widget-faq.mdx
new file mode 100644
index 0000000000..221282b5ee
--- /dev/null
+++ b/packages/twenty-docs/l/ko/user-guide/dashboards/how-tos/widget-faq.mdx
@@ -0,0 +1,67 @@
+---
+title: 위젯 FAQ
+description: 자주 묻는 질문과 오류 메시지를 설명합니다.
+---
+
+
+
+ 세 가지 옵션:
+
+ * **Percent empty/not empty**: Data on display에서 Percent empty 또는 Percent not empty를 선택하세요
+ * **Ratio**: Select 또는 Checkbox 필드에서 전체 레코드 대비 특정 옵션의 백분율을 표시하려면 Ratio를 활성화하세요
+ * **Suffix**: 집계 차트의 경우 Style settings에서 Suffix로 `%`를 추가하세요
+
+
+
+ **Group by**를 사용할 때, 계열을 두 가지 방식으로 표시할 수 있습니다:
+
+ * **Grouped**: 막대를 나란히 표시 — 정확한 값 비교에 적합
+ * **Stacked**: 막대를 위로 쌓아 표시 — 구성을 보여주기에 적합
+
+ 전환하려면 Style settings에서 **Stacked**를 전환하세요.
+
+
+
+ 사용 가능한 연산은 **필드 유형**에 따라 달라집니다:
+
+ * **숫자 필드**: Sum, Average, Min, Max
+ * **날짜 필드**: Earliest, Latest (집계 차트에만 해당)
+ * **체크박스 필드**: Count true, Count false
+
+ 옵션이 보이지 않으면, 호환되는 필드 유형을 선택했는지 확인하세요.
+
+
+
+ 많은 설정은 전제 조건이 충족될 때만 표시됩니다:
+
+ * **Date granularity**: 먼저 날짜 필드를 선택하세요
+ * **Group by, Legend, Stacked**: 먼저 Source를 설정하세요
+ * **Legend, Stacked toggles**: 먼저 Group by를 설정하세요
+
+ 설정이 보이지 않으면 먼저 해당 전제 조건을 설정하세요.
+
+
+
+ 차트가 구성과 일치하는 레코드를 찾지 못했습니다.
+
+ **해결 방법:** 필터를 제거하거나 조정하고, 올바른 Source object를 선택했는지 확인하거나, 선택한 날짜 범위에 해당하는 레코드가 존재하는지 확인하세요.
+
+
+
+ 필수 설정이 누락되었거나 호환되지 않습니다.
+
+ **해결 방법:** Source가 설정되어 있고, Data on display가 구성되어 있으며, 필요한 그룹화 필드가 선택되어 있는지 확인하세요.
+
+
+
+ 데이터가 표시 한도를 초과했습니다(막대 100개, 데이터 포인트 100개 또는 슬라이스 100개).
+
+ **해결 방법:** 데이터를 좁히기 위해 필터를 추가하거나, date granularity를 Day에서 Week 또는 Month로 변경하세요.
+
+
+
+ 선택한 필드에 필터된 레코드의 값이 없거나, 필드 유형이 예상 데이터와 일치하지 않습니다.
+
+ **해결 방법:** 다른 필드를 사용해 보거나, 선택한 필드에 대해 레코드에 값이 있는지 확인하세요.
+
+
diff --git a/packages/twenty-docs/l/ko/user-guide/dashboards/overview.mdx b/packages/twenty-docs/l/ko/user-guide/dashboards/overview.mdx
index 3a739b5d43..805d6c50a8 100644
--- a/packages/twenty-docs/l/ko/user-guide/dashboards/overview.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/dashboards/overview.mdx
@@ -1,79 +1,85 @@
---
-title: Dashboards
-description: Learn the basics of reporting and dashboards in Twenty.
+title: 대시보드
+description: Twenty에서 보고 및 대시보드의 기본을 알아보세요.
image: /images/user-guide/reporting/pie-chart.png
---
-
+
-## Understanding Dashboards
-
-Dashboards in Twenty provide a visual way to track your key performance metrics and gain insights from your CRM data.
-
-
-
-## Key Concepts
-
-### Dashboards
-
-A dashboard is a collection of tabs that display your CRM data at a glance. You can create multiple dashboards for different purposes:
-
-* Sales performance
-* Team activity
-* Pipeline health
-* Custom metrics
-
-### Tabs
-
-Tabs allow you to organize your dashboard into sections. Each tab contains one or more widgets.
-
-### Widgets
-
-Widgets are individual visualizations that display specific data. Types include:
-
-* Bar charts
-* Pie charts
-* Line charts
-* Number metrics
-* iFrames
-
- **Current limitations**:
-
- * Exporting dashboards and sharing with external users (non-Twenty users) are not available at the moment.
- * Gauge charts and tables are not yet available.
+ 대시보드는 현재 베타 단계입니다. 해당 기능은 **설정 → 업데이트 → 얼리 액세스**에서 활성화할 수 있습니다.
-## Getting Started
+## 대시보드 이해하기
-### Creating Your First Dashboard
+Twenty의 대시보드는 핵심 성과 지표를 추적하고 CRM 데이터에서 인사이트를 얻을 수 있는 시각적 방법을 제공합니다.
-1. Navigate to the **Dashboards** section
-2. Click **+ New Dashboard**
-3. Give your dashboard a name
-4. Add tabs to organize your content
-5. Add widgets to display your data
-6. Save
+
-### Adding Widgets
+## 핵심 개념
-1. Open a tab on your dashboard
-2. Click **+ Add Widget**
-3. Select the widget type
-4. Choose the data source (object)
-5. Configure the widget settings
-6. Save and view your widget
+### 대시보드
-## Best Practices
+대시보드는 CRM 데이터를 한눈에 보여주는 탭 모음입니다. 다양한 목적에 맞게 여러 대시보드를 만들 수 있습니다:
-* **Start simple**: Begin with a few key metrics and add more over time
-* **Focus on actionable data**: Display metrics that drive decisions
-* **Regular review**: Check your dashboards regularly to spot trends
-* **Share with team**: Make dashboards visible to relevant team members
+* 영업 성과
+* 팀 활동
+* 파이프라인 상태
+* 맞춤형 지표
-## Next Steps
+### 탭
-* [Widgets and visualizations](/l/ko/user-guide/dashboards/capabilities/widgets)
-* [Dashboards FAQ](/l/ko/user-guide/dashboards/how-tos/dashboards-faq)
+탭을 사용하면 대시보드를 섹션으로 구성할 수 있습니다. 각 탭에는 하나 이상의 위젯이 포함됩니다.
+
+### 위젯
+
+위젯은 특정 데이터를 표시하는 개별 시각화 요소입니다. 유형은 다음과 같습니다:
+
+* 막대 차트
+* 파이 차트
+* 선형 차트
+* 집계 차트
+* iFrame
+* 서식 있는 텍스트
+
+
+ **현재 제한 사항**:
+
+ * 대시보드 내보내기와 외부 사용자(Twenty 비사용자)와의 공유는 현재 제공되지 않습니다.
+ * 게이지 차트와 표는 아직 제공되지 않습니다.
+
+
+## 시작하기
+
+### 첫 번째 대시보드 만들기
+
+1. **대시보드** 섹션으로 이동합니다
+2. **+ 새 대시보드**를 클릭합니다
+3. 대시보드에 이름을 지정합니다
+4. 콘텐츠를 구성할 수 있도록 탭을 추가합니다
+5. 데이터를 표시할 위젯을 추가합니다
+6. 저장
+
+### 위젯 추가하기
+
+1. 대시보드에서 탭을 엽니다
+2. **+ 위젯 추가**를 클릭합니다.
+3. 위젯 유형을 선택합니다
+4. 데이터 소스(객체)를 선택합니다
+5. 위젯 설정을 구성합니다
+6. 위젯을 저장하고 확인합니다
+
+## 모범 사례
+
+* **간단하게 시작하세요**: 몇 가지 핵심 지표부터 시작한 뒤 시간이 지나며 더 추가하세요
+* **실행 가능한 데이터에 집중하세요**: 의사결정을 이끄는 지표를 표시하세요
+* **정기 검토**: 추세를 파악하기 위해 대시보드를 정기적으로 확인하세요
+* **팀과 공유하세요**: 관련 팀 구성원이 대시보드를 볼 수 있도록 설정하세요
+
+## 다음 단계
+
+* [위젯과 시각화](/l/ko/user-guide/dashboards/capabilities/widgets)
+* [차트 설정 레퍼런스](/l/ko/user-guide/dashboards/capabilities/chart-settings)
+* [대시보드 FAQ](/l/ko/user-guide/dashboards/how-tos/dashboards-faq)
diff --git a/packages/twenty-docs/l/ko/user-guide/data-migration/capabilities/error-handling.mdx b/packages/twenty-docs/l/ko/user-guide/data-migration/capabilities/error-handling.mdx
index 7ca870132f..b7ce97a462 100644
--- a/packages/twenty-docs/l/ko/user-guide/data-migration/capabilities/error-handling.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/data-migration/capabilities/error-handling.mdx
@@ -1,76 +1,76 @@
---
-title: Error Handling & Validation
-description: Review and fix import errors directly in the UI before confirming.
+title: 오류 처리 및 유효성 검사
+description: 확인하기 전에 UI에서 가져오기 오류를 검토하고 바로 수정하세요.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-## Pre-Import Validation
+## 가져오기 전 유효성 검사
-After uploading your file and mapping fields, Twenty validates your data **before** importing. This allows you to catch and fix errors without affecting your existing data.
+파일을 업로드하고 필드를 매핑한 후, Twenty는 데이터를 가져오기 **이전에** 유효성 검사를 수행합니다. 이렇게 하면 기존 데이터에 영향을 주지 않고 오류를 찾아 수정할 수 있습니다.
-## How It Works
+## 작동 방식
-1. **Upload** your CSV file
-2. **Map** your columns to Twenty fields
-3. **Review** the potential errors highlighted in yellow
-4. **Fix errors** directly in the UI
-5. **Confirm** the import
+1. **업로드**: CSV 파일을 업로드하세요
+2. **매핑**: 열을 Twenty 필드에 매핑하세요
+3. **검토**: 노란색으로 강조 표시된 잠재적 오류를 확인하세요
+4. **오류 수정**: UI에서 바로 수정하세요
+5. **확인**: 가져오기를 확인하세요
-
+
-## Error Display
+## 오류 표시
-Rows with issues are highlighted in **yellow**. You can:
+문제가 있는 행은 **노란색**으로 강조 표시됩니다. 다음을 수행할 수 있습니다:
-* **Edit the cell directly** to fix the error
-* **Remove the row** to skip it entirely
+* **셀을 직접 편집**하여 오류를 수정하세요
+* **행을 제거**하여 완전히 건너뛰세요
-This inline editing saves time—no need to go back to your spreadsheet, fix errors, and re-upload.
+이 인라인 편집은 시간을 절약해 줍니다—스프레드시트로 돌아가 오류를 수정하고 다시 업로드할 필요가 없습니다.
-## Common Error Types
+## 일반적인 오류 유형
-### Duplicate Values
+### 중복 값
-**Cause**: A unique field (email, domain) already exists in Twenty or appears twice in your file.
+**원인**: 고유 필드(이메일, 도메인)가 Twenty에 이미 존재하거나 파일에 두 번 나타납니다.
-**Fix**:
+**해결 방법**:
-* Edit the duplicate value in the import UI
-* Remove one of the duplicate rows
+* 가져오기 UI에서 중복 값을 편집하세요
+* 중복된 행 중 하나를 제거하세요
-See [Uniqueness Constraints](/l/ko/user-guide/data-migration/capabilities/uniqueness-constraints) for more details on how uniqueness is enforced.
+고유성이 어떻게 적용되는지에 대한 자세한 내용은 [고유성 제약](/l/ko/user-guide/data-migration/capabilities/uniqueness-constraints)을 참조하세요.
-### Invalid Format
+### 잘못된 형식
-**Cause**: Data doesn't match the expected format (e.g., invalid email, wrong date format).
+**원인**: 데이터가 예상 형식과 일치하지 않습니다(예: 잘못된 이메일, 잘못된 날짜 형식).
-**Fix**: Edit the cell to use the correct format.
+**해결 방법**: 올바른 형식을 사용하도록 셀을 편집하세요.
-See [Field Mapping](/l/ko/user-guide/data-migration/capabilities/field-mapping) for the expected format of each field type.
+필드 유형별로 예상되는 형식은 [필드 매핑](/l/ko/user-guide/data-migration/capabilities/field-mapping)을 참조하세요.
-### Missing Required Fields
+### 필수 필드 누락
-**Cause**: A required field is empty.
+**원인**: 필수 필드가 비어 있습니다.
-**Fix**: Enter a value in the required field or remove the row.
+**해결 방법**: 필수 필드에 값을 입력하거나 해당 행을 제거하세요.
-### Relation Not Found
+### 관계를 찾을 수 없음
-**Cause**: The referenced record doesn't exist (e.g., a Company domain that wasn't imported).
+**원인**: 참조된 레코드가 존재하지 않습니다(예: 가져오지 않은 회사 도메인).
-**Fix**:
+**해결 방법**:
-* Import the parent records first
-* Or correct the reference value
+* 상위 레코드를 먼저 가져오세요
+* 또는 참조 값을 수정하세요
-See [Import Relations](/l/ko/user-guide/data-migration/capabilities/import-relations) for the correct import order and how to link records.
+올바른 가져오기 순서와 레코드를 연결하는 방법은 [관계 가져오기](/l/ko/user-guide/data-migration/capabilities/import-relations)를 참조하세요.
-## Tips for Fewer Errors
+## 오류를 줄이기 위한 팁
-1. **Download the template** to see expected format prior to importing your file
-2. **Clean your data** in the spreadsheet first
-3. **Import files in correct order** to import relations (Companies → People → Opportunities)
-4. **Test with small batches** before full import
-5. **Check for duplicates** before uploading
-6. **Limit the size of your file to 10,000 records** per file
+1. **템플릿을 다운로드**하여 파일을 가져오기 전에 예상 형식을 확인하세요
+2. **데이터 정리**: 먼저 스프레드시트에서 데이터를 정리하세요
+3. **올바른 순서로 파일을 가져오세요** 관계를 가져오기 위해 (Companies → People → Opportunities)
+4. **소규모 배치로 테스트**: 전체 가져오기 전에 테스트해 보세요
+5. **중복 확인**: 업로드 전에 중복을 확인하세요
+6. **파일 크기를 10,000개 레코드로 제한하세요** (파일당)
diff --git a/packages/twenty-docs/l/ko/user-guide/data-migration/capabilities/field-mapping.mdx b/packages/twenty-docs/l/ko/user-guide/data-migration/capabilities/field-mapping.mdx
index d9e06a24c0..316bcd92d5 100644
--- a/packages/twenty-docs/l/ko/user-guide/data-migration/capabilities/field-mapping.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/data-migration/capabilities/field-mapping.mdx
@@ -1,198 +1,198 @@
---
-title: Field Mapping
-description: How field mapping works during data import.
+title: 필드 매핑
+description: 데이터 가져오기 시 필드 매핑이 작동하는 방식.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-## How Field Mapping Works
+## 필드 매핑 작동 방식
-When you upload a file, Twenty analyzes your columns and attempts to match them to existing fields.
+파일을 업로드하면 Twenty가 열을 분석하여 기존 필드와 일치시키려고 시도합니다.
-### Automatic Mapping
+### 자동 매핑
-Twenty tries to match columns based on:
+Twenty는 다음을 기준으로 열을 일치시키려고 시도합니다:
-* Column header names (exact or similar matches)
-* Data type detection (dates, numbers, emails)
-* Common field patterns
+* 열 헤더 이름(정확 또는 유사 일치)
+* 데이터 유형 감지(날짜, 숫자, 이메일)
+* 일반적인 필드 패턴
-**Quick tip:** Export a few rows from the object you want to import. The exported file will have the exact column names Twenty expects, making automatic mapping seamless during import.
+**빠른 팁:** 가져오려는 객체에서 몇 행을 내보내세요. 내보낸 파일에는 Twenty가 기대하는 정확한 열 이름이 포함되어, 가져오는 동안 자동 매핑이 원활해집니다.
-### Manual Mapping Options
+### 수동 매핑 옵션
-For each column, you can:
+각 열에 대해 다음을 수행할 수 있습니다:
-* **Map to a field**: Select the matching Twenty field from a dropdown
-* **Do not map**: Skip the column entirely (data won't be imported)
+* **필드에 매핑**: 드롭다운에서 일치하는 Twenty 필드를 선택
+* **매핑하지 않음**: 해당 열을 완전히 건너뜁니다(데이터가 가져오지 않습니다)
-**Fields must exist before import.** The import creates records, not fields. Create custom fields under **Settings → Data Model** before importing.
+**가져오기 전에 필드가 존재해야 합니다.** 가져오기는 필드가 아니라 레코드를 생성합니다. 가져오기 전에 **설정 → 데이터 모델**에서 사용자 지정 필드를 생성하세요.
-## Field Type Compatibility
+## 필드 유형 호환성
-All field types available in the Data Model are supported for import.
+데이터 모델에서 제공되는 모든 필드 유형이 가져오기를 지원합니다.
-You can also import `id` values to either assign a specific ID to new records or update existing ones.
+`id` 값을 가져와 새 레코드에 특정 ID를 지정하거나 기존 레코드를 업데이트할 수도 있습니다.
-## Data Format Requirements
+## 데이터 형식 요구 사항
-**Some fields have special syntax.** We recommend downloading the sample file before preparing your import to see the expected syntax for each field type.
+**일부 필드는 특별한 구문이 있습니다.** 가져오기를 준비하기 전에 샘플 파일을 다운로드하여 각 필드 유형에 필요한 구문을 확인하는 것을 권장합니다.
-### Address Fields
+### 주소 필드
-Address is a nested field with multiple columns. Some can be left empty.
+Address는 여러 열로 구성된 중첩 필드입니다. 일부는 비워 둘 수 있습니다.
-* **Address / Address 1**: Street address line 1
-* **Address / Address 2**: Street address line 2
-* **Address / City**: City name
-* **Address / State**: State or province
-* **Address / Country**: Country name
-* **Address / Post Code**: Postal/ZIP code
+* **Address / Address 1**: 주소 1행
+* **Address / Address 2**: 주소 2행
+* **Address / City**: 도시 이름
+* **Address / State**: 주 또는 도
+* **Address / Country**: 국가 이름
+* **Address / Post Code**: 우편번호/ZIP 코드
-### Array Fields
+### 배열 필드
-Use the following format:
+다음 형식을 사용하세요:
```
-["value1","value2"]
+[\"value1\",\"value2\"]
```
-### Boolean Fields
+### 부울 필드
-Use `TRUE` or `FALSE` (uppercase) - not `true` or `false`
+`TRUE` 또는 `FALSE`(대문자) - `true`나 `false`는 사용하지 마세요
-### Currency Fields
+### 통화 필드
-Currency is a nested field with two columns that **both must be filled**:
+통화는 두 개의 열이 있는 중첩 필드이며, **두 열 모두** 채워야 합니다:
-* **Amount / Amount**: The numeric value (e.g., `1234.56`)
-* **Amount / Currency**: The currency code (e.g., `USD`, `EUR`)
+* **Amount / Amount**: 숫자 값(예: `1234.56`)
+* **Amount / Currency**: 통화 코드(예: `USD`, `EUR`)
-### Date Fields
+### 날짜 필드
-Supported formats:
+지원되는 형식:
-* `YYYY-MM-DD` (recommended)
+* `YYYY-MM-DD`(권장)
* `MM/DD/YYYY`
* `DD/MM/YYYY`
-* ISO 8601 format
+* ISO 8601 형식
-### Domain Fields
+### 도메인 필드
-* It is recommended to use the format `https://domain.com` to avoid creating duplicates, as this is the format used for Companies created by the mailbox and calendar synchronizations
-* A `Domain Label` and `Domain URL` can be filled: best practice is to fill `domain.com` in the label and `https://domain.com` in the url
-* Domains must be unique within the Companies object
-* **Domains must be unique within the file to import**
+* 중복 생성을 방지하려면 `https://domain.com` 형식 사용을 권장합니다. 이 형식은 메일박스 및 캘린더 동기화로 생성되는 Companies 객체에 사용됩니다.
+* `Domain Label`과 `Domain URL`을 모두 채울 수 있습니다. 모범 사례는 라벨에는 `domain.com`, URL에는 `https://domain.com`을 입력하는 것입니다.
+* 도메인은 Companies 객체 내에서 고유해야 합니다
+* **가져올 파일 내에서도 도메인은 고유해야 합니다**
-### Email Fields
+### 이메일 필드
-* Must be valid email format
-* Emails must be unique within the People object
-* **Emails must be unique within the file to import**
-* For additional emails: use **Emails / Primary Email** for the main email, and **Emails / Additional Emails** with this format:
+* 유효한 이메일 형식이어야 합니다
+* 이메일은 People 객체 내에서 고유해야 합니다
+* **가져올 파일 내에서도 이메일은 고유해야 합니다**
+* 추가 이메일의 경우: 기본 이메일은 **Emails / Primary Email**을 사용하고, **Emails / Additional Emails**에는 다음 형식을 사용하세요:
```
-["jane@twenty.com","jane.doe@twenty.com"]
+[\"jane@twenty.com\",\"jane.doe@twenty.com\"]
```
-### Id Fields
+### ID 필드
-Specifying an `id` during import is optional. Twenty auto-generates one if not provided.
+가져오기 중 `id`를 지정하는 것은 선택 사항입니다. 제공하지 않으면 Twenty가 ID를 자동으로 생성합니다.
-Use cases for mapping an `id` column:
+`id` 열을 매핑하는 사용 사례:
-* **Set a specific ID**: Choose the UUID for newly created records
-* **Update existing records**: Match against existing records to update them instead of creating duplicates. In that case, it is recommended to not map the other unique fields: mapping only one unique field ensures a smoother import.
+* **특정 ID 설정**: 새로 생성될 레코드에 사용할 UUID를 선택
+* **기존 레코드 업데이트**: 중복 생성 대신 기존 레코드와 일치시켜 업데이트 이 경우 다른 고유 필드는 매핑하지 않는 것을 권장합니다. 고유 필드를 하나만 매핑하면 가져오기가 더 원활합니다.
-If you provide an `id`, it must be in UUID format (e.g., `c776ee49-f608-4a77-8cc8-6fe96ae1e43f`).
+`id`를 제공하는 경우 UUID 형식이어야 합니다(예: `c776ee49-f608-4a77-8cc8-6fe96ae1e43f`).
-### JSON Fields
+### JSON 필드
-Use valid JSON format:
+유효한 JSON 형식을 사용하세요:
```
-{"key":"value","key2":"value2"}
+{\"key\":\"value\",\"key2\":\"value2\"}
```
-### Links Fields
+### 링크 필드
-Similar to Domain fields:
+도메인 필드와 유사합니다:
-* Fill both the label and URL columns: **Links / Link URL** and **Links / Link Label**
-* Use full URL format: `https://example.com`
-* For secondary links, use **Links / Secondary Links** column with this format:
+* 라벨과 URL 두 열을 모두 채우세요: **Links / Link URL** 및 **Links / Link Label**
+* 전체 URL 형식을 사용하세요: `https://example.com`
+* 보조 링크의 경우 **Links / Secondary Links** 열을 사용하고 다음 형식을 사용하세요:
```
-[{"url":"https://twenty.com","label":"Twenty"}]
+[{\"url\":\"https://twenty.com\",\"label\":\"Twenty\"}]
```
-### Multi-Select Fields
+### 다중 선택 필드
-Use the **API names** (not the display labels) in the following format:
+표시 라벨이 아니라 **API 이름**을 다음 형식으로 사용하세요:
```
-["VALUE1","VALUE2"]
+[\"VALUE1\",\"VALUE2\"]
```
-See [here](#finding-api-names-for-select-fields) where to find the API names.
+API 이름을 찾는 위치는 [여기](#finding-api-names-for-select-fields)를 참고하세요.
-New select options will not be created automatically by the import. They must be added under **Settings → Data Model** before importing.
+새 선택 옵션은 가져오기로 자동 생성되지 않습니다. 가져오기 전에 **설정 → 데이터 모델**에서 추가해야 합니다.
- **Import overwrites, it does not add.**
+ **가져오기는 추가하지 않고 덮어씁니다.**
- If a record already has `VALUE2` and `VALUE3` selected, and you import `["VALUE1"]`, the record will only have `VALUE1` after import. The previous selections are replaced, not merged.
+ 레코드에 이미 `VALUE2`와 `VALUE3`가 선택되어 있고 `[\"VALUE1\"]`을 가져오면, 가져온 후 해당 레코드에는 `VALUE1`만 남습니다. 이전 선택 항목은 병합되지 않고 대체됩니다.
-### Number Fields
+### 숫자 필드
-* Numbers only
-* Decimals use period: `1234.56`
-* No thousands separators
+* 숫자만 입력
+* 소수점은 점을 사용합니다: `1234.56`
+* 천 단위 구분 기호 사용 금지
-### Phone Fields
+### 전화 필드
-Phone is a nested field with multiple columns that **must be filled**
+전화는 여러 열로 구성된 중첩 필드이며 **반드시 채워야 합니다**
-* **Phones / Primary Phone Number**: The phone number (e.g., `4159095555`)
-* **Phones / Primary Phone Country Code**: Country code (e.g., `US`)
-* **Phones / Primary Phone Calling Code**: Dialing code (e.g., `+1`)
+* **Phones / Primary Phone Number**: 전화번호(예: `4159095555`)
+* **Phones / Primary Phone Country Code**: 국가 코드(예: `US`)
+* **Phones / Primary Phone Calling Code**: 전화 걸기 코드(예: `+1`)
-### Rating Fields
+### 평점 필드
-Use the API name format: `RATING_1`, `RATING_2`, `RATING_3`, `RATING_4`, `RATING_5`
+API 이름 형식을 사용하세요: `RATING_1`, `RATING_2`, `RATING_3`, `RATING_4`, `RATING_5`
-### Relation Fields
+### 관계 필드
-Please see our dedicated article: [Import Relations Between Objects](/l/ko/user-guide/data-migration/capabilities/import-relations)
+전용 문서를 참고하세요: [객체 간 관계 가져오기](/l/ko/user-guide/data-migration/capabilities/import-relations)
-### Select Fields
+### 선택 필드
-Use the **API name** of the option (not the display label):
+표시 라벨이 아니라 옵션의 **API 이름**을 사용하세요:
```
VALUE1
```
-See [here](#finding-api-names-for-select-fields) where to find the API names.
-New select options will not be created automatically by the import. They must be added under **Settings → Data Model** before importing.
+API 이름을 찾는 위치는 [여기](#finding-api-names-for-select-fields)를 참고하세요.
+새 선택 옵션은 가져오기로 자동 생성되지 않습니다. 가져오기 전에 **설정 → 데이터 모델**에서 추가해야 합니다.
-### Text Fields
+### 텍스트 필드
-* No special formatting required
-* Leading/trailing spaces are trimmed
+* 특별한 형식 지정은 필요하지 않습니다
+* 앞뒤 공백은 제거됩니다
-## Finding API Names
+## API 이름 찾기
-For Select, Multi-Select, and Array fields with predefined options, you must use the **API names**, not the display labels.
+사전 정의된 옵션이 있는 Select, Multi-Select, Array 필드의 경우 표시 레이블이 아니라 반드시 **API 이름**을 사용해야 합니다.
-### How to Find API Names
+### API 이름을 찾는 방법
-1. Go to **Settings → Data Model**
-2. Select the object and field
-3. Enable **Advanced mode** (toggle at the bottom right of the settings page)
-4. View the API name for each option
+1. **설정 → 데이터 모델**로 이동
+2. 객체와 필드를 선택하세요
+3. **고급 모드**를 활성화하세요(설정 페이지 오른쪽 하단의 토글)
+4. 각 옵션의 API 이름을 확인하세요
-
+
diff --git a/packages/twenty-docs/l/ko/user-guide/data-migration/capabilities/file-formats.mdx b/packages/twenty-docs/l/ko/user-guide/data-migration/capabilities/file-formats.mdx
index 168f74a002..3c8198b37c 100644
--- a/packages/twenty-docs/l/ko/user-guide/data-migration/capabilities/file-formats.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/data-migration/capabilities/file-formats.mdx
@@ -1,48 +1,48 @@
---
-title: Supported File Formats
-description: File formats supported for data import in Twenty.
+title: 지원되는 파일 형식
+description: Twenty에서 데이터 가져오기에 지원되는 파일 형식입니다.
---
-## Supported Formats
+## 지원되는 형식
-Twenty supports three file formats for import:
+Twenty는 가져오기를 위해 세 가지 파일 형식을 지원합니다:
-| Format | Extension | Notes |
-| ------------------ | --------- | ---------------------------- |
-| **CSV** | .csv | Recommended, most compatible |
-| **Excel** | .xlsx | Modern Excel format |
-| **Excel (Legacy)** | .xls | Older Excel format |
+| 형식 | 확장자 | 노트 |
+| -------------- | ----- | -------------- |
+| **CSV** | .csv | 권장, 가장 호환성이 높음 |
+| **Excel** | .xlsx | 최신 Excel 형식 |
+| **Excel(레거시)** | .xls | 이전 Excel 형식 |
-## File Requirements
+## 파일 요구 사항
-| Requirement | Value |
-| ---------------- | ------------------------------------- |
-| **Encoding** | UTF-8 recommended |
-| **Record limit** | 10,000 records per file |
-| **Structure** | First row must contain column headers |
-| **Content** | One object type per file |
+| 요구 사항 | 값 |
+| ---------- | ------------------------- |
+| **인코딩** | UTF-8 권장 |
+| **레코드 제한** | 파일당 10,000개 레코드 |
+| **구조** | 첫 번째 행에는 열 머리글이 포함되어야 합니다 |
+| **내용** | 파일당 개체 유형 1개 |
-## CSV Best Practices
+## CSV 모범 사례
-* **Delimiter**: Use comma (`,`) or semicolon (`;`)
-* **Text qualifier**: Use double quotes (`"`) for text containing commas
-* **Line endings**: Windows (CRLF) or Unix (LF) both supported
-* **Empty values**: Leave cells empty, don't use "NULL" or "N/A"
+* **구분 기호**: 쉼표(`,`) 또는 세미콜론(`;`)을 사용하세요
+* **텍스트 한정 기호**: 쉼표가 포함된 텍스트에는 큰따옴표(`\"`)를 사용하세요
+* **줄 바꿈**: Windows(CRLF) 또는 Unix(LF) 모두 지원
+* **빈 값**: 셀을 비워 두고, "NULL"이나 "N/A"는 사용하지 마세요
-## Excel Best Practices
+## Excel 모범 사례
-When exporting from Excel:
+Excel에서 내보낼 때:
-* Remove formulas (export values only)
-* Delete empty rows at the end
-* Ensure no merged cells
-* Use the first sheet only
+* 수식을 제거하세요(값만 내보내기)
+* 끝부분의 빈 행을 삭제하세요
+* 병합된 셀이 없도록 하세요
+* 첫 번째 시트만 사용하세요
-## Large Datasets
+## 대용량 데이터셋
-For datasets larger than 10,000 records:
+레코드가 10,000개를 초과하는 데이터셋의 경우:
-* Split into multiple files
-* Or use the [API import](/l/ko/user-guide/data-migration/how-tos/import-data-via-api) for unlimited records
+* 여러 파일로 분할하세요
+* 또는 레코드 수에 제한이 없는 [API 가져오기](/l/ko/user-guide/data-migration/how-tos/import-data-via-api)를 사용하세요
-For very large migrations (100,000+ records), the API is significantly faster and more reliable than CSV imports.
+매우 큰 마이그레이션(레코드 100,000개 이상)에는 CSV 가져오기보다 API가 훨씬 더 빠르고 신뢰성이 높습니다.
diff --git a/packages/twenty-docs/l/ko/user-guide/data-migration/capabilities/import-relations.mdx b/packages/twenty-docs/l/ko/user-guide/data-migration/capabilities/import-relations.mdx
index 502e1605fe..120bbdd76b 100644
--- a/packages/twenty-docs/l/ko/user-guide/data-migration/capabilities/import-relations.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/data-migration/capabilities/import-relations.mdx
@@ -1,94 +1,94 @@
---
-title: Import Relations Between Objects
-description: Import relationships between records via CSV.
+title: 객체 간 관계 가져오기
+description: CSV를 통해 레코드 간 관계를 가져옵니다.
---
-## Overview
+## 개요
-Twenty supports importing relationships between objects during CSV import. This allows you to link records (e.g., attach People to Companies) as part of your data migration.
+Twenty는 CSV 가져오기 시 객체 간 관계 가져오기를 지원합니다. 이를 통해 데이터 마이그레이션의 일부로 레코드를 연결할 수 있습니다(예: 사람을 회사에 연결).
-**Currently supported for import**: One-to-many relations pointing to a single object type on each side (e.g., People → Companies). Relations pointing to multiple object types are not yet supported in import/export.
+**현재 가져오기에서 지원됨**: 각 측이 단일 객체 유형을 가리키는 일대다 관계(예: 사람 → 회사). 여러 객체 유형을 가리키는 관계는 아직 가져오기/내보내기를 지원하지 않습니다.
-## How Relations Work in Twenty
+## Twenty에서 관계가 작동하는 방식
-### One to Many / Many to One
+### 일대다 / 다대일
-Twenty supports standard relations where one record links to many others:
+Twenty는 하나의 레코드가 여러 다른 레코드에 연결되는 표준 관계를 지원합니다:
-* **One Company → Many People**: A company can have multiple employees, but each person belongs to one company
-* **One Company → Many Opportunities**: A company can have multiple deals, but each opportunity belongs to one company
+* **하나의 회사 → 여러 사람**: 한 회사에는 여러 직원이 있을 수 있지만, 각 사람은 하나의 회사에 속합니다
+* **하나의 회사 → 여러 기회**: 한 회사에는 여러 거래가 있을 수 있지만, 각 기회는 하나의 회사에 속합니다
-### Relations That Can Point to Multiple Object Types
+### 여러 객체 유형을 가리킬 수 있는 관계
-Some relations can connect to different types of objects. This works in two ways:
+일부 관계는 서로 다른 유형의 객체에 연결될 수 있습니다. 이는 두 가지 방식으로 작동합니다:
-**Pattern 1: Many records linking to one record each from different object types**
+**패턴 1: 서로 다른 객체 유형의 많은 레코드가 각각 하나의 레코드에 연결**
-Several Notes, Tasks, or Activities can each be attached to multiple object types at once:
+여러 개의 노트, 작업 또는 활동을 한 번에 여러 객체 유형에 각각 연결할 수 있습니다:
-* **Notes** can be linked to one Person, one Company, and one Opportunity simultaneously
-* **Tasks** can be linked to one Person, one Company, and one Opportunity simultaneously
+* **노트**는 동시에 한 사람, 한 회사, 한 기회에 연결될 수 있습니다
+* **작업**은 동시에 한 사람, 한 회사, 한 기회에 연결될 수 있습니다
-Here, the Notes/Tasks are on the "many" side. Each links to one record per object type.
+여기서 노트/작업은 "many" 쪽에 있습니다. 각각은 객체 유형당 하나의 레코드에 연결됩니다.
-**Pattern 2: One record receiving links from many records of different object types**
+**패턴 2: 하나의 레코드가 서로 다른 객체 유형의 많은 레코드로부터 연결을 받는 경우**
-A Project can receive links from multiple records across different object types:
+프로젝트는 서로 다른 객체 유형의 여러 레코드로부터 연결을 받을 수 있습니다:
-* **A Project** can have many People linked to it, many Companies linked to it, and many Notes attached to it
+* **프로젝트**에는 많은 사람이 연결될 수 있고, 많은 회사가 연결될 수 있으며, 많은 노트가 첨부될 수 있습니다
-Here, the Project is on the "one" side. Multiple records from different objects can all link to the same Project.
+여기서 프로젝트는 "one" 쪽에 있습니다. 서로 다른 객체의 여러 레코드가 모두 동일한 프로젝트에 연결될 수 있습니다.
- **Import/Export limitation**: Relations that point to multiple object types (like Notes → People/Companies/Opportunities) are **not yet supported** in CSV import or export.
+ **가져오기/내보내기 제한사항**: 여러 객체 유형을 가리키는 관계(예: 노트 → 사람/회사/기회)는 CSV 가져오기나 내보내기에서 **아직 지원되지 않습니다**.
- * **Import**: Only one-to-many relations pointing to a single object type on each side can be imported
- * **Export**: Columns for relations pointing to multiple object types are currently left empty
+ * **가져오기**: 각 측이 단일 객체 유형을 가리키는 일대다 관계만 가져올 수 있습니다
+ * **내보내기**: 여러 객체 유형을 가리키는 관계의 열은 현재 비워 둡니다
- This is on our roadmap.
+ 이는 로드맵에 포함되어 있습니다.
-### What's Not Supported Today
+### 현재 지원되지 않는 사항
-**Many to Many relations** are not yet available. For example, you cannot currently create a relation where:
+**다대다 관계**는 아직 제공되지 않습니다. 예를 들어, 현재 다음과 같은 관계는 만들 수 없습니다:
-* Many People are linked to many Projects
+* 여러 사람이 여러 프로젝트에 연결되는 경우
-Many to Many relations are planned for H1 2026.
+다대다 관계는 2026년 상반기에 제공될 예정입니다.
-## Linking Records During Import
+## 가져오기 중 레코드 연결
-**Reminder**: Only one-to-many relations pointing to a single object type can be imported (e.g., People → Companies). Relations pointing to multiple object types (e.g., Notes → People/Companies/Opportunities) are not yet supported.
+**알림**: 각 측이 단일 객체 유형을 가리키는 일대다 관계만 가져올 수 있습니다(예: 사람 → 회사). 여러 객체 유형을 가리키는 관계(예: 노트 → 사람/회사/기회)는 아직 지원되지 않습니다.
-### Step 1: Identify the "One" and "Many" Sides
+### 1단계: "One"과 "Many" 쪽 식별하기
-First, determine which object is on the "one" side and which is on the "many" side of the relationship.
+먼저, 어떤 객체가 관계의 "one" 쪽이고 어떤 객체가 "many" 쪽인지 결정하세요.
-**Example**:
+**예시**:
-* **Company** is the "one" side (one company has many employees)
-* **People** is the "many" side (each person belongs to one company)
+* **회사**는 "one" 쪽입니다(한 회사에는 많은 직원이 있음)
+* **사람**은 "many" 쪽입니다(각 사람은 하나의 회사에 속함)
-### Step 2: Ensure the "One" Side Records Exist
+### 2단계: "One" 쪽 레코드가 존재하는지 확인
-Before importing the "many" side, the "one" side records must already exist in Twenty.
+"many" 쪽을 가져오기 전에, "one" 쪽 레코드는 이미 Twenty에 존재해야 합니다.
-* Import or create the "one" side records first (e.g., Companies)
-* Validate their unique identifier. This can be:
- * The `id` (Twenty's UUID)
- * A field set as unique (e.g., `domain` for Companies, or an external ID from your previous system)
+* "one" 쪽 레코드를 먼저 가져오거나 생성하세요(예: 회사)
+* 해당 고유 식별자를 확인하세요. 이는 다음 중 하나일 수 있습니다:
+ * `id`(Twenty의 UUID)
+ * 고유로 설정된 필드(예: 회사의 `domain`, 또는 이전 시스템의 외부 ID)
-The import will fail if a reference is made to a record that does not exist.
+존재하지 않는 레코드를 참조하면 가져오기는 실패합니다.
-### Step 3: Prepare Your CSV File
+### 3단계: CSV 파일 준비
-Add a column in your "many" side CSV file that references the "one" side record.
+"many" 쪽 CSV 파일에 "one" 쪽 레코드를 참조하는 열을 추가하세요.
-**Example**: For a People CSV file linking to Companies:
+**예시**: 회사에 연결되는 사람 CSV 파일의 경우:
```
firstName,lastName,email,companyDomain
@@ -96,53 +96,53 @@ John,Smith,john@acme.com,https://acme.com
Jane,Doe,jane@widgets.co,https://widgets.co
```
-**Important**:
+**중요**:
-* The value must **exactly match** the unique field on the Company record
-* For domains, use the **Domain URL** (e.g., `https://acme.com`), not the Domain Label
-* Map only **one** unique identifier per relation: this leads to a smoother import
+* 값은 회사 레코드의 고유 필드와 정확히 일치해야 합니다
+* 도메인의 경우 도메인 라벨이 아니라 **도메인 URL**(예: `https://acme.com`)을 사용하세요
+* 관계당 고유 식별자는 오직 하나만 매핑하세요: 이렇게 하면 가져오기가 원활해집니다
-### Step 4: Ensure the Relation Field Exists
+### 4단계: 관계 필드가 존재하는지 확인
-Before uploading your file, make sure the relation field exists between your objects.
+파일을 업로드하기 전에 객체 간에 관계 필드가 존재하는지 확인하세요.
-If it doesn't exist:
+존재하지 않는 경우:
-1. Go to **Settings → Data Model**
-2. Select your object (e.g., People)
-3. Create a relation field pointing to the target object (e.g., Company)
+1. **설정 → 데이터 모델**로 이동
+2. 객체를 선택하세요(예: 사람)
+3. 대상 객체(예: 회사)를 가리키는 관계 필드를 생성하세요
-### Step 5: Upload and Map the Relation
+### 5단계: 업로드하고 관계 매핑하기
-1. Upload your CSV file via the import UI
-2. In the field mapping step, find your relation column (e.g., `companyDomain`)
-3. Map it to the relation field (e.g., Company)
-4. Twenty will automatically link each record to the matching parent
+1. 가져오기 UI를 통해 CSV 파일을 업로드하세요
+2. 필드 매핑 단계에서 관계 열을 찾으세요(예: `companyDomain`)
+3. 이를 관계 필드에 매핑하세요(예: 회사)
+4. Twenty가 각 레코드를 일치하는 상위에 자동으로 연결합니다
-### Available Unique Fields for Relations
+### 관계를 위한 사용 가능한 고유 필드
-| Object | Unique Fields Available |
-| ------------------------------------- | --------------------------------------- |
-| **Companies** | `id`, `domain`, any custom unique field |
-| **People** | `id`, `email`, any custom unique field |
-| **Workspace Members** | `id`, `email` (not name) |
-| **Other standard and custom objects** | `id`, any field marked as unique |
+| 객체 | 사용 가능한 고유 필드 |
+| --------------------- | -------------------------------- |
+| **회사** | `id`, `domain`, 임의의 사용자 지정 고유 필드 |
+| **사람** | `id`, `email`, 임의의 사용자 지정 고유 필드 |
+| **워크스페이스 구성원** | `id`, `email`(이름 아님) |
+| **기타 표준 및 사용자 지정 객체** | `id`, 고유로 표시된 모든 필드 |
-**Linking to Workspace Members**: When the relation points to Workspace Members (your team logging into Twenty), reference them by their **email address**, not their name.
+**워크스페이스 구성원에 연결**: 관계가 워크스페이스 구성원(Twenty에 로그인하는 팀)을 가리키는 경우, 이름이 아니라 **이메일 주소**로 참조하세요.
-We recommend using `domain` for Companies and `email` for People, as these are human-readable and easy to maintain in spreadsheets.
+스프레드시트에서 읽기 쉽고 관리가 간편하므로, 회사에는 `domain`, 사람에는 `email` 사용을 권장합니다.
-**Reminder**: Soft-deleted records (visible under Command Menu → See deleted records) count toward uniqueness criteria. If you import a record with the same unique value as a deleted record, the deleted record will be restored. See [Uniqueness Constraints](/l/ko/user-guide/data-migration/capabilities/uniqueness-constraints) for more details.
+**알림**: 소프트 삭제된 레코드(Command Menu → See deleted records에서 확인 가능)도 고유성 기준에 포함됩니다. 삭제된 레코드와 동일한 고유 값을 가진 레코드를 가져오면, 삭제된 레코드가 복원됩니다. 자세한 내용은 [고유성 제약](/l/ko/user-guide/data-migration/capabilities/uniqueness-constraints)을 참조하세요.
-## Import Order Rule
+## 가져오기 순서 규칙
- **Always import the "one" side first!**
+ **항상 "one" 쪽을 먼저 가져오세요!**
- 1. **Companies** first (no dependencies)
- 2. **People** second (linked to Companies)
- 3. **Opportunities** third (linked to Companies/People)
- 4. **Custom objects** following their dependencies
+ 1. **회사** 먼저(종속성 없음)
+ 2. **사람** 두 번째(회사에 연결됨)
+ 3. **기회** 세 번째(회사/사람에 연결됨)
+ 4. **사용자 지정 객체**는 종속성에 따라 순서대로
- The parent record must exist before you can reference it.
+ 참조하려면 상위 레코드가 먼저 존재해야 합니다.
diff --git a/packages/twenty-docs/l/ko/user-guide/data-migration/capabilities/uniqueness-constraints.mdx b/packages/twenty-docs/l/ko/user-guide/data-migration/capabilities/uniqueness-constraints.mdx
index 5f6d05701b..6379b280e4 100644
--- a/packages/twenty-docs/l/ko/user-guide/data-migration/capabilities/uniqueness-constraints.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/data-migration/capabilities/uniqueness-constraints.mdx
@@ -1,72 +1,72 @@
---
-title: Uniqueness Constraints
-description: How Twenty enforces data uniqueness during import.
+title: 고유성 제약 조건
+description: Twenty가 가져오기 중 데이터 고유성을 강제하는 방법.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-## Overview
+## 개요
-Twenty enforces uniqueness on certain fields to prevent duplicate records and ensure data integrity. Understanding these constraints is essential for successful imports.
+Twenty는 중복 레코드를 방지하고 데이터 무결성을 보장하기 위해 일부 필드에 고유성을 강제합니다. 이러한 제약 조건을 이해하는 것은 성공적인 가져오기에 필수적입니다.
-## Default Unique Fields
+## 기본 고유 필드
-| Object | Unique Fields |
-| ------------------ | ---------------------- |
-| **People** | `id`, `email` |
-| **Companies** | `id`, `domain` |
-| **Custom objects** | `id` only (by default) |
+| 객체 | 고유 필드 |
+| ------------- | -------------- |
+| **사람** | `id`, `email` |
+| **회사** | `id`, `domain` |
+| **사용자 지정 개체** | `id`만 (기본값) |
-The `id` field is Twenty's internal identifier, auto-generated for each record. It uses UUID format (e.g., `c776ee49-f608-4a77-8cc8-6fe96ae1e43f`).
+`id` 필드는 Twenty의 내부 식별자로, 각 레코드에 대해 자동 생성됩니다. UUID 형식을 사용합니다(예: `c776ee49-f608-4a77-8cc8-6fe96ae1e43f`).
-## Custom Unique Fields
+## 사용자 지정 고유 필드
-You can define additional unique fields under **Settings → Data Model**:
+**설정 → 데이터 모델**에서 추가 고유 필드를 정의할 수 있습니다:
-1. Go to **Settings → Data Model**
-2. Select the object
-3. Click on a field
-4. Enable **Unique** in field settings
+1. **설정 → 데이터 모델**로 이동
+2. 객체를 선택하세요
+3. 필드를 클릭하세요
+4. 필드 설정에서 **Unique**를 활성화하세요
-### Use Cases for Custom Unique Fields
+### 사용자 지정 고유 필드의 활용 사례
-* **External IDs**: Store IDs from other systems (Salesforce ID, HubSpot ID)
-* **Business identifiers**: Employee numbers, customer codes
-* **Alternative contact info**: LinkedIn profile, phone number
+* **외부 ID**: 다른 시스템의 ID 저장(Salesforce ID, HubSpot ID)
+* **비즈니스 식별자**: 사번, 고객 코드
+* **대체 연락처 정보**: LinkedIn 프로필, 전화번호
-The field name `id` is reserved for Twenty's internal ID. Use a different name like `externalId` or `legacyId` for external identifiers.
+필드 이름 `id`는 Twenty의 내부 ID로 예약되어 있습니다. 외부 식별자에는 `externalId` 또는 `legacyId`와 같은 다른 이름을 사용하세요.
-## Import Behavior
+## 가져오기 동작 방식
-### Creating New Records
+### 새 레코드 생성
-If a unique field value doesn't exist, a new record is created.
+고유 필드 값이 존재하지 않으면 새 레코드가 생성됩니다.
-### Updating Existing Records
+### 기존 레코드 업데이트
-If a unique field value matches an existing record, that record is **updated** with the new data.
-To **update existing records**, it is recommended to **only match one unique field**.
+고유 필드 값이 기존 레코드와 일치하면 해당 레코드는 새 데이터로 **업데이트**됩니다.
+기존 레코드를 **업데이트**하려면 **하나의 고유 필드만** 매칭하는 것을 권장합니다.
-### Soft-Deleted Records
+### 소프트 삭제된 레코드
- **Deleted records count toward uniqueness.**
+ **삭제된 레코드도 고유성에 포함됩니다.**
- Soft-deleted records (visible under Command Menu → See deleted records) are included in uniqueness checks. If you import a record with the same unique value as a deleted record, the deleted record will be **restored** with the new data.
+ 소프트 삭제된 레코드는(Command Menu → See deleted records에서 확인 가능) 고유성 검사에 포함됩니다. 삭제된 레코드와 동일한 고유 값을 가진 레코드를 가져오면, 삭제된 레코드는 새 데이터로 **복원**됩니다.
-## Duplicate Detection During Import
+## 가져오기 중 중복 감지
-During the validation phase:
+유효성 검사 단계에서:
-* Duplicates within your file are highlighted in yellow
-* You can edit or remove duplicate rows from the UI before starting the import
+* 파일 내 중복 항목은 노란색으로 강조 표시됩니다
+* 가져오기를 시작하기 전에 UI에서 중복 행을 편집하거나 제거할 수 있습니다
-
+
-## Best Practices
+## 모범 사례
-1. **Remove duplicates** from your file before importing
-2. **Check for existing records** in Twenty before importing
-3. **Use external IDs** when migrating from other systems
-4. **Include unique fields** if you want to update existing records
+1. 가져오기 전에 파일에서 **중복 항목을 제거**하세요
+2. 가져오기 전에 Twenty에서 **기존 레코드가 있는지 확인**하세요
+3. 다른 시스템에서 마이그레이션할 때 **외부 ID를 사용**하세요
+4. 기존 레코드를 업데이트하려면 **고유 필드를 포함**하세요
diff --git a/packages/twenty-docs/l/ko/user-guide/data-migration/how-tos/export-your-data.mdx b/packages/twenty-docs/l/ko/user-guide/data-migration/how-tos/export-your-data.mdx
index 32df22faa7..944fb8ce13 100644
--- a/packages/twenty-docs/l/ko/user-guide/data-migration/how-tos/export-your-data.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/data-migration/how-tos/export-your-data.mdx
@@ -1,209 +1,209 @@
---
-title: Export Your Data
-description: Complete step-by-step guide to exporting data from Twenty.
+title: 데이터 내보내기
+description: Twenty에서 데이터를 내보내는 포괄적인 단계별 가이드.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-## Overview
+## 개요
-Export your workspace data to CSV for backups, reporting, or migration.
+백업, 보고, 또는 마이그레이션을 위해 워크스페이스 데이터를 CSV로 내보내세요.
-**Use cases:**
+**사용 사례:**
-* **Regular backups** — keep copies of your data
-* **External reporting** — analyze data in Excel, Google Sheets, or BI tools
-* **Migration** — move data to another system
-* **Bulk updates** — export, edit, and re-import to update records
+* **정기 백업** — 데이터 사본을 보관하세요
+* **외부 보고** — Excel, Google Sheets 또는 BI 도구에서 데이터를 분석하세요
+* **마이그레이션** — 데이터를 다른 시스템으로 이동하세요
+* **대량 업데이트** — 내보내고, 편집한 후, 다시 가져와 레코드를 업데이트하세요
-## What You Need to Know
+## 알아두어야 할 사항
-### Export Limits
+### 내보내기 제한
-* **Maximum 20,000 records** per export
-* Only **visible columns** are exported
-* Only **filtered records** are exported (based on your current view)
+* 내보내기 1회당 **최대 20,000개 레코드**
+* **표시된 열**만 내보내집니다
+* **필터링된 레코드**만 내보내집니다(현재 보기 기준)
-For larger exports (20,000+ records), use filters to export in batches or use the [API](/l/ko/developers/extend/capabilities/apis).
+더 큰 내보내기(20,000개 이상의 레코드)에는 필터를 사용해 배치로 내보내거나 [API](/l/ko/developers/extend/capabilities/apis)를 사용하세요.
-### Permissions
+### 권한
-You need the **"Export CSV"** permission to export data. Contact your workspace admin if you don't have this option.
+데이터를 내보내려면 **"Export CSV"** 권한이 필요합니다. 이 옵션이 없다면 워크스페이스 관리자에게 문의하세요.
-## Step 1: Navigate to the Object
+## 1단계: 객체로 이동
-Go to the object you want to export:
+내보내려는 객체로 이동하세요:
-* **People** — for contacts
-* **Companies** — for organizations
-* **Opportunities** — for deals
-* **Custom objects** — any object you've created
+* **People** — 연락처
+* **Companies** — 조직
+* **Opportunities** — 거래
+* **사용자 지정 객체** — 사용자가 생성한 모든 객체
-## Step 2: Configure Your View
+## 2단계: 보기 구성
-**Important:** The export includes only what's visible in your current view.
+**중요:** 내보내기에는 현재 보기에서 보이는 내용만 포함됩니다.
-### Add/Remove Columns
+### 열 추가/제거
-1. Click **Options → Fields** (or the **+** at the end of columns)
-2. Check the fields you want to export
-3. Uncheck fields you don't need
+1. **옵션 → 필드**를 클릭합니다(또는 열 끝의 **+**).
+2. 내보내려는 필드를 선택하세요
+3. 불필요한 필드의 선택을 해제하세요
-### Filter Records (Optional)
+### 레코드 필터링(선택 사항)
-If you only need a subset of data:
+일부 데이터만 필요하다면:
-1. Click **Filter**
-2. Add filter conditions (e.g., "Created date > January 1, 2024")
-3. Only matching records will be exported
+1. **필터**를 클릭합니다
+2. 필터 조건을 추가하세요(예: "Created date > January 1, 2024")
+3. 조건과 일치하는 레코드만 내보내집니다
-### Sort Records (Optional)
+### 레코드 정렬(선택 사항)
-1. Click a column header to sort
-2. The export will follow your sort order
+1. 정렬하려면 열 헤더를 클릭하세요
+2. 내보내기는 정렬 순서를 따릅니다
-**Create a dedicated export view.** Save a view specifically configured for exports so you don't need to reconfigure each time.
+**내보내기 전용 보기를 만드세요.** 내보내기에 맞게 구성한 보기를 저장해 매번 다시 구성할 필요가 없도록 하세요.
-## Step 3: Export the Data
+## 3단계: 데이터 내보내기
-1. Click the **⋮** icon on the top right of the table
-2. Select **Export view**
-3. Choose where to save the CSV file
-4. Wait for the download to complete
+1. 테이블 오른쪽 상단의 **⋮** 아이콘을 클릭하세요
+2. **Export view**를 선택하세요
+3. CSV 파일을 저장할 위치를 선택하세요
+4. 다운로드가 완료될 때까지 기다리세요
-## What Gets Exported
+## 내보내지는 내용
-| Included | Not Included |
-| -------------------------------- | ---------------------- |
-| All visible columns | Hidden columns |
-| Records matching current filters | Filtered-out records |
-| Custom field values | Fields not in the view |
-| Record IDs | File attachments |
-| Relation IDs | Images |
+| 포함됨 | 포함되지 않음 |
+| --------------- | ----------- |
+| 모든 표시된 열 | 숨김 열 |
+| 현재 필터와 일치하는 레코드 | 필터로 제외된 레코드 |
+| 사용자 지정 필드 값 | 보기에 없는 필드 |
+| 레코드 ID | 파일 첨부 |
+| 관계 ID | 이미지 |
-### Relation Fields
+### 관계 필드
-Relation IDs are only exported on the **"many" side** of a relationship:
+관계 ID는 관계의 **"many" 측**에서만 내보내집니다:
-* **People export** includes a `companyId` column (People → Company relation)
-* **Companies export** does NOT include `peopleIds` (Companies is the "one" side)
+* **People 내보내기**에는 `companyId` 열이 포함됩니다(People → Company 관계)
+* **Companies 내보내기**에는 `peopleIds`가 포함되지 않습니다(Companies는 "one" 측입니다)
-This means you can use the People export to re-import and maintain the Company link, but you'll need to re-import People after Companies to recreate the relationships.
+즉, People 내보내기를 사용해 다시 가져오면서 Company 연결을 유지할 수 있지만, 관계를 다시 만들려면 Companies 이후에 People을 다시 가져와야 합니다.
-## Exporting for Specific Purposes
+## 용도별 내보내기
-### For Backups
+### 백업용
-1. Create a view with **all fields** visible
-2. Remove all filters to include all records
-3. Export each object type separately
-4. Store exports in a secure location
-5. Set a recurring reminder (weekly/monthly)
+1. **모든 필드**가 보이도록 보기를 만들세요
+2. 모든 레코드를 포함하려면 모든 필터를 제거하세요
+3. 각 객체 유형을 별도로 내보내세요
+4. 내보낸 파일을 안전한 위치에 보관하세요
+5. 반복 알림을 설정하세요(매주/매월)
-### For External Reporting
+### 외부 보고용
-1. Include only the fields you need for analysis
-2. Apply filters to focus on relevant data
-3. Consider sorting by the field you'll analyze
+1. 분석에 필요한 필드만 포함하세요
+2. 관련 데이터에 집중할 수 있도록 필터를 적용하세요
+3. 분석할 필드로 정렬하는 것을 고려하세요
-### For Bulk Updates
+### 대량 업데이트용
-1. Export the records you want to update
-2. Include the unique identifier (`email`, `domain`, or `id`)
-3. Edit the exported file
-4. Re-import to update records
- See: [How to Update Existing Records](/l/ko/user-guide/data-migration/how-tos/update-existing-records-via-import)
+1. 업데이트하려는 레코드를 내보내세요
+2. 고유 식별자(`email`, `domain` 또는 `id`)를 포함하세요
+3. 내보낸 파일을 편집하세요
+4. 다시 가져와 레코드를 업데이트하세요
+ 참고: [기존 레코드를 업데이트하는 방법](/l/ko/user-guide/data-migration/how-tos/update-existing-records-via-import)
-### For Migration
+### 마이그레이션용
-If you're exporting to migrate to another system:
+다른 시스템으로 마이그레이션하기 위해 내보내는 경우:
-1. **Export each object separately** — People, Companies, Opportunities, etc.
-2. **Include ID fields** — these help maintain relationships
-3. **Document field mappings** — note how Twenty fields map to your target system
+1. **각 객체를 개별적으로 내보내세요** — People, Companies, Opportunities 등
+2. **ID 필드를 포함하세요** — 관계를 유지하는 데 도움이 됩니다
+3. **필드 매핑을 문서화하세요** — Twenty의 필드가 대상 시스템에 어떻게 매핑되는지 기록하세요
-## Handling Large Datasets (20,000+ Records)
+## 대용량 데이터셋 처리(20,000개 이상 레코드)
-The export limit is 20,000 records. For larger datasets:
+내보내기 한도는 20,000개 레코드입니다. 더 큰 데이터셋의 경우:
-### Option 1: Export in Batches
+### 옵션 1: 배치로 내보내기
-1. Add a filter (e.g., "Created date" ranges)
-2. Export the first batch
-3. Change the filter
-4. Export the next batch
-5. Combine files in your spreadsheet
+1. 필터를 추가하세요(예: "Created date" 범위)
+2. 첫 번째 배치를 내보내세요
+3. 필터를 변경하세요
+4. 다음 배치를 내보내세요
+5. 스프레드시트에서 파일을 결합하세요
-**Example filters for batching:**
+**배치용 예시 필터:**
-* By date range (January, February, March...)
-* By owner (Team member A, Team member B...)
-* By status (Active, Inactive...)
+* 날짜 범위별(1월, 2월, 3월...)
+* 소유자별(팀원 A, 팀원 B...)
+* 상태별(활성, 비활성...)
-### Option 2: Use the API
+### 옵션 2: API 사용
-The API has no record limit:
+API에는 레코드 수 한도가 없습니다:
-1. Get your API key from **Settings → Developers**
-2. Use the GraphQL API to query records
-3. Process results in your application
+1. API 키를 **설정 → 개발자**에서 발급받으세요
+2. GraphQL API를 사용해 레코드를 쿼리하세요
+3. 애플리케이션에서 결과를 처리하세요
-See: [API Documentation](/l/ko/developers/extend/capabilities/apis)
+참고: [API 문서](/l/ko/developers/extend/capabilities/apis)
-## Tips and Best Practices
+## 팁 및 모범 사례
-### Create Export Views
+### 내보내기용 보기 만들기
-Save views configured specifically for exports:
+내보내기에 맞게 구성한 보기를 저장하세요:
-1. Configure columns and filters
-2. Click **View options** → **Save as new view**
-3. Name it "Export - [Purpose]"
+1. 열과 필터를 구성하세요
+2. **보기 옵션** → **새 보기로 저장**을 클릭하세요
+3. "Export - [Purpose]"로 이름을 지정하세요
-### Secure Your Exports
+### 내보낸 파일 보호
-Exported files may contain sensitive data:
+내보낸 파일에는 민감한 데이터가 포함될 수 있습니다:
-* Store in secure locations
-* Delete old exports when no longer needed
-* Be careful sharing export files
+* 안전한 위치에 보관하세요
+* 더 이상 필요하지 않은 내보낸 파일은 삭제하세요
+* 내보낸 파일을 공유할 때 주의하세요
-### Check Before Exporting
+### 내보내기 전 확인 사항
-Correct columns are visible
-Filters are set correctly (or removed for full export)
-You have Export permission
+올바른 열이 표시되어 있습니다
+필터가 올바르게 설정되어 있습니다(전체 내보내기의 경우 제거)
+내보내기 권한이 있습니다
## FAQ
-
- Only visible columns are exported. Add the columns you need via **Options → Fields** before exporting.
+
+ 표시된 열만 내보내집니다. 내보내기 전에 **옵션 → 필드**에서 필요한 열을 추가하세요.
-
- Check your filters. The export only includes records matching your current view filters. Remove filters to export all records.
+
+ 필터를 확인하세요. 내보내기에는 현재 보기의 필터와 일치하는 레코드만 포함됩니다. 모든 레코드를 내보내려면 필터를 제거하세요.
-
- Not in a single export. Use filters to export in batches, or use the API for larger datasets.
+
+ 단일 내보내기로는 불가능합니다. 필터를 사용해 배치로 내보내거나, 더 큰 데이터셋에는 API를 사용하세요.
-
- CSV (Comma Separated Values). Opens in Excel, Google Sheets, or any spreadsheet application.
+
+ CSV(쉼표로 구분된 값). Excel, Google Sheets 또는 어떤 스프레드시트 애플리케이션에서도 열 수 있습니다.
-
- Yes, but only on the "many" side of relationships. For example, a People export includes `companyId`, but a Companies export does not include people IDs.
+
+ 예. 다만 관계의 "many" 측에서만 포함됩니다. 예를 들어 People 내보내기에는 `companyId`가 포함되지만, Companies 내보내기에는 people ID가 포함되지 않습니다.
-
- Not directly through the UI. Use the API to build automated export workflows.
+
+ UI만으로는 불가능합니다. API를 사용해 자동화된 내보내기 워크플로우를 구축하세요.
-## Next Steps
+## 다음 단계
-* [How to Update Existing Records](/l/ko/user-guide/data-migration/how-tos/update-existing-records-via-import) — edit and re-import your export
-* [How to Import Data via API](/l/ko/user-guide/data-migration/how-tos/import-data-via-api) — for large datasets
-* [API Documentation](/l/ko/developers/extend/capabilities/apis) — build custom export workflows
+* [기존 레코드를 업데이트하는 방법](/l/ko/user-guide/data-migration/how-tos/update-existing-records-via-import) — 내보낸 파일을 편집한 뒤 다시 가져오세요
+* [API로 데이터 가져오는 방법](/l/ko/user-guide/data-migration/how-tos/import-data-via-api) — 대용량 데이터셋용
+* [API 문서](/l/ko/developers/extend/capabilities/apis) — 맞춤 내보내기 워크플로우를 구축하세요
diff --git a/packages/twenty-docs/l/ko/user-guide/data-migration/how-tos/fix-import-errors.mdx b/packages/twenty-docs/l/ko/user-guide/data-migration/how-tos/fix-import-errors.mdx
index 4807541513..5a44d6e049 100644
--- a/packages/twenty-docs/l/ko/user-guide/data-migration/how-tos/fix-import-errors.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/data-migration/how-tos/fix-import-errors.mdx
@@ -1,122 +1,122 @@
---
-title: Fix Import Errors
-description: Complete troubleshooting guide for resolving CSV import errors.
+title: 가져오기 오류 해결
+description: CSV 가져오기 오류를 해결하기 위한 종합적인 문제 해결 가이드.
---
-## Overview
+## 개요
-Import not working? This guide helps you identify and fix common import errors step by step.
+가져오기가 안 되나요? 이 가이드는 일반적인 가져오기 오류를 단계별로 식별하고 해결하도록 도와줍니다.
-## How Import Validation Works
+## 가져오기 유효성 검사가 작동하는 방식
-After uploading your file and mapping columns, Twenty validates your data:
+파일을 업로드하고 열을 매핑한 후, Twenty가 데이터에 대해 유효성 검사를 수행합니다:
-1. **Validation runs** — Twenty checks each row for errors
-2. **Errors are highlighted** — problematic rows appear in **yellow**
-3. **You can fix in-place** — edit cells directly in the import UI
-4. **Or remove rows** — skip problematic records entirely
+1. **유효성 검사를 실행** — Twenty가 각 행에서 오류를 확인합니다
+2. **오류가 강조 표시됨** — 문제가 있는 행은 **노란색**으로 표시됩니다
+3. **바로 수정 가능** — 가져오기 UI에서 셀을 직접 편집합니다
+4. **또는 행을 제거** — 문제가 있는 레코드를 완전히 건너뜁니다
-**Fix errors in the UI.** You don't need to go back to your spreadsheet. Edit cells directly during import to save time.
+**UI에서 오류를 수정하세요.** 스프레드시트로 돌아갈 필요가 없습니다. 가져오는 동안 셀을 직접 편집하여 시간을 절약하세요.
-## Step-by-Step Troubleshooting
+## 단계별 문제 해결
-### Step 1: Identify the Error Type
+### 1단계: 오류 유형 식별
-Click on a highlighted row to see the specific error message. Common error types:
+강조 표시된 행을 클릭하여 특정 오류 메시지를 확인하세요. 일반적인 오류 유형:
-| Error Message | What It Means |
-| --------------------------------------------------------------------- | ------------------------------------------------------------ |
-| Duplicate values highlighted in yellow | Value already exists in Twenty or appears twice in your file |
-| `{field} is not a valid {type}` (hover on yellow cell) | Data doesn't match expected format |
-| Required field highlighted | A required field is empty |
-| `Can't connect to {object}. No unique record found...` (import fails) | Referenced record doesn't exist |
-| `Too many records. Up to 10000 allowed` (upload blocked) | File has more than 10,000 records |
+| 오류 메시지 | 의미 |
+| ---------------------------------------------------------------- | --------------------------------- |
+| 중복 값이 노란색으로 강조 표시됨 | 값이 Twenty에 이미 존재하거나 파일에 두 번 나타납니다 |
+| `{field} is not a valid {type}` (노란색 셀에 커서를 올리세요) | 데이터가 예상 형식과 일치하지 않음 |
+| 필수 필드가 강조 표시됨 | 필수 필드가 비어 있음 |
+| `Can't connect to {object}. No unique record found...` (가져오기 실패) | 참조된 레코드가 존재하지 않음 |
+| `Too many records. Up to 10000 allowed` (업로드 차단됨) | 파일의 레코드가 10,000개를 초과함 |
-### Step 2: Fix the Error
+### 2단계: 오류 수정
-Follow the specific instructions below for each error type.
+오류 유형별로 아래의 구체적인 지침을 따르세요.
---
-## Error: Duplicate Value
+## 오류: 중복 값
-### What You'll See
+### 볼 수 있는 내용
-Rows with duplicate values are **highlighted in yellow** in the import UI before the import starts.
+가져오기를 시작하기 전에 가져오기 UI에서 중복 값이 있는 행이 **노란색으로 강조 표시**됩니다.
-### What It Means
+### 의미
-A unique field (email, domain) either:
+고유 필드(이메일, 도메인)가 다음에 해당함:
-* Already exists in Twenty
-* Appears twice in your file
+* Twenty에 이미 존재함
+* 파일에 두 번 나타남
-### How to Fix
+### 해결 방법
-**Option 1: Edit the duplicate value**
+**옵션 1: 중복 값을 편집**
-1. Click the cell with the error
-2. Change to a unique value
-3. Continue with import
+1. 오류가 있는 셀을 클릭
+2. 고유 값으로 변경
+3. 가져오기를 계속
-**Option 2: Remove the duplicate row**
+**옵션 2: 중복 행 제거**
-1. Click the X next to the row
-2. The row will be skipped during import
+1. 행 옆의 X를 클릭
+2. 해당 행은 가져오기 중에 건너뜁니다
-**Option 3: Let Twenty update the existing record**
+**옵션 3: Twenty로 기존 레코드를 업데이트**
-1. Ensure your file includes a unique identifier (`email`, `domain`, or `id`)
-2. Map the unique identifier field
-3. Twenty will update the existing record instead of creating a duplicate
+1. 파일에 고유 식별자(`email`, `domain`, 또는 `id`)가 포함되어 있는지 확인하세요
+2. 고유 식별자 필드를 매핑하세요
+3. Twenty가 중복을 생성하는 대신 기존 레코드를 업데이트합니다
- **You can update unique fields too.**
+ **고유 필드도 업데이트할 수 있습니다.**
- * If you keep the `id` but change the `email` → the email will be updated
- * If you keep the `email` but change the `id` → the id will be updated
+ * `id`는 유지하고 `email`만 변경하면 → 이메일이 업데이트됩니다
+ * `email`은 유지하고 `id`만 변경하면 → id가 업데이트됩니다
- As long as one unique identifier matches, Twenty updates the record.
+ 하나의 고유 식별자만 일치해도 Twenty가 레코드를 업데이트합니다.
-### How to Prevent This Error
+### 이 오류를 방지하는 방법
-Before importing:
+가져오기 전:
-1. Sort your spreadsheet by the unique field
-2. Remove duplicate rows
-3. Check if records already exist in Twenty
+1. 스프레드시트를 고유 필드로 정렬
+2. 중복 행 제거
+3. 레코드가 Twenty에 이미 존재하는지 확인
- **Soft-deleted records count toward uniqueness.**
+ **소프트 삭제된 레코드도 고유성에 포함됩니다.**
- Check Command Menu → See deleted records. Records there still enforce uniqueness. Permanently delete them or restore and update.
+ Command 메뉴 → 삭제된 레코드 보기를 확인하세요. 그곳의 레코드도 여전히 고유성을 강제합니다. 완전히 삭제하거나 복원한 뒤 업데이트하세요.
-For more details: [Uniqueness Constraints](/l/ko/user-guide/data-migration/capabilities/uniqueness-constraints)
+자세한 내용: [고유성 제약 조건](/l/ko/user-guide/data-migration/capabilities/uniqueness-constraints)
---
-## Error: Invalid Format
+## 오류: 잘못된 형식
-### What You'll See
+### 볼 수 있는 내용
-The cell value is highlighted in yellow. Hover over it to see the error message:
+셀 값이 노란색으로 강조 표시됩니다. 해당 부분에 커서를 올리면 오류 메시지가 표시됩니다:
```
{field name} is not a valid {field type}
```
-### What It Means
+### 의미
-The data doesn't match the expected format for that field type.
+데이터가 해당 필드 유형의 예상 형식과 일치하지 않습니다.
-### How to Fix — By Field Type
+### 해결 방법 — 필드 유형별
-#### Email
+#### 이메일
-**Problem:** Invalid email format
-**Solution:** Use format `name@domain.com`
+**문제:** 잘못된 이메일 형식
+**해결:** `name@domain.com` 형식을 사용하세요
```
❌ john.smith@
@@ -124,10 +124,10 @@ The data doesn't match the expected format for that field type.
✓ john.smith@acme.com
```
-#### Domain
+#### 도메인
-**Problem:** Inconsistent format may cause duplicates
-**Solution:** Use `https://domain.com` format (recommended)
+**문제:** 일관되지 않은 형식은 중복을 유발할 수 있음
+**해결:** `https://domain.com` 형식을 사용하세요(권장)
```
⚠️ acme.com (valid, but not recommended)
@@ -135,12 +135,12 @@ The data doesn't match the expected format for that field type.
✅ https://acme.com (recommended)
```
-All formats are valid, but `https://domain.com` is recommended because it matches the format used by email/calendar sync. Using other formats may create duplicate companies.
+모든 형식이 유효하지만 `https://domain.com`은 이메일/캘린더 동기화에서 사용하는 형식과 일치하므로 권장됩니다. 다른 형식을 사용하면 회사가 중복으로 생성될 수 있습니다.
-#### Date
+#### 날짜
-**Problem:** Unrecognized date format
-**Solution:** Use consistent format throughout file
+**문제:** 인식되지 않는 날짜 형식
+**해결:** 파일 전체에서 일관된 형식을 사용하세요
```
✓ 2024-03-15 (YYYY-MM-DD - recommended)
@@ -148,21 +148,21 @@ The data doesn't match the expected format for that field type.
✓ 15/03/2024 (DD/MM/YYYY)
```
-#### Phone
+#### 전화
-**Problem:** Missing required columns
-**Solution:** Include all phone columns
+**문제:** 필수 열 누락
+**해결:** 모든 전화 열을 포함하세요
-| Column | Example |
+| 열 | 예시 |
| --------------------------------------- | ------------ |
| **Phones / Primary Phone Number** | `4159095555` |
| **Phones / Primary Phone Country Code** | `US` |
| **Phones / Primary Phone Calling Code** | `+1` |
-#### Boolean
+#### 부울
-**Problem:** Wrong boolean value
-**Solution:** Use uppercase `TRUE` or `FALSE`
+**문제:** 잘못된 불리언 값
+**해결:** 대문자 `TRUE` 또는 `FALSE`를 사용하세요
```
❌ true
@@ -172,37 +172,37 @@ The data doesn't match the expected format for that field type.
✓ FALSE
```
-#### Select / Multi-Select
+#### 선택 / 다중 선택
-**Problem:** Value doesn't match existing options
-**Solution:** Use **API names**, not display labels
+**문제:** 값이 기존 옵션과 일치하지 않음
+**해결:** 표시 라벨이 아니라 **API 이름**을 사용하세요
-How to find API names:
+API 이름을 찾는 방법:
-1. Go to **Settings → Data Model**
-2. Select the object and field
-3. Enable **Advanced mode** (toggle at bottom right)
-4. Use the API name (e.g., `OPTION_1`, not "Option 1")
+1. **설정 → 데이터 모델**로 이동
+2. 객체와 필드를 선택하세요
+3. **고급 모드**를 활성화하세요(오른쪽 하단 토글)
+4. API 이름을 사용하세요(예: `OPTION_1`, "Option 1" 아님)
```
❌ High Priority
✓ HIGH_PRIORITY
```
-#### Currency
+#### 통화
-**Problem:** Missing amount or currency code
-**Solution:** Fill both columns
+**문제:** 금액 또는 통화 코드 누락
+**해결:** 두 열 모두 채우세요
-| Column | Example |
+| 열 | 예시 |
| --------------------- | --------- |
| **Amount / Amount** | `1234.56` |
| **Amount / Currency** | `USD` |
-#### Number
+#### 숫자
-**Problem:** Non-numeric characters
-**Solution:** Numbers only, period for decimals
+**문제:** 숫자가 아닌 문자 포함
+**해결:** 숫자만 사용하고 소수점은 점(.)을 사용하세요
```
❌ $1,234.56
@@ -210,221 +210,221 @@ How to find API names:
✓ 1234.56
```
-For complete format reference: [Field Mapping](/l/ko/user-guide/data-migration/capabilities/field-mapping)
+전체 형식 참고: [필드 매핑](/l/ko/user-guide/data-migration/capabilities/field-mapping)
---
-## Error: Required Field Missing
+## 오류: 필수 필드 누락
-### What You'll See
+### 볼 수 있는 내용
-The row is highlighted in yellow with the required field cell marked.
+해당 행이 노란색으로 강조 표시되고 필수 필드 셀이 표시됩니다.
-### What It Means
+### 의미
-A required field is empty for this row.
+이 행의 필수 필드가 비어 있습니다.
-### How to Fix
+### 해결 방법
-**Option 1: Enter a value**
+**옵션 1: 값 입력**
-1. Click the empty cell
-2. Enter a value
-3. Continue with import
+1. 빈 셀을 클릭
+2. 값 입력
+3. 가져오기를 계속
-**Option 2: Remove the row**
+**옵션 2: 행 제거**
-1. If you don't have the data, click X to skip the row
+1. 데이터가 없다면 X를 클릭해 해당 행을 건너뛰세요
-### How to Prevent This Error
+### 이 오류를 방지하는 방법
-Before importing, identify required fields:
+가져오기 전에 필수 필드를 확인하세요:
-1. Go to **Settings → Data Model**
-2. Select your object
-3. Check which fields are marked as required
+1. **설정 → 데이터 모델**로 이동
+2. 객체를 선택하세요
+3. 어떤 필드가 필수로 표시되어 있는지 확인하세요
---
-## Error: Relation Not Found
+## 오류: 관계를 찾을 수 없음
-### What You'll See
+### 볼 수 있는 내용
-This error appears **after the import starts** — the import fails with a message like:
+이 오류는 **가져오기가 시작된 후** 나타나며, 다음과 같은 메시지와 함께 가져오기가 실패합니다:
```
Can't connect to company. No unique record found with condition: id = 7776ee49-f608-4a77-8cc8-6fe96ae1e43f
```
-This means there is no Company in Twenty with that specific identifier.
+이는 해당 식별자를 가진 Company가 Twenty에 없다는 의미입니다.
-Unlike other errors, this one is not caught during the data review step. The import will start and then fail when it encounters the missing relation.
+다른 오류와 달리, 이 오류는 데이터 검토 단계에서 감지되지 않습니다. 가져오기가 시작된 뒤 누락된 관계를 만나면 실패합니다.
-### What It Means
+### 의미
-You're trying to link to a record that doesn't exist in Twenty.
+Twenty에 존재하지 않는 레코드에 연결하려고 하고 있습니다.
-### How to Fix
+### 해결 방법
-**Option 1: Import parent records first**
+**옵션 1: 상위 레코드를 먼저 가져오기**
-1. Cancel the current import
-2. Import the parent records (e.g., Companies)
-3. Then import the child records (e.g., People)
+1. 현재 가져오기를 취소
+2. 상위 레코드(예: Companies)를 가져오기
+3. 그런 다음 하위 레코드(예: People)를 가져오기
-**Option 2: Fix the reference value**
+**옵션 2: 참조 값 수정**
-1. Check the reference value in your file
-2. Ensure it exactly matches an existing record
-3. Verify format: domains should be `https://domain.com`
+1. 파일의 참조 값을 확인
+2. 기존 레코드와 정확히 일치하는지 확인
+3. 형식 확인: 도메인은 `https://domain.com`이어야 합니다
-**Option 3: Remove the relation**
+**옵션 3: 관계 제거**
-1. Clear the cell to import without the relation
-2. Add the relation manually later
+1. 관계 없이 가져오려면 셀을 비우세요
+2. 관계를 나중에 수동으로 추가하세요
-### How to Prevent This Error
+### 이 오류를 방지하는 방법
-1. **Import in the correct order:**
- * Companies first
- * People second (with company references)
- * Opportunities third
+1. **올바른 순서로 가져오기:**
+ * 회사 먼저
+ * 연락처 두 번째(회사 참조 포함)
+ * 기회 세 번째
-2. **Verify reference values:**
- * Export parent records to get exact identifiers
- * Use domain format `https://domain.com`
- * Check for typos and case sensitivity
+2. **참조 값을 확인하세요:**
+ * 정확한 식별자를 얻기 위해 상위 레코드를 내보내세요
+ * 도메인은 `https://domain.com` 형식을 사용하세요
+ * 오타 및 대소문자 구분 여부를 확인하세요
- **Import will fail if a reference is made to a non-existent record.**
+ **존재하지 않는 레코드를 참조하면 가져오기는 실패합니다.**
- Always import parent objects before child objects.
+ 항상 상위 객체를 먼저 가져오세요.
-For more details: [Import Relations](/l/ko/user-guide/data-migration/capabilities/import-relations)
+자세한 내용: [관계 가져오기](/l/ko/user-guide/data-migration/capabilities/import-relations)
---
-## Error: File Too Large
+## 오류: 파일이 너무 큼
-### What You'll See
+### 볼 수 있는 내용
-This error appears **when uploading your file** — the upload is blocked entirely:
+이 오류는 **파일을 업로드할 때** 나타나며 — 업로드가 완전히 차단됩니다:
```
-Too many records. Up to 10000 allowed
+레코드가 너무 많습니다. 최대 10,000개까지 허용됩니다
```
-You won't be able to proceed to the data review step until you reduce the file size.
+파일 크기를 줄이기 전에는 데이터 검토 단계로 진행할 수 없습니다.
-### What It Means
+### 의미
-Your file has more than 10,000 records.
+파일의 레코드가 10,000개를 초과합니다.
-### How to Fix
+### 해결 방법
-**Option 1: Split into multiple files**
+**옵션 1: 여러 파일로 분할**
-1. Divide your data into files of 10,000 records or fewer
-2. Import each file separately
-3. Maintain import order (Companies before People)
+1. 데이터를 10,000개 이하의 레코드로 구성된 파일로 나누세요
+2. 각 파일을 개별적으로 가져오세요
+3. 가져오기 순서를 유지(회사를 연락처보다 먼저)
-**Option 2: Use API import**
-For very large datasets, use the API which has no record limit.
-See: [How to Import Data via API](/l/ko/user-guide/data-migration/how-tos/import-data-via-api)
+**옵션 2: API 가져오기 사용**
+매우 큰 데이터셋의 경우 레코드 제한이 없는 API를 사용하세요.
+참고: [API로 데이터 가져오는 방법](/l/ko/user-guide/data-migration/how-tos/import-data-via-api)
---
-## Error: Field Not Recognized
+## 오류: 필드를 인식할 수 없음
-### What It Means
+### 의미
-A column in your file can't be mapped because the field doesn't exist in Twenty.
+필드가 Twenty에 존재하지 않기 때문에 파일의 열을 매핑할 수 없습니다.
-### How to Fix
+### 해결 방법
-1. Go to **Settings → Data Model**
-2. Select the object you're importing
-3. Click **+ Add field**
-4. Create the custom field with the appropriate type
-5. Re-upload your file
+1. **설정 → 데이터 모델**로 이동
+2. 가져올 객체를 선택하세요
+3. **+ 필드 추가**를 클릭하세요
+4. 적절한 유형으로 커스텀 필드를 생성하세요
+5. 파일을 다시 업로드하세요
-The CSV import creates records, not fields. All fields must exist before importing.
+CSV 가져오기는 필드가 아니라 레코드를 생성합니다. 가져오기 전에 모든 필드가 존재해야 합니다.
---
-## Error: User Relation Empty
+## 오류: 사용자 관계 비어 있음
-### What It Means
+### 의미
-You're trying to assign a record to a user (Owner, Assignee) but the relation isn't being mapped.
+레코드를 사용자(소유자, 담당자)에게 할당하려고 하지만 관계가 매핑되지 않았습니다.
-### Common Causes
+### 일반적인 원인
-1. **User hasn't accepted their invitation** — the user doesn't exist in Twenty yet
-2. **Using user ID from old system** — Twenty can't match IDs from another system
-3. **Wrong email format** — the email doesn't match the user's Twenty account
+1. **사용자가 초대를 수락하지 않음** — 해당 사용자는 아직 Twenty에 존재하지 않음
+2. **이전 시스템의 사용자 ID 사용** — Twenty는 다른 시스템의 ID를 매칭할 수 없음
+3. **잘못된 이메일 형식** — 이메일이 사용자의 Twenty 계정과 일치하지 않음
-### How to Fix
+### 해결 방법
-1. Ensure all users have **accepted their invitation** to your Twenty workspace
-2. Use the user's **email address** (not their name or old system ID)
-3. Use the same email they used to join Twenty
+1. 모든 사용자가 Twenty 워크스페이스 초대를 수락했는지 확인하세요
+2. 사용자의 이름이나 이전 시스템 ID가 아닌 **이메일 주소**를 사용하세요
+3. Twenty에 가입할 때 사용한 것과 동일한 이메일을 사용하세요
- **Users must accept invitations before importing.**
+ **가져오기를 진행하기 전에 사용자가 초대를 수락해야 합니다.**
- If a user hasn't accepted their invitation, records referencing them will have empty user relations.
+ 사용자가 초대를 수락하지 않은 경우, 해당 사용자를 참조하는 레코드의 사용자 관계가 비어 있게 됩니다.
---
-## Pre-Import Checklist
+## 가져오기 전 체크리스트
-Avoid errors by checking these before importing:
+가져오기 전에 다음을 확인하여 오류를 방지하세요:
-### File Requirements
+### 파일 요구 사항
-File is CSV, XLSX, or XLS format
-File has fewer than 10,000 records
-File uses UTF-8 encoding
+파일 형식이 CSV, XLSX 또는 XLS임
+파일의 레코드가 10,000개 미만임
+파일이 UTF-8 인코딩을 사용함
-### Data Quality
+### 데이터 품질
-No duplicate emails (for People)
-No duplicate domains (for Companies)
-All dates use consistent format
-All domains use `https://domain.com` format
+중복 이메일 없음(연락처용)
+중복 도메인 없음(회사용)
+모든 날짜가 일관된 형식을 사용
+모든 도메인이 `https://domain.com` 형식을 사용
-### Field Formats
+### 필드 형식
-Boolean fields use `TRUE` or `FALSE` (uppercase)
-Select fields use API names, not display labels
-Phone fields have all required columns
-Currency fields have both Amount and Currency Code
+불리언 필드는 `TRUE` 또는 `FALSE`(대문자) 사용
+선택 필드는 표시 라벨이 아닌 API 이름 사용
+전화 필드는 필요한 모든 열 포함
+통화 필드는 Amount와 Currency Code 모두 포함
-### Relations
+### 관계
-Parent records imported before child records
-Relation columns reference existing records
-Domain format matches Twenty's format exactly
+상위 레코드를 하위 레코드보다 먼저 가져오기
+관계 열이 기존 레코드를 참조
+도메인 형식이 Twenty의 형식과 정확히 일치
-### Data Model
+### 데이터 모델
-All custom fields exist in Settings → Data Model
-Select options exist before importing
+모든 커스텀 필드가 설정 → 데이터 모델에 존재
+가져오기 전에 선택 옵션이 존재
---
-## Still Having Issues?
+## 아직도 문제가 있나요?
-If you've tried the above solutions:
+위의 해결책을 시도했다면:
-1. **Download the sample file** — see the exact format Twenty expects
-2. **Export existing records** — compare your file to working data
-3. **Test with a small batch** — try 5-10 rows first
-4. **Check the reference articles:**
- * [Field Mapping](/l/ko/user-guide/data-migration/capabilities/field-mapping)
- * [Uniqueness Constraints](/l/ko/user-guide/data-migration/capabilities/uniqueness-constraints)
- * [Import Relations](/l/ko/user-guide/data-migration/capabilities/import-relations)
- * [Error Handling](/l/ko/user-guide/data-migration/capabilities/error-handling)
+1. **샘플 파일을 다운로드** — Twenty가 기대하는 정확한 형식을 확인하세요
+2. **기존 레코드를 내보내기** — 파일을 정상 데이터와 비교하세요
+3. **소량으로 테스트** — 먼저 5–10개의 행으로 시도하세요
+4. **참고 문서를 확인하세요:**
+ * [필드 매핑](/l/ko/user-guide/data-migration/capabilities/field-mapping)
+ * [고유성 제약 조건](/l/ko/user-guide/data-migration/capabilities/uniqueness-constraints)
+ * [관계 가져오기](/l/ko/user-guide/data-migration/capabilities/import-relations)
+ * [오류 처리](/l/ko/user-guide/data-migration/capabilities/error-handling)
diff --git a/packages/twenty-docs/l/ko/user-guide/data-migration/how-tos/import-companies-via-csv.mdx b/packages/twenty-docs/l/ko/user-guide/data-migration/how-tos/import-companies-via-csv.mdx
index d944fd2f0d..62670a7d6a 100644
--- a/packages/twenty-docs/l/ko/user-guide/data-migration/how-tos/import-companies-via-csv.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/data-migration/how-tos/import-companies-via-csv.mdx
@@ -1,71 +1,71 @@
---
-title: Import Companies via CSV
-description: Complete step-by-step guide to importing companies into Twenty.
+title: CSV로 회사 가져오기
+description: Twenty로 회사를 가져오는 포괄적인 단계별 가이드.
---
-## Overview
+## 개요
-This guide walks you through importing your companies into Twenty. **Companies should be imported first** because People and Opportunities link to Companies.
+이 가이드는 회사를 Twenty로 가져오는 과정을 단계별로 안내합니다. **회사는 먼저 가져와야 합니다**. People과 Opportunities가 회사에 연결되기 때문입니다.
-## Before You Start
+## 시작하기 전에
-### Prerequisites Checklist
+### 사전 준비 체크리스트
- Your file is CSV, XLSX, or XLS format
+ 파일이 CSV, XLSX 또는 XLS 형식임
- File has fewer than 10,000 records
+ 파일의 레코드가 10,000개 미만임
- No duplicate domains in your file
+ 파일에 중복된 도메인이 없음
- All custom fields exist in **Settings → Data Model**
+ 모든 사용자 정의 필드가 **Settings → Data Model**에 존재함
- Need to import more than 10,000 companies? Split into multiple files or use the [API import](/l/ko/user-guide/data-migration/how-tos/import-data-via-api).
+ 10,000개 이상의 회사를 가져와야 하나요? 여러 파일로 분할하거나 [API 가져오기](/l/ko/user-guide/data-migration/how-tos/import-data-via-api)를 사용하세요.
-## Step 1: Prepare Your Company Data
+## 1단계: 회사 데이터 준비
-### Required and Recommended Fields
+### 필수 및 권장 필드
-| Field | Required? | Format | Notes |
-| ----------------- | ----------- | -------------------- | ------------------------ |
-| **Name** | Recommended | Text | Company display name |
-| **Domain** | Recommended | `https://domain.com` | Unique identifier |
-| **Address** | Optional | Multiple columns | See below |
-| **Employees** | Optional | Number | Employee count |
-| **Custom fields** | Optional | Varies | Must exist in Data Model |
+| 필드 | 필수? | 형식 | 노트 |
+| ------------- | ----- | -------------------- | ------------------ |
+| **Name** | 권장 | 텍스트 | 회사 표시 이름 |
+| **도메인** | 권장 | `https://domain.com` | 고유 식별자 |
+| **주소** | 선택 사항 | 여러 열 | 아래 참조 |
+| **직원 수** | 선택 사항 | 숫자 | 직원 수 |
+| **사용자 정의 필드** | 선택 사항 | 항목에 따라 다름 | Data Model에 존재해야 함 |
-### Domain Format
+### 도메인 형식
- **Use the format `https://domain.com` for domains.**
+ **도메인에는 `https://domain.com` 형식을 사용하세요.**
- This matches the format used when Companies are auto-created from email/calendar sync, preventing duplicates later.
+ 이는 이메일/캘린더 동기화로 회사가 자동 생성될 때 사용하는 형식과 일치하여, 이후 중복을 방지합니다.
-**Domain columns:**
+**도메인 열:**
* **Domain / Domain Label**: `acme.com`
* **Domain / Domain URL**: `https://acme.com`
-### Address Format
+### 주소 형식
-Address is a nested field with multiple columns:
+주소는 여러 열로 구성된 중첩 필드입니다:
```
Address / Address 1,Address / City,Address / State,Address / Country,Address / Post Code
123 Main Street,San Francisco,CA,USA,94105
```
-### Sample CSV Structure
+### CSV 예시 구조
```csv
name,Domain / Domain URL,Domain / Domain Label,Address / City,Address / Country,employees
@@ -74,128 +74,128 @@ Widget Co,https://widgets.co,widgets.co,New York,USA,50
```
- **Pro tip:** Click **Download sample file** during import to see the exact column names Twenty expects.
+ **전문가 팁:** 가져오기 중에 **Download sample file**을 클릭하여 Twenty가 기대하는 정확한 열 이름을 확인하세요.
-## Step 2: Access the Import Feature
+## 2단계: 가져오기 기능에 액세스
-**Option 1: From the Companies View**
+**옵션 1: Companies 보기에서**
-1. Navigate to **Companies** in the left sidebar
-2. Click the **⋮** icon on the top right
-3. Select **Import records**
+1. 왼쪽 사이드바에서 **Companies**로 이동하세요
+2. 오른쪽 상단의 **⋮** 아이콘을 클릭하세요
+3. **Import records**를 선택하세요
-**Option 2: Using Command Menu**
+**옵션 2: 커맨드 메뉴 사용**
-1. Press `Cmd + K` (Mac) or `Ctrl + K` (Windows)
-2. Type "import"
-3. Select **Import records**
-4. Choose **Companies**
+1. `Cmd + K`(Mac) 또는 `Ctrl + K`(Windows)를 누르세요
+2. "import"를 입력하세요
+3. **Import records**를 선택하세요
+4. **Companies**를 선택하세요
-## Step 3: Upload Your File
+## 3단계: 파일 업로드
-1. Click **Select file**
-2. Choose your CSV, XLSX, or XLS file
-3. Wait for Twenty to analyze your file
+1. **Select file**을 클릭하세요
+2. CSV, XLSX 또는 XLS 파일을 선택하세요
+3. Twenty가 파일을 분석할 때까지 기다리세요
-## Step 4: Map Your Columns
+## 4단계: 열 매핑
-Twenty automatically tries to match your columns to fields. Review and adjust:
+Twenty가 열을 필드에 자동으로 매칭하려고 시도합니다. 검토 및 조정:
-1. **Check automatic mappings** — verify they're correct
-2. **Fix incorrect mappings** — click the dropdown to select the right field
-3. **Skip columns** — select **Do not map** for columns you don't want to import
+1. **자동 매핑 확인** — 올바른지 확인하세요
+2. **잘못된 매핑 수정** — 드롭다운을 클릭하여 올바른 필드를 선택하세요
+3. **열 건너뛰기** — 가져오지 않을 열은 **Do not map**을 선택하세요
-### Important Mapping Rules
+### 중요한 매핑 규칙
-* **Domain**: Map to **Domain / Domain URL** (not Domain Label)
-* **Address**: Map each part to its specific column (City, State, etc.)
-* **Select fields**: Values must match existing options (or you'll map them in the next step)
+* **Domain**: **Domain / Domain URL**에 매핑하세요(Domain Label이 아님)
+* **Address**: 각 부분을 해당 열(City, State 등)에 매핑하세요
+* **선택 필드**: 값은 기존 옵션과 일치해야 합니다(또는 다음 단계에서 매핑하게 됩니다)
-## Step 5: Map Select Field Values
+## 5단계: 선택 필드 값 매핑
-If you have Select or Multi-Select fields:
+선택 또는 다중 선택 필드가 있는 경우:
-1. Twenty shows your values alongside existing options
-2. Match each value in your file to a Twenty option
-3. Or create new options if needed
+1. Twenty에서 사용자의 값을 기존 옵션과 나란히 표시합니다
+2. 파일의 각 값을 Twenty 옵션과 매칭하세요
+3. 필요하면 새 옵션을 만드세요
- Select options use **API names**, not display labels. Check **Settings → Data Model** → Enable **Advanced mode** to see API names.
+ 선택 옵션은 표시 레이블이 아니라 **API 이름**을 사용합니다. API 이름을 보려면 **Settings → Data Model**에서 **Advanced mode**를 활성화하세요.
-## Step 6: Review and Fix Errors
+## 6단계: 오류 검토 및 수정
-Before completing the import, Twenty validates your data:
+가져오기를 완료하기 전에 Twenty가 데이터를 검증합니다:
-1. Click **Next Steps**
-2. Rows with errors are highlighted in **yellow**
-3. **Fix errors directly** — click a cell and edit the value
-4. **Remove problematic rows** — click the X to skip that row
+1. **Next Steps**를 클릭하세요
+2. 오류가 있는 행은 **노란색**으로 강조 표시됩니다
+3. **오류를 직접 수정** — 셀을 클릭하고 값을 편집하세요
+4. **문제가 있는 행 제거** — 해당 행을 건너뛰려면 X를 클릭하세요
-### Common Company Import Errors
+### 일반적인 회사 가져오기 오류
-| Error | Cause | Solution |
-| -------------------------- | ------------------------------- | ------------------------------------------ |
-| **Duplicate domain** | Domain already exists in Twenty | Remove from file or update existing record |
-| **Invalid domain format** | Wrong format | Use `https://domain.com` |
-| **Missing required field** | Required field is empty | Fill in the value or remove the row |
+| 오류 | 원인 | 해결책 |
+| -------------- | ------------------- | --------------------------- |
+| **중복 도메인** | 도메인이 Twenty에 이미 존재함 | 파일에서 제거하거나 기존 레코드를 업데이트하세요 |
+| **잘못된 도메인 형식** | 잘못된 형식 | `https://domain.com`을 사용하세요 |
+| **필수 필드 누락** | 필수 필드가 비어 있음 | 값을 입력하거나 해당 행을 제거하세요 |
-## Step 7: Complete the Import
+## 7단계: 가져오기 완료
-1. Review the import summary
-2. Click **Confirm** to import
-3. Wait for the import to complete
-4. Verify by checking a few records
+1. 가져오기 요약을 검토하세요
+2. 가져오려면 **확인**을 클릭하세요
+3. 가져오기가 완료될 때까지 기다리세요
+4. 몇 개의 레코드를 확인하여 검증하세요
-## After Importing Companies
+## 회사 가져오기 후
-Now you can import records that link to Companies:
+이제 회사에 연결되는 레코드를 가져올 수 있습니다:
-1. **[Import People](/l/ko/user-guide/data-migration/how-tos/import-contacts-via-csv)** — link them to Companies using the domain
-2. **Import Opportunities** — link them to Companies
-3. **Verify the import** — spot-check a few records to ensure data is correct
+1. **[연락처 가져오기](/l/ko/user-guide/data-migration/how-tos/import-contacts-via-csv)** — 도메인을 사용하여 회사에 연결하세요
+2. **기회 가져오기** — 회사에 연결하세요
+3. **가져오기를 검증** — 데이터가 올바른지 확인하기 위해 몇 개의 레코드를 샘플로 점검하세요
-## Updating Existing Companies
+## 기존 회사 업데이트
-To update companies instead of creating new ones:
+새로 생성하는 대신 회사를 업데이트하려면:
-1. Include the `domain` or `id` column in your file
-2. Twenty matches records by this unique identifier
-3. Existing companies are updated; new ones are created
+1. 파일에 `domain` 또는 `id` 열을 포함하세요
+2. Twenty는 이 고유 식별자로 레코드를 매칭합니다
+3. 기존 회사는 업데이트되고, 새 회사는 생성됩니다
-See [How to Update Existing Records](/l/ko/user-guide/data-migration/how-tos/update-existing-records-via-import) for details.
+자세한 내용은 [기존 레코드를 업데이트하는 방법](/l/ko/user-guide/data-migration/how-tos/update-existing-records-via-import)을 참조하세요.
## FAQ
-
- Domain is a unique identifier in Twenty. This prevents duplicate companies and ensures email sync correctly links emails to the right company.
+
+ 도메인은 Twenty에서 고유 식별자입니다. 이는 중복 회사를 방지하고 이메일 동기화가 올바른 회사에 이메일을 정확히 연결되도록 보장합니다.
-
- You can leave the domain empty. However, we recommend adding domains when possible for better data quality and automatic email linking.
+
+ 도메인을 비워둘 수 있습니다. 하지만 더 나은 데이터 품질과 자동 이메일 연결을 위해 가능하면 도메인을 추가할 것을 권장합니다.
-
- Yes! You can import companies first, then import People later and link them using the company domain.
+
+ 예! 먼저 회사를 가져온 다음, 이후 개인을 가져와 회사 도메인을 사용해 서로 연결할 수 있습니다.
-
- If you include a unique identifier (domain or id) that matches an existing company, Twenty updates that company instead of creating a duplicate.
+
+ 기존 회사와 일치하는 고유 식별자(도메인 또는 id)를 포함하면, Twenty는 중복을 생성하는 대신 해당 회사를 업데이트합니다.
-
- Either remove the duplicate from your file, or include the company's `id` to update the existing record instead.
+
+ 파일에서 중복을 제거하거나, 회사의 `id`를 포함하여 기존 레코드를 업데이트하세요.
-## Troubleshooting
+## 문제 해결
-Having issues? Check:
+문제가 있으신가요? 확인하세요:
-* [How to Fix Import Errors](/l/ko/user-guide/data-migration/how-tos/fix-import-errors)
-* [Field Mapping Reference](/l/ko/user-guide/data-migration/capabilities/field-mapping)
-* [Uniqueness Constraints](/l/ko/user-guide/data-migration/capabilities/uniqueness-constraints)
+* [가져오기 오류 수정](/l/ko/user-guide/data-migration/how-tos/fix-import-errors)
+* [필드 매핑 레퍼런스](/l/ko/user-guide/data-migration/capabilities/field-mapping)
+* [고유성 제약 조건](/l/ko/user-guide/data-migration/capabilities/uniqueness-constraints)
diff --git a/packages/twenty-docs/l/ko/user-guide/data-migration/how-tos/import-contacts-via-csv.mdx b/packages/twenty-docs/l/ko/user-guide/data-migration/how-tos/import-contacts-via-csv.mdx
index 5208147292..95e8af1d9a 100644
--- a/packages/twenty-docs/l/ko/user-guide/data-migration/how-tos/import-contacts-via-csv.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/data-migration/how-tos/import-contacts-via-csv.mdx
@@ -1,90 +1,90 @@
---
-title: Import Contacts via CSV
-description: Complete step-by-step guide to importing people/contacts into Twenty.
+title: CSV로 연락처 가져오기
+description: Twenty로 사람/연락처를 가져오는 포괄적인 단계별 가이드.
---
-## Overview
+## 개요
-This guide walks you through importing your contacts (People) into Twenty. **Import Companies first** if you want to link People to Companies.
+이 가이드는 연락처(People)를 Twenty로 가져오는 과정을 단계별로 안내합니다. **회사를 먼저 가져오세요** — 사람을 회사에 연결하려면.
-## Before You Start
+## 시작하기 전에
-### Prerequisites Checklist
+### 사전 준비 체크리스트
- Your file is CSV, XLSX, or XLS format
+ 파일이 CSV, XLSX 또는 XLS 형식임
- File has fewer than 10,000 records
+ 파일의 레코드가 10,000개 미만임
- No duplicate email addresses in your file
+ 파일에 중복된 이메일 주소가 없음
- **Companies imported first** (if linking People to Companies)
+ **회사를 먼저 가져옴**(사람을 회사에 연결하는 경우)
- All custom fields exist in **Settings → Data Model**
+ 모든 사용자 정의 필드가 **Settings → Data Model**에 존재함
- **Import Companies Before People**
+ **사람보다 회사를 먼저 가져오기**
- If you want to link People to Companies, import Companies first. The Company must exist before you can reference it.
+ 사람을 회사에 연결하려면 먼저 회사를 가져오세요. 참조하려면 회사가 먼저 존재해야 합니다.
-## Step 1: Prepare Your Contact Data
+## 1단계: 연락처 데이터 준비
-### Required and Recommended Fields
+### 필수 및 권장 필드
-| Field | Required? | Format | Notes |
-| ----------------- | ----------- | ----------------- | ------------------------- |
-| **Email** | Recommended | `name@domain.com` | Must be unique |
-| **First Name** | Recommended | Text | |
-| **Last Name** | Recommended | Text | |
-| **Company** | Optional | Domain or ID | Links to existing Company |
-| **Phone** | Optional | Multiple columns | See below |
-| **Job Title** | Optional | Text | |
-| **Custom fields** | Optional | Varies | Must exist in Data Model |
+| 필드 | 필수? | 형식 | 노트 |
+| ------------- | ----- | ----------------- | ------------------ |
+| **이메일** | 권장 | `name@domain.com` | 고유해야 함 |
+| **이름** | 권장 | 텍스트 | |
+| **성** | 권장 | 텍스트 | |
+| **회사** | 선택 사항 | 도메인 또는 ID | 기존 회사에 연결 |
+| **전화** | 선택 사항 | 여러 열 | 아래 참조 |
+| **직책** | 선택 사항 | 텍스트 | |
+| **사용자 정의 필드** | 선택 사항 | 항목에 따라 다름 | Data Model에 존재해야 함 |
-### Email Format
+### 이메일 형식
-* Must be valid email format: `name@domain.com`
-* **Must be unique** — no duplicates in your file or in Twenty
-* For additional emails, use the **Emails / Additional Emails** column:
+* 유효한 이메일 형식이어야 함: `name@domain.com`
+* **고유해야 함** — 파일 또는 Twenty에 중복이 없어야 합니다
+* 추가 이메일은 **Emails / Additional Emails** 열을 사용하세요:
```
-["jane@twenty.com","jane.doe@twenty.com"]
+[\"jane@twenty.com\",\"jane.doe@twenty.com\"]
```
-### Phone Format
+### 전화 형식
-Phone is a **nested field** requiring multiple columns:
+전화는 여러 열이 필요한 **중첩 필드**입니다:
-| Column | Example |
+| 열 | 예시 |
| --------------------------------------- | ------------ |
| **Phones / Primary Phone Number** | `4159095555` |
| **Phones / Primary Phone Country Code** | `US` |
| **Phones / Primary Phone Calling Code** | `+1` |
-### Linking to Companies
+### 회사에 연결하기
-Add a column with the Company's unique identifier:
+회사 고유 식별자 열을 추가하세요:
-| Column Name | Format | Example |
-| --------------- | ---------- | -------------------------------------- |
-| `companyDomain` | URL format | `https://acme.com` |
-| `companyId` | UUID | `c776ee49-f608-4a77-8cc8-6fe96ae1e43f` |
+| 열 이름 | 형식 | 예시 |
+| --------------- | ------ | -------------------------------------- |
+| `companyDomain` | URL 형식 | `https://acme.com` |
+| `companyId` | UUID | `c776ee49-f608-4a77-8cc8-6fe96ae1e43f` |
- **Use Domain URL format** (`https://acme.com`), not the label. This matches how Companies are stored in Twenty.
+ **도메인 URL 형식을 사용하세요**(`https://acme.com`), 라벨은 사용하지 마세요. 이는 Twenty에서 회사가 저장되는 방식과 일치합니다.
-### Sample CSV Structure
+### CSV 예시 구조
```csv
firstName,lastName,email,jobTitle,companyDomain,Phones / Primary Phone Number,Phones / Primary Phone Country Code
@@ -93,150 +93,150 @@ Jane,Doe,jane@widgets.co,CTO,https://widgets.co,2125551234,US
```
- **Pro tip:** Click **Download sample file** during import or export a few existing People to see the exact column names Twenty expects.
+ **전문가 팁:** 가져오기 중에 **Download sample file**을 클릭하거나 기존 People 몇 명을 내보내 Twenty가 기대하는 정확한 열 이름을 확인하세요.
-## Step 2: Access the Import Feature
+## 2단계: 가져오기 기능에 액세스
-**Option 1: From the People View**
+**옵션 1: People 보기에서**
-1. Navigate to **People** in the left sidebar
-2. Click the **⋮** icon on the top right
-3. Select **Import records**
+1. 왼쪽 사이드바에서 **People**로 이동하세요
+2. 오른쪽 상단의 **⋮** 아이콘을 클릭하세요
+3. **Import records**를 선택하세요
-**Option 2: Using Command Menu**
+**옵션 2: 커맨드 메뉴 사용**
-1. Press `Cmd + K` (Mac) or `Ctrl + K` (Windows)
-2. Type "import"
-3. Select **Import records**
-4. Choose **People**
+1. `Cmd + K`(Mac) 또는 `Ctrl + K`(Windows)를 누르세요
+2. "import"를 입력하세요
+3. **Import records**를 선택하세요
+4. **People**을 선택하세요
-## Step 3: Upload Your File
+## 3단계: 파일 업로드
-1. Click **Select file**
-2. Choose your CSV, XLSX, or XLS file
-3. Wait for Twenty to analyze your file
+1. **Select file**을 클릭하세요
+2. CSV, XLSX 또는 XLS 파일을 선택하세요
+3. Twenty가 파일을 분석할 때까지 기다리세요
-## Step 4: Map Your Columns
+## 4단계: 열 매핑
-Twenty automatically tries to match your columns to fields. Review and adjust:
+Twenty가 열을 필드에 자동으로 매칭하려고 시도합니다. 검토 및 조정:
-1. **Check automatic mappings** — verify they're correct
-2. **Fix incorrect mappings** — click the dropdown to select the right field
-3. **Skip columns** — select **Do not map** for columns you don't want to import
+1. **자동 매핑 확인** — 올바른지 검증하세요
+2. **잘못된 매핑 수정** — 드롭다운을 클릭하여 올바른 필드를 선택하세요
+3. **열 건너뛰기** — 가져오지 않을 열은 **Do not map**을 선택하세요
-### Important Mapping Rules
+### 중요한 매핑 규칙
-| Column Type | Map To | Notes |
-| ----------------- | ------------------------------ | ---------------------------------- |
-| Company reference | **Company** relation field | Use domain OR id, not both |
-| Email | **Email** | Primary email address |
-| Additional emails | **Emails / Additional Emails** | Array format |
-| Phone | Separate columns | Number, Country Code, Calling Code |
+| 열 유형 | 매핑 대상 | 노트 |
+| ------ | ------------------------------ | ------------------------------- |
+| 회사 참조 | **회사** 관계 필드 | 도메인 또는 ID 중 하나만 사용(둘 다 사용하지 않음) |
+| 이메일 | **이메일** | 기본 이메일 주소 |
+| 추가 이메일 | **Emails / Additional Emails** | 배열 형식 |
+| 전화 | 분리된 열 | 번호, 국가 코드, 전화 걸기 코드 |
-### Mapping the Company Relation
+### 회사 관계 매핑
-When mapping the company column:
+회사 열을 매핑할 때:
-1. Find your company reference column (e.g., `companyDomain`)
-2. Map it to the **Company** relation field
-3. Twenty will link each Person to the matching Company
+1. 회사 참조 열을 찾으세요(예: `companyDomain`)
+2. 이를 **회사** 관계 필드에 매핑하세요
+3. Twenty가 각 사람을 일치하는 회사에 연결합니다
- **Map only ONE unique identifier for relations.**
+ **관계에는 고유 식별자를 하나만 매핑하세요.**
- Don't map both `companyId` AND `companyDomain`. Choose one—preferably domain since it's human-readable.
+ `companyId`와 `companyDomain`을 둘 다 매핑하지 마세요. 하나만 선택하세요—사람이 읽기 쉬우므로 도메인을 권장합니다.
-## Step 5: Map Select Field Values
+## 5단계: 선택 필드 값 매핑
-If you have Select or Multi-Select fields (like Lead Source):
+선택 또는 다중 선택 필드(예: 리드 소스)가 있는 경우:
-1. Twenty shows your values alongside existing options
-2. Match each value in your file to a Twenty option
-3. Or create new options if needed
+1. Twenty에서 사용자의 값을 기존 옵션과 나란히 표시합니다
+2. 파일의 각 값을 Twenty 옵션과 매칭하세요
+3. 필요하면 새 옵션을 만드세요
- Select options use **API names**, not display labels. Check **Settings → Data Model** → Enable **Advanced mode** to see API names.
+ 선택 옵션은 표시 레이블이 아니라 **API 이름**을 사용합니다. API 이름을 보려면 **Settings → Data Model**에서 **Advanced mode**를 활성화하세요.
-## Step 6: Review and Fix Errors
+## 6단계: 오류 검토 및 수정
-Before completing the import, Twenty validates your data:
+가져오기를 완료하기 전에 Twenty가 데이터를 검증합니다:
-1. Click **Next Steps**
-2. Rows with errors are highlighted in **yellow**
-3. **Fix errors directly** — click a cell and edit the value
-4. **Remove problematic rows** — click the X to skip that row
+1. **다음 단계**를 클릭합니다
+2. 오류가 있는 행은 **노란색**으로 강조 표시됩니다
+3. **오류를 직접 수정** — 셀을 클릭하고 값을 편집하세요
+4. **문제가 있는 행 제거** — 해당 행을 건너뛰려면 X를 클릭하세요
-### Common Contact Import Errors
+### 일반적인 연락처 가져오기 오류
-| Error | Cause | Solution |
-| -------------------------- | -------------------------------------- | ------------------------------------------- |
-| **Duplicate email** | Email already exists in Twenty or file | Remove duplicate or update existing record |
-| **Invalid email format** | Email format incorrect | Fix to `name@domain.com` |
-| **Relation not found** | Company doesn't exist | Import Companies first or fix the reference |
-| **Missing required field** | Required field is empty | Fill in the value or remove the row |
+| 오류 | 원인 | 해결책 |
+| --------------- | ------------------------- | ------------------------- |
+| **중복 이메일** | 이메일이 Twenty 또는 파일에 이미 존재함 | 중복을 제거하거나 기존 레코드를 업데이트하세요 |
+| **잘못된 이메일 형식** | 이메일 형식이 올바르지 않음 | `name@domain.com`으로 수정하세요 |
+| **관계를 찾을 수 없음** | 회사가 존재하지 않음 | 먼저 회사를 가져오거나 참조를 수정하세요 |
+| **필수 필드 누락** | 필수 필드가 비어 있음 | 값을 입력하거나 해당 행을 제거하세요 |
-## Step 7: Complete the Import
+## 7단계: 가져오기 완료
-1. Review the import summary
-2. Click **Confirm** to import
-3. Wait for the import to complete
-4. Verify by checking a few records and their Company links
+1. 가져오기 요약을 검토하세요
+2. 가져오려면 **확인**을 클릭합니다
+3. 가져오기가 완료될 때까지 기다리세요
+4. 몇 개의 레코드와 해당 회사 링크를 확인하여 검증하세요
-## After Importing Contacts
+## 연락처 가져오기 후
-Your contacts are now in Twenty! Next steps:
+이제 연락처가 Twenty에 있습니다! 다음 단계:
-1. **Verify Company links** — open a few People records to confirm they're linked to the right Company
-2. **Import Opportunities** — if needed, link them to People and Companies
-3. **Set up email sync** — connect your mailbox to see email history on contact records
+1. **회사 링크 확인** — 올바른 회사에 연결되어 있는지 확인하려면 몇 개의 연락처 레코드를 여세요
+2. **기회 가져오기** — 필요한 경우 연락처 및 회사에 연결하세요
+3. **이메일 동기화 설정** — 연락처 레코드에서 이메일 내역을 볼 수 있도록 메일박스를 연결하세요
-## Updating Existing Contacts
+## 기존 연락처 업데이트
-To update contacts instead of creating new ones:
+새로 생성하는 대신 연락처를 업데이트하려면:
-1. Include the `email` or `id` column in your file
-2. Twenty matches records by this unique identifier
-3. Existing contacts are updated; new ones are created
+1. 파일에 `email` 또는 `id` 열을 포함하세요
+2. Twenty는 이 고유 식별자로 레코드를 매칭합니다
+3. 기존 연락처는 업데이트되고, 새 연락처는 생성됩니다
-See [How to Update Existing Records](/l/ko/user-guide/data-migration/how-tos/update-existing-records-via-import) for details.
+자세한 내용은 [기존 레코드를 업데이트하는 방법](/l/ko/user-guide/data-migration/how-tos/update-existing-records-via-import)을 참조하세요.
## FAQ
-
- Email is a unique identifier in Twenty. This prevents duplicate contacts and ensures email sync correctly links emails to the right person.
+
+ 이메일은 Twenty에서 고유 식별자입니다. 이는 중복 연락처를 방지하고 이메일 동기화가 올바른 연락처에 이메일을 정확히 연결되도록 보장합니다.
-
- You can leave the email empty. However, we recommend adding emails when possible for better data quality and email sync functionality.
+
+ 이메일을 비워둘 수 있습니다. 하지만 데이터 품질과 이메일 동기화 기능을 위해 가능하면 이메일을 추가할 것을 권장합니다.
-
- Add a column with the Company's domain (e.g., `https://acme.com`) or ID. During mapping, connect this column to the Company relation field.
+
+ 회사의 도메인(예: `https://acme.com`) 또는 ID가 포함된 열을 추가하세요. 매핑 중에 이 열을 회사 관계 필드에 연결하세요.
-
- Import Companies first, then import People. The Company must exist before you can reference it.
+
+ 먼저 회사를 가져오고, 그다음 연락처를 가져오세요. 참조하려면 해당 회사가 먼저 존재해야 합니다.
-
- Yes! Create a custom field marked as "unique" in your data model to store the external ID. Note: the field name `id` is reserved for Twenty's internal ID.
+
+ 예! 외부 ID를 저장하려면 데이터 모델에 "unique"로 표시된 사용자 지정 필드를 만드세요. 참고: 필드 이름 `id`는 Twenty의 내부 ID로 예약되어 있습니다.
-
- The Company you're referencing doesn't exist. Either import the Company first, or check that the domain/ID exactly matches an existing Company.
+
+ 참조하려는 회사가 존재하지 않습니다. 회사를 먼저 가져오거나, 도메인/ID가 기존 회사와 정확히 일치하는지 확인하세요.
-## Troubleshooting
+## 문제 해결
-Having issues? Check:
+문제가 있으신가요? 확인하세요:
-* [How to Fix Import Errors](/l/ko/user-guide/data-migration/how-tos/fix-import-errors)
-* [How to Import Relations](/l/ko/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv)
-* [Field Mapping Reference](/l/ko/user-guide/data-migration/capabilities/field-mapping)
+* [가져오기 오류 수정](/l/ko/user-guide/data-migration/how-tos/fix-import-errors)
+* [관계 가져오기 방법](/l/ko/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv)
+* [필드 매핑 레퍼런스](/l/ko/user-guide/data-migration/capabilities/field-mapping)
diff --git a/packages/twenty-docs/l/ko/user-guide/data-migration/how-tos/import-data-via-api.mdx b/packages/twenty-docs/l/ko/user-guide/data-migration/how-tos/import-data-via-api.mdx
index 38d88a517a..102b5c0860 100644
--- a/packages/twenty-docs/l/ko/user-guide/data-migration/how-tos/import-data-via-api.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/data-migration/how-tos/import-data-via-api.mdx
@@ -1,176 +1,176 @@
---
-title: Import Data via API
-description: When and how to use Twenty's APIs for large-scale data imports.
+title: API로 데이터 가져오기
+description: 대규모 데이터 가져오기에 Twenty의 API를 언제, 어떻게 사용할지 안내합니다.
---
-## Overview
+## 개요
-Twenty provides both **GraphQL** and **REST APIs** for programmatic data import. Use the API when CSV import isn't practical for your data volume or when you need automated, recurring imports.
+Twenty는 프로그램 방식의 데이터 가져오기를 위해 **GraphQL** 및 **REST API**를 모두 제공합니다. 데이터 규모상 CSV 가져오기가 실용적이지 않거나 자동화된 반복 가져오기가 필요한 경우 API를 사용하세요.
-## When to Use API Import
+## API 가져오기 사용 시기
-| Scenario | Recommended Method |
-| ---------------------------------- | ----------------------------- |
-| Under 10,000 records | CSV Import |
-| 10,000 - 50,000 records | CSV Import (split into files) |
-| **50,000+ records** | **API Import** |
-| One-time migration | Either (based on volume) |
-| **Recurring imports** | **API Import** |
-| **Real-time sync** | **API Import** |
-| **Integration with other systems** | **API Import** |
+| 시나리오 | 권장 방법 |
+| -------------------- | ---------------- |
+| 10,000개 미만의 레코드 | CSV 가져오기 |
+| 10,000 - 50,000개 레코드 | CSV 가져오기(파일로 분할) |
+| **50,000개 이상의 레코드** | **API 가져오기** |
+| 1회성 마이그레이션 | 둘 다 가능(규모에 따라) |
+| **반복 가져오기** | **API 가져오기** |
+| **실시간 동기화** | **API 가져오기** |
+| **다른 시스템과의 통합** | **API 가져오기** |
-For datasets in the hundreds of thousands, the API is significantly faster and more reliable than multiple CSV imports.
+수십만 건 규모의 데이터셋의 경우, API가 여러 번의 CSV 가져오기보다 훨씬 빠르고 더 신뢰할 수 있습니다.
-## API Rate Limits
+## API 속도 제한
-Twenty enforces rate limits to ensure system stability:
+시스템 안정성을 보장하기 위해 Twenty는 속도 제한을 적용합니다:
-| Limit | Value |
-| -------------------------- | --------------------- |
-| **Requests per minute** | 100 |
-| **Records per batch call** | 60 |
-| **Maximum throughput** | ~6,000 records/minute |
+| 제한 | 값 |
+| ---------------- | ------------ |
+| **분당 요청 수** | 100 |
+| **배치 호출당 레코드 수** | 60 |
+| **최대 처리량** | ~6,000 레코드/분 |
- **Plan your import around these limits.**
+ **이 한도를 기준으로 가져오기 계획을 수립하세요.**
- For 100,000 records at maximum throughput, expect approximately 17 minutes of import time. Add buffer time for error handling and retries.
+ 최대 처리량 기준으로 100,000개 레코드를 가져오는 데 약 17분이 소요됩니다. 오류 처리와 재시도를 위한 여유 시간을 추가하세요.
-## Getting Started
+## 시작하기
-### Step 1: Get Your API Key
+### 1단계: API 키 받기
-1. Go to **Settings → Developers**
-2. Click **+ Create API key**
-3. Give your key a descriptive name
-4. Copy the API key immediately (it won't be shown again)
-5. Store it securely
+1. **설정 → 개발자**로 이동하세요.
+2. **+ API 키 생성**을 클릭하세요.
+3. 키에 설명적인 이름을 지정하세요.
+4. API 키를 즉시 복사하세요(다시 표시되지 않습니다).
+5. 안전하게 보관하세요.
- **Keep your API key secret.**
+ **API 키를 비공개로 유지하세요.**
- Anyone with your API key can access and modify your workspace data. Never commit it to code repositories or share it publicly.
+ API 키를 가진 누구나 워크스페이스 데이터에 접근하고 수정할 수 있습니다. 코드 저장소에 커밋하거나 공개적으로 공유하지 마세요.
-### Step 2: Choose Your API
+### 2단계: 사용할 API 선택
-Twenty supports two API types:
+Twenty는 두 가지 유형의 API를 지원합니다:
-| API | Best For | Documentation |
-| ----------- | ----------------------------------------------------------- | ------------------------------------------------ |
-| **GraphQL** | Flexible queries, fetching related data, complex operations | [API Docs](/l/ko/developers/extend/capabilities/apis) |
-| **REST** | Simple CRUD operations, familiar REST patterns | [API Docs](/l/ko/developers/extend/capabilities/apis) |
+| API | 적합한 용도 | 문서 |
+| ----------- | ----------------------------- | ---------------------------------------------- |
+| **GraphQL** | 유연한 쿼리, 연관 데이터 조회, 복잡한 작업에 적합 | [API 문서](/l/ko/developers/extend/capabilities/apis) |
+| **REST** | 단순한 CRUD 작업, 익숙한 REST 패턴 | [API 문서](/l/ko/developers/extend/capabilities/apis) |
-Both APIs support:
+두 API 모두 다음을 지원합니다:
-* Creating, reading, updating, and deleting records
-* **Batch operations** — create or update up to 60 records per call
+* 레코드 생성, 조회, 업데이트 및 삭제
+* **배치 작업** — 호출당 최대 60개 레코드를 생성하거나 업데이트
-**For imports, use batch operations** to maximize throughput within rate limits.
+**가져오기에서는 배치 작업을 사용**하여 한도 내에서 처리량을 극대화하세요.
-### Step 3: Plan Your Import Order
+### 3단계: 가져오기 순서 계획
-Just like CSV imports, **order matters** for relations:
+CSV 가져오기와 마찬가지로, 관계형 데이터에서는 **순서가 중요**합니다:
-1. **Companies** first (no dependencies)
-2. **People** second (can link to Companies)
-3. **Opportunities** third (can link to Companies and People)
-4. **Tasks/Notes** (can link to any of the above)
-5. **Custom objects** (following their dependencies)
+1. **회사** 먼저(종속성 없음)
+2. 그다음 **사람**(회사에 연결 가능)
+3. 세 번째로 **기회**(회사 및 사람에 연결 가능)
+4. **작업/노트**(위 항목 중 어느 것에도 연결 가능)
+5. **사용자 지정 객체**(종속성을 따름)
-## Best Practices
+## 모범 사례
-### Batch Your Requests
+### 요청 일괄 처리
-* Don't send records one at a time
-* Group up to **60 records per API call**
-* This maximizes throughput within rate limits
+* 레코드를 한 번에 하나씩 보내지 마세요
+* API 호출당 최대 **60개 레코드**로 묶으세요
+* 이렇게 하면 한도 내에서 처리량을 극대화할 수 있습니다
-### Handle Rate Limits
+### 속도 제한 처리
-* Implement delays between requests (600ms minimum for sustained imports)
-* Use exponential backoff when you hit limits
-* Monitor for 429 (Too Many Requests) responses
+* 요청 사이에 지연을 구현하세요(지속적인 가져오기의 경우 최소 600ms)
+* 한도에 도달하면 지수 백오프를 사용하세요
+* 429(Too Many Requests) 응답을 모니터링하세요
-### Validate Data First
+### 먼저 데이터 검증
-* Clean and validate your data before importing
-* Check required fields are populated
-* Verify formats match Twenty's requirements (see [Field Mapping](/l/ko/user-guide/data-migration/capabilities/field-mapping))
+* 가져오기 전에 데이터를 정리하고 검증하세요
+* 필수 필드가 채워졌는지 확인하세요
+* 형식이 Twenty의 요구 사항과 일치하는지 확인하세요([필드 매핑](/l/ko/user-guide/data-migration/capabilities/field-mapping) 참조)
-### Log Everything
+### 모든 항목 로깅
-* Log every record imported (including IDs)
-* Log errors with full context
-* This helps debug issues and verify completion
+* 가져온 모든 레코드를 로깅하세요(ID 포함)
+* 전체 컨텍스트와 함께 오류를 로깅하세요
+* 이는 문제를 디버깅하고 완료 여부를 확인하는 데 도움이 됩니다
-### Test First
+### 먼저 테스트
-* Test with a small batch (10-20 records)
-* Verify data appears correctly in Twenty
-* Then run the full import
+* 소량 배치(10-20개 레코드)로 테스트하세요
+* 데이터가 Twenty에 올바르게 표시되는지 확인하세요
+* 그런 다음 전체 가져오기를 실행하세요
-### Upsert to Avoid Duplicates
+### 중복 방지를 위한 업서트
-The GraphQL API supports **batch upsert** — update if the record exists, create if not. This prevents duplicates when re-running imports.
+GraphQL API는 **배치 업서트**를 지원합니다 — 레코드가 있으면 업데이트하고, 없으면 생성합니다. 이렇게 하면 가져오기를 다시 실행할 때 중복을 방지할 수 있습니다.
-## Finding Object and Field Names
+## 객체 및 필드 이름 찾기
-To see available objects and fields:
+사용 가능한 객체와 필드를 확인하려면:
-1. Go to **Settings → API and Webhooks**
-2. Browse the **Metadata API**
-3. View all standard and custom objects with their fields
+1. **설정 → API 및 웹훅**으로 이동하세요
+2. **Metadata API**를 살펴보세요
+3. 모든 표준 및 사용자 지정 객체와 해당 필드를 확인하세요
-The documentation shows all standard and custom objects, their fields, and the expected data types.
+문서에는 모든 표준 및 사용자 지정 객체, 해당 필드, 예상 데이터 유형이 표시됩니다.
-## Professional Services
+## 전문 서비스
-For complex API migrations, our partners can help:
+복잡한 API 마이그레이션의 경우, 파트너가 도와드립니다:
-| Service | What's Included |
-| ----------------------- | ---------------------------------- |
-| **Data Model Design** | design your optimal data structure |
-| **Migration Scripts** | write and run the import scripts |
-| **Data Transformation** | handle complex mapping and cleanup |
-| **Validation & QA** | verify the migration is complete |
+| 서비스 | 포함 내용 |
+| --------------- | ------------------ |
+| **데이터 모델 설계** | 최적의 데이터 구조를 설계 |
+| **마이그레이션 스크립트** | 가져오기 스크립트를 작성하고 실행 |
+| **데이터 변환** | 복잡한 매핑과 정리를 수행 |
+| **검증 및 QA** | 마이그레이션이 완료되었는지 확인 |
-**Best for:**
+**적합한 용도:**
-* Migrations of 100,000+ records
-* Complex data transformations
-* Tight timelines
-* Teams without developer resources
+* 100,000개 이상의 레코드 마이그레이션
+* 복잡한 데이터 변환
+* 빠듯한 일정
+* 개발 리소스가 없는 팀
-Contact us at [contact@twenty.com](mailto:contact@twenty.com) or explore our [Implementation Services](/l/ko/user-guide/getting-started/capabilities/implementation-services).
+[contact@twenty.com](mailto:contact@twenty.com)으로 문의하시거나 당사의 [구현 서비스](/l/ko/user-guide/getting-started/capabilities/implementation-services)를 확인하세요.
## FAQ
-
- GraphQL lets you request exactly the data you need in a single query and is better for complex operations. REST uses standard HTTP methods (GET, POST, PUT, DELETE) and may be more familiar if you've worked with traditional APIs.
+
+ GraphQL은 단일 쿼리로 필요한 데이터만 정확히 요청할 수 있으며, 복잡한 작업에 더 적합합니다. REST는 표준 HTTP 메서드(GET, POST, PUT, DELETE)를 사용하며, 기존 API로 작업해 본 경험이 있다면 더 익숙할 수 있습니다.
-
- Yes! Use update mutations (GraphQL) or PUT/PATCH requests (REST) with the record's `id`.
+
+ 예! 레코드의 `id`와 함께 업데이트 뮤테이션(GraphQL) 또는 PUT/PATCH 요청(REST)을 사용하세요.
-
- Query for existing records first using unique identifiers (email, domain). Update if exists, create if not.
+
+ 고유 식별자(이메일, 도메인)를 사용해 먼저 기존 레코드를 조회하세요. 존재하면 업데이트하고, 없으면 생성하세요.
-
- Yes, use delete mutations (GraphQL) or DELETE requests (REST).
+
+ 예, 삭제 뮤테이션(GraphQL) 또는 DELETE 요청(REST)을 사용하세요.
-
- Not currently, but both APIs work with any HTTP client in any language.
+
+ 현재는 없습니다. 하지만 두 API는 어떤 언어의 HTTP 클라이언트와도 작동합니다.
-## API Documentation
+## API 문서
-For full implementation details, code examples, and schema reference:
+전체 구현 세부정보, 코드 예제, 스키마 참조는 다음을 확인하세요:
-* [API Documentation](/l/ko/developers/extend/capabilities/apis)
+* [API 문서](/l/ko/developers/extend/capabilities/apis)
diff --git a/packages/twenty-docs/l/ko/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv.mdx b/packages/twenty-docs/l/ko/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv.mdx
index 20e20f4985..6577d38a10 100644
--- a/packages/twenty-docs/l/ko/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv.mdx
@@ -1,103 +1,103 @@
---
-title: Import Relations Between Objects via CSV
-description: Complete step-by-step guide to linking records during CSV import.
+title: CSV를 통해 객체 간 관계 가져오기
+description: CSV 가져오기 중 레코드 연결에 대한 완전한 단계별 가이드.
---
-## Overview
+## 개요
-This guide walks you through importing relations between objects—for example, linking People to Companies, or Opportunities to People.
+이 가이드는 객체 간 관계를 가져오는 방법을 안내합니다—예를 들어, 사람을 회사에 연결하거나 기회를 사람에게 연결하는 방법.
-**What can be imported:** Only one-to-many relations pointing to a single object type. Relations pointing to multiple object types (like Notes linking to People AND Companies) are not yet supported for import.
+**가져올 수 있는 항목:** 단일 객체 유형을 가리키는 일대다 관계만 가능합니다. 여러 객체 유형을 가리키는 관계(예: 노트가 사람과 회사 모두에 연결)는 아직 가져오기를 지원하지 않습니다.
-## Understanding Relations
+## 관계 이해하기
-### What is a "One-to-Many" Relation?
+### "일대다" 관계란?
-In a one-to-many relation:
+일대다 관계에서는:
-* **One** Company has **many** People (employees)
-* **One** Company has **many** Opportunities
-* **One** Person has **many** Tasks
+* **하나의** 회사에는 **여러** 사람(직원)이 있습니다
+* **하나의** 회사에는 **여러** 기회가 있습니다
+* **한** 사람에게는 **여러** 작업이 있습니다
-The "one" side is the **parent**. The "many" side is the **child**.
+"one" 쪽은 **상위**입니다. "many" 쪽은 **하위**입니다.
-### Common Relations in Twenty
+### Twenty에서 흔한 관계
-| Relation | "One" Side (Parent) | "Many" Side (Child) |
-| ------------------------- | ------------------- | ------------------- |
-| Companies → People | Company | People |
-| Companies → Opportunities | Company | Opportunities |
-| People → Tasks | Person | Tasks |
-| People → Notes | Person | Notes |
+| 관계 | "One" 쪽(상위) | "Many" 쪽(하위) |
+| ------- | ----------- | ------------ |
+| 회사 → 사람 | 회사 | 사람들 |
+| 회사 → 기회 | 회사 | 기회 |
+| 사람 → 작업 | 사람 | 작업 |
+| 사람 → 노트 | 사람 | 노트 |
-## Step 1: Identify the "One" and "Many" Sides
+## 1단계: "One"과 "Many" 쪽 식별하기
-Before importing, determine which object is the parent and which is the child.
+가져오기 전에 어떤 객체가 상위이고 어떤 객체가 하위인지 결정하세요.
-**Ask yourself:** "Does ONE [Object A] have MANY [Object B]?"
+**스스로에게 물어보세요:** "하나의 [객체 A]가 여러 [객체 B]를 가지는가?"
-* One Company → Many People ✓ (Company is parent)
-* One Person → Many Companies ✗ (This is wrong—a person belongs to one company)
+* 하나의 회사 → 여러 사람 ✓ (회사가 상위)
+* 한 사람 → 여러 회사 ✗ (잘못된 예—사람은 한 회사에 소속됩니다)
-## Step 2: Import the Parent Records First
+## 2단계: 상위 레코드를 먼저 가져오기
-The parent ("one" side) must exist in Twenty before you can reference it.
+참조하려면 상위("one" 쪽) 레코드가 Twenty에 먼저 존재해야 합니다.
-**Import order:**
+**가져오기 순서:**
-1. **Companies** first (no dependencies)
-2. **People** second (link to Companies)
-3. **Opportunities** third (link to Companies and/or People)
-4. **Tasks/Notes** (link to any of the above)
+1. **회사** 먼저(종속성 없음)
+2. 그다음 **사람**(회사에 연결)
+3. 세 번째로 **기회**(회사 및/또는 사람에 연결)
+4. **작업/노트**(위 항목 중 하나에 연결)
- **If the parent record doesn't exist, the import will fail.**
+ **상위 레코드가 존재하지 않으면 가져오기는 실패합니다.**
- Always verify that Companies are imported before importing People with company references.
+ 회사 참조가 있는 사람을 가져오기 전에 항상 회사를 먼저 가져왔는지 확인하세요.
-## Step 3: Note the Parent's Unique Identifier
+## 3단계: 상위의 고유 식별자 확인
-You need to reference the parent record using a **unique identifier**. Available options:
+**고유 식별자**를 사용해 상위 레코드를 참조해야 합니다. 사용 가능한 옵션:
-| Parent Object | Available Unique Identifiers |
-| --------------------- | --------------------------------------------------------------- |
-| **Companies** | `id` (UUID), `domain` (recommended), or any custom unique field |
-| **People** | `id` (UUID), `email`, or any custom unique field |
-| **Workspace Members** | `id` (UUID), `email` (not name) |
-| **Custom Objects** | `id` (UUID), or any field marked as unique |
+| 상위 객체 | 사용 가능한 고유 식별자 |
+| -------------- | ----------------------------------------- |
+| **회사** | `id`(UUID), `domain`(권장), 또는 사용자 지정 고유 필드 |
+| **사람들** | `id`(UUID), `email`, 또는 사용자 지정 고유 필드 |
+| **워크스페이스 멤버들** | `id`(UUID), `email`(이름 아님) |
+| **사용자 지정 개체** | `id`(UUID), 또는 고유로 표시된 모든 필드 |
-**Recommended:** Use `domain` for Companies and `email` for People. These are human-readable and easy to verify in your spreadsheet.
+**권장:** 회사에는 `domain`, 사람에는 `email`을 사용하세요. 이들은 사람이 읽기 쉬우며 스프레드시트에서 확인하기도 쉽습니다.
-### Finding the Identifier
+### 식별자 찾기
-If you need the `id`:
+`id`가 필요하다면:
-1. Export the parent records from Twenty
-2. The export includes the `id` column
-3. Use these IDs in your child records file
+1. Twenty에서 상위 레코드를 내보내세요
+2. 내보내기에는 `id` 열이 포함됩니다
+3. 이 ID를 하위 레코드 파일에서 사용하세요
-## Step 4: Verify the Relation Field Exists
+## 4단계: 관계 필드가 존재하는지 확인
-Before importing, ensure the relation field exists between your objects.
+가져오기 전에 객체 간에 관계 필드가 존재하는지 확인하세요.
-**To check or create:**
+**확인 또는 생성 방법:**
-1. Go to **Settings → Data Model**
-2. Select your child object (e.g., People)
-3. Look for a relation field pointing to the parent (e.g., Company)
-4. If it doesn't exist, create it:
- * Click **+ Add field**
- * Select **Relation** type
- * Choose the parent object
+1. **설정 → 데이터 모델**로 이동
+2. 하위 객체를 선택하세요(예: 사람)
+3. 상위를 가리키는 관계 필드를 찾으세요(예: 회사)
+4. 없다면 다음과 같이 생성하세요:
+ * **+ 필드 추가**를 클릭하세요
+ * 필드 유형으로 **관계**를 선택하세요
+ * 상위 객체를 선택하세요
-## Step 5: Prepare Your CSV File
+## 5단계: CSV 파일 준비
-Add a column to your child CSV that references the parent using its unique identifier.
+하위 CSV에 상위의 고유 식별자를 사용해 상위를 참조하는 열을 추가하세요.
-### Example: People Linking to Companies
+### 예: 사람 → 회사 연결
-**Your People CSV:**
+**사람 CSV:**
```csv
firstName,lastName,email,jobTitle,companyDomain
@@ -106,66 +106,66 @@ Jane,Doe,jane@widgets.co,CTO,https://widgets.co
Bob,Johnson,bob@techstart.io,Developer,https://techstart.io
```
-The `companyDomain` column references the Company's domain.
+`companyDomain` 열은 회사의 도메인을 참조합니다.
-### Format Requirements
+### 형식 요구 사항
-| Identifier | Format | Example |
-| ---------- | -------------- | -------------------------------------- |
-| Domain | URL format | `https://acme.com` |
-| Email | Standard email | `john@acme.com` |
-| ID | UUID | `c776ee49-f608-4a77-8cc8-6fe96ae1e43f` |
+| 식별자 | 형식 | 예시 |
+| --- | ------ | -------------------------------------- |
+| 도메인 | URL 형식 | `https://acme.com` |
+| 이메일 | 표준 이메일 | `john@acme.com` |
+| ID | UUID | `c776ee49-f608-4a77-8cc8-6fe96ae1e43f` |
- **Domain format matters!**
+ **도메인 형식이 중요합니다!**
- Use `https://domain.com` (not just `domain.com`). This matches how Twenty stores Company domains and prevents matching errors.
+ `https://domain.com`을 사용하세요(`domain.com`만 사용하지 마세요). 이는 Twenty가 회사 도메인을 저장하는 방식과 일치하며, 매칭 오류를 방지합니다.
-### Important Rules
+### 중요 규칙
-1. **Exact match required** — the value must exactly match the parent record
-2. **Map only ONE unique identifier** — don't include both `companyId` AND `companyDomain`
-3. **Case sensitive** — `Acme.com` ≠ `acme.com`
+1. **정확히 일치해야 함** — 값이 상위 레코드와 정확히 일치해야 합니다
+2. **고유 식별자는 하나만 매핑** — `companyId`와 `companyDomain`을 모두 포함하지 마세요
+3. **대소문자 구분** — `Acme.com` ≠ `acme.com`
-## Step 6: Upload and Map the Relation
+## 6단계: 업로드하고 관계 매핑하기
-1. Navigate to the child object (e.g., People)
-2. Click **⋮** → **Import records**
-3. Upload your CSV file
-4. In the field mapping step:
- * Find your relation column (e.g., `companyDomain`)
- * Map it to the **Company** relation field
-5. Complete the remaining mapping
-6. Review errors and confirm
+1. 하위 객체로 이동하세요(예: 사람)
+2. **⋮** → **레코드 가져오기**를 클릭
+3. CSV 파일을 업로드하세요
+4. 필드 매핑 단계에서:
+ * 관계 열을 찾으세요(예: `companyDomain`)
+ * 이를 **회사** 관계 필드에 매핑하세요
+5. 나머지 매핑을 완료하세요
+6. 오류를 검토하고 확인하세요
-Twenty will automatically link each child record to the matching parent.
+Twenty가 각 하위 레코드를 일치하는 상위에 자동으로 연결합니다.
-## Step 7: Verify the Import
+## 7단계: 가져오기 확인
-After importing:
+가져온 후:
-1. Open a few child records (e.g., People)
-2. Verify the relation field shows the correct parent (e.g., Company)
-3. Open a parent record and check the related records section
+1. 하위 레코드 몇 개를 엽니다(예: 사람)
+2. 관계 필드에 올바른 상위(예: 회사)가 표시되는지 확인하세요
+3. 상위 레코드를 열고 관련 레코드 섹션을 확인하세요
-## Common Mistakes to Avoid
+## 피해야 할 일반적인 실수
-| Mistake | Problem | Solution |
-| -------------------------- | -------------------------------------------------- | ------------------------------------------------------- |
-| **Wrong import order** | Importing People before Companies | Always import parents first, then children |
-| **Wrong domain format** | Using `acme.com` instead of `https://acme.com` | Use full URL format with `https://` |
-| **Multiple unique fields** | Mapping both `companyId` AND `companyDomain` | Map only ONE unique identifier |
-| **Missing relation field** | The relation field doesn't exist in the data model | Create it in **Settings → Data Model** before importing |
-| **Non-existent records** | The parent record doesn't exist in Twenty | Import parent records first, or check for typos |
-| **Case mismatch** | `Acme.com` in file but `acme.com` in Twenty | Ensure exact case matching |
+| 실수 | 문제 | 해결책 |
+| --------------- | ------------------------------------- | -------------------------------- |
+| **잘못된 가져오기 순서** | 회사보다 사람을 먼저 가져오기 | 항상 상위를 먼저, 그다음 하위를 가져오세요 |
+| **잘못된 도메인 형식** | `https://acme.com` 대신 `acme.com`을 사용함 | `https://`가 포함된 전체 URL 형식을 사용하세요 |
+| **여러 개의 고유 필드** | `companyId`와 `companyDomain`을 둘 다 매핑함 | 고유 식별자를 하나만 매핑하세요 |
+| **관계 필드 누락** | 데이터 모델에 관계 필드가 존재하지 않음 | 가져오기 전에 **설정 → 데이터 모델**에서 생성하세요 |
+| **존재하지 않는 레코드** | 상위 레코드가 Twenty에 존재하지 않음 | 상위 레코드를 먼저 가져오거나, 오타를 확인하세요 |
+| **대소문자 불일치** | 파일에는 `Acme.com`, Twenty에는 `acme.com` | 대소문자가 정확히 일치하는지 확인하세요 |
-## Linking to Workspace Members
+## 워크스페이스 구성원에 연결하기
-When linking to Workspace Members (your team):
+워크스페이스 구성원(팀원)에 연결할 때:
-* Use their **email address**, not their name
-* Example: `owner@yourcompany.com`, not "John Smith"
+* 이름이 아니라 **이메일 주소**를 사용하세요
+* 예: `owner@yourcompany.com`, "John Smith"가 아님
```csv
taskName,assignedTo
@@ -176,53 +176,53 @@ Review proposal,jane@yourcompany.com
## FAQ
-
- You have two options:
+
+ 다음 두 가지 옵션이 있습니다:
- 1. Use the Twenty `id` (export parent records to get their IDs)
- 2. Create a custom unique field in your data model to store an external ID from your previous system
+ 1. Twenty의 `id`를 사용하세요(상위 레코드를 내보내 ID를 가져오세요)
+ 2. 데이터 모델에 사용자 지정 고유 필드를 만들어 이전 시스템의 외부 ID를 저장하세요
-
- Yes! Include the child record's unique identifier (e.g., `email` for People) and the new relation value. The import will update the relation.
+
+ 예! 하위 레코드의 고유 식별자(예: 사람의 경우 `email`)와 새로운 관계 값을 포함하세요. 가져오기가 관계를 업데이트합니다.
-
- Many-to-Many relations are not yet supported for import. This is planned for H1 2026.
+
+ 다대다 관계는 아직 가져오기를 지원하지 않습니다. 이는 2026년 상반기에 계획되어 있습니다.
-
- Relations pointing to multiple object types are not yet supported for import/export. This is on our roadmap.
+
+ 여러 객체 유형을 가리키는 관계는 아직 가져오기/내보내기를 지원하지 않습니다. 이는 로드맵에 포함되어 있습니다.
-
- The import will show an error for that row. You can either:
+
+ 해당 행에 대해 가져오기가 오류를 표시합니다. 다음 두 가지 방법 중 하나로 가능합니다:
- * Import the parent record first, then re-import
- * Fix the reference value
- * Remove the row from import
+ * 상위 레코드를 먼저 가져온 뒤 다시 가져오세요
+ * 참조 값을 수정하세요
+ * 가져오기에서 해당 행을 제거하세요
-
- Common causes:
+
+ 일반적인 원인:
- * Wrong format (use `https://domain.com` for domains)
- * Case mismatch (check exact spelling)
- * Parent doesn't exist (import parents first)
- * Mapping multiple identifiers (use only one)
+ * 잘못된 형식(도메인은 `https://domain.com`을 사용)
+ * 대소문자 불일치(정확한 철자 확인)
+ * 상위가 존재하지 않음(상위를 먼저 가져오기)
+ * 여러 식별자 매핑(하나만 사용)
- **Remember: Soft-deleted records count toward uniqueness.**
+ **기억하세요: 소프트 삭제된 레코드도 고유성에 포함됩니다.**
- If you're getting "not found" errors but the record seems to exist, check Command Menu → See deleted records. The parent may have been soft-deleted.
+ 레코드가 존재하는 것처럼 보이는데도 "not found" 오류가 발생한다면, Command Menu → See deleted records를 확인하세요. 상위가 소프트 삭제되었을 수 있습니다.
-## Troubleshooting
+## 문제 해결
-Having issues? Check:
+문제가 있으신가요? 확인하세요:
-* [How to Fix Import Errors](/l/ko/user-guide/data-migration/how-tos/fix-import-errors)
-* [Import Relations Capabilities](/l/ko/user-guide/data-migration/capabilities/import-relations)
-* [Uniqueness Constraints](/l/ko/user-guide/data-migration/capabilities/uniqueness-constraints)
+* [가져오기 오류 수정](/l/ko/user-guide/data-migration/how-tos/fix-import-errors)
+* [관계 가져오기 기능](/l/ko/user-guide/data-migration/capabilities/import-relations)
+* [고유성 제약 조건](/l/ko/user-guide/data-migration/capabilities/uniqueness-constraints)
diff --git a/packages/twenty-docs/l/ko/user-guide/data-migration/how-tos/migrating-from-other-crms.mdx b/packages/twenty-docs/l/ko/user-guide/data-migration/how-tos/migrating-from-other-crms.mdx
index d076d5c3dc..7b0eb02638 100644
--- a/packages/twenty-docs/l/ko/user-guide/data-migration/how-tos/migrating-from-other-crms.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/data-migration/how-tos/migrating-from-other-crms.mdx
@@ -1,133 +1,133 @@
---
-title: Migrating from Other CRMs
-description: Step-by-step guide to migrate your data from any CRM to Twenty.
+title: 다른 CRM에서 마이그레이션하기
+description: 어떤 CRM에서든 데이터를 Twenty로 마이그레이션하는 단계별 가이드.
---
-## Overview
+## 개요
-This guide walks you through migrating your data from any CRM to Twenty. The process involves auditing your data, preparing your Twenty workspace, exporting from your current system, and importing into Twenty.
+이 가이드는 어떤 CRM에서든 데이터를 Twenty로 마이그레이션하는 과정을 단계별로 안내합니다. 이 과정에는 데이터 감사, Twenty 워크스페이스 준비, 현재 시스템에서의 내보내기, Twenty로의 가져오기가 포함됩니다.
-Views, workflows, and permissions must be recreated manually after migration. Plan time for this configuration work.
+마이그레이션 후에는 뷰, 워크플로우, 권한을 수동으로 다시 만들어야 합니다. 이 구성 작업에 필요한 시간을 계획하세요.
-## Step 1: Audit Your Current Data
+## 1단계: 현재 데이터 감사
-Migration is an opportunity for a fresh start. Don't bring over clutter.
+마이그레이션은 새롭게 시작할 수 있는 기회입니다. 불필요한 데이터는 가져오지 마세요.
-**What to keep:**
+**유지할 항목:**
-* Active contacts and companies
-* Open opportunities and deals
-* Important notes and activities
-* Custom fields you actually use
+* 활성 연락처 및 회사
+* 열려 있는 기회와 거래
+* 중요한 메모와 활동
+* 실제로 사용하는 사용자 정의 필드
-**What to leave behind:**
+**남겨둘 항목:**
-* Outdated contacts (no activity in 2+ years)
-* Duplicate records
-* Test data
-* Unused custom fields
+* 오래된 연락처(2년 이상 활동 없음)
+* 중복 레코드
+* 테스트 데이터
+* 사용하지 않는 사용자 정의 필드
-## Step 2: Map Your Data Model
+## 2단계: 데이터 모델 매핑
-Create a mapping document between your current CRM and Twenty:
+현재 CRM과 Twenty 간의 매핑 문서를 만드세요:
-| Your CRM | Twenty |
-| ---------------------- | -------------------- |
-| Account / Organization | **Company** |
-| Contact / Person | **People** |
-| Deal / Opportunity | **Opportunity** |
-| Activity | **Task** or **Note** |
-| Custom Object | **Custom Object** |
+| 현재 CRM | Twenty |
+| --------- | ---------------- |
+| 계정 / 조직 | **회사** |
+| 연락처 / 개인 | **사람들** |
+| 거래 / 기회 | **기회** |
+| 활동 | **작업** 또는 **노트** |
+| 사용자 지정 개체 | **사용자 지정 개체** |
-**For each field, document:**
+**각 필드에 대해 다음을 문서화합니다:**
-* The source field name
-* The target Twenty field
-* Any format transformations needed (dates, phone numbers, etc.)
+* 원본 필드 이름
+* 대상 Twenty 필드
+* 필요한 형식 변환(날짜, 전화번호 등)
-Keep this mapping document handy during import—you'll reference it when mapping columns.
+가져오기 중에 이 매핑 문서를 가까이 두세요—열을 매핑할 때 참고하게 됩니다.
-## Step 3: Set Up Your Twenty Workspace
+## 3단계: Twenty 워크스페이스 설정
-Before importing data, prepare your Twenty workspace:
+데이터를 가져오기 전에 Twenty 워크스페이스를 준비하세요:
-### Create Custom Objects and Fields
+### 사용자 지정 개체 및 필드 만들기
-1. Go to **Settings → Data Model**
-2. Create any custom objects you need
-3. Add custom fields to standard and custom objects
-4. Configure field settings (unique, required, select options, etc.)
+1. **설정 → 데이터 모델**로 이동
+2. 필요한 사용자 지정 개체를 생성하세요
+3. 표준 개체와 사용자 지정 개체에 사용자 지정 필드를 추가하세요
+4. 필드 설정(고유, 필수, 선택 옵션 등)을 구성하세요
- **Fields must exist before import.**
+ **가져오기 전에 필드가 존재해야 합니다.**
- The CSV import creates records, not fields. Create all custom fields in Settings → Data Model before importing.
+ CSV 가져오기는 필드가 아니라 레코드를 생성합니다. 가져오기 전에 **설정 → 데이터 모델**에서 사용자 지정 필드를 생성하세요.
-### Invite Your Team
+### 팀 초대
- **Invite users BEFORE importing data.**
+ **데이터를 가져오기 전에 사용자를 초대하세요.**
- If your data includes user references (Account Owner, Assignee, etc.), those users must exist in Twenty before import. Otherwise, those relations cannot be mapped.
+ 데이터에 사용자 참조(계정 소유자, 담당자 등)가 포함되어 있다면, 가져오기 전에 해당 사용자가 Twenty에 존재해야 합니다. 그렇지 않으면 해당 관계를 매핑할 수 없습니다.
-1. Go to **Settings → Members**
-2. Invite all team members
-3. **Wait for everyone to accept** their invitation
-4. Verify all users appear in your Members list
+1. **설정 → 구성원**으로 이동하세요.
+2. 모든 팀 구성원을 초대하세요
+3. **모두가 초대를 수락할 때까지 기다리세요**
+4. 모든 사용자가 구성원 목록에 표시되는지 확인하세요
-## Step 4: Export from Your Current CRM
+## 4단계: 현재 CRM에서 내보내기
-Export your data from your current CRM:
+현재 CRM에서 데이터를 내보내세요:
-1. Look for an **Export** function (usually under Settings, Data Management, or Admin)
-2. Export to **CSV format** when possible
-3. Export each object type separately (Companies, Contacts, Deals, etc.)
-4. Include all fields you want to migrate
+1. 보통 설정, 데이터 관리 또는 관리자 메뉴에 있는 **내보내기** 기능을 찾으세요
+2. 가능하면 **CSV 형식**으로 내보내세요
+3. 각 개체 유형을 별도로 내보내세요(회사, 연락처, 거래 등)
+4. 마이그레이션하려는 모든 필드를 포함하세요
-**Export these objects (in this order for reference):**
+**다음 개체를 내보내세요(참고용 순서):**
-1. Companies / Accounts / Organizations
-2. Contacts / People
-3. Deals / Opportunities
-4. Notes and Activities
-5. Custom objects
+1. 회사 / 계정 / 조직
+2. 연락처 / 사람
+3. 거래 / 기회
+4. 노트 및 활동
+5. 사용자 지정 개체
-## Step 5: Clean and Format Your Data
+## 5단계: 데이터 정리 및 형식 지정
-Open each exported CSV in a spreadsheet application and prepare it for Twenty.
+내보낸 각 CSV를 스프레드시트 애플리케이션에서 열고 Twenty에 맞게 준비하세요.
-### Remove Duplicates
+### 중복 제거
-1. Sort by the unique field (email for People, domain for Companies)
-2. Remove or merge duplicate rows
-3. Verify no duplicates exist in Twenty already
+1. 고유 필드(사람: 이메일, 회사: 도메인)로 정렬하세요
+2. 중복 행을 제거하거나 병합하세요
+3. Twenty에 이미 중복이 없는지 확인하세요
-### Format Fields Correctly
+### 필드 형식을 올바르게 지정
-| Field Type | Required Format |
-| ----------------- | ------------------------------------------------- |
-| **Domain** | `https://domain.com` |
-| **Email** | `name@domain.com` (must be unique) |
-| **Date** | `YYYY-MM-DD` |
-| **Phone** | Three columns: Number, Country Code, Calling Code |
-| **Boolean** | `TRUE` or `FALSE` (uppercase) |
-| **Select fields** | Use API names, not display labels |
+| 필드 유형 | 필수 형식 |
+| --------- | --------------------------- |
+| **도메인** | `https://domain.com` |
+| **이메일** | `name@domain.com` (고유해야 함) |
+| **날짜** | `YYYY-MM-DD` |
+| **전화** | 세 개의 열: 번호, 국가 코드, 전화 걸기 코드 |
+| **부울** | `TRUE` 또는 `FALSE` (대문자) |
+| **선택 필드** | 표시 레이블이 아니라 API 이름을 사용하세요 |
- **Domain format is critical.**
+ **도메인 형식이 중요합니다.**
- Use `https://domain.com` (not `domain.com` or `www.domain.com`). This matches Twenty's format and prevents duplicates when you connect email/calendar sync.
+ `https://domain.com`을 사용하세요(`domain.com` 또는 `www.domain.com`은 사용하지 마세요). 이는 Twenty의 형식과 일치하며 이메일/캘린더 동기화를 연결할 때 중복을 방지합니다.
-See [How to Prepare Your CSV Files](/l/ko/user-guide/data-migration/how-tos/prepare-your-csv-files) for complete formatting requirements for all field types.
+모든 필드 유형에 대한 전체 형식 요구 사항은 [CSV 파일 준비 방법](/l/ko/user-guide/data-migration/how-tos/prepare-your-csv-files)을 참조하세요.
-### Add Relation Columns
+### 관계 열 추가
-To link records (e.g., People to Companies), add a column with the parent's unique identifier.
+레코드를 연결하려면(예: 사람을 회사에) 상위 레코드의 고유 식별자가 있는 열을 추가하세요.
-**Example: People CSV with Company link**
+**예: 회사 링크가 포함된 사람 CSV**
```csv
firstName,lastName,email,companyDomain
@@ -135,159 +135,159 @@ John,Smith,john@acme.com,https://acme.com
Jane,Doe,jane@widgets.co,https://widgets.co
```
-See [How to Import Relations](/l/ko/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv) for detailed instructions on linking records.
+레코드 연결에 대한 자세한 지침은 [관계 가져오기 방법](/l/ko/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv)을 참조하세요.
-### Update User References
+### 사용자 참조 업데이트
-If your data includes user assignments (Owner, Assignee):
+데이터에 사용자 할당(소유자, 담당자)이 포함된 경우:
-1. Add a column with the **user's email** (not just their ID from the old system)
-2. Use the same email addresses that users used to join your Twenty workspace
+1. **사용자의 이메일**이 포함된 열을 추가하세요(이전 시스템의 ID만이 아니라)
+2. 사용자가 Twenty 워크스페이스에 참여할 때 사용한 것과 동일한 이메일 주소를 사용하세요
-See [How to Prepare Your CSV Files](/l/ko/user-guide/data-migration/how-tos/prepare-your-csv-files) for complete formatting guide.
+전체 형식 가이드는 [CSV 파일 준비 방법](/l/ko/user-guide/data-migration/how-tos/prepare-your-csv-files)을 참조하세요.
-## Step 6: Import to Twenty
+## 6단계: Twenty로 가져오기
- **Import Order Matters!**
+ **가져오기 순서가 중요합니다!**
- Always import in this order:
+ 항상 다음 순서로 가져오세요:
- 1. **Companies** first (no dependencies)
- 2. **People** second (link to Companies)
- 3. **Opportunities** third (link to Companies/People)
- 4. **Notes and Tasks** (link to records)
- 5. **Custom objects** following their dependencies
+ 1. **회사** 먼저(종속성 없음)
+ 2. 그다음 **사람**(회사에 연결)
+ 3. **기회** 세 번째(회사/사람에 연결)
+ 4. **노트와 작업**(레코드에 연결)
+ 5. **사용자 지정 객체**(종속성에 따름)
- The parent record must exist before you can reference it.
+ 참조하려면 상위 레코드가 먼저 존재해야 합니다.
-### Import Each Object
+### 각 객체 가져오기
-For each CSV file, in order:
+각 CSV 파일에 대해 다음 순서로 진행하세요:
-1. Navigate to the object in Twenty
-2. Click **⋮ → Import records**
-3. Upload the CSV file
-4. Map columns to fields:
- * Map user email columns to the appropriate relation fields
- * Map relation columns (like `companyDomain`) to relation fields
-5. Review and fix any errors in the UI
-6. Confirm the import
-7. Verify a few records before proceeding to the next file
+1. Twenty에서 해당 객체로 이동하세요
+2. **⋮ → 레코드 가져오기**를 클릭하세요
+3. CSV 파일을 업로드하세요
+4. 열을 필드에 매핑하세요:
+ * 사용자 이메일 열을 해당 관계 필드에 매핑하세요
+ * 관계 열(예: `companyDomain`)을 관계 필드에 매핑하세요
+5. UI에서 오류를 검토하고 수정하세요
+6. 가져오기를 확인하세요
+7. 다음 파일로 진행하기 전에 몇 개의 레코드를 확인하세요
-**Detailed guides:**
+**상세 가이드:**
-* [How to Import Companies](/l/ko/user-guide/data-migration/how-tos/import-companies-via-csv)
-* [How to Import Contacts](/l/ko/user-guide/data-migration/how-tos/import-contacts-via-csv)
-* [How to Import Relations](/l/ko/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv)
+* [회사 가져오기 방법](/l/ko/user-guide/data-migration/how-tos/import-companies-via-csv)
+* [연락처 가져오기 방법](/l/ko/user-guide/data-migration/how-tos/import-contacts-via-csv)
+* [관계 가져오기 방법](/l/ko/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv)
-## Step 7: Large Migrations (50,000+ Records)
+## 7단계: 대규모 마이그레이션(레코드 50,000개 이상)
-For large migrations:
+대규모 마이그레이션의 경우:
-| Volume | Recommended Approach |
-| ----------------------- | ----------------------------- |
-| Under 10,000 records | Single CSV import |
-| 10,000 - 50,000 records | Split into multiple CSV files |
-| 50,000+ records | Use the API |
+| 규모 | 권장 방법 |
+| -------------------- | ------------- |
+| 10,000개 미만의 레코드 | 단일 CSV 가져오기 |
+| 10,000 - 50,000개 레코드 | 여러 CSV 파일로 분할 |
+| 50,000개 이상의 레코드 | API 사용 |
-**For API imports:**
+**API 가져오기의 경우:**
-* Faster and more reliable for large datasets
-* Supports batch operations (up to 60 records per call)
-* See [How to Import Data via API](/l/ko/user-guide/data-migration/how-tos/import-data-via-api)
+* 대규모 데이터 세트에 대해 더 빠르고 신뢰성이 높음
+* 배치 작업 지원(호출당 최대 60개 레코드)
+* 자세한 내용은 [API로 데이터 가져오는 방법](/l/ko/user-guide/data-migration/how-tos/import-data-via-api)을 참조하세요
-## Step 8: Post-Migration Setup
+## 8단계: 마이그레이션 이후 설정
-After importing data, complete your workspace configuration:
+데이터를 가져온 후 워크스페이스 구성을 완료하세요:
-### Recreate Views
+### 뷰 다시 만들기
-* Set up saved views with filters, sorts, and column configurations
-* Create any kanban or calendar views you need
+* 필터, 정렬, 열 구성이 포함된 저장된 뷰를 설정하세요
+* 필요한 칸반 또는 캘린더 뷰를 만드세요
-### Recreate Workflows
+### 워크플로우 재구성
-* Rebuild your automations in **Settings → Workflows**
-* Start with the most critical workflows
-* Test each one before relying on it
+* 자동화를 **설정 → 워크플로우**에서 다시 만드세요
+* 가장 중요한 워크플로우부터 시작하세요
+* 사용하기 전에 각 워크플로우를 테스트하세요
-### Configure Roles and Permissions
+### 역할 및 권한 구성
-* Set up roles in **Settings → Roles**
-* Assign users to appropriate roles
+* **설정 → 역할**에서 역할을 설정하세요
+* 적절한 역할에 사용자를 할당하세요
-### Connect Email and Calendar
+### 이메일 및 캘린더 연결
-* Each user connects their own account in **Settings → Accounts**
-* Twenty will start syncing emails to contact records
-* See [Email & Calendar](/l/ko/user-guide/calendar-emails/overview)
+* 각 사용자는 **설정 → 계정**에서 자신의 계정을 연결합니다
+* Twenty가 이메일을 연락처 레코드와 동기화하기 시작합니다
+* 자세한 내용은 [이메일 및 캘린더](/l/ko/user-guide/calendar-emails/overview)를 참조하세요
-### Train Your Team
+### 팀 교육
-* Walk through the new interface together
-* Document any team-specific processes
+* 함께 새 인터페이스를 살펴보세요
+* 팀별 프로세스를 문서화하세요
-## Common Issues and Solutions
+## 일반적인 문제와 해결책
-| Issue | Cause | Solution |
-| ----------------------- | --------------------------- | ------------------------------------------------------------------------------------ |
-| **Duplicate errors** | Email/domain already exists | Remove duplicates from file, or include unique identifier to update existing records |
-| **Relation not found** | Parent record doesn't exist | Import parent objects first (Companies before People) |
-| **Missing fields** | Custom field doesn't exist | Create field in Settings → Data Model before importing |
-| **Select field errors** | Using display labels | Use API names (enable Advanced mode in Settings to find them) |
-| **User relation empty** | User hasn't accepted invite | Ensure all users accept invitations before importing |
+| 문제 | 원인 | 해결책 |
+| ---------------- | ------------------ | ------------------------------------------- |
+| **중복 오류** | 이메일/도메인이 이미 존재함 | 파일에서 중복을 제거하거나 고유 식별자를 포함하여 기존 레코드를 업데이트하세요 |
+| **관계를 찾을 수 없음** | 상위 레코드가 존재하지 않음 | 상위 객체를 먼저 가져오세요(회사를 사람보다 먼저) |
+| **누락된 필드** | 사용자 지정 필드가 존재하지 않음 | 가져오기 전에 설정 → 데이터 모델에서 필드를 생성하세요 |
+| **선택 필드 오류** | 표시 레이블 사용 중 | API 이름을 사용하세요(설정에서 고급 모드를 활성화하여 찾을 수 있음) |
+| **사용자 관계 비어 있음** | 사용자가 초대를 수락하지 않음 | 가져오기 전에 모든 사용자가 초대를 수락했는지 확인하세요 |
-See [How to Fix Import Errors](/l/ko/user-guide/data-migration/how-tos/fix-import-errors) for detailed troubleshooting steps.
+자세한 문제 해결 단계는 [가져오기 오류 수정](/l/ko/user-guide/data-migration/how-tos/fix-import-errors)을 참조하세요.
-## Post-Migration Checklist
+## 마이그레이션 후 체크리스트
-### Data Integrity
+### 데이터 무결성
-All records imported (compare counts with source system)
-Relations working correctly (People linked to Companies)
-User assignments mapped correctly (Owner, Assignee)
-Custom fields populated
-No unexpected duplicates
+모든 레코드가 가져와졌음(원본 시스템과 개수 비교)
+관계가 정상적으로 작동함(사람이 회사에 연결됨)
+사용자 할당이 올바르게 매핑됨(소유자, 담당자)
+사용자 지정 필드가 채워졌음
+예상치 못한 중복 없음
-### Configuration
+### 구성
-Views recreated
-Workflows recreated and tested
-Roles and permissions configured
-Email/calendar sync connected
+뷰 재생성 완료
+워크플로우 재생성 및 테스트 완료
+역할 및 권한 구성 완료
+이메일/캘린더 동기화 연동 완료
-### Team Readiness
+### 팀 준비 상태
-Team trained on new system
-Old CRM access plan decided (keep for reference? When to disable?)
+새 시스템에 대한 팀 교육 완료
+기존 CRM 접근 계획 결정(참고용으로 유지? 언제 비활성화할지?)
## FAQ
-
- Not currently. Workflows must be recreated manually in Twenty.
+
+ 현재는 불가능합니다. 워크플로우는 Twenty에서 수동으로 다시 만들어야 합니다.
-
- File attachments are not included in CSV exports. You'll need to re-upload them manually, migrate via API, or contact our team for assistance.
+
+ 파일 첨부는 CSV 내보내기에 포함되지 않습니다. 수동으로 다시 업로드하거나 API를 통해 마이그레이션하거나 지원이 필요하면 당사 팀에 문의하세요.
-
- Yes, we recommend keeping your old CRM running until you've verified the migration is complete. Just be careful not to create new data in both places.
+
+ 예, 마이그레이션이 완료되었음을 확인할 때까지 기존 CRM을 실행 상태로 유지할 것을 권장합니다. 다만 두 곳 모두에서 새 데이터를 생성하지 않도록 주의하세요.
-
- Depends on data volume and complexity. Small migrations (under 10,000 records) can be done in a few hours. Large migrations may take several days including data cleanup and testing.
+
+ 데이터의 규모와 복잡도에 따라 다릅니다. 소규모 마이그레이션(레코드 10,000개 미만)은 몇 시간 내에 완료할 수 있습니다. 대규모 마이그레이션은 데이터 정리와 테스트를 포함하여 며칠이 걸릴 수 있습니다.
-## Need Help?
+## 도움이 필요하신가요?
-For complex migrations or large datasets:
+복잡한 마이그레이션 또는 대규모 데이터 세트의 경우:
-* **Guided setup:** Book a 4-hour onboarding pack
-* **Full migration service:** Our partners can handle the entire migration
+* **가이드 설정:** 4시간 온보딩 패키지 예약
+* **전체 마이그레이션 서비스:** 당사 파트너가 전체 마이그레이션을 처리할 수 있습니다
-Contact [contact@twenty.com](mailto:contact@twenty.com) or explore our [Implementation Services](/l/ko/user-guide/getting-started/capabilities/implementation-services).
+[contact@twenty.com](mailto:contact@twenty.com)으로 문의하시거나 당사의 [구현 서비스](/l/ko/user-guide/getting-started/capabilities/implementation-services)를 확인하세요.
diff --git a/packages/twenty-docs/l/ko/user-guide/data-migration/how-tos/migrating-from-self-hosted-to-cloud.mdx b/packages/twenty-docs/l/ko/user-guide/data-migration/how-tos/migrating-from-self-hosted-to-cloud.mdx
index e4964a9c69..d08241ed7d 100644
--- a/packages/twenty-docs/l/ko/user-guide/data-migration/how-tos/migrating-from-self-hosted-to-cloud.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/data-migration/how-tos/migrating-from-self-hosted-to-cloud.mdx
@@ -1,171 +1,171 @@
---
-title: Migrating from Self-Hosted to Cloud
-description: Step-by-step guide to migrate your Twenty self-hosted instance to Twenty Cloud.
+title: 자가 호스팅에서 클라우드로 마이그레이션
+description: Twenty 자가 호스팅 인스턴스를 Twenty Cloud로 마이그레이션하는 단계별 가이드.
---
-## Overview
+## 개요
-This guide walks you through migrating your data from a Twenty self-hosted instance to Twenty Cloud. The process involves setting up your cloud workspace, exporting your data, and re-importing it.
+이 가이드는 Twenty 자가 호스팅 인스턴스에서 Twenty Cloud로 데이터를 마이그레이션하는 과정을 안내합니다. 이 프로세스에는 클라우드 워크스페이스 설정, 데이터 내보내기, 그리고 다시 가져오기가 포함됩니다.
-Views, workflows, and roles must be recreated manually after migration. Plan time for this configuration work.
+마이그레이션 후에는 뷰, 워크플로우, 역할을 수동으로 다시 만들어야 합니다. 이 구성 작업에 필요한 시간을 계획하세요.
-## Step 1: Create Your Cloud Workspace
+## 1단계: 클라우드 워크스페이스 생성
-1. Go to [app.twenty.com](https://app.twenty.com) and create a new workspace
-2. Complete the initial setup wizard
-3. Note your new workspace URL
+1. [app.twenty.com](https://app.twenty.com)으로 이동하여 새 워크스페이스를 생성하세요
+2. 초기 설정 마법사를 완료하세요
+3. 새 워크스페이스 URL을 기록해 두세요
-## Step 2: Recreate Your Data Model
+## 2단계: 데이터 모델 다시 생성
-Before importing data, recreate your custom objects and fields:
+데이터를 가져오기 전에 사용자 지정 객체와 필드를 다시 만드세요:
-1. Go to **Settings → Data Model** in your cloud instance
-2. Create custom objects that match your self-hosted setup
-3. Add custom fields to standard and custom objects
-4. Configure field settings (unique, required, etc.)
+1. 클라우드 인스턴스에서 **설정 → 데이터 모델**로 이동하세요
+2. 자가 호스팅 설정과 일치하는 사용자 지정 객체를 생성하세요
+3. 표준 객체와 사용자 지정 객체에 사용자 지정 필드를 추가하세요
+4. 필드 설정(고유, 필수 등)을 구성하세요
-Take screenshots of your self-hosted data model for reference, or keep both instances open side by side.
+참고용으로 자가 호스팅 데이터 모델의 스크린샷을 찍거나, 두 인스턴스를 나란히 열어 두세요.
-## Step 3: Invite All Users
+## 3단계: 모든 사용자 초대
- **Critical: Invite users BEFORE importing data.**
+ **중요: 데이터를 가져오기 전에 사용자를 초대하세요.**
- Users must accept their invitations before you import any records that reference them (like Account Owner fields). If users don't exist yet, those relations cannot be mapped.
+ 사용자가 참조되는 레코드(예: Account Owner 필드)를 가져오기 전에 초대를 수락해야 합니다. 사용자가 아직 존재하지 않으면 해당 관계를 매핑할 수 없습니다.
-1. Go to **Settings → Members** in your cloud instance
-2. Invite all team members who had accounts on self-hosted
-3. **Wait for everyone to accept** their invitation
-4. Verify all users appear in your Members list
+1. 클라우드 인스턴스에서 **설정 → 멤버**로 이동하세요
+2. 자가 호스팅에서 계정을 보유했던 모든 팀 멤버를 초대하세요
+3. **모두가 초대를 수락할 때까지 기다리세요**
+4. 모든 사용자가 멤버 목록에 표시되는지 확인하세요
-## Step 4: Export Data from Self-Hosted
+## 4단계: 자가 호스팅에서 데이터 내보내기
-Export each object from your self-hosted instance:
+자가 호스팅 인스턴스에서 각 객체를 내보내세요:
-1. Navigate to each object (Companies, People, Opportunities, etc.)
-2. Configure the view to show **all columns** you want to migrate
-3. Click **⋮ → Export view**
-4. Save each CSV file with a clear name (e.g., `companies-export.csv`)
+1. 각 객체(회사, 사람, 기회 등)로 이동하세요
+2. 마이그레이션하려는 **모든 열**이 보이도록 뷰를 구성하세요
+3. **⋮ → 뷰 내보내기**를 클릭하세요
+4. 각 CSV 파일을 명확한 이름으로 저장하세요(예: `companies-export.csv`)
-**Export in this order** (for reference when importing):
+**다음 순서로 내보내세요**(가져올 때 참고용):
-1. Companies
-2. People
-3. Opportunities
-4. Custom objects (following their dependencies)
-5. Tasks, Notes
+1. 회사
+2. 사람들
+3. 기회
+4. 사용자 지정 객체(종속성을 따름)
+5. 작업, 노트
-## Step 5: Update Workspace Member References
+## 5단계: 워크스페이스 멤버 참조 업데이트
-The exported CSVs contain user IDs from your self-hosted instance. These IDs won't match your cloud instance, so you need to replace them with emails.
+내보낸 CSV에는 자가 호스팅 인스턴스의 사용자 ID가 포함되어 있습니다. 이 ID는 클라우드 인스턴스와 일치하지 않으므로 이메일로 대체해야 합니다.
-**For each CSV file with user references (Owner, Assignee, etc.):**
+**사용자 참조(Owner, Assignee 등)가 있는 각 CSV 파일의 경우:**
-1. Open the CSV in a spreadsheet application
-2. Add a new column next to each user ID column (e.g., `accountOwnerEmail` next to `accountOwnerId`)
-3. Fill in the **email address** of each user
-4. You can delete the old ID column or leave it (it will be skipped during import)
+1. 스프레드시트 애플리케이션에서 CSV를 여세요
+2. 각 사용자 ID 열 옆에 새 열을 추가하세요(예: `accountOwnerId` 옆에 `accountOwnerEmail`)
+3. 각 사용자의 **이메일 주소**를 입력하세요
+4. 이전 ID 열은 삭제하거나 그대로 둘 수 있습니다(가져오기 중에 건너뜁니다)
-**Example:**
+**예시:**
-Before:
+이전:
```csv
name,domain,accountOwnerId
Acme Corp,https://acme.com,old-uuid-123
```
-After:
+이후:
```csv
name,domain,accountOwnerEmail
Acme Corp,https://acme.com,john@yourcompany.com
```
-Use the same email addresses that users used to accept their cloud workspace invitation.
+사용자가 클라우드 워크스페이스 초대를 수락할 때 사용한 것과 동일한 이메일 주소를 사용하세요.
-## Step 6: Plan Your Import Order
+## 6단계: 가져오기 순서 계획
-Import files in the correct order to maintain relationships:
+관계를 유지하려면 올바른 순서로 파일을 가져오세요:
-1. **Companies** first (no dependencies)
-2. **People** second (link to Companies)
-3. **Opportunities** third (link to Companies and People)
-4. **Custom objects** (following their dependencies)
-5. **Tasks and Notes** last (link to other records)
+1. 먼저 **회사**(종속성 없음)
+2. 그다음 **사람**(회사에 연결)
+3. 세 번째로 **기회**(회사 및 사람에 연결)
+4. **사용자 지정 객체**(종속성을 따름)
+5. 마지막으로 **작업과 노트**(다른 레코드에 연결)
-See [How to Import Relations](/l/ko/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv) for details on maintaining relationships.
+관계 유지에 대한 자세한 내용은 [관계 가져오기 방법](/l/ko/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv)을 참조하세요.
-## Step 7: Import to Cloud
+## 7단계: 클라우드로 가져오기
-For each CSV file, in order:
+각 CSV 파일에 대해 다음 순서로 진행하세요:
-1. Navigate to the object in your cloud instance
-2. Click **⋮ → Import records**
-3. Upload the CSV file
-4. Map columns to fields:
- * Map user email columns to the appropriate relation fields
- * Map other columns as usual
-5. Review and fix any errors
-6. Confirm the import
-7. Verify a few records before proceeding to the next file
+1. 클라우드 인스턴스에서 해당 객체로 이동하세요
+2. **⋮ → 레코드 가져오기**를 클릭하세요
+3. CSV 파일을 업로드하세요
+4. 열을 필드에 매핑하세요:
+ * 사용자 이메일 열을 해당 관계 필드에 매핑하세요
+ * 다른 열도 일반적으로 매핑하세요
+5. 오류가 있으면 검토하고 수정하세요
+6. 가져오기를 확인하세요
+7. 다음 파일로 진행하기 전에 몇 개의 레코드를 확인하세요
-## Step 8: Recreate Configuration
+## 8단계: 구성 다시 생성
-After importing data, manually recreate:
+데이터를 가져온 후 다음을 수동으로 다시 만드세요:
-### Views
+### 보기
-* Recreate saved views with filters, sorts, and column configurations
-* Set up any kanban or calendar views
+* 필터, 정렬, 열 구성과 함께 저장된 뷰를 다시 만드세요
+* 칸반 또는 캘린더 뷰를 설정하세요
-### Workflows
+### 워크플로우
-* Recreate automations in **Settings → Workflows**
-* Test each workflow before relying on it
+* **설정 → 워크플로우**에서 자동화를 다시 만드세요
+* 사용하기 전에 각 워크플로우를 테스트하세요
-### Roles and Permissions
+### 역할 및 권한
-* Configure roles in **Settings → Roles**
-* Assign users to appropriate roles
+* **설정 → 역할**에서 역할을 구성하세요
+* 적절한 역할에 사용자를 할당하세요
-### Integrations
+### 통합
-* Reconnect email and calendar sync for each user
-* Reconfigure any API integrations with new API keys
+* 각 사용자의 이메일 및 캘린더 동기화를 다시 연결하세요
+* 새 API 키로 모든 API 통합을 다시 구성하세요
-## Post-Migration Checklist
+## 마이그레이션 후 체크리스트
-All data imported successfully
-Relations between objects working correctly
-User assignments (Owner, Assignee) mapped correctly
-Views recreated
-Workflows recreated and tested
-Roles and permissions configured
-Email/calendar sync reconnected
-API integrations updated with new keys
+모든 데이터가 성공적으로 가져와졌음
+객체 간 관계가 올바르게 동작함
+사용자 할당(Owner, Assignee)이 올바르게 매핑됨
+뷰 재생성 완료
+워크플로우 재생성 및 테스트 완료
+역할 및 권한 구성 완료
+이메일/캘린더 동기화 재연결 완료
+API 통합이 새 키로 업데이트됨
## FAQ
-
- Not currently. Workflows must be recreated manually in your cloud instance.
+
+ 현재는 불가능합니다. 워크플로우는 클라우드 인스턴스에서 수동으로 다시 만들어야 합니다.
-
- File attachments are not included in CSV exports. You'll need to re-upload any attachments manually, migrate them via API or contact our team for assistance with large migrations.
+
+ 파일 첨부는 CSV 내보내기에 포함되지 않습니다. 첨부 파일은 수동으로 다시 업로드하거나 API를 통해 마이그레이션해야 하며, 대규모 마이그레이션의 경우 당사 팀에 연락하여 지원을 받으세요.
-
- Yes, we recommend keeping your self-hosted instance running until you've verified the cloud migration is complete. Just be careful not to create new data in both places.
+
+ 예. 클라우드 마이그레이션이 완료되었음을 확인할 때까지 자가 호스팅 인스턴스를 실행 상태로 유지하는 것을 권장합니다. 단, 두 곳 모두에서 새 데이터를 생성하지 않도록 주의하세요.
-
- Records referencing that user will fail to import or the relation will be empty. Ensure all users accept invitations before importing data.
+
+ 해당 사용자를 참조하는 레코드는 가져오기에 실패하거나 관계가 비어 있게 됩니다. 데이터를 가져오기 전에 모든 사용자가 초대를 수락했는지 확인하세요.
-## Need Help?
+## 도움이 필요하신가요?
-For complex migrations or large datasets, contact us at [contact@twenty.com](mailto:contact@twenty.com) or explore our [Implementation Services](/l/ko/user-guide/getting-started/capabilities/implementation-services).
+복잡한 마이그레이션이나 대규모 데이터 세트의 경우 [contact@twenty.com](mailto:contact@twenty.com)으로 문의하시거나 [구현 서비스](/l/ko/user-guide/getting-started/capabilities/implementation-services)를 확인하세요.
diff --git a/packages/twenty-docs/l/ko/user-guide/data-migration/how-tos/prepare-your-csv-files.mdx b/packages/twenty-docs/l/ko/user-guide/data-migration/how-tos/prepare-your-csv-files.mdx
index 752e337841..f1f382a858 100644
--- a/packages/twenty-docs/l/ko/user-guide/data-migration/how-tos/prepare-your-csv-files.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/data-migration/how-tos/prepare-your-csv-files.mdx
@@ -1,200 +1,200 @@
---
-title: Prepare Your CSV Files
-description: Complete step-by-step guide to format your data for import into Twenty.
+title: CSV 파일 준비
+description: Twenty로 가져오기 위한 데이터 형식 지정 단계별 가이드.
---
-## Overview
+## 개요
-This guide walks you through preparing your CSV file for a successful import. Follow these steps in order to avoid errors.
+이 가이드는 성공적인 가져오기를 위해 CSV 파일을 준비하는 과정을 안내합니다. 오류를 피하려면 다음 단계를 따르세요.
-## Step 1: Check File Requirements
+## 1단계: 파일 요구 사항 확인
-Before you start, ensure your file meets these requirements:
+시작하기 전에 파일이 다음 요구 사항을 충족하는지 확인하세요:
-| Requirement | Details |
-| -------------- | ------------------------ |
-| **Format** | CSV, XLSX, or XLS |
-| **Size limit** | 10,000 records per file |
-| **Encoding** | UTF-8 recommended |
-| **Structure** | One object type per file |
+| 요구 사항 | 세부정보 |
+| --------- | ---------------- |
+| **형식** | CSV, XLSX 또는 XLS |
+| **크기 제한** | 파일당 10,000 레코드 |
+| **인코딩** | UTF-8 권장 |
+| **구조** | 파일당 한 가지 오브젝트 유형 |
-For datasets larger than 10,000 records, split into multiple files or use the [API import](/l/ko/user-guide/data-migration/how-tos/import-data-via-api).
+10,000 레코드를 초과하는 데이터세트의 경우, 여러 파일로 분할하거나 [API 가져오기](/l/ko/user-guide/data-migration/how-tos/import-data-via-api)를 사용하세요.
-## Step 2: Download the Sample File
+## 2단계: 샘플 파일 다운로드
-**This is the most important step.** The sample file shows you the exact column names and format Twenty expects.
+**가장 중요한 단계입니다.** 샘플 파일은 Twenty가 기대하는 정확한 열 이름과 형식을 보여줍니다.
-1. Go to the object view (People, Companies, etc.)
-2. Click **⋮** → **Import records**
-3. Click **Download sample file**
-4. Use this file as your template
+1. 오브젝트 보기(사람들, 회사 등)로 이동하세요.
+2. **⋮** → **레코드 가져오기**를 클릭하세요
+3. **샘플 파일 다운로드**를 클릭하세요
+4. 이 파일을 템플릿으로 사용하세요
-**Pro tip:** Export a few existing records instead. This gives you real examples of how data should be formatted, and the column names will map automatically during import.
+**전문가 팁:** 대신 기존 레코드 몇 개를 내보내세요. 이렇게 하면 데이터가 어떻게 형식화되어야 하는지 실제 예를 얻을 수 있으며, 가져오는 동안 열 이름이 자동으로 매핑됩니다.
-## Step 3: Remove Duplicate Values
+## 3단계: 중복 값 제거
-Twenty enforces uniqueness on certain fields. Duplicates will cause import errors.
+Twenty는 일부 필드에 대해 고유성을 적용합니다. 중복 항목은 가져오기 오류를 유발합니다.
-| Object | Unique Fields |
-| ------------------ | ----------------------------------------- |
-| **People** | `id`, `email` |
-| **Companies** | `id`, `domain` |
-| **Custom objects** | `id`, plus any field you marked as unique |
+| 객체 | 고유 필드 |
+| ------------- | ----------------------- |
+| **사람들** | `id`, `email` |
+| **회사** | `id`, `domain` |
+| **사용자 지정 개체** | `id`, 그리고 고유로 표시한 모든 필드 |
-**Before importing:**
+**가져오기 전에:**
-1. Sort your spreadsheet by the unique field (email or domain)
-2. Remove or merge duplicate rows
-3. Check for duplicates that already exist in Twenty
+1. 스프레드시트를 고유 필드(이메일 또는 도메인)로 정렬하세요
+2. 중복 행을 제거하거나 병합하세요
+3. Twenty에 이미 존재하는 중복 항목이 있는지 확인하세요
-**Soft-deleted records count toward uniqueness.** Records in Command Menu → See deleted records will cause duplicate errors. Delete them permanently or restore and update them.
+**소프트 삭제된 레코드는 고유성에 포함됩니다.** Command Menu → 삭제된 레코드 보기에 있는 레코드는 중복 오류를 일으킵니다. 영구적으로 삭제하거나 복원한 후 업데이트하세요.
-## Step 4: Format Each Field Type Correctly
+## 4단계: 각 필드 유형을 올바르게 형식 지정하기
-Different field types require specific formats. Here's the complete reference:
+필드 유형에 따라 요구되는 형식이 다릅니다. 전체 참고 자료는 다음과 같습니다:
-### Text Fields
+### 텍스트 필드
-* No special formatting required
-* Leading/trailing spaces are automatically trimmed
+* 특별한 형식 지정이 필요 없습니다
+* 앞/뒤 공백은 자동으로 제거됩니다
-### Email Fields
+### 이메일 필드
-* Must be valid email format: `name@domain.com`
-* Must be unique (no duplicates in file or in Twenty)
-* For additional emails, use this format in the **Emails / Additional Emails** column:
+* 유효한 이메일 형식이어야 합니다: `name@domain.com`
+* 고유해야 합니다(파일 또는 Twenty에 중복이 없어야 함)
+* 추가 이메일의 경우 **Emails / Additional Emails** 열에서 다음 형식을 사용하세요:
```
["jane@twenty.com","jane.doe@twenty.com"]
```
-### Domain Fields
+### 도메인 필드
-* **Recommended format**: `https://domain.com`
-* This matches the format used by mailbox/calendar sync (prevents duplicates)
-* Fill both columns:
+* **권장 형식**: `https://domain.com`
+* 이는 메일박스/캘린더 동기화에서 사용하는 형식과 일치하며 중복을 방지합니다
+* 두 열을 모두 채우세요:
* **Domain / Domain Label**: `domain.com`
* **Domain / Domain URL**: `https://domain.com`
-* Must be unique within your file and in Twenty
+* 파일 내 및 Twenty에서 고유해야 합니다
-### Phone Fields
+### 전화번호 필드
-Phone is a **nested field** requiring multiple columns:
+전화번호는 여러 열이 필요한 **중첩 필드**입니다:
-| Column | Example |
+| 열 | 예시 |
| --------------------------------------- | ------------ |
| **Phones / Primary Phone Number** | `4159095555` |
| **Phones / Primary Phone Country Code** | `US` |
| **Phones / Primary Phone Calling Code** | `+1` |
-### Address Fields
+### 주소 필드
-Address is a **nested field** with multiple columns (some can be left empty):
+Address는 여러 열로 구성된 **중첩 필드**이며(일부는 비워 둘 수 있음):
-* **Address / Address 1**: Street address line 1
-* **Address / Address 2**: Street address line 2 (optional)
-* **Address / City**: City name
-* **Address / State**: State or province
-* **Address / Country**: Country name
-* **Address / Post Code**: Postal/ZIP code
+* **Address / Address 1**: 주소 1행
+* **Address / Address 2**: 주소 2행(선택 사항)
+* **Address / City**: 도시 이름
+* **Address / State**: 주 또는 도
+* **Address / Country**: 국가 이름
+* **Address / Post Code**: 우편번호/ZIP 코드
-### Date Fields
+### 날짜 필드
-Use consistent formatting throughout your file:
+파일 전체에서 일관된 형식을 사용하세요:
-* `YYYY-MM-DD` (recommended): `2024-03-15`
+* `YYYY-MM-DD` (권장): `2024-03-15`
* `MM/DD/YYYY`: `03/15/2024`
* `DD/MM/YYYY`: `15/03/2024`
* ISO 8601: `2024-03-15T10:30:00Z`
-### Number Fields
+### 숫자 필드
-* Numbers only (no text)
-* Use period for decimals: `1234.56`
-* No thousands separators (not `1,234.56`)
+* 숫자만 사용(텍스트 금지)
+* 소수점 구분 기호로 점(.)을 사용: `1234.56`
+* 천 단위 구분 기호 사용 금지(`1,234.56`는 사용하지 마세요)
-### Currency Fields
+### 통화 필드
-Currency is a **nested field** requiring two columns that **both must be filled**:
+통화는 두 개의 열이 필요한 **중첩 필드**이며, **두 열 모두** 채워야 합니다:
-| Column | Example |
+| 열 | 예시 |
| --------------------- | --------- |
| **Amount / Amount** | `1234.56` |
| **Amount / Currency** | `USD` |
-### Boolean Fields
+### 부울 필드
-Use uppercase: `TRUE` or `FALSE`
+대문자 사용: `TRUE` 또는 `FALSE`
-Lowercase `true` or `false` will not work.
+소문자 `true` 또는 `false`는 동작하지 않습니다.
-### Select Fields
+### 선택 필드
-Use the **API name** of the option, not the display label.
+표시 라벨이 아니라 옵션의 **API 이름**을 사용하세요.
-**How to find API names:**
+**API 이름을 찾는 방법:**
-1. Go to **Settings → Data Model**
-2. Select the object and field
-3. Enable **Advanced mode** (toggle at bottom right)
-4. Copy the API name (e.g., `OPTION_1`, not "Option 1")
+1. **설정 → 데이터 모델**로 이동
+2. 객체와 필드를 선택하세요
+3. **고급 모드**를 활성화하세요(오른쪽 하단 토글)
+4. API 이름을 복사하세요(예: `OPTION_1`, "Option 1" 아님)
-New select options are not created automatically. Add them in **Settings → Data Model** before importing.
+새 선택 옵션은 자동으로 생성되지 않습니다. 가져오기 전에 **설정 → 데이터 모델**에서 추가하세요.
-### Multi-Select Fields
+### 다중 선택 필드
-Use API names in array format:
+배열 형식으로 API 이름을 사용:
```
-["VALUE1","VALUE2"]
+[\"VALUE1\",\"VALUE2\"]
```
-### Array Fields
+### 배열 필드
-Use JSON array format:
+JSON 배열 형식 사용:
```
-["value1","value2"]
+[\"value1\",\"value2\"]
```
-### Rating Fields
+### 평점 필드
-Use the format: `RATING_1`, `RATING_2`, `RATING_3`, `RATING_4`, or `RATING_5`
+다음 형식을 사용: `RATING_1`, `RATING_2`, `RATING_3`, `RATING_4`, 또는 `RATING_5`
-### Links/URL Fields
+### 링크/URL 필드
-Fill both columns:
+두 열을 모두 채우세요:
* **Links / Link Label**: `Twenty`
* **Links / Link URL**: `https://twenty.com`
-For secondary links, use the **Links / Secondary Links** column:
+보조 링크의 경우 **Links / Secondary Links** 열을 사용하세요:
```
-[{"url":"https://twenty.com","label":"Twenty"}]
+[{\"url\":\"https://twenty.com\",\"label\":\"Twenty\"}]
```
-### JSON Fields
+### JSON 필드
-Use valid JSON format:
+유효한 JSON 형식을 사용:
```
-{"key":"value","key2":"value2"}
+{\"key\":\"value\",\"key2\":\"value2\"}
```
-### ID Fields
+### ID 필드
-* **Optional**: Twenty auto-generates IDs if not provided
-* **Format**: UUID (e.g., `c776ee49-f608-4a77-8cc8-6fe96ae1e43f`)
-* **Use case**: Include ID to update existing records instead of creating new ones
+* **선택 사항**: 제공하지 않으면 Twenty가 ID를 자동 생성합니다
+* **형식**: UUID(예: `c776ee49-f608-4a77-8cc8-6fe96ae1e43f`)
+* **사용 사례**: 새로 생성하는 대신 기존 레코드를 업데이트하려면 ID를 포함하세요
-## Step 5: Add Relation Columns (If Linking Records)
+## 5단계: 관계 열 추가(레코드를 연결하는 경우)
-To link records to other objects (e.g., People to Companies), add a column with the unique identifier of the related record.
+레코드를 다른 객체에 연결하려면(예: People을 Companies에) 관련 레코드의 고유 식별자가 있는 열을 추가하세요.
-**Example**: Linking People to Companies
+**예시**: People을 Companies에 연결
-Add a column to your People CSV:
+People CSV에 열을 추가:
```
firstName,lastName,email,companyDomain
@@ -202,69 +202,69 @@ John,Smith,john@acme.com,https://acme.com
Jane,Doe,jane@widgets.co,https://widgets.co
```
-**Important rules for relations:**
+**관계에 대한 중요 규칙:**
-* The parent record must already exist in Twenty
-* Use the **Domain URL** format (`https://domain.com`), not the label
-* Map only ONE unique identifier (don't include both `companyId` AND `companyDomain`)
-* For Workspace Members, use their **email** (not name)
+* 상위 레코드는 Twenty에 이미 존재해야 합니다
+* 라벨이 아니라 **도메인 URL** 형식(`https://domain.com`)을 사용하세요
+* 고유 식별자는 하나만 매핑하세요(`companyId`와 `companyDomain`을 모두 포함하지 마세요)
+* 워크스페이스 구성원은 이름이 아닌 **이메일**을 사용하세요
- **Import Order Matters!**
+ **가져오기 순서가 중요합니다!**
- Import the "one" side before the "many" side:
+ "one" 측을 "many" 측보다 먼저 가져오세요:
- 1. **Companies** first
- 2. **People** second (with company reference)
- 3. **Opportunities** third
+ 1. **회사** 먼저
+ 2. **연락처** 두 번째(회사 참조 포함)
+ 3. **기회** 세 번째
- The parent record must exist before you can reference it.
+ 참조하려면 상위 레코드가 먼저 존재해야 합니다.
-See [How to Import Relations](/l/ko/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv) for detailed instructions.
+자세한 지침은 [관계 가져오기 방법](/l/ko/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv)을 참조하세요.
-## Step 6: Ensure Fields Exist in Twenty
+## 6단계: Twenty에 필드가 존재하는지 확인
-The import creates **records**, not **fields**. All fields you want to import must already exist in your data model.
+가져오기는 필드가 아니라 레코드를 생성합니다. 가져오려는 모든 필드는 데이터 모델에 이미 존재해야 합니다.
-**Before importing:**
+**가져오기 전:**
-1. Go to **Settings → Data Model**
-2. Select your object
-3. Create any custom fields you need
-4. Note the exact field names (they must match your column headers)
+1. **설정 → 데이터 모델**로 이동
+2. 객체를 선택하세요
+3. 필요한 사용자 정의 필드를 생성하세요
+4. 필드 이름을 정확히 확인하세요(열 제목과 일치해야 합니다)
-## Step 7: Final Checklist
+## 7단계: 최종 체크리스트
-Before uploading your file, verify:
+파일을 업로드하기 전에 다음을 확인하세요:
-File is CSV, XLSX, or XLS format
-File has fewer than 10,000 records
-Encoding is UTF-8
-No duplicate emails (for People) or domains (for Companies)
-Dates use consistent format throughout
-Domains use `https://domain.com` format
-Boolean fields use `TRUE` or `FALSE` (uppercase)
-Select fields use API names, not display labels
-All custom fields exist in Settings → Data Model
-Parent records imported before child records
-Relation columns reference existing records
+파일 형식이 CSV, XLSX 또는 XLS이어야 합니다
+레코드 수가 10,000개 미만이어야 합니다
+인코딩이 UTF-8이어야 합니다
+이메일(연락처) 또는 도메인(회사)에 중복이 없어야 합니다
+날짜 형식이 전체에서 일관되어야 합니다
+도메인은 `https://domain.com` 형식을 사용해야 합니다
+부울 필드는 `TRUE` 또는 `FALSE`(대문자)를 사용해야 합니다
+선택 필드는 표시 라벨이 아닌 API 이름을 사용해야 합니다
+모든 사용자 정의 필드가 설정 → 데이터 모델에 존재해야 합니다
+상위 레코드를 하위 레코드보다 먼저 가져와야 합니다
+관계 열이 기존 레코드를 참조해야 합니다
-## Common Mistakes to Avoid
+## 피해야 할 일반적인 실수
-| Mistake | Solution |
-| -------------------------------------------- | ------------------------------------- |
-| Using `true` instead of `TRUE` | Boolean values must be uppercase |
-| Using display labels for Select fields | Find and use API names in Settings |
-| Importing People before Companies | Always import parent objects first |
-| Missing currency code for Currency fields | Fill both Amount and Currency columns |
-| Wrong domain format | Use `https://domain.com` consistently |
-| Mapping multiple unique fields for relations | Map only ONE (domain OR id, not both) |
+| 실수 | 해결책 |
+| -------------------- | ----------------------------------- |
+| `TRUE` 대신 `true` 사용 | 부울 값은 대문자여야 합니다 |
+| 선택 필드에서 표시 라벨 사용 | 설정에서 API 이름을 찾아 사용하세요 |
+| 회사보다 연락처를 먼저 가져오기 | 항상 상위 객체를 먼저 가져오세요 |
+| 통화 필드에 통화 코드 누락 | Amount와 Currency 열을 모두 채우세요 |
+| 잘못된 도메인 형식 | `https://domain.com` 형식을 일관되게 사용하세요 |
+| 관계에 여러 개의 고유 필드를 매핑함 | 하나만 매핑하세요(도메인 또는 ID, 둘 다는 안 됨) |
-## Next Steps
+## 다음 단계
-Your file is ready! Now:
+파일이 준비되었습니다! 이제:
-* [Import Companies](/l/ko/user-guide/data-migration/how-tos/import-companies-via-csv) (import these first)
-* [Import Contacts](/l/ko/user-guide/data-migration/how-tos/import-contacts-via-csv)
-* [Fix any import errors](/l/ko/user-guide/data-migration/how-tos/fix-import-errors)
+* [회사 가져오기](/l/ko/user-guide/data-migration/how-tos/import-companies-via-csv) (먼저 가져오세요)
+* [연락처 가져오기](/l/ko/user-guide/data-migration/how-tos/import-contacts-via-csv)
+* [가져오기 오류 수정](/l/ko/user-guide/data-migration/how-tos/fix-import-errors)
diff --git a/packages/twenty-docs/l/ko/user-guide/data-migration/how-tos/update-existing-records-via-import.mdx b/packages/twenty-docs/l/ko/user-guide/data-migration/how-tos/update-existing-records-via-import.mdx
index 3544737143..7e0d0ea6ff 100644
--- a/packages/twenty-docs/l/ko/user-guide/data-migration/how-tos/update-existing-records-via-import.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/data-migration/how-tos/update-existing-records-via-import.mdx
@@ -1,67 +1,67 @@
---
-title: Update Existing Records via Import
-description: Complete step-by-step guide to bulk updating records using CSV import.
+title: 가져오기로 기존 레코드를 업데이트
+description: CSV 가져오기를 사용해 레코드를 일괄 업데이트하는 완전한 단계별 가이드.
---
-## Overview
+## 개요
-Need to update many records at once? Instead of editing them one by one, use the CSV import to bulk update existing records.
+여러 레코드를 한 번에 업데이트해야 하나요? 하나씩 편집하는 대신 CSV 가져오기를 사용해 기존 레코드를 일괄 업데이트하세요.
-**Use cases:**
+**사용 사례:**
-* Update job titles for multiple people
-* Change company information in bulk
-* Add data to new custom fields
-* Correct data errors across many records
+* 여러 사람의 직함 업데이트
+* 회사 정보를 일괄 변경
+* 새 사용자 지정 필드에 데이터 추가
+* 여러 레코드의 데이터 오류 수정
-## How It Works
+## 작동 방식
-When you import a file containing a **unique identifier** that matches an existing record, Twenty updates that record instead of creating a duplicate.
+기존 레코드와 일치하는 **고유 식별자**가 포함된 파일을 가져오면, Twenty는 중복을 생성하는 대신 해당 레코드를 업데이트합니다.
-| If unique identifier... | Twenty will... |
-| -------------------------- | ------------------------------------------------ |
-| Matches an existing record | **Update** the existing record |
-| Doesn't match any record | **Create** a new record |
-| Is missing from your file | **Create** a new record (with auto-generated ID) |
+| 고유 식별자가... | Twenty가... |
+| ---------------- | -------------------------- |
+| 기존 레코드와 일치함 | **업데이트** 기존 레코드 |
+| 어떤 레코드와도 일치하지 않음 | **생성** 새 레코드 |
+| 파일에 없음 | **생성** 새 레코드(자동 생성된 ID 포함) |
- **Multi-Select fields are overwritten, not merged.**
+ **다중 선택 필드는 병합되지 않고 덮어써집니다.**
- If a record has `Option A` and `Option B` selected, and you import `["Option C"]`, the record will only have `Option C` after import. The import replaces all previous selections—it does not add to them.
+ 레코드에 `Option A`와 `Option B`가 선택되어 있고 `[\"Option C\"]`를 가져오면, 가져온 후 해당 레코드에는 `Option C`만 남습니다. 가져오면 이전 선택 항목이 모두 대체됩니다 — 기존 선택에 추가되지 않습니다.
- To keep existing values, include them all in your import: `["Option A","Option B","Option C"]`
+ 기존 값을 유지하려면 가져오기에 모두 포함하세요: `[\"Option A\",\"Option B\",\"Option C\"]`
-## Step 1: Export Your Current Data
+## 1단계: 현재 데이터 내보내기
-First, export the records you want to update:
+먼저, 업데이트하려는 레코드를 내보내세요:
-1. Navigate to the object (People, Companies, etc.)
-2. **Add the columns you need** — click **Options → Fields** to show the fields you want to update
-3. **Filter if needed** — narrow down to only the records you want to update
-4. Click **⋮** → **Export view**
-5. Save the CSV file
+1. 해당 객체(사람, 회사 등)로 이동합니다.
+2. **필요한 열을 추가** — 업데이트하려는 필드를 표시하려면 **옵션 → 필드**를 클릭하세요
+3. **필요하다면 필터링** — 업데이트하려는 레코드만으로 범위를 좁히세요
+4. **⋮** → **뷰 내보내기**를 클릭
+5. CSV 파일을 저장하세요
-**Why export first?** The exported file has the correct format, includes unique identifiers, and maps automatically during import.
+**먼저 내보내는 이유?** 내보낸 파일은 올바른 형식을 갖추고 고유 식별자를 포함하며, 가져오는 동안 자동으로 매핑됩니다.
-### What Gets Exported
+### 내보내지는 내용
-* All visible columns in your current view
-* The record's unique identifiers (`id`, `email`, `domain`)
-* Current field values you can modify
+* 현재 보기에서 표시되는 모든 열
+* 레코드의 고유 식별자(`id`, `email`, `domain`)
+* 수정할 수 있는 현재 필드 값
-## Step 2: Edit the CSV File
+## 2단계: CSV 파일 편집
-Open the exported file in your spreadsheet application (Excel, Google Sheets, etc.):
+내보낸 파일을 스프레드시트 애플리케이션(Excel, Google Sheets 등)에서 여세요:
-1. **Keep the unique identifier column** — don't delete `id`, `email`, or `domain`
-2. **Update the values** in the columns you want to change
-3. **Remove columns you don't need to update** (optional, but cleaner)
-4. **Don't change unique identifier values** — or Twenty will create new records
+1. **고유 식별자 열을 유지** — `id`, `email`, `domain`을 삭제하지 마세요
+2. 변경하려는 열의 값을 **업데이트**하세요
+3. **업데이트할 필요가 없는 열은 제거하세요** (선택 사항이지만 더 깔끔합니다)
+4. **고유 식별자 값을 변경하지 마세요** — 그렇지 않으면 Twenty가 새 레코드를 생성합니다
-### Example: Updating Job Titles
+### 예시: 직함 업데이트
-**Exported file:**
+**내보낸 파일:**
```csv
id,email,firstName,lastName,jobTitle
@@ -70,7 +70,7 @@ id,email,firstName,lastName,jobTitle
550e8400-e29b-41d4-a716-446655440003,bob@acme.com,Bob,Johnson,Sales Rep
```
-**After your edits:**
+**편집 후:**
```csv
id,email,firstName,lastName,jobTitle
@@ -80,63 +80,63 @@ id,email,firstName,lastName,jobTitle
```
- **Don't change the unique identifier values.**
+ **고유 식별자 값을 변경하지 마세요.**
- If you change `john@acme.com` to `john.smith@acme.com`, Twenty will create a new record instead of updating the existing one.
+ `john@acme.com`을 `john.smith@acme.com`으로 변경하면 Twenty는 기존 레코드를 업데이트하는 대신 새 레코드를 생성합니다.
-## Step 3: Import the Updated File
+## 3단계: 업데이트된 파일 가져오기
-1. Navigate to the object
-2. Click **⋮** → **Import records**
-3. Upload your edited CSV file
-4. **Ensure the unique identifier is mapped** — verify `email`, `domain`, or `id` is mapped correctly
-5. Review the field mappings
-6. Check for errors
-7. Click **Confirm**
+1. 객체로 이동
+2. **⋮** → **레코드 가져오기**를 클릭
+3. 편집한 CSV 파일을 업로드하세요
+4. **고유 식별자가 매핑되었는지 확인** — `email`, `domain`, `id`가 올바르게 매핑되었는지 검증하세요
+5. 필드 매핑을 검토하세요
+6. 오류가 있는지 확인하세요
+7. **확인**을 클릭
-Twenty matches records by the unique identifier and updates them with new values.
+Twenty는 고유 식별자로 레코드를 매칭하여 새 값으로 업데이트합니다.
-## Choosing the Right Unique Identifier
+## 적합한 고유 식별자 선택
-| Object | Recommended | Alternative | Notes |
-| ------------------ | ---------------- | ----------- | ---------------------------- |
-| **People** | `email` | `id` | Email is human-readable |
-| **Companies** | `domain` | `id` | Domain is human-readable |
-| **Custom objects** | Any unique field | `id` | Use your custom unique field |
+| 객체 | 권장 | 대안 | 노트 |
+| ------------- | --------- | ---- | ------------------- |
+| **사람들** | `이메일` | `id` | 이메일은 사람이 읽기 쉬움 |
+| **회사** | `도메인` | `id` | 도메인은 사람이 읽기 쉬움 |
+| **사용자 지정 개체** | 임의의 고유 필드 | `id` | 사용자 지정 고유 필드를 사용하세요 |
-**Use only ONE unique identifier.** Don't map both `email` AND `id`. This can cause confusion and errors.
+**하나의 고유 식별자만 사용하세요.** `email`과 `id`를 둘 다 매핑하지 마세요. 이로 인해 혼란과 오류가 발생할 수 있습니다.
-### Using Custom Unique Fields
+### 사용자 지정 고유 필드 사용
-If you have a custom field marked as unique (like an external ID from another system):
+고유로 표시된 사용자 지정 필드(다른 시스템의 외부 ID 등)가 있는 경우:
-1. Include that field in your export and import
-2. Map it during import
-3. Twenty will match on that field
+1. 내보내기와 가져오기에 해당 필드를 포함하세요
+2. 가져올 때 해당 필드를 매핑하세요
+3. Twenty가 해당 필드로 매칭합니다
-## Step 4: Verify the Updates
+## 4단계: 업데이트 확인
-After importing:
+가져온 후:
-1. Open a few updated records
-2. Verify the changes were applied
-3. Check that no duplicate records were created
+1. 업데이트된 레코드 몇 개를 열어보세요
+2. 변경 사항이 적용되었는지 확인하세요
+3. 중복 레코드가 생성되지 않았는지 확인하세요
-## What About Fields Not in Your File?
+## 파일에 없는 필드는 어떻게 되나요?
-**Fields not included in your import file remain unchanged.**
+**가져오기 파일에 포함되지 않은 필드는 변경되지 않습니다.**
-| Your file includes... | Result |
-| ---------------------------- | ------------------------------------------------------ |
-| `email`, `jobTitle` | Only `jobTitle` is updated; other fields stay the same |
-| `email`, `jobTitle`, `phone` | `jobTitle` and `phone` are updated |
+| 파일에 포함된 항목... | 결과 |
+| ---------------------------- | ------------------------------------ |
+| `email`, `jobTitle` | `jobTitle`만 업데이트되며, 다른 필드는 그대로 유지됩니다 |
+| `email`, `jobTitle`, `phone` | `jobTitle`과 `phone`이 업데이트됩니다 |
-This means you only need to include the fields you want to change (plus the unique identifier).
+즉, 변경하려는 필드(및 고유 식별자)만 포함하면 됩니다.
-## Combining Updates and New Records
+## 업데이트와 새 레코드 조합
-You can update existing records AND create new ones in the same import:
+하나의 가져오기에서 기존 레코드를 업데이트하고 새 레코드를 생성할 수 있습니다:
```csv
email,firstName,lastName,jobTitle
@@ -144,55 +144,55 @@ john@acme.com,John,Smith,Senior Manager ← Updates existing (email matches)
newperson@acme.com,New,Person,Analyst ← Creates new (email doesn't match)
```
-## Common Mistakes to Avoid
+## 피해야 할 일반적인 실수
-| Mistake | Problem | Result | Solution |
-| ------------------------------ | ------------------------------------------------------- | -------------------------------------- | ----------------------------------------- |
-| **Changing unique identifier** | Changed `john@acme.com` to `john.smith@acme.com` | Creates new record instead of updating | Keep unique identifiers unchanged |
-| **Multiple unique fields** | Mapping both `email` AND `id` | Potential matching conflicts | Map only ONE unique identifier |
-| **No unique identifier** | File only has `firstName`, `lastName`, `jobTitle` | All rows create new records | Always include `email`, `domain`, or `id` |
-| **Case mismatch** | File has `John@acme.com` but Twenty has `john@acme.com` | Creates new record | Export from Twenty to get exact values |
+| 실수 | 문제 | 결과 | 해결책 |
+| --------------- | ------------------------------------------------------ | ------------------ | --------------------------------- |
+| **고유 식별자 변경** | `john@acme.com`을 `john.smith@acme.com`으로 변경함 | 업데이트 대신 새 레코드를 생성함 | 고유 식별자를 변경하지 마세요 |
+| **여러 개의 고유 필드** | `email`과 `id`를 모두 매핑함 | 매칭 충돌 가능성 | 고유 식별자를 하나만 매핑하세요 |
+| **고유 식별자 없음** | 파일에 `firstName`, `lastName`, `jobTitle`만 있음 | 모든 행이 새 레코드를 생성함 | 항상 `email`, `domain`, `id`를 포함하세요 |
+| **대소문자 불일치** | 파일에는 `John@acme.com`이 있지만 Twenty에는 `john@acme.com`이 있음 | 새 레코드 생성 | 정확한 값을 얻으려면 Twenty에서 내보내세요 |
## FAQ
-
- Records with unique identifiers that don't match existing records will be created as new records. This lets you update and create in the same import.
+
+ 고유 식별자가 기존 레코드와 일치하지 않는 레코드는 새 레코드로 생성됩니다. 이렇게 하면 하나의 가져오기에서 업데이트와 생성을 함께 수행할 수 있습니다.
-
- Yes, leave the cell empty in your CSV. The import will clear that field's value on the existing record.
+
+ 예, CSV에서 해당 셀을 비워두세요. 가져오면 기존 레코드의 해당 필드 값이 비워집니다.
-
- Fields not in your import file remain unchanged on existing records. Only fields you include are updated.
+
+ 가져오기 파일에 없는 필드는 기존 레코드에서 변경되지 않습니다. 포함한 필드만 업데이트됩니다.
-
- Yes! Include the relation's unique identifier (e.g., `companyDomain`) and map it to the relation field. The relation will be updated.
+
+ 예! 관계의 고유 식별자(예: `companyDomain`)를 포함하고 관계 필드에 매핑하세요. 관계가 업데이트됩니다.
-
- During the import review step, Twenty shows you how many records will be updated vs. created based on unique identifier matches.
+
+ 가져오기 검토 단계에서 Twenty가 고유 식별자 일치 여부를 기준으로 업데이트될 레코드와 생성될 레코드 수를 보여줍니다.
-
- There's no automatic undo. We recommend exporting your data as a backup before making bulk updates.
+
+ 자동 실행 취소 기능은 없습니다. 대량 업데이트 전에 데이터를 백업용으로 내보내는 것을 권장합니다.
-## Best Practices
+## 모범 사례
-1. **Export first** — always start from an export to ensure correct format
-2. **Backup before updating** — export your data before making bulk changes
-3. **Test with a few records** — try updating 5-10 records first before doing a large batch
-4. **Use human-readable identifiers** — `email` and `domain` are easier to verify than `id`
-5. **Only include necessary columns** — fewer columns means less chance for errors
+1. **먼저 내보내기** — 올바른 형식을 보장하려면 항상 내보내기에서 시작하세요
+2. **업데이트 전에 백업** — 대량 변경 전에 데이터를 내보내세요
+3. **일부 레코드로 테스트** — 대량 작업 전에 먼저 5~10개의 레코드를 업데이트해 보세요
+4. **사람이 읽기 쉬운 식별자 사용** — `email`과 `domain`이 `id`보다 확인하기 더 쉽습니다
+5. **필요한 열만 포함** — 열이 적을수록 오류 가능성이 줄어듭니다
-## Troubleshooting
+## 문제 해결
-Having issues? Check:
+문제가 있으신가요? 확인하세요:
-* [How to Fix Import Errors](/l/ko/user-guide/data-migration/how-tos/fix-import-errors)
-* [Uniqueness Constraints](/l/ko/user-guide/data-migration/capabilities/uniqueness-constraints)
-* [Field Mapping Reference](/l/ko/user-guide/data-migration/capabilities/field-mapping)
+* [가져오기 오류 수정](/l/ko/user-guide/data-migration/how-tos/fix-import-errors)
+* [고유성 제약 조건](/l/ko/user-guide/data-migration/capabilities/uniqueness-constraints)
+* [필드 매핑 레퍼런스](/l/ko/user-guide/data-migration/capabilities/field-mapping)
diff --git a/packages/twenty-docs/l/ko/user-guide/data-migration/overview.mdx b/packages/twenty-docs/l/ko/user-guide/data-migration/overview.mdx
index 6e20f9477f..2de3f8efd8 100644
--- a/packages/twenty-docs/l/ko/user-guide/data-migration/overview.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/data-migration/overview.mdx
@@ -1,89 +1,89 @@
---
-title: Data Migration
-description: Import and export your CRM data via CSV files or API.
+title: 데이터 마이그레이션
+description: CSV 파일 또는 API를 통해 CRM 데이터를 가져오고 내보내세요.
image: /images/user-guide/import-export-data/cloud.png
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-
+
-## Import Methods
+## 가져오기 방법
-Twenty supports two main methods for importing data:
+Twenty는 데이터를 가져오는 두 가지 주요 방법을 지원합니다:
-| Method | Best For | Volume Limit |
-| -------------- | ------------------------------------ | ----------------------- |
-| **CSV Import** | Standard migrations, regular updates | 10,000 records per file |
-| **API Import** | Large-scale migrations, automation | Unlimited |
+| 방법 | 권장 용도 | 건수 제한 |
+| ------------ | ------------------ | --------------- |
+| **CSV 가져오기** | 표준 마이그레이션, 정기 업데이트 | 파일당 10,000개 레코드 |
+| **API 가져오기** | 대규모 마이그레이션, 자동화 | 무제한 |
-For very large datasets (hundreds of thousands of records), use the API. Our [implementation partners](/l/ko/user-guide/getting-started/capabilities/implementation-services) can help run these scripts if needed.
+매우 큰 데이터셋(레코드 수가 수십만 건)에 대해서는 API를 사용하세요. 필요한 경우 당사의 [구현 파트너](/l/ko/user-guide/getting-started/capabilities/implementation-services)가 이러한 스크립트 실행을 도와드릴 수 있습니다.
-## CSV Import Basics
+## CSV 가져오기 기본 사항
-You can import data for any object using CSV, XLSX, or XLS files. Each file should contain **only one type of object** (e.g., only People records).
+CSV, XLSX, 또는 XLS 파일을 사용하여 모든 객체의 데이터를 가져올 수 있습니다. 각 파일에는 **객체 유형 하나만** 포함해야 합니다(예: People 레코드만).
-**Fields must exist before import.** Uploading a CSV creates records but does not create fields. If you need custom fields, create them first under **Settings → Data Model**.
+**가져오기 전에 필드가 존재해야 합니다.** CSV를 업로드하면 레코드가 생성되지만 필드는 생성되지 않습니다. 사용자 지정 필드가 필요하면 먼저 **Settings → Data Model**에서 생성하세요.
-### Steps
+### 단계
-1. Navigate to the object where you want to import data
-2. Click the **⋮** icon on the top right (this is the Command Menu) and click on **Import records**
-3. Download the template file to ensure your data is in the expected format
-4. Upload your formatted CSV file
-5. Map your columns to Twenty fields
-6. Review errors (highlighted in yellow) and fix them, directly editing in the UI
-7. Confirm the import
+1. 데이터를 가져올 객체로 이동하세요
+2. 오른쪽 상단의 **⋮** 아이콘(명령 메뉴)을 클릭하고 **레코드 가져오기**를 클릭하세요
+3. 데이터가 예상된 형식인지 확인하려면 템플릿 파일을 다운로드하세요
+4. 형식에 맞춘 CSV 파일을 업로드하세요
+5. 열을 Twenty 필드에 매핑하세요
+6. 오류(노란색으로 강조 표시됨)를 검토하고 UI에서 직접 편집하여 수정하세요
+7. 가져오기를 확인하세요
-### Importing relations between objects
+### 객체 간 관계 가져오기
-You can import relations between objects using the csv import function. You need to reference the related object using a unique field from this object: the `id`, the `email` for People and Workspace Members, the `domain` for companies, any other field set as unique in the data model for any other object.
+CSV 가져오기 기능을 사용하여 객체 간의 관계를 가져올 수 있습니다. 이 객체에서 고유 필드를 사용하여 관련 객체를 참조해야 합니다: `id`, People 및 워크스페이스 구성원의 경우 `email`, 회사의 경우 `domain`, 기타 객체의 경우 데이터 모델에서 고유로 설정된 다른 필드.
-**Deleted records count toward uniqueness.** Soft-deleted records (visible under Command Menu → See deleted records) are included in uniqueness checks. If you import a record with the same unique value as a deleted record, the deleted record will be restored.
+**삭제된 레코드도 고유성에 포함됩니다.** 소프트 삭제된 레코드(Command Menu → See deleted records에서 표시됨) 역시 고유성 검사에 포함됩니다. 삭제된 레코드와 동일한 고유 값을 가진 레코드를 가져오면, 해당 삭제된 레코드가 복원됩니다.
- **Import Order Matters!**
+ **가져오기 순서가 중요합니다!**
- When importing related objects, upload files in this order:
+ 연관된 객체를 가져올 때 파일을 다음 순서로 업로드하세요:
- 1. **Companies** first (the "one" side of relationships)
- 2. **People** second (linked to companies via companyId)
- 3. **Opportunities** third (linked to companies/people)
- 4. **Custom objects** with relations last
+ 1. **Companies** 먼저(일대다 관계의 '1' 측)
+ 2. **People** 두 번째(companyId를 통해 회사에 연결)
+ 3. **Opportunities** 세 번째(회사/People에 연결)
+ 4. 관계가 있는 **사용자 지정 객체**는 마지막
- Why? The "one" side of a one-to-many relationship must exist before you can reference it. For example, the Company record must exist before you import a Person with that company's ID.
+ 왜 그런가요? 일대다 관계의 '1' 측은 참조하기 전에 먼저 존재해야 합니다. 예를 들어, 해당 회사의 ID로 Person을 가져오기 전에 Company 레코드가 먼저 존재해야 합니다.
-Please refer to [this article](/l/ko/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv) for a step-by-step guide on how to proceed.
+단계별 진행 방법은 [이 문서](/l/ko/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv)를 참고하세요.
-## Export Data
+## 데이터 내보내기
-Export your workspace data for backups, reporting, or migration.
+백업, 보고 또는 마이그레이션을 위해 워크스페이스 데이터를 내보내세요.
-### Steps
+### 단계
-1. Navigate to the object you want to export
-2. Configure the view with the columns you need
-3. Click **⋮** → **Export view**
-4. Save the CSV file
+1. 내보낼 객체로 이동하세요
+2. 필요한 열로 뷰를 구성하세요
+3. **⋮** → **뷰 내보내기**를 클릭하세요
+4. CSV 파일을 저장하세요
-**Only visible columns are exported.** The CSV file will only contain the columns displayed in your current view. Add or hide columns before exporting to control what data is included.
+**표시된 열만 내보내집니다.** CSV 파일에는 현재 뷰에 표시된 열만 포함됩니다. 포함할 데이터를 제어하려면 내보내기 전에 열을 추가하거나 숨기세요.
-**Export limits**: Up to 20,000 records per export.
+**내보내기 제한**: 내보내기당 최대 20,000개 레코드.
-## Permissions
+## 권한
-Data import and export require specific permissions:
+데이터 가져오기 및 내보내기에는 특정 권한이 필요합니다:
-* **Import**: Requires "Import CSV" permission
-* **Export**: Requires "Export CSV" permission
+* **가져오기**: "Import CSV" 권한이 필요합니다
+* **내보내기**: "Export CSV" 권한이 필요합니다
-Contact your workspace admin if you don't have these permissions.
+해당 권한이 없다면 워크스페이스 관리자에게 문의하세요.
-## Next Steps
+## 다음 단계
-* [Prepare your CSV files](/l/ko/user-guide/data-migration/how-tos/prepare-your-csv-files)
-* [Import relations between objects](/l/ko/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv)
-* [Import via API for large datasets](/l/ko/user-guide/data-migration/how-tos/import-data-via-api)
+* [CSV 파일 준비하기](/l/ko/user-guide/data-migration/how-tos/prepare-your-csv-files)
+* [객체 간 관계 가져오기](/l/ko/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv)
+* [대용량 데이터셋을 API로 가져오기](/l/ko/user-guide/data-migration/how-tos/import-data-via-api)
diff --git a/packages/twenty-docs/l/ko/user-guide/data-model/capabilities/fields.mdx b/packages/twenty-docs/l/ko/user-guide/data-model/capabilities/fields.mdx
index ef477158c2..4b238df85c 100644
--- a/packages/twenty-docs/l/ko/user-guide/data-model/capabilities/fields.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/data-model/capabilities/fields.mdx
@@ -1,122 +1,122 @@
---
-title: Fields
-description: Understand the role of fields and how to manage them.
+title: 필드
+description: 필드의 역할을 이해하고 관리 방법을 알아보세요.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-## About Fields
+## 필드 정보
-Fields are like columns in a spreadsheet. They store different types of data like text, numbers, or dates. Fields can be standard (built-in) or custom (the ones you create).
+필드는 스프레드시트의 열과 같습니다. 텍스트, 숫자 또는 날짜와 같은 다양한 유형의 데이터를 저장합니다. 필드는 기본 제공 표준 필드 또는 사용자 정의 필드(사용자가 생성한 필드)일 수 있습니다.
-### Standard Fields
+### 표준 필드
-Standard fields come built-in with Twenty to handle common business needs.
+표준 필드는 일반적인 비즈니스 요구를 처리할 수 있도록 Twenty에 기본 제공됩니다.
-For example, `First Name` and `Last Name` are standard fields in the `People` object. They store text data for individual names.
+예를 들어, `이름` 및 `성`은 `사람` 객체의 표준 필드입니다. 이는 개인 이름에 대한 텍스트 데이터를 저장합니다.
-You cannot delete standard fields, but you can deactivate them if you don't need them.
+표준 필드를 삭제할 수는 없지만 필요하지 않을 경우 비활성화할 수 있습니다.
-You can also customize the options of the standard `SELECT` type fields, for example the options for the `Stage` on Opportunities.
+또한 표준 `SELECT` 유형 필드의 옵션을 사용자 지정할 수 있습니다. 예를 들어 기회(Opportunities)에서 `Stage` 옵션을 설정할 수 있습니다.
-### Custom Fields
+### 사용자 정의 필드
-Custom fields can be added to any object. You can store text, numbers, dates, dropdown selections, and more. Use custom fields to track information that's specific to your business.
+사용자 정의 필드는 모든 객체에 추가할 수 있습니다. 텍스트, 숫자, 날짜, 드롭다운 선택 항목 등을 저장할 수 있습니다. 비즈니스에 특화된 정보를 추적하기 위해 사용자 정의 필드를 사용하세요.
-For instance, a custom field for SpaceX could be `Rocket Active Status`, indicating if a rocket is operational.
+예를 들어, SpaceX의 경우 `로켓 활성 상태`가 사용자 정의 필드가 될 수 있으며, 이는 로켓이 작동 중인지 여부를 나타냅니다.
-## Field Types
+## 필드 유형
-Twenty supports various field types:
+Twenty는 다양한 필드 유형을 지원합니다:
-| Type | Description | Example |
-| ------------ | ----------------------------------------------------------------- | ------------------ |
-| Address | Structured address with street, city, state, country, postal code | Office Address |
-| Array | List of text values | Tags |
-| Boolean | True/false checkbox | Is Active |
-| Currency | Monetary value with currency code | Deal Amount (USD) |
-| Date | Date values | Close Date |
-| Date & Time | Date with time | Meeting Time |
-| Domain | Website domain (used for Companies) | acme.com |
-| Email | Email addresses (with primary + additional) | Contact Email |
-| JSON | Structured JSON data | Custom metadata |
-| Links | URLs with labels (primary + secondary) | Website, LinkedIn |
-| Long Text | Multi-line text | Description, Notes |
-| Multi-Select | Multiple choices from a predefined list | Tags, Categories |
-| Number | Numeric values (integers or decimals) | Quantity, Score |
-| Phone | Phone numbers with country code | Work Phone |
-| Rating | Star rating (1-5) | Priority, Score |
-| Relation | Links to records in other objects | Company → People |
-| Select | Single choice from a predefined list | Stage, Status |
-| Text | Single line of text | Name, Title |
+| 유형 | 설명 | 예시 |
+| ------- | ---------------------------------- | -------------- |
+| 주소 | 거리, 도시, 주/도, 국가, 우편번호가 포함된 구조화된 주소 | 사무실 주소 |
+| 배열 | 텍스트 값 목록 | 태그 |
+| 부울 | 참/거짓 체크박스 | 활성 여부 |
+| 통화 | 통화 코드가 포함된 금액 | 거래 금액(USD) |
+| 날짜 | 날짜 값 | 마감일 |
+| 날짜 및 시간 | 시간이 포함된 날짜 | 회의 시간 |
+| 도메인 | 웹사이트 도메인(회사에 사용) | acme.com |
+| 이메일 | 이메일 주소(기본 + 추가) | 연락처 이메일 |
+| JSON | 구조화된 JSON 데이터 | 사용자 지정 메타데이터 |
+| 링크 | 레이블이 있는 URL(기본 + 보조) | 웹사이트, LinkedIn |
+| 긴 텍스트 | 여러 줄 텍스트 | 설명, 메모 |
+| 다중 선택 | 미리 정의된 목록에서 여러 항목 선택 | 태그, 카테고리 |
+| 숫자 | 숫자 값(정수 또는 소수) | 수량, 점수 |
+| 전화 | 국가 코드가 포함된 전화번호 | 업무용 전화 |
+| 평점 | 별점(1~5) | 우선순위, 점수 |
+| 관계 | 다른 객체의 레코드 링크 | 회사 → 사람 |
+| 선택 | 미리 정의된 목록에서 단일 항목 선택 | 단계, 상태 |
+| 텍스트 | 한 줄 텍스트 | 이름, 직함 |
-## Create a Custom Field
+## 사용자 정의 필드 생성
-To add a custom field to any object, follow these steps:
+모든 객체에 사용자 정의 필드를 추가하려면 다음 단계를 따르세요:
-1. Go to `Settings` in the left sidebar.
-2. Go to `Data Model`, then select the object you wish to customize.
-3. Proceed by clicking on `Add Field`.
-4. Choose a field name and type that suits your requirements. Consider adding a field description for better understanding.
+1. 왼쪽 사이드바에서 `설정`으로 이동합니다.
+2. `데이터 모델`로 이동한 다음 사용자 지정하려는 객체를 선택합니다.
+3. `필드 추가`를 클릭하여 계속 진행합니다.
+4. 요구 사항에 맞는 필드 이름과 유형을 선택합니다. 더 나은 이해를 위해 필드 설명을 추가하는 것을 고려하세요.
-Your newly created field is now available within the application's fields. To display it on a specific view, click on the options menu, then select `Fields`.
+새로 생성된 필드는 애플리케이션의 필드 내에서 사용 가능합니다. 특정 보기에서 표시하려면 옵션 메뉴를 클릭한 다음 `필드`를 선택하세요.
-
+
-**Quick way:** Click the **+** button at the top right of any object table, then select `Customize fields`. This takes you directly to the Data Model settings.
+**빠른 방법:** 모든 객체 테이블의 오른쪽 상단의 **+** 버튼을 클릭한 다음 `필드 사용자 지정`을 선택합니다. 이렇게 하면 바로 데이터 모델 설정으로 이동합니다.
-## Deactivate a Field
+## 필드 비활성화
-You can deactivate a field to hide it from the app without losing your data. Think of it as hiding the field rather than deleting it.
+데이터를 잃지 않고 앱에서 필드를 숨기려면 필드를 비활성화할 수 있습니다. 삭제 대신 필드를 숨기는 것으로 생각하세요.
-Here's how you can do it:
+다음은 비활성화 방법입니다:
-1. Find the field you want to deactivate in your object settings.
+1. 객체 설정에서 비활성화하려는 필드를 찾습니다.
-2. Click the three dots `⋮` next to the field to open the menu.
+2. 필드 옆에 있는 세 점 `⋮`을 클릭하여 메뉴를 엽니다.
-3. Select `Deactivate` from the dropdown.
+3. 드롭다운에서 `비활성화`를 선택합니다.
-What happens when you deactivate a field?
+필드를 비활성화하면 어떻게 되나요?
-1. **In the app:** The field disappears and you can't add new values to it.
+1. **앱 안에서:** 필드가 사라지며 더 이상 새로운 값을 추가할 수 없습니다.
-2. **Existing relationships:** If it's a relation field, existing connections stay but you can't create new ones.
+2. **기존 관계:** 관계 필드인 경우 기존 연결은 유지되지만 새 연결을 만들 수 없습니다.
-3. **API access:** You can still access the field and its data through the API.
+3. **API 액세스:** 여전히 API를 통해 필드와 그 데이터를 액세스할 수 있습니다.
-You can reactivate Standard and Custom Fields or have the option to permanently delete them.
+표준 및 사용자 정의 필드를 다시 활성화하거나 영구적으로 삭제할 수 있는 옵션이 있습니다.
-## Make Fields Unique
+## 필드를 고유하게 만들기
-Make a field unique to ensure distinct records cannot have the same value. For example, email addresses are unique for each person.
+동일한 값을 가진 레코드가 없도록 필드를 고유하게 만드세요. 예를 들어, 이메일 주소는 각 사람마다 고유합니다.
-If you get an error when setting uniqueness, check for duplicate values in your data (including deleted records).
+고유성을 설정할 때 오류가 발생하면 데이터(삭제된 레코드를 포함하여)에서 중복 값을 확인하세요.
-## Field Configuration Best Practices
+## 필드 구성 모범 사례
-### Naming Conventions and Limitations
+### 명명 규칙 및 제한 사항
-* **Singular and plural named must be distinct**: Our GraphQL API needs distinct names for mutations
-* **Protected field names**: some names are reserved for system usage (e.g., `Type`, `Application`)
+* **단수형 및 복수형 이름은** 구별되어야 합니다: GraphQL API에는 변이를 위한 구별된 이름이 필요합니다.
+* **보호된 필드 이름**: 일부 이름은 시스템 용도로 예약되어 있습니다(예: `Type`, `Application`)
-### Currency and Phone Fields
+### 통화 및 전화 필드
-* **Default currency**: can be configured via the data model
-* **Default country codes**: can be configured for phone fields via the data model
+* **기본 통화:** 데이터 모델을 통해 구성할 수 있습니다.
+* **기본 국가 코드:** 전화 필드를 위해 데이터 모델을 통해 구성할 수 있습니다.
-### Select Fields
+### 선택 필드
-* **A default option can be selected** for each Select field
+* **각 선택 필드에는 기본 옵션을 선택할 수 있습니다**.
-### Record Text Fields
+### 레코드 텍스트 필드
-* **Each object has one main display field**: This field appears in the leftmost column and represents the record when linked to other objects. It must be a text field. For example, People uses `Name` as the main field, so when you link a person to a company, you'll see their name in the company's view.
+* **각 객체에는 하나의 메인 디스플레이 필드가 있습니다:** 이 필드는 가장 왼쪽 열에 나타나며 다른 객체와 링크될 때 레코드를 나타냅니다. 텍스트 필드여야 합니다. 예를 들어, 사람은 `이름`을 주요 필드로 사용하기 때문에 사람을 회사에 연결할 때 회사의 보기에서 이름을 볼 수 있습니다.
diff --git a/packages/twenty-docs/l/ko/user-guide/data-model/capabilities/objects.mdx b/packages/twenty-docs/l/ko/user-guide/data-model/capabilities/objects.mdx
index f2f1105277..50544a9521 100644
--- a/packages/twenty-docs/l/ko/user-guide/data-model/capabilities/objects.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/data-model/capabilities/objects.mdx
@@ -1,91 +1,91 @@
---
-title: Objects
-description: Learn about standard and custom objects in Twenty.
+title: 개체
+description: Twenty에서 표준 및 사용자 지정 객체에 대해 알아보세요.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-## Standard Objects
+## 표준 개체
-Standard objects are predefined entities in your workspace to help you get started. They're part of a shared data model accessible to all users of Twenty. You can use them as-is, customize them or deactivate them.
+표준 객체는 시작을 돕기 위해 워크스페이스에 미리 정의되어 있습니다. Twenty의 모든 사용자가 접근할 수 있는 공유 데이터 모델의 일부입니다. 기본 상태로 사용하거나 사용자 정의하거나 비활성화할 수 있습니다.
-### People
+### 사람들
-The `People` object stores your contacts. It includes contact details and interaction history, so you can see all your customer interactions in one place.
+`People` 객체는 연락처를 저장합니다. 연락처 정보 및 상호 작용 기록이 포함되어 있어 모든 고객 상호 작용을 한 곳에서 볼 수 있습니다.
-### Company
+### 회사
-The `Companies` object stores your business accounts. It includes details like industry, size and location. Companies connect to both `People` and `Opportunities` objects.
+`Companies` 객체는 비즈니스 계정을 저장합니다. 업종, 규모 및 위치와 같은 세부정보가 포함됩니다. Companies는 `People` 및 `Opportunities` 객체와 연결됩니다.
-### Opportunities
+### 기회
-The `Opportunities` object stores deal-related data. It tracks the progression of potential sales, from prospecting to closure, recording stages, deal sizes, associated account, and expected close date. You can view your sales pipeline in a kanban layout.
+`Opportunities` 객체는 거래 관련 데이터를 저장합니다. 잠재 매출의 진행 상황을 발굴부터 성사까지 추적하며, 단계, 거래 규모, 연결된 계정, 예상 마감일을 기록합니다. 캔반 레이아웃에서 판매 파이프라인을 볼 수 있습니다.
-### Notes
+### 노트
-The `Notes` object stores free-form notes that can be attached to People, Companies, Opportunities, and other records. Use notes to capture meeting summaries, important details, or any contextual information.
+`Notes` 객체는 사람, 회사, 영업 기회 및 기타 레코드에 첨부할 수 있는 자유 형식의 메모를 저장합니다. 메모를 사용해 회의 요약, 중요한 세부정보, 기타 맥락 정보를 기록하세요.
-### Tasks
+### 작업
-The `Tasks` object stores to-dos and action items. Tasks can be linked to People, Companies, Opportunities, and other records. Track due dates, assignees, and completion status to stay on top of your follow-ups.
+`Tasks` 객체는 할 일과 실행 항목을 저장합니다. 작업은 사람, 회사, 영업 기회 및 기타 레코드에 연결할 수 있습니다. 마감일, 담당자, 완료 상태를 추적하여 후속 조치를 철저히 관리하세요.
-## Custom Objects
+## 사용자 지정 개체
-Custom objects let you store information that's unique to your organization and that standard objects can't handle. For example, if you're SpaceX, you may want to create a custom object for Rockets and Launches.
+사용자 지정 객체를 사용하면 조직에 고유하며 표준 객체로는 처리할 수 없는 정보를 저장할 수 있습니다. 예를 들어, SpaceX의 경우 로켓 및 발사에 대한 사용자 정의 개체를 만들 수 있습니다.
-### Creating a New Custom Object
+### 새 사용자 지정 객체 생성
-To create a new custom object:
+새 사용자 지정 객체를 만들려면:
-1. Go to Settings in the sidebar on the left.
-2. Under Workspace, go to Data model. Here you'll be able to see an overview of all your existing Standard and Custom objects (both active and disabled).
+1. 왼쪽 사이드바에서 설정으로 이동하세요.
+2. 워크스페이스에서 데이터 모델로 이동하세요. 여기에서 모든 활성 및 비활성 표준 및 사용자 정의 개체의 개요를 볼 수 있습니다.
-
+
-3. Click on `+ New object` at the top. Enter the name (both singular and plural), choose an icon, and add a description for your custom object and hit Save (at the top right). Using Listing as an example of custom object, the singular would be "listing" and the plural would be "listings" along with a description like "Listings that hosts created to showcase their property."
+3. 상단에서 `+ New object`를 클릭하세요. 단수 및 복수 이름을 입력하고 아이콘을 선택한 다음 사용자 정의 객체에 대한 설명을 추가하고 저장(오른쪽 상단)을 누릅니다. 사용자 지정 객체의 예로 Listing을 사용할 경우, 단수형은 "listing", 복수형은 "listings"이며, 설명은 "호스트가 숙소를 홍보하기 위해 생성한 목록"처럼 작성할 수 있습니다.
-4. Your custom object is now created and will appear in your sidebar. You can start adding records to it right away.
+4. 이제 사용자 지정 객체가 생성되어 사이드바에 표시됩니다. 바로 레코드를 추가할 수 있습니다.
-## Managing Objects
+## 객체 관리
-### Deactivating Objects
+### 객체 비활성화
-If you don't need a standard or custom object:
+표준 또는 사용자 지정 객체가 필요하지 않은 경우:
-1. Go to Settings → Data Model
-2. Find the object you want to deactivate
-3. Click the toggle to deactivate it
-4. The object will be hidden from your workspace but data is preserved
+1. 설정 → 데이터 모델로 이동하세요
+2. 비활성화하려는 객체를 찾으세요
+3. 토글을 클릭해 비활성화하세요
+4. 객체는 워크스페이스에서 숨겨지지만 데이터는 유지됩니다
-### Reactivating Objects
+### 객체 재활성화
-To bring back a deactivated object:
+비활성화된 객체를 다시 사용하려면:
-1. Go to Settings → Data Model
-2. Look for deactivated objects (they'll be grayed out)
-3. Click the toggle to reactivate it
-4. The object and all its data will be restored
+1. 설정 → 데이터 모델로 이동하세요
+2. 비활성화된 객체를 찾으세요(회색으로 표시됩니다)
+3. 토글을 클릭해 다시 활성화하세요
+4. 객체와 해당 모든 데이터가 복원됩니다
-## Best Practices
+## 모범 사례
-### When to Create Custom Objects
+### 사용자 지정 객체를 생성해야 할 때
-* **Unique business entities**: Things specific to your industry or process
-* **Complex relationships**: When you need to track connections between multiple entities
-* **Scalable data**: When you might have many instances of something
+* **고유한 비즈니스 엔터티**: 업계나 프로세스에 특화된 항목
+* **복잡한 관계**: 여러 엔터티 간의 연결을 추적해야 할 때
+* **확장 가능한 데이터**: 매우 많은 인스턴스가 생길 수 있을 때
-### When to Use Fields Instead
+### 대신 필드를 사용해야 할 때
-* **Simple attributes**: Properties that describe existing objects
-* **Categories or labels**: Ways to classify existing records
-* **Single values**: Information that doesn't need its own lifecycle
+* **단순 속성**: 기존 객체를 설명하는 속성
+* **카테고리 또는 레이블**: 기존 레코드를 분류하는 방법
+* **단일 값**: 별도의 라이프사이클이 필요하지 않은 정보
-### Object Naming
+### 객체 이름
-* **Use clear, descriptive names**: Make it obvious what the object represents
-* **Follow conventions**: Use singular for the object name, plural for the collection
-* **Consider your team**: Choose names everyone will understand
+* **명확하고 설명적인 이름을 사용하세요**: 객체가 무엇을 나타내는지 분명하게 하세요
+* **규칙을 따르세요**: 객체 이름에는 단수를, 컬렉션에는 복수를 사용하세요
+* **팀을 고려하세요**: 모두가 이해할 수 있는 이름을 선택하세요
diff --git a/packages/twenty-docs/l/ko/user-guide/data-model/capabilities/relation-fields.mdx b/packages/twenty-docs/l/ko/user-guide/data-model/capabilities/relation-fields.mdx
index ddcd3c709e..7a388cefc2 100644
--- a/packages/twenty-docs/l/ko/user-guide/data-model/capabilities/relation-fields.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/data-model/capabilities/relation-fields.mdx
@@ -1,92 +1,96 @@
---
-title: Relation Fields
-description: Connect records across different objects using relation fields.
+title: 관계 필드
+description: 관계 필드를 사용하여 서로 다른 객체의 레코드를 연결하세요.
---
-## Types of Relations
+## 관계 유형
-### One-to-Many
+### 일대다
-One record in Object A can be linked to many records in Object B.
+객체 A의 하나의 레코드는 객체 B의 여러 레코드에 연결될 수 있습니다.
-**Example:** One Company can have many People (employees).
+**예:** 하나의 회사에는 여러 사람(직원)이 있을 수 있습니다.
-### Many-to-One
+### 다대일
-Many records in Object A can be linked to one record in Object B.
+객체 A의 여러 레코드는 객체 B의 하나의 레코드에 연결될 수 있습니다.
-**Example:** Many People can belong to one Company.
+**예:** 여러 사람이 하나의 회사에 속할 수 있습니다.
-### Relations to Multiple Object Types
+### 여러 객체 유형으로의 관계
-Some objects can link to multiple object types on one side of the relation.
+일부 객체는 관계의 한쪽에서 여러 객체 유형에 연결될 수 있습니다.
-**Example:** A Note can be attached to one Person AND one Company AND one Opportunity simultaneously. The Note is on the "many" side, connecting to multiple "one" sides.
+**예:** 노트는 동시에 한 사람, 한 회사, 한 기회에 첨부될 수 있습니다. 노트는 "다수" 쪽에 있으며 여러 "하나" 쪽과 연결됩니다.
-Similarly, a Project (on the "one" side) could receive links from multiple People, multiple Companies, and multiple Notes.
+마찬가지로, 프로젝트("하나" 쪽)는 여러 사람, 여러 회사, 여러 노트로부터 연결을 받을 수 있습니다.
- **Import/Export limitation**: Relations pointing to multiple object types are not yet supported for CSV import/export. This is on our roadmap.
+ **가져오기/내보내기 제한 사항**: 여러 객체 유형을 가리키는 관계는 CSV 가져오기/내보내기에서 아직 지원되지 않습니다. 이는 로드맵에 포함되어 있습니다.
-### Many-to-Many
+### 다대다
-Many records in Object A can be linked to many records in Object B.
+객체 A의 여러 레코드는 객체 B의 여러 레코드에 연결될 수 있습니다.
-**Example:** Many People can be linked to many Projects, and vice versa.
+**예:** 여러 사람은 여러 프로젝트에 연결될 수 있으며, 그 반대도 가능합니다.
+
+다대다 관계는 **연결 객체** 패턴을 사용합니다: 양쪽을 연결하는 중간 객체. 연결 관계 기능을 사용하면 Twenty는 중간 객체를 UI에서 숨기고 최종 연결된 레코드를 직접 표시합니다.
+
+
- **Many-to-Many is not yet supported.**
-
- This relation type is planned for H1 2026. As a workaround, create an intermediate "junction" object (e.g., "Project Assignments") that has Many-to-One relations to both objects.
+ **실험실 기능**: 사용하려면 **Settings → Updates → Lab**에서 연결 관계를 활성화해야 합니다.
-## Creating a Relation Field
+자세한 단계별 가이드는 [다대다 관계 생성 방법](/l/ko/user-guide/data-model/how-tos/create-many-to-many-relations)을 참조하세요.
-1. Go to **Settings → Data Model**
-2. Select the object where you want to add the relation
-3. Click **+ Add Field**
-4. Select **Relation** as the field type
-5. Choose the target object(s) to relate to
-6. Configure the relation settings:
- * **Field name on source object**: The name of the relation field on the object you're editing
- * **Field name on destination object**: The name of the relation field that will appear on the target object
- * Relation type (one-to-many, many-to-one)
-7. Click **Save**
+## 관계 필드 만들기
-## Standard Relations
+1. **설정 → 데이터 모델**로 이동
+2. 관계를 추가하려는 객체를 선택합니다.
+3. **+ 필드 추가**를 클릭합니다.
+4. 필드 유형으로 **관계**를 선택합니다.
+5. 연결할 대상 객체를 선택합니다.
+6. 관계 설정을 구성합니다:
+ * **원본 객체의 필드 이름**: 현재 편집 중인 객체에 있는 관계 필드의 이름
+ * **대상 객체의 필드 이름**: 대상 객체에 표시될 관계 필드의 이름
+ * 관계 유형(일대다, 다대일)
+7. **저장** 클릭
-Twenty comes with pre-built relations between standard objects:
+## 표준 관계
-| From Object | To Object | Relation Type |
-| ------------- | --------- | ------------- |
-| People | Companies | Many-to-One |
-| Opportunities | Companies | Many-to-One |
-| Opportunities | People | Many-to-One |
+Twenty에는 표준 객체 간에 사전 구성된 관계가 제공됩니다:
-## Best Practices
+| 원본 객체 | 대상 객체 | 관계 유형 |
+| ----- | ----- | ----- |
+| 사람들 | 회사 | 다대일 |
+| 기회 | 회사 | 다대일 |
+| 기회 | 사람들 | 다대일 |
-### Planning Relations
+## 모범 사례
-* **Map your data model**: Plan relations before creating them
-* **Consider direction**: Think about which object "owns" the relationship
-* **Avoid circular dependencies**: Keep your data model clean
+### 관계 계획
-### Naming Relations
+* **데이터 모델을 매핑하세요**: 생성하기 전에 관계를 계획합니다
+* **방향을 고려하세요**: 어느 객체가 관계를 "소유"하는지 생각하세요
+* **순환 의존성을 피하세요**: 데이터 모델을 깔끔하게 유지하세요
-* **Use clear names**: Make it obvious what the relation represents
-* **Be consistent**: Use similar naming patterns across relations
-* **Consider both sides**: Name both sides of the relation appropriately
+### 관계 이름 지정
-### Performance
+* **명확한 이름을 사용하세요**: 관계가 무엇을 나타내는지 분명하게 하세요
+* **일관성을 유지하세요**: 관계 전반에서 유사한 명명 패턴을 사용하세요
+* **양쪽을 고려하세요**: 관계의 양쪽에 적절한 이름을 지정하세요
-* **Don't over-relate**: Too many relations can slow down your workspace
+### 성능
-## Limitations
+* **과도한 관계 설정은 피하세요**: 관계가 너무 많으면 워크스페이스가 느려질 수 있습니다
-* **Deleting relations** removes the link but not the related records
-* **Circular relations** should be avoided for data integrity
+## 제한 사항
+
+* **관계를 삭제**하면 링크는 제거되지만 관련 레코드는 삭제되지 않습니다
+* **순환 관계**는 데이터 무결성을 위해 피해야 합니다
diff --git a/packages/twenty-docs/l/ko/user-guide/data-model/how-tos/create-custom-fields.mdx b/packages/twenty-docs/l/ko/user-guide/data-model/how-tos/create-custom-fields.mdx
index 5ba74f3273..b6292c4ea1 100644
--- a/packages/twenty-docs/l/ko/user-guide/data-model/how-tos/create-custom-fields.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/data-model/how-tos/create-custom-fields.mdx
@@ -1,72 +1,72 @@
---
-title: Create Custom Fields
-description: Step-by-step guide to adding custom fields to any object.
+title: 사용자 정의 필드 생성
+description: 모든 객체에 사용자 정의 필드를 추가하는 단계별 가이드.
---
-Custom fields let you capture information specific to your business. Add them to any object—standard or custom.
+사용자 정의 필드를 사용하면 비즈니스에 특화된 정보를 수집할 수 있습니다. 표준이든 사용자 정의이든 모든 객체에 추가할 수 있습니다.
-## Steps
+## 단계
-1. Go to **Settings → Data Model**
-2. Select the object you want to add a field to
-3. Click **+ Add Field**
-4. Choose a **field type** (see [Fields](/l/ko/user-guide/data-model/capabilities/fields) for all types)
-5. Enter the **field name** and optional description
-6. Configure field-specific settings (see below)
-7. Click **Save**
+1. **설정 → 데이터 모델**로 이동
+2. 필드를 추가하려는 객체를 선택합니다.
+3. **+ 필드 추가**를 클릭합니다.
+4. **필드 유형**을 선택합니다(모든 유형은 [필드](/l/ko/user-guide/data-model/capabilities/fields)에서 확인하세요)
+5. **필드 이름**과 선택적 설명을 입력합니다
+6. 필드별 설정을 구성합니다(아래 참조)
+7. **저장** 클릭
-**Quick method:** Click the **+** at the end of column headers in any table view → **Customize fields**.
+**빠른 방법:** 어떤 테이블 뷰에서든 열 헤더 끝의 \*\*+\*\*를 클릭 → **필드 사용자 지정**.
-## Show the Field in Views
+## 뷰에서 필드 표시
-New fields aren't automatically visible. To display:
+새 필드는 자동으로 표시되지 않습니다. 표시하려면:
-1. Open the object's table view
-2. Click **Options → Fields**
-3. Click the **eye icon** next to your field to show it
-4. Drag to reorder
+1. 객체의 테이블 뷰를 엽니다
+2. **옵션 → 필드**를 클릭합니다
+3. 해당 필드 옆의 **눈 아이콘**을 클릭하여 표시합니다
+4. 드래그하여 순서를 변경합니다
-## Configuration Options
+## 구성 옵션
-### For Select / Multi-Select
+### 선택/다중 선택의 경우
-1. Click **+ Add option** to create choices
-2. Set a **default option** if desired
-3. Drag to reorder options
+1. 옵션을 만들려면 **+ 옵션 추가**를 클릭합니다
+2. 원한다면 **기본 옵션**을 설정합니다
+3. 드래그하여 옵션 순서를 변경합니다
- **Use API names for imports.** Enable **Advanced mode** in Settings to see API names. See [Field Mapping](/l/ko/user-guide/data-migration/capabilities/field-mapping).
+ **가져오기에는 API 이름을 사용하세요.** API 이름을 보려면 설정에서 **고급 모드**를 활성화하세요. [필드 매핑](/l/ko/user-guide/data-migration/capabilities/field-mapping)을 참조하세요.
-### For Currency Fields
+### 통화 필드의 경우
-Set the **default currency** (USD, EUR, etc.) for new records.
+**기본 통화**(USD, EUR 등)를 새 레코드에 대해 설정합니다
-### For Phone Fields
+### 전화 필드의 경우
-Set the **default country code** to pre-fill for new phone numbers.
+새 전화번호에 미리 입력될 **기본 국가 코드**를 설정합니다.
-### Making a Field Unique
+### 필드를 고유하게 만들기
-Toggle **Unique** to prevent duplicate values across records.
+레코드 전체에서 중복 값을 방지하려면 **고유**를 전환합니다.
- If duplicates exist (including in deleted records), you'll get an error. Clean up duplicates first.
+ 중복이 존재하면(삭제된 레코드를 포함) 오류가 발생합니다. 먼저 중복을 정리하세요.
-### Setting Default Values
+### 기본값 설정
-For Select fields, you can choose which option is pre-selected for new records. For Checkbox fields, set whether it's checked or unchecked by default.
+선택 필드의 경우 새 레코드에서 미리 선택될 옵션을 지정할 수 있습니다. 체크박스 필드의 경우 기본으로 선택됨 또는 선택 해제 상태를 설정합니다.
-## Deactivating a Field
+## 필드 비활성화
-1. Go to **Settings → Data Model**
-2. Find the field
-3. Click **⋮ → Deactivate**
+1. **설정 → 데이터 모델**로 이동
+2. 필드를 찾습니다
+3. **⋮ → 비활성화**를 클릭합니다
-Data is preserved. You can reactivate or permanently delete later.
+데이터는 보존됩니다. 나중에 다시 활성화하거나 영구적으로 삭제할 수 있습니다.
-## Related
+## 관련 항목
-* [Fields](/l/ko/user-guide/data-model/capabilities/fields) — all field types explained
-* [Data Model FAQ](/l/ko/user-guide/data-model/how-tos/data-model-faq) — common questions
+* [필드](/l/ko/user-guide/data-model/capabilities/fields) — 모든 필드 유형 설명
+* [데이터 모델 FAQ](/l/ko/user-guide/data-model/how-tos/data-model-faq) — 자주 묻는 질문
diff --git a/packages/twenty-docs/l/ko/user-guide/data-model/how-tos/create-custom-objects.mdx b/packages/twenty-docs/l/ko/user-guide/data-model/how-tos/create-custom-objects.mdx
index 9e602f4aba..05df00eac9 100644
--- a/packages/twenty-docs/l/ko/user-guide/data-model/how-tos/create-custom-objects.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/data-model/how-tos/create-custom-objects.mdx
@@ -1,51 +1,51 @@
---
-title: Create Custom Objects
-description: Step-by-step guide to creating custom objects in Twenty.
+title: 사용자 정의 객체 생성
+description: Twenty에서 사용자 정의 객체를 생성하는 단계별 가이드.
---
-Custom objects let you store information unique to your business that standard objects don't cover. For example: Projects, Products, Tickets, or Listings.
+사용자 정의 객체를 사용하면 표준 객체에서 다루지 않는, 비즈니스에 고유한 정보를 저장할 수 있습니다. 예: 프로젝트, 제품, 티켓 또는 리스팅.
- **Not sure if you need an object or a field?** See [Understanding Your Data Model](/l/ko/user-guide/data-model/overview) for guidance.
+ **객체가 필요한지 필드가 필요한지 확신이 없나요?** 자세한 내용은 [데이터 모델 이해](/l/ko/user-guide/data-model/overview)를 참조하세요.
-## Steps
+## 단계
-1. Go to **Settings → Data Model**
-2. Click **+ New object**
-3. Fill in:
- * **Singular name** (e.g., "Listing")
- * **Plural name** (e.g., "Listings")
- * **Icon**
- * **Description** (optional)
-4. Click **Save**
+1. **설정 → 데이터 모델**로 이동
+2. **+ 새 객체**를 클릭합니다
+3. 다음을 입력하세요:
+ * **단수 이름**(예: "Listing")
+ * **복수 이름**(예: "Listings")
+ * **아이콘**
+ * **설명** (선택 사항)
+4. **저장** 클릭
-Your object appears in the sidebar immediately.
+객체가 즉시 사이드바에 표시됩니다.
-## Next: Add Fields
+## 다음: 필드 추가
-New objects start with basic fields. Add custom fields to capture the data you need:
+새 객체는 기본 필드로 시작합니다. 필요한 데이터를 수집할 수 있도록 사용자 정의 필드를 추가하세요:
-1. In **Settings → Data Model**, select your object
-2. Click **+ Add Field**
-3. Choose a field type, configure, and save
+1. **설정 → 데이터 모델**에서 객체를 선택합니다
+2. **+ 필드 추가**를 클릭합니다
+3. 필드 유형을 선택하고 구성한 뒤 저장합니다
-See [How to Create Custom Fields](/l/ko/user-guide/data-model/how-tos/create-custom-fields) for details on field types and configuration.
+필드 유형과 구성에 대한 자세한 내용은 [사용자 정의 필드 생성 방법](/l/ko/user-guide/data-model/how-tos/create-custom-fields)을 참조하세요.
-## Connecting to Other Objects
+## 다른 객체와 연결하기
-To link your object to People, Companies, or other objects, create a relation field. See [How to Create Relation Fields](/l/ko/user-guide/data-model/how-tos/create-relation-fields).
+객체를 사람, 회사 또는 다른 객체와 연결하려면 관계 필드를 생성하세요. [관계 필드 생성 방법](/l/ko/user-guide/data-model/how-tos/create-relation-fields)을 참조하세요.
-## Deactivating an Object
+## 객체 비활성화
-If you no longer need an object:
+객체가 더 이상 필요하지 않은 경우:
-1. Go to **Settings → Data Model**
-2. Toggle the object off
+1. **설정 → 데이터 모델**로 이동
+2. 객체를 비활성화로 전환합니다
-The object is hidden but data is preserved. You can reactivate or permanently delete later.
+객체는 숨겨지지만 데이터는 보존됩니다. 나중에 다시 활성화하거나 영구적으로 삭제할 수 있습니다.
-## Related
+## 관련 항목
-* [Objects](/l/ko/user-guide/data-model/capabilities/objects) — standard vs custom objects
-* [Data Model FAQ](/l/ko/user-guide/data-model/how-tos/data-model-faq) — common questions
+* [객체](/l/ko/user-guide/data-model/capabilities/objects) — 표준 객체 vs 사용자 정의 객체
+* [데이터 모델 FAQ](/l/ko/user-guide/data-model/how-tos/data-model-faq) — 자주 묻는 질문
diff --git a/packages/twenty-docs/l/ko/user-guide/data-model/how-tos/create-many-to-many-relations.mdx b/packages/twenty-docs/l/ko/user-guide/data-model/how-tos/create-many-to-many-relations.mdx
new file mode 100644
index 0000000000..547574b10a
--- /dev/null
+++ b/packages/twenty-docs/l/ko/user-guide/data-model/how-tos/create-many-to-many-relations.mdx
@@ -0,0 +1,180 @@
+---
+title: 다대다 관계 만들기
+description: 정션 오브젝트를 사용하여 양쪽에서 여러 항목이 서로 연결될 수 있는 레코드를 연결합니다.
+---
+
+다대다 관계를 사용하면 양쪽에서 여러 레코드를 연결할 수 있습니다. 예: 여러 사람은 여러 프로젝트에서 작업할 수 있으며, 각 프로젝트에는 많은 사람이 포함될 수 있습니다.
+
+
+ **Lab 기능**: 정션 관계는 현재 Lab에서 제공됩니다. 이 가이드를 진행하기 전에 **Settings → Updates → Lab**에서 이를 활성화하세요.
+
+
+
+ 이 기능을 사용하려면 **Advanced mode**도 활성화되어 있어야 합니다(설정 오른쪽 하단의 토글).
+
+
+## 다대다 관계를 사용할 때
+
+관계의 양쪽 모두에 여러 연결이 있을 수 있을 때 다대다를 사용하세요:
+
+| 관계 | 예시 |
+| --------- | ---------------------------------------------------- |
+| 사람 ↔ 프로젝트 | 한 사람은 여러 프로젝트에서 작업하고, 하나의 프로젝트에는 여러 팀원이 있습니다. |
+| 회사 ↔ 태그 | 하나의 회사에는 여러 태그가 있을 수 있으며, 하나의 태그는 여러 회사에 적용될 수 있습니다. |
+| 제품 ↔ 주문 | 하나의 제품은 여러 주문에 포함될 수 있으며, 하나의 주문에는 여러 제품이 포함됩니다. |
+
+## 작동 방식
+
+Twenty는 다대다 관계에 **정션 오브젝트** 패턴을 사용합니다. 정션 오브젝트는 두 객체 사이에 위치하여 연결을 보관합니다:
+
+```
+People ←→ Project Assignments ←→ Projects
+```
+
+**Project Assignments** 오브젝트(정션)에는 다음이 있습니다:
+
+* 사람에 대한 관계(다대일)
+* 프로젝트에 대한 관계(다대일)
+
+정션 관계 토글을 활성화하면, Twenty는 중간 정션 레코드를 표시하지 않고 연결된 레코드를 직접 표시합니다.
+
+## 사전 준비
+
+1. **Lab에서 Junction Relations 활성화**: **Settings → Updates → Lab**로 이동하여 **Junction Relations**를 활성화하세요
+2. **Advanced mode 활성화**: 설정 사이드바 오른쪽 하단에서 **Advanced mode**를 켭니다
+3. 데이터 모델을 계획하세요:
+ * 어떤 두 오브젝트를 연결하나요?
+ * 정션 오브젝트의 이름은 무엇으로 할까요?
+
+## 1단계: 정션 오브젝트 만들기
+
+먼저, 연결을 보관할 중간 오브젝트를 만드세요.
+
+1. **설정 → 데이터 모델**로 이동
+2. **+ 새 객체**를 클릭합니다
+3. 설명을 담은 이름을 지정하세요(예: "Project Assignment", "Team Member", "Product Order")
+4. **저장**을 클릭합니다
+
+
+ **명명 규칙**: "Project Assignment" 또는 "Team Membership"처럼 관계를 설명하는 이름을 사용하세요. 이렇게 하면 데이터 모델을 더 쉽게 이해할 수 있습니다.
+
+
+## 2단계: 정션 오브젝트에서 관계 생성
+
+연결하려는 두 오브젝트를 대상으로 정션 오브젝트에서 관계 필드를 추가하세요.
+
+### 첫 번째 관계(정션 → 오브젝트 A)
+
+1. **Settings → Data Model**에서 정션 오브젝트를 선택하세요
+2. **+ 필드 추가**를 클릭합니다
+3. 필드 유형으로 **Relation**을 선택하세요
+4. 첫 번째 오브젝트를 선택하세요(예: "People")
+5. 관계 유형을 **Many-to-One**으로 설정하세요(여러 할당이 한 사람에 연결될 수 있음)
+6. 필드 이름 지정:
+ * 정션의 필드: 예: "Person"
+ * People의 필드: 예: "Project Assignments"
+7. **저장**을 클릭합니다
+
+### 두 번째 관계(정션 → 오브젝트 B)
+
+1. 정션 오브젝트에서 **+ Add Field**를 클릭하세요
+2. 필드 유형으로 **Relation**을 선택하세요
+3. 두 번째 오브젝트를 선택하세요(예: "Projects")
+4. 관계 유형을 **Many-to-One**으로 설정하세요
+5. 필드 이름 지정:
+ * 정션의 필드: 예: "Project"
+ * Projects의 필드: 예: "Team Members"
+6. **저장**을 클릭합니다
+
+## 3단계: 정션 관계 표시 구성
+
+이제 중간 정션 오브젝트를 건너뛰고 연결된 레코드를 직접 표시하도록 소스 오브젝트를 구성하세요.
+
+1. **설정 → 데이터 모델**로 이동
+2. 첫 번째 오브젝트를 선택하세요(예: "People")
+3. 정션 오브젝트를 가리키는 관계 필드(예: "Project Assignments")를 찾으세요
+4. 클릭하여 필드를 편집하세요
+5. \*\*"This is a relation to a Junction Object"\*\*를 활성화하세요
+6. **Target relation**을 선택하세요(예: "Project" — 반대편을 가리키는 정션의 필드)
+7. **저장**을 클릭합니다
+
+{/* TODO: Add image
+
+*/}
+
+다른 오브젝트에 대해서도 반복하세요:
+
+1. Data Model에서 "Projects"를 선택하세요
+2. "Team Members" 관계 필드를 편집하세요
+3. 정션 토글을 활성화하세요
+4. 대상 관계로 "Person"을 선택하세요
+5. 저장
+
+## 결과
+
+구성 후:
+
+* **Person** 레코드에서는 "Project Assignments" 필드가 할당 레코드가 아니라 **Projects**를 직접 표시합니다
+* **Project** 레코드에서는 "Team Members" 필드가 **People**를 직접 표시합니다
+
+정션 오브젝트는 여전히 존재하며 연결을 저장하지만, UI는 더 깔끔한 다대다 보기를 제공합니다.
+
+## 예: People ↔ Projects
+
+전체 단계별 안내는 다음과 같습니다:
+
+### 정션 오브젝트 만들기
+
+* 이름: **Project Assignment**
+* 설명: "사람을 작업 중인 프로젝트에 연결합니다"
+
+### 관계 추가
+
+1. **Project Assignment → People**
+ * 유형: Many-to-One
+ * Assignment의 필드: "Person"
+ * People의 필드: "Project Assignments"
+
+2. **Project Assignment → Projects**
+ * 유형: Many-to-One
+ * Assignment의 필드: "Project"
+ * Projects의 필드: "Team Members"
+
+### 정션 표시 구성
+
+1. **People** 오브젝트에서:
+ * "Project Assignments" 필드를 편집하세요
+ * 정션 토글을 활성화하세요
+ * 대상: "Project"
+
+2. **Projects** 오브젝트에서:
+ * "Team Members" 필드를 편집하세요
+ * 정션 토글을 활성화하세요
+ * 대상: "Person"
+
+### 사용하기
+
+* Person 레코드를 열면 → 해당 Projects를 바로 확인할 수 있습니다
+* Project 레코드를 열면 → 팀원을 바로 확인할 수 있습니다
+* 양쪽 어디에서든 새 연결을 만들 수 있습니다
+
+## 연결에 추가 데이터 추가하기
+
+정션 오브젝트는 실제 오브젝트이므로, 관계에 대한 정보를 저장할 사용자 정의 필드를 추가할 수 있습니다:
+
+* **역할**: "Developer", "Designer", "Manager"
+* **시작일**: 프로젝트에 참여한 시점
+* **할당 시간**: 이 프로젝트의 주간 시간
+
+이 데이터를 확인하려면 정션 오브젝트로 직접 이동하거나 API를 통해 조회하세요.
+
+## 제한 사항
+
+* **CSV 가져오기/내보내기**: 다대다 관계를 직접 가져오기는 지원되지 않습니다. 대신 정션 오브젝트로 레코드를 가져오세요.
+* **필터**: 다대다 관계로 필터링하는 경우 옵션이 제한될 수 있습니다.
+
+## 관련 항목
+
+* [관계 필드](/l/ko/user-guide/data-model/capabilities/relation-fields) — 관계 유형 설명
+* [사용자 정의 오브젝트 만들기](/l/ko/user-guide/data-model/how-tos/create-custom-objects) — 오브젝트 생성 방법
+* [관계 필드 만들기](/l/ko/user-guide/data-model/how-tos/create-relation-fields) — 기본 관계 설정
diff --git a/packages/twenty-docs/l/ko/user-guide/data-model/how-tos/create-relation-fields.mdx b/packages/twenty-docs/l/ko/user-guide/data-model/how-tos/create-relation-fields.mdx
index 8873c74ffd..7f31ab602a 100644
--- a/packages/twenty-docs/l/ko/user-guide/data-model/how-tos/create-relation-fields.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/data-model/how-tos/create-relation-fields.mdx
@@ -1,60 +1,60 @@
---
-title: Create Relation Fields
-description: Step-by-step guide to connecting objects with relation fields.
+title: 관계 필드 만들기
+description: 관계 필드를 사용하여 객체를 연결하는 단계별 가이드.
---
-Relation fields connect records from different objects—for example, linking People to Companies.
+관계 필드는 서로 다른 객체의 레코드를 연결합니다—예: 사람을 회사에 연결.
- **Relation names cannot be changed after creation** (they affect the API). Plan your names carefully.
+ **관계 이름은 생성 후 변경할 수 없습니다** (API에 영향을 줍니다). 이름을 신중하게 계획하세요.
-## Before You Start
+## 시작하기 전에
-Decide:
+다음을 결정하세요:
-* Which objects are you connecting? (e.g., People → Companies)
-* Which is the "one" side? (e.g., Company)
-* Which is the "many" side? (e.g., People — many people work at one company)
-* What should the field be named on each side?
+* 어떤 객체를 연결하나요? (예: 사람 → 회사)
+* 어느 쪽이 "일(1)" 측인가요? (예: 회사)
+* 어느 쪽이 "다수" 측인가요? (예: 사람 — 많은 사람이 한 회사에서 근무합니다)
+* 각 측의 필드 이름을 무엇으로 지정할까요?
-See [Relation Fields](/l/ko/user-guide/data-model/capabilities/relation-fields) for relation types explained.
+관계 유형에 대한 설명은 [관계 필드](/l/ko/user-guide/data-model/capabilities/relation-fields)를 참고하세요.
-## Steps
+## 단계
-1. Go to **Settings → Data Model**
-2. Select the object where you want the relation (typically the "many" side)
-3. Click **+ Add Field**
-4. Select **Relation** as the field type
-5. Choose the **target object**
-6. Select **One-to-Many** or **Many-to-One**
-7. Enter field names for **both sides** of the relation
-8. Click **Save**
+1. **설정 → 데이터 모델**로 이동
+2. 관계를 만들 객체(보통 "다수" 측)를 선택합니다.
+3. **+ 필드 추가**를 클릭합니다.
+4. 필드 유형으로 **관계**를 선택합니다.
+5. **대상 객체**를 선택합니다.
+6. **일대다** 또는 **다대일**을 선택합니다.
+7. 관계의 **양쪽**에 대한 필드 이름을 입력합니다.
+8. **저장** 클릭
-## Example: People → Companies
+## 예: 사람 → 회사
-* Go to **Settings → Data Model → People**
-* Add a Relation field
-* Target: **Companies**
-* Type: **Many-to-One**
-* Field on People: **Company**
-* Field on Companies: **Employees**
+* **설정 → 데이터 모델 → 사람**으로 이동
+* 관계 필드를 추가합니다.
+* 대상: **회사**
+* 유형: **다대일**
+* 사람 측의 필드: **회사**
+* 회사 측의 필드: **직원**
-Now each Person can be linked to a Company, and each Company shows its People.
+이제 각 사람을 회사에 연결할 수 있고, 각 회사에는 연결된 사람들이 표시됩니다.
-## Deleting a Relation
+## 관계 삭제
-1. Go to **Settings → Data Model**
-2. Find the relation field
-3. Click **⋮ → Deactivate**
+1. **설정 → 데이터 모델**로 이동
+2. 관계 필드를 찾습니다.
+3. **⋮ → 비활성화**를 클릭합니다.
-Links are preserved but hidden. Reactivate to restore.
+연결은 유지되지만 숨겨집니다. 복원하려면 다시 활성화하세요.
- **Deleting a relation doesn't delete records.** Only the link between them is removed.
+ **관계를 삭제해도 레코드는 삭제되지 않습니다.** 둘 사이의 연결만 제거됩니다.
-## Related
+## 관련 항목
-* [Relation Fields](/l/ko/user-guide/data-model/capabilities/relation-fields) — types and limitations
-* [How to Import Relations](/l/ko/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv) — bulk import linked records
+* [관계 필드](/l/ko/user-guide/data-model/capabilities/relation-fields) — 유형과 제한사항
+* [관계 가져오기 방법](/l/ko/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv) — 연결된 레코드를 대량으로 가져오기
diff --git a/packages/twenty-docs/l/ko/user-guide/data-model/how-tos/customize-your-data-model.mdx b/packages/twenty-docs/l/ko/user-guide/data-model/how-tos/customize-your-data-model.mdx
index e158f2cec1..5855a9f5a1 100644
--- a/packages/twenty-docs/l/ko/user-guide/data-model/how-tos/customize-your-data-model.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/data-model/how-tos/customize-your-data-model.mdx
@@ -1,22 +1,22 @@
---
-title: Customize Your Data Model
-description: Overview of data model customization options.
+title: 데이터 모델 사용자 정의하기
+description: 데이터 모델 사용자 정의 옵션 개요.
---
-Twenty's data model is fully customizable. Create objects, fields, and relations to match your business.
+Twenty의 데이터 모델은 완전히 사용자 정의할 수 있습니다. 비즈니스에 맞게 객체, 필드, 관계를 생성하세요.
-## Quick Links
+## 빠른 링크
-| I want to... | Guide |
-| ------------------------ | -------------------------------------------------------------------------------------- |
-| Create a new object | [How to Create Custom Objects](/l/ko/user-guide/data-model/how-tos/create-custom-objects) |
-| Add fields to an object | [How to Create Custom Fields](/l/ko/user-guide/data-model/how-tos/create-custom-fields) |
-| Connect objects together | [How to Create Relation Fields](/l/ko/user-guide/data-model/how-tos/create-relation-fields) |
+| 원하는 작업... | 가이드 |
+| --------- | ----------------------------------------------------------------------- |
+| 새 객체 생성 | [사용자 정의 객체 생성 방법](/l/ko/user-guide/data-model/how-tos/create-custom-objects) |
+| 객체에 필드 추가 | [사용자 정의 필드 생성 방법](/l/ko/user-guide/data-model/how-tos/create-custom-fields) |
+| 객체를 서로 연결 | [관계 필드 생성 방법](/l/ko/user-guide/data-model/how-tos/create-relation-fields) |
-## Learn More
+## 자세히 알아보기
-* [Understanding Your Data Model](/l/ko/user-guide/data-model/overview) — key concepts and planning tips
-* [Objects](/l/ko/user-guide/data-model/capabilities/objects) — standard vs custom objects
-* [Fields](/l/ko/user-guide/data-model/capabilities/fields) — all field types
-* [Relation Fields](/l/ko/user-guide/data-model/capabilities/relation-fields) — connecting objects
-* [Data Model FAQ](/l/ko/user-guide/data-model/how-tos/data-model-faq) — common questions
+* [데이터 모델 이해하기](/l/ko/user-guide/data-model/overview) — 핵심 개념과 계획 팁
+* [객체](/l/ko/user-guide/data-model/capabilities/objects) — 표준 객체와 사용자 정의 객체
+* [필드](/l/ko/user-guide/data-model/capabilities/fields) — 모든 필드 유형
+* [관계 필드](/l/ko/user-guide/data-model/capabilities/relation-fields) — 객체 연결
+* [데이터 모델 FAQ](/l/ko/user-guide/data-model/how-tos/data-model-faq) — 자주 묻는 질문
diff --git a/packages/twenty-docs/l/ko/user-guide/data-model/how-tos/data-model-faq.mdx b/packages/twenty-docs/l/ko/user-guide/data-model/how-tos/data-model-faq.mdx
index 2e952eac85..b13914d44a 100644
--- a/packages/twenty-docs/l/ko/user-guide/data-model/how-tos/data-model-faq.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/data-model/how-tos/data-model-faq.mdx
@@ -1,155 +1,155 @@
---
-title: Data Model FAQ
-description: Frequently asked questions about Twenty's data model.
+title: 데이터 모델 FAQ
+description: Twenty의 데이터 모델에 대한 자주 묻는 질문입니다.
---
-## Object Management
+## 객체 관리
-
- Yes, custom objects can be deleted. You can also deactivate them first, which hides the object and its data from the interface while preserving the data.
+
+ 예, 사용자 정의 객체는 삭제할 수 있습니다. 먼저 비활성화할 수도 있습니다. 이렇게 하면 데이터는 보존하면서 객체와 그 데이터를 인터페이스에서 숨깁니다.
-
- No, standard objects cannot be deleted. You can only deactivate them, which hides them from the interface but preserves the data.
+
+ 아니요, 표준 객체는 삭제할 수 없습니다. 비활성화만 할 수 있으며, 인터페이스에서는 숨겨지지만 데이터는 보존됩니다.
-
- You can create as many custom objects and fields as you need — the price doesn't change.
+
+ 필요한 만큼 사용자 정의 객체와 필드를 만들 수 있으며, 가격은 변동하지 않습니다.
-
- You can rename the label of standard objects (People, Companies, Opportunities), but not their API names. The API names are fixed for consistency across all Twenty workspaces.
+
+ 표준 객체(사람, 회사, 기회)의 레이블은 변경할 수 있지만, API 이름은 변경할 수 없습니다. 모든 Twenty 워크스페이스에서의 일관성을 위해 API 이름은 고정되어 있습니다.
-
- Yes, you can change the icon for both standard and custom objects in **Settings → Data Model**.
+
+ 예, **설정 → 데이터 모델**에서 표준 객체와 사용자 정의 객체 모두의 아이콘을 변경할 수 있습니다.
-
- Not yet. Object ordering in the navigation is currently fixed, but this feature is planned for a future release.
+
+ 아직 안 됩니다. 탐색의 객체 순서는 현재 고정되어 있으며, 이 기능은 향후 릴리스에 계획되어 있습니다.
-
- All active objects appear in the navigation. You can deactivate objects you don't need under **Settings → Data Model**.
+
+ 모든 활성 객체는 탐색에 나타납니다. **설정 → 데이터 모델**에서 필요 없는 객체를 비활성화할 수 있습니다.
-## Field Capabilities
+## 필드 기능
-
- No, field types cannot be changed after creation. If you need a different type, create a new field with the correct type, migrate your data, then deactivate the old field.
+
+ 아니요, 생성 후에는 필드 유형을 변경할 수 없습니다. 다른 유형이 필요하다면 올바른 유형의 새 필드를 만들고 데이터를 마이그레이션한 다음 이전 필드를 비활성화하세요.
-
- Our GraphQL API uses both forms for different operations:
+
+ 우리의 GraphQL API는 다양한 작업에서 두 형식을 모두 사용합니다:
- * `createPerson` (singular) for single record actions
- * `createPeople` (plural) for bulk operations
+ * 단일 기록 작업을 위한 `createPerson` (단수)
+ * 대량 작업을 위한 `createPeople` (복수)
- This creates limitations when singular and plural forms are the same, but it improves the developer experience.
+ 단수 및 복수 형식이 동일할 때 제한이 있지만, 개발자 경험을 향상시킵니다.
-
- Certain field names like `Type` or `Application` are reserved for system use. Choose alternative names like `Category` or `Classification` instead.
+
+ `Type` 또는 `Application`과 같은 특정 필드 이름은 시스템 사용을 위해 예약되어 있습니다. 대신 `Category` 또는 `Classification`과 같은 대체 이름을 선택하세요.
-
- * The field is hidden from the interface
- * Existing data is preserved
- * You can still access the field via API
- * Existing relations remain but you can't create new ones
- * You can reactivate the field later
+
+ * 필드는 인터페이스에서 숨겨집니다
+ * 기존 데이터는 보존됩니다
+ * API를 통해 해당 필드에 계속 액세스할 수 있습니다
+ * 기존 관계는 유지되지만 새 관계를 생성할 수는 없습니다
+ * 필드는 나중에 다시 활성화할 수 있습니다
-
- Currently, you cannot make custom fields required. All fields accept empty values. You can use workflows to enforce required fields by sending alerts or blocking actions when fields are empty.
+
+ 현재는 사용자 정의 필드를 필수로 설정할 수 없습니다. 모든 필드는 빈 값을 허용합니다. 필드가 비어 있을 때 알림을 보내거나 동작을 차단하는 워크플로우를 사용해 필수 필드를 강제할 수 있습니다.
-
- * **Unique**: No two records can have the same value in this field
- * **Required**: The field must have a value (not currently supported for custom fields)
+
+ * **고유**: 두 레코드가 이 필드에 동일한 값을 가질 수 없습니다
+ * **필수**: 필드에 값이 있어야 합니다(현재 사용자 정의 필드에서는 지원되지 않음)
-
- Formula fields are coming in **Q1 2026**. In the meantime, you can use workflows to calculate and update field values automatically.
+
+ 수식 필드는 **2026년 1분기**에 제공될 예정입니다. 현재는 워크플로를 사용하여 필드 값을 자동으로 계산하고 업데이트할 수 있습니다.
-
- Nested fields are coming in **Q1 2026**. Currently, you can use workflows to bring field values from related objects. For example, to display a company's industry on a Person record, create a custom field on People and use a workflow to synchronize the value.
+
+ 중첩 필드는 **2026년 1분기**에 제공될 예정입니다. 현재로서는 관련 객체의 필드 값을 가져오려면 워크플로를 사용할 수 있습니다. 예를 들어, 회사의 산업을 사람 기록에 표시하려면 사람에 대한 사용자 정의 필드를 만들고 워크플로를 사용하여 값을 동기화하세요.
-
- Field reordering will be available with custom layouts in **Q4 2025**. Currently, fields appear in alphabetical order.
+
+ 필드 정렬은 **2025년 4분기**에 사용자 정의 레이아웃과 함께 제공될 예정입니다. 현재 필드는 알파벳 순으로 표시됩니다.
-## Relations
+## 관계
-
- Yes! Self-referencing relations are supported and recommended for use cases like account hierarchies. For example, create a relation from Companies to Companies to track parent/child accounts.
+
+ 예! 자기 참조 관계가 지원되며, 계정 계층 구조와 같은 사용 사례에 권장됩니다. 예를 들어, 상위/하위 계정을 추적하기 위해 회사에서 회사로의 관계를 생성하세요.
-
- Many-to-many relationships are coming in **H1 2026**. Currently, create an intermediate object with two one-to-many relationships as a workaround.
+
+ 다대다 관계는 **2026년 상반기**에 제공될 예정입니다. 현재는 우회 방법으로 두 개의 1대다 관계를 가진 중간 객체를 만드세요.
- For example, to link People and Projects (many-to-many), create a "Project Assignments" object with:
+ 예를 들어 People과 Projects를 연결(다대다)하려면 "Project Assignments" 객체를 만들고 다음을 포함하세요:
- * A relation to People (many assignments → one person)
- * A relation to Projects (many assignments → one project)
+ * People에 대한 관계(여러 할당 → 한 사람)
+ * Projects에 대한 관계(여러 할당 → 한 프로젝트)
-
- These allow one object to relate to multiple different object types through a single field. For example, Notes can be attached to People AND Companies AND Opportunities simultaneously.
+
+ 이는 하나의 필드를 통해 하나의 객체가 여러 서로 다른 객체 유형과 관계를 맺을 수 있도록 합니다. 예를 들어, 노트는 동시에 사람, 회사, 기회에 첨부될 수 있습니다.
- Each Note links to one Person, one Company, and one Opportunity at the same time.
+ 각 노트는 동시에 한 사람, 한 회사, 한 기회에 연결됩니다.
- Learn more in [Relation Fields](/l/ko/user-guide/data-model/capabilities/relation-fields).
+ 자세한 내용은 [관계 필드](/l/ko/user-guide/data-model/capabilities/relation-fields)에서 확인하세요.
-
- Yes, you can create multiple relations between the same two objects. For example, a Company could have both a "Primary Contact" and "Billing Contact" relation to People.
+
+ 예, 동일한 두 객체 간에 여러 관계를 생성할 수 있습니다. 예를 들어, 회사는 사람에 대해 "Primary Contact"와 "Billing Contact" 관계를 모두 가질 수 있습니다.
-
- When you delete a record, the relation link is removed from the related records. The related records themselves are not deleted.
+
+ 레코드를 삭제하면 관련 레코드에서 관계 링크가 제거됩니다. 관련 레코드 자체는 삭제되지 않습니다.
-
- While technically possible, circular relations (A → B → C → A) should be avoided as they can cause confusion and potential performance issues.
+
+ 기술적으로는 가능하지만, 순환 관계(A → B → C → A)는 혼란을 초래하고 성능 문제를 일으킬 수 있으므로 피하는 것이 좋습니다.
-## Access and Permissions
+## 접속 및 권한
-
- Go to **Settings → Data Model** to view and edit all your objects and fields.
+
+ **설정 → 데이터 모델**로 이동하여 모든 객체와 필드를 보고 편집하세요.
-
- Reach out to your workspace administrator. Data model access is usually restricted to administrators only.
+
+ 워크스페이스 관리자에게 문의하세요. 데이터 모델 접근은 보통 관리자에게만 제한됩니다.
-## Data Management
+## 데이터 관리
-
- There's no hard limit on record counts. However, very large datasets may impact performance in some views. Use filters and views to manage large datasets effectively.
+
+ 레코드 수에 대한 하드 제한은 없습니다. 하지만 매우 큰 데이터 세트는 일부 보기에서 성능에 영향을 줄 수 있습니다. 필터와 보기를 사용해 대규모 데이터 세트를 효과적으로 관리하세요.
-
- Yes, you can import CSV data into any object, including custom objects. The import process supports field mapping for custom fields. See [How to Prepare Your CSV Files](/l/ko/user-guide/data-migration/how-tos/prepare-your-csv-files).
+
+ 예, 사용자 정의 객체를 포함한 모든 객체에 CSV 데이터를 가져올 수 있습니다. 가져오기 프로세스는 사용자 정의 필드에 대한 필드 매핑을 지원합니다. 자세한 내용은 [CSV 파일 준비 방법](/l/ko/user-guide/data-migration/how-tos/prepare-your-csv-files)을 참조하세요.
-
- Currently, there's no built-in export for data model configuration. Contact support if you need to migrate your data model between workspaces.
+
+ 현재 데이터 모델 구성에 대한 내장된 내보내기 기능은 없습니다. 워크스페이스 간에 데이터 모델을 마이그레이션해야 하는 경우 지원팀에 문의하세요.
-## Need More Help?
+## 추가 도움이 필요하십니까?
-Check our [Implementation Services](/l/ko/user-guide/getting-started/capabilities/implementation-services) for help with complex data model design.
+복잡한 데이터 모델 설계를 지원받으려면 [구현 서비스](/l/ko/user-guide/getting-started/capabilities/implementation-services)를 확인하세요.
diff --git a/packages/twenty-docs/l/ko/user-guide/data-model/overview.mdx b/packages/twenty-docs/l/ko/user-guide/data-model/overview.mdx
index 14b8345a46..edc3e9b26e 100644
--- a/packages/twenty-docs/l/ko/user-guide/data-model/overview.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/data-model/overview.mdx
@@ -1,180 +1,180 @@
---
-title: Data Model
-description: Learn what a data model is and how to design one that fits your business.
+title: 데이터 모델
+description: 데이터 모델이 무엇이며 귀사의 비즈니스에 맞는 모델을 설계하는 방법을 알아보세요.
image: /images/user-guide/fields/custom_data_model.png
---
-
+
-## What is a Data Model?
+## 데이터 모델이란 무엇입니까?
-A data model is the structure that defines how information is organized in your CRM. Think of it as the **blueprint** of your customer data — you design it once, then fill it with your actual data.
+데이터 모델은 CRM에서 정보가 조직되는 방식을 정의하는 구조입니다. 고객 데이터의 **청사진**이라고 생각하세요 — 한 번 설계한 다음 실제 데이터로 채웁니다.
-## Key Concepts
+## 핵심 개념
-### Objects
+### 개체
-**Objects** are the main categories of data in your CRM. Each object represents a type of thing you want to track.
+**개체**는 CRM에서 데이터의 주요 범주입니다. 각 개체는 추적하려는 항목의 유형을 나타냅니다.
-Twenty comes with standard objects:
+Twenty에는 표준 개체가 기본으로 제공됩니다:
-* **People** — individuals (contacts, leads, partners)
-* **Companies** — organizations
-* **Opportunities** — deals or sales
-* **Notes** — attached notes on records
-* **Tasks** — to-dos linked to records
+* **People** — 개인(연락처, 리드, 파트너)
+* **Companies** — 조직
+* **Opportunities** — 거래 또는 판매
+* **Notes** — 기록에 첨부된 노트
+* **Tasks** — 기록에 연결된 할 일
-You can also create **custom objects** for anything specific to your business (e.g., Projects, Subscriptions, Events).
+비즈니스에 특화된 항목에 대해 **사용자 지정 개체**를 생성할 수도 있습니다(예: Projects, Subscriptions, Events).
-### Fields
+### 필드
-**Fields** are the properties or attributes that describe each object. They store the actual information.
+**필드**는 각 개체를 설명하는 속성 또는 특성입니다. 실제 정보를 저장합니다.
-For example, the **People** object has fields like:
+예를 들어, **People** 개체에는 다음과 같은 필드가 있습니다:
-* Name
-* Email
-* Phone
-* Job Title
-* Company (a relation to the Companies object)
+* 이름
+* 이메일
+* 전화
+* 직책
+* Company (Companies 개체에 대한 관계)
-Fields have different **types**: text, number, date, select, multi-select, relation, and more. You can add custom fields to any object.
+필드에는 다양한 **유형**이 있습니다: 텍스트, 숫자, 날짜, 선택, 다중 선택, 관계 등. 어떤 개체에도 사용자 지정 필드를 추가할 수 있습니다.
-### Records
+### 기록
-**Records** are the individual entries within an object — the actual data you create and manage.
+**기록**은 개체 내의 개별 항목으로, 사용자가 생성하고 관리하는 실제 데이터입니다.
-For example:
+예를 들어:
-* "John Smith" is a **record** in the People object
-* "Acme Corp" is a **record** in the Companies object
+* "John Smith"는 People 개체의 **기록**입니다
+* "Acme Corp"는 Companies 개체의 **기록**입니다
-**An analogy:**
+**비유:**
-| Data Model Concept | Real-World Analogy |
-| ------------------ | ------------------------------------------ |
-| **Objects** | Sections in a book (the categories) |
-| **Fields** | Columns in a spreadsheet (the properties) |
-| **Records** | Rows in a spreadsheet (the actual entries) |
+| 데이터 모델 개념 | 현실 세계 비유 |
+| --------- | ---------------- |
+| **개체** | 책의 섹션(범주) |
+| **필드** | 스프레드시트의 열(속성) |
+| **기록** | 스프레드시트의 행(실제 항목) |
-You design the data model (objects + fields) once, then create many records within that structure.
+데이터 모델(개체 + 필드)을 한 번 설계한 후, 그 구조 내에서 많은 기록을 생성합니다.
-## Why Customize Your Data Model?
+## 왜 데이터 모델을 사용자 정의하나요?
-Every business works differently. Customizing your data model means you can shape Twenty around **your** processes instead of forcing yours into a rigid system.
+모든 비즈니스는 다르게 작동합니다. 데이터 모델을 사용자 정의하면 경직된 시스템에 프로세스를 억지로 맞추는 대신, **귀하의** 프로세스에 맞춰 Twenty를 구성할 수 있습니다.
-Twenty offers full flexibility:
+Twenty는 완전한 유연성을 제공합니다:
-* Create as many custom objects as you need
-* Add unlimited custom fields
-* The price doesn't change based on customization
+* 필요한 만큼 사용자 지정 개체를 생성하세요
+* 무제한의 사용자 지정 필드를 추가하세요
+* 사용자 정의 여부와 상관없이 가격은 변하지 않습니다
-## Tips to Design Your Data Model
+## 데이터 모델 설계 팁
-### 1. Start with Your Core Objects
+### 1. 핵심 개체부터 시작하세요
-Identify the main concepts you work with. Twenty already provides:
+업무에 사용하는 핵심 개념을 식별하세요. Twenty에서 이미 제공하는 항목:
-* **People** — your contacts
-* **Companies** — your accounts
-* **Opportunities** — your deals
+* **People** — 귀하의 연락처
+* **Companies** — 귀하의 조직
+* **Opportunities** — 귀하의 거래
-Think about what else you might need:
+추가로 필요한 것이 무엇인지 생각해 보세요:
-* Stripe would need a `Subscriptions` object
-* Airbnb would need a `Trips` object
-* An accelerator would need a `Batches` object
+* Stripe에는 `Subscriptions` 개체가 필요합니다
+* Airbnb에는 `Trips` 개체가 필요합니다
+* 엑셀러레이터에는 `Batches` 개체가 필요합니다
-### 2. Use Fields for Variations, Not New Objects
+### 2. 새 개체 대신 변형에는 필드를 사용하세요
-If something is just a characteristic of an existing object, make it a **field**.
+어떤 것이 기존 개체의 특성에 불과하다면 **필드**로 만드세요.
-**Use fields for:**
+**다음의 경우 필드를 사용하세요:**
-* Categories and labels (e.g., `Industry` for Companies)
-* Status values (e.g., `Stage` for Opportunities)
-* Attributes and properties
+* 카테고리와 레이블(예: Companies의 `Industry`)
+* 상태 값(예: Opportunities의 `Stage`)
+* 속성과 특성
-### 3. Create an Object When It Stands on Its Own
+### 3. 독립적으로 존재한다면 개체를 만드세요
-If the concept has its own lifecycle, properties, or relationships, it deserves an object.
+그 개념에 자체 수명주기, 속성 또는 관계가 있다면 개체로 만들어야 합니다.
-**Create an object for:**
+**다음의 경우 개체를 만드세요:**
-* **Projects** — have deadlines, owners, and tasks
-* **Subscriptions** — connect companies, products, and invoices
-* **Events** — involve attendees and follow-up actions
+* **Projects** — 기한, 소유자 및 작업이 있음
+* **Subscriptions** — 회사, 제품 및 인보이스를 연결함
+* **Events** — 참가자와 후속 조치를 포함함
-These go beyond a single field because they carry their own data and relationships.
+이들은 자신의 데이터와 관계를 가지고 있기 때문에 단일 필드를 초과합니다.
-### 4. Create an Object When Records Are Open-Ended
+### 4. 기록의 개수가 정해져 있지 않은 경우 개체를 만드세요
-If something can be linked multiple times and you don't know how many, use an object.
+어떤 항목이 여러 번 연결될 수 있고 몇 개인지 알 수 없다면, 개체를 사용하세요.
-**Bad approach:**
-Creating fields like `Product 1`, `Product 2`, `Product 3`...
+**나쁜 접근법:**
+`Product 1`, `Product 2`, `Product 3` 같은 필드 만들기...
-**Good approach:**
-Create a `Products` object and relate it to records. This supports one, two, or a hundred products without changing your model.
+**좋은 접근법:**
+`Products` 개체를 만들고 레코드와 연결하세요. 이렇게 하면 모델을 변경하지 않고도 하나, 두 개, 또는 백 개의 제품을 지원할 수 있습니다.
-### 5. Keep It Simple First
+### 5. 먼저 단순하게 유지하세요
-Start with fields. Move to new objects only when you feel the limits:
+필드부터 시작하세요. 한계를 느낄 때에만 새 객체로 전환하세요:
-* Too many fields on one object
-* Repeated records that should be separate
-* Relationships that don't fit neatly
+* 하나의 객체에 필드가 너무 많음
+* 분리되어야 할 레코드가 반복됨
+* 모델에 잘 맞지 않는 관계
-## Special Note on People, Companies, and Opportunities
+## 사람, 회사 및 기회에 대한 특별 참고 사항
- **Email and calendar sync only works with People, Companies, and Opportunities.**
+ **이메일 및 캘린더 동기화는 사람, 회사 및 기회에서만 작동합니다.**
- These are the only objects where you can access synchronized emails and meetings from your mailbox/calendar. We recommend using them as much as possible.
+ 메일함/캘린더에서 동기화된 이메일과 미팅에 액세스할 수 있는 유일한 객체입니다. 가능한 한 많이 사용할 것을 권장합니다.
-**Best practices:**
+**모범 사례:**
-* If you need categories of People, use fields (not new objects)
-* Example: Use a `Person Type` field with values "Prospect" and "Partner" instead of creating separate objects
-* Create different **views** to filter: one showing partners, another showing prospects
+* 사람 카테고리가 필요하다면 새 객체가 아닌 필드를 사용하세요
+* 예: 별도의 객체를 만드는 대신 값이 "Prospect"와 "Partner"인 `Person Type` 필드를 사용하세요
+* 필터링을 위해 서로 다른 **뷰**를 만드세요: 하나는 파트너를, 다른 하나는 잠재 고객을 표시합니다
-**It's okay to have fields that don't apply to every record.** For example, a `Referral Link` field on People that only applies when `Person Type = Partner`. Hide this field from views where it's not relevant.
+**모든 레코드에 적용되지 않는 필드가 있어도 괜찮습니다.** 예: `Person Type = Partner`일 때만 적용되는 사람 객체의 `Referral Link` 필드. 관련 없는 뷰에서는 이 필드를 숨기세요.
-## Questions to Guide Your Choice
+## 선택을 안내하는 질문들
-Ask yourself:
+자문해 보십시오:
-Is this just a property of something I already have, or does it need its own properties?
-Will I ever need to track multiple of these per record, without knowing how many?
-Does this concept connect to several different objects, not just one?
-Will it have its own lifecycle (stages, start/end dates)?
+이것이 이미 보유한 것의 단순한 속성인가요, 아니면 자체 속성이 필요한가요?
+레코드당 이것을 여러 개 추적해야 하는데, 그 개수를 미리 알 수 없을 때가 있나요?
+이 개념이 하나가 아닌 여러 다른 객체와 연결되나요?
+자체 라이프사이클(단계, 시작/종료 날짜)이 있나요?
-If the answer is "yes" to one or more, it's probably time for a new object.
+이 중 하나 이상에 "예"라고 답했다면, 아마도 새 객체가 필요할 때입니다.
-## Accessing Your Data Model
+## 데이터 모델에 액세스하기
-1. Go to **Settings** in the left sidebar
-2. Click **Data Model**
-3. View all your objects (standard and custom)
-4. Click any object to see and edit its fields
+1. 왼쪽 사이드바에서 **설정**으로 이동하세요
+2. **데이터 모델**을 클릭하세요
+3. 모든 객체(표준 및 사용자 지정)를 확인하세요
+4. 임의의 객체를 클릭하여 해당 필드를 보고 편집하세요
- **Don't see Data Model in Settings?**
+ **설정에서 데이터 모델이 보이지 않나요?**
- Access to the data model is usually restricted to administrators. Contact your workspace admin if you need access.
+ 데이터 모델에 대한 액세스는 보통 관리자에게만 제한됩니다. 액세스가 필요하면 워크스페이스 관리자에게 문의하세요.
-## Next Steps
+## 다음 단계
-Once you've planned your data model:
+데이터 모델을 계획한 후:
-* [How to Create Custom Objects](/l/ko/user-guide/data-model/how-tos/create-custom-objects)
-* [How to Create Custom Fields](/l/ko/user-guide/data-model/how-tos/create-custom-fields)
-* [How to Create Relation Fields](/l/ko/user-guide/data-model/how-tos/create-relation-fields)
+* [사용자 지정 객체 생성 방법](/l/ko/user-guide/data-model/how-tos/create-custom-objects)
+* [사용자 지정 필드 생성 방법](/l/ko/user-guide/data-model/how-tos/create-custom-fields)
+* [관계 필드 생성 방법](/l/ko/user-guide/data-model/how-tos/create-relation-fields)
-## Need Help?
+## 도움이 필요하신가요?
-Our team can help you design and create the data model you need. Discover our [Implementation Services](/l/ko/user-guide/getting-started/capabilities/implementation-services).
+저희 팀이 필요한 데이터 모델의 설계와 생성에 도움을 드릴 수 있습니다. 저희의 [구현 서비스](/l/ko/user-guide/getting-started/capabilities/implementation-services)를 알아보세요.
diff --git a/packages/twenty-docs/l/ko/user-guide/getting-started/capabilities/glossary.mdx b/packages/twenty-docs/l/ko/user-guide/getting-started/capabilities/glossary.mdx
index 71ac91622f..056294be14 100644
--- a/packages/twenty-docs/l/ko/user-guide/getting-started/capabilities/glossary.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/getting-started/capabilities/glossary.mdx
@@ -1,108 +1,104 @@
---
-title: Glossary
-description: Get familiar with essential terminology used in Twenty.
+title: 용어집
+description: Twenty에서 사용되는 필수 용어에 익숙해지십시오.
---
## API
-API (Application Programming Interface) allows you to connect Twenty with other software systems and build custom integrations.
+API(응용 프로그래밍 인터페이스)는 Twenty를 다른 소프트웨어 시스템과 연결하고 맞춤형 통합을 구축할 수 있게 합니다.
-## Apps
+## 앱
-Apps are custom extensions built as code that can define data models and serverless functions. They enable developers to create reusable customizations that can be deployed across multiple workspaces.
+앱은 데이터 모델과 서버리스 함수를 정의할 수 있도록 코드로 작성된 사용자 정의 확장 기능입니다. 이를 통해 개발자는 여러 워크스페이스에 걸쳐 배포할 수 있는 재사용 가능한 사용자 정의 기능을 만들 수 있습니다.
-## Code Actions
+## 코드 액션
-Code Actions are workflow steps that let you write custom JavaScript to transform data, make calculations, or perform complex logic that isn't possible with built-in actions.
+코드 액션은 데이터 변환, 계산 수행, 기본 제공 액션으로는 불가능한 복잡한 로직 실행을 위해 사용자 정의 JavaScript를 작성할 수 있게 해주는 워크플로 단계입니다.
-## Command Menu
+## 명령 메뉴
-The Command Menu is a quick-access interface (opened with `Cmd + K` on Mac and `Ctrl + K` on Windows) that lets you perform actions, create records, and navigate your workspace efficiently.
+명령 메뉴는 신속한 작업 수행, 기록 생성 및 작업 공간 내비게이션을 효율적으로 도와주는 빠른 접근 인터페이스입니다. (Mac에서는 `Cmd + K`, Windows에서는 `Ctrl + K`로 열림)
-## Company & People
+## 회사 및 사람들
-The CRM has two fundamental types of records:
+CRM에는 두 가지 기본 유형의 기록이 있습니다:
-* A `Company` represents a business or organization.
-* `People` represent your company's current and prospective customers or clients.
+* `회사`는 기업이나 조직을 나타냅니다.
+* `사람들`은 현재 및 잠재 고객 또는 클라이언트를 나타냅니다.
-## Custom Fields
+## 사용자 정의 필드
-Custom Fields are data fields you create to capture information specific to your business needs and processes.
+사용자 정의 필드는 비즈니스 요구 및 프로세스에 특정한 정보를 캡처하기 위해 생성하는 데이터 필드입니다.
-## Data Model
+## 데이터 모델
-A Data Model is the structure that defines how information is organized in your CRM, including what objects exist, their properties (fields), and how they relate to each other.
+데이터 모델은 CRM에서 정보가 어떻게 구성되는지를 정의하는 구조로, 어떤 객체가 존재하는지, 그 속성(필드), 그리고 서로 어떻게 관련되는지를 포함합니다.
-## Favorites
+## 즐겨찾기
-Favorites are records you've marked for quick access, appearing in your sidebar for instant navigation to important data.
+즐겨찾기는 빠른 접근을 위해 표시해 둔 기록으로, 사이드바에 표시되어 중요한 데이터로 즉시 이동할 수 있게 합니다.
-## Field
+## 필드
-A field refers to a specific area where particular data is stored for an entity.
+필드는 특정 엔터티에 대한 특정 데이터가 저장되는 영역을 나타냅니다.
-## Integration
+## 반복자
-Integrations are built-in tools that allow you to link Twenty with other software or systems.
+이터레이터는 항목 배열을 순회하여 목록의 각 항목에 대해 후속 액션을 실행하는 워크플로 액션입니다.
-## Iterator
+## 칸반
-An Iterator is a workflow action that loops through an array of items, executing subsequent actions for each item in the list.
+`칸반`은 카드와 열을 사용하여 비즈니스 프로세스를 추적하는 시각적 방법입니다. 각 열은 프로세스의 단계를 나타내며(예: 신규, 진행 중, 성사, 실패), 기록이 진행됨에 따라 단계들을 거쳐 이동합니다.
-## Kanban
+## 객체
-A `Kanban` is a visual way to track your business processes using cards and columns. Each column represents a stage in your process (for example: new, ongoing, won, lost), and you move records through these stages as they progress.
+객체는 CRM에서 특정 유형의 엔터티(예: 사람, 회사, 기회)를 나타내는 데이터 구조입니다. 오브젝트는 기본 제공 표준 오브젝트일 수도 있고, 사용자 정의 오브젝트(사용자가 생성한 오브젝트)일 수도 있습니다.
-## Object
+## 기회
-An Object is a data structure that represents a specific type of entity in your CRM (like People, Companies, or Opportunities). Objects can be standard (built-in) or custom (created by you).
+Twenty CRM에서 기회란 계정 또는 연락처와의 잠재적 거래 또는 판매를 의미합니다.
-## Opportunities
+## 기록
-Opportunities in Twenty CRM are potential deals or sales with accounts or contacts.
+기록은 특정 계정 또는 연락처와 같은 객체의 인스턴스를 나타냅니다.
-## Record
+## 관계 필드
-A Record indicates an instance of an object, like a specific account or contact.
+관계 필드는 다른 객체들 간의 연결을 만들어 주며, 기록을 서로 연결할 수 있게 합니다. (예: 사람을 회사에 연결)
-## Relation Fields
+## 표준 필드
-Relation Fields create connections between different objects, allowing you to link records together (like connecting a Person to a Company).
+표준 필드는 객체에 기본 제공되는 미리 만들어진 데이터 필드로, 모든 워크스페이스에서 공통 기능을 제공합니다.
-## Standard Fields
+## 작업
-Standard Fields are pre-built data fields that come with objects by default and provide common functionality across all workspaces.
+Twenty CRM의 작업은 연락처, 계정 또는 기회와 관련된 할당된 활동입니다.
-## Tasks
+## 트리거
-Tasks in Twenty CRM are assigned activities relating to contacts, accounts, or opportunities.
+트리거는 워크플로의 시작점으로 — 자동화를 시작하는 이벤트나 조건입니다. 예로는 레코드 생성, 레코드 업데이트, 웹후크, 예약된 시간 등이 있습니다.
-## Triggers
+## 보기
-Triggers are the starting point of a workflow — the event or condition that initiates the automation. Examples include record creation, record updates, webhooks, or scheduled times.
+보기를 사용해 각 보기마다 필터, 레이아웃, 정렬 옵션을 설정하여 기록의 표시 방식을 사용자 지정할 수 있습니다.
-## Views
+## 업서트
-You can customize the display of your records using views, setting different filters, layouts and sorting options for each view.
+업서트는 "update"와 "insert"를 결합한 작업으로 — 일치 항목이 있으면 기존 레코드를 업데이트하고, 없으면 새 레코드를 생성합니다.
-## Upsert
+## 웹훅
-Upsert is an operation that combines "update" and "insert" — it updates an existing record if a match is found, or creates a new record if no match exists.
+웹후크는 특정 이벤트가 발생할 때 Twenty에서 다른 애플리케이션으로 전송되는 자동화된 메시지로, 실시간 데이터 동기화를 가능하게 합니다.
-## Webhooks
+## 워크플로우
-Webhooks are automated messages sent from Twenty to other applications when specific events occur, enabling real-time data synchronization.
+워크플로우는 특정 조건에 따라 작업을 자동으로 트리거하여 반복적인 작업 및 비즈니스 프로세스를 자동화하는 데 도움이 되는 프로세스입니다.
-## Workflows
+## 워크스페이스
-Workflows are automated processes that trigger actions based on specific conditions, helping you automate repetitive tasks and business processes.
+`워크스페이스`는 일반적으로 Twenty를 사용하는 회사를 나타냅니다. Twenty에 팀원들이 추가하는 모든 기록과 데이터를 보유합니다.
+일반적으로 회사에서 직원 이메일 주소에 사용하는 단일 도메인 이름을 가집니다.
-## Workspace
+## 워크스페이스 구성원
-A `Workspace` typically represents a company using Twenty. It holds all the records and data that you and your team members add to Twenty.
-It has a single domain name, which is typically the domain name your company uses for employee email addresses.
-
-## Workspace Members
-
-Workspace Members are the Twenty users from your team who have access to your workspace. They can be assigned as owners or assignees for records.
+워크스페이스 구성원은 팀에서 워크스페이스에 접근할 수 있는 Twenty 사용자입니다. 이들은 기록의 소유자 또는 담당자로 지정될 수 있습니다.
diff --git a/packages/twenty-docs/l/ko/user-guide/getting-started/capabilities/implementation-services.mdx b/packages/twenty-docs/l/ko/user-guide/getting-started/capabilities/implementation-services.mdx
index 706de4d2a0..085029e1d2 100644
--- a/packages/twenty-docs/l/ko/user-guide/getting-started/capabilities/implementation-services.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/getting-started/capabilities/implementation-services.mdx
@@ -1,16 +1,16 @@
---
-title: Implementation Services
-description: Whether you need help getting started or creating advanced customizations, we have a solution.
+title: 구현 서비스
+description: 시작을 위한 지원이 필요하시든 고급 맞춤 설정을 원하시든, 저희에게는 해결책이 있습니다.
---
-## Onboarding Packs
+## 온보딩 패키지
-Get help from our core team to set up your Twenty workspace with our 4-hour Onboarding packs:
+당사의 핵심 팀이 제공하는 4시간 온보딩 패키지를 통해 Twenty 워크스페이스 설정을 지원받으세요:
-* **Data Model Design**: Design and create your custom data model with objects, fields, and relationships
-* **Data Migration**: Migrate your existing data from your current CRM to Twenty
-* **Workflow Creation**: Create custom workflows to support your business processes
+* **데이터 모델 설계**: 객체, 필드, 관계로 사용자 정의 데이터 모델 설계 및 생성
+* **데이터 마이그레이션**: 현재 CRM에서 Twenty로 기존 데이터 마이그레이션
+* **워크플로우 생성**: 비즈니스 프로세스를 지원하기 위한 사용자 정의 워크플로우 생성
-## Implementation Partners
+## 구현 파트너
-Work with certified Twenty partners for more advanced customizations and integrations. Reach out to our team via [contact@twenty.com](mailto:contact@twenty.com) to be matched with our partners.
+인증된 Twenty 파트너와 함께 더 발전된 커스터마이징 및 통합 작업 수행. 저희 파트너와 연결을 원하시면 [contact@twenty.com](mailto:contact@twenty.com)으로 당사 팀에 문의해 주세요.
diff --git a/packages/twenty-docs/l/ko/user-guide/getting-started/capabilities/what-is-twenty.mdx b/packages/twenty-docs/l/ko/user-guide/getting-started/capabilities/what-is-twenty.mdx
index 87709bb07f..cfa5ac621f 100644
--- a/packages/twenty-docs/l/ko/user-guide/getting-started/capabilities/what-is-twenty.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/getting-started/capabilities/what-is-twenty.mdx
@@ -1,42 +1,42 @@
---
-title: What is Twenty
-description: Twenty is an open-source CRM that gives you the building blocks to create exactly what your business needs.
+title: 트웬티란 무엇입니까?
+description: Twenty는 비즈니스에 필요한 것을 정확히 만들 수 있도록 기본 구성 요소를 제공하는 오픈 소스 CRM입니다.
---
-## Vision
+## 비전
-Creating a good CRM is hard because it's a balancing act.
-For each business, the requirements seem straightforward, yet everyone's needs are distinct.
-The result is a CRM that's either too basic, or one that's attempting to be a jack-of-all-trades but ending up as a master of none.
+좋은 CRM을 만드는 것은 어렵습니다. 왜냐하면 그것은 균형 잡기의 행위이기 때문입니다.
+비즈니스마다 요구 사항은 간단히 보이지만 각자의 필요는 다릅니다.
+결과적으로 CRM은 너무 기본적이거나 지나치게 많은 것을 시도하지만 어떤 것도 전문적으로 다루지 못하게 됩니다.
-At first, Twenty looks like most CRMs you already know: you can track deals, organize contacts, manage tasks and notes.
-**But what sets it apart is our approach to extensibility. We are building an open platform that provides the building blocks for you to solve your unique business problems.**
+처음에 트웬티는 이미 알고 있는 대부분의 CRM과 유사하게 보입니다: 거래를 추적하고 연락처를 조직하고, 작업 및 메모를 관리할 수 있습니다.
+**그러나 이를 차별화하는 것은 확장 가능성에 대한 우리의 접근 방식입니다. 우리는 고객의 고유한 비즈니스 문제를 해결할 수 있도록 건축 블록을 제공하는 오픈 플랫폼을 구축하고 있습니다.**
-We prioritize universal principles and common patterns over feature lists.
-We don't try to have all the answers and instead empower users to find what works best for them.
-Open-source is the bedrock of our approach, ensuring that Twenty evolves with its community, for its community.
+기능 목록보다 보편적인 원칙과 일반적인 패턴을 우선시합니다.
+모든 답을 찾으려 하지 않고 사용자가 자신에게 가장 잘 맞는 방식을 찾을 수 있도록 지원합니다.
+오픈 소스는 우리의 접근 방식을 지탱하는 기초이며, 트웬티는 커뮤니티와 함께 진화하며 커뮤니티를 위한 것입니다.
-## Benefits
+## 이점
-**Customizable:** Designed to fit your business needs.
+**사용자 정의 가능:** 비즈니스 요구 사항에 맞도록 설계되었습니다.
-**Community-driven:** Built and maintained by a large open-source community.
+**커뮤니티 주도:** 대규모 오픈 소스 커뮤니티에 의해 구축되고 유지 관리됩니다.
-**Cost-effective:** You'll never be vendor-locked, because you can always self-host.
+**비용 효율적:** 언제든지 자체 호스팅이 가능하므로 벤더 락인이 없습니다.
-## Main Features
+## 주요 기능
-* **Calendar & Emails:** Sync your mailbox and calendar to see all communications on your CRM records. [Learn more](/l/ko/user-guide/calendar-emails/overview).
-* **Data Model:** Create custom objects and fields to match your unique business processes. [Explore](/l/ko/user-guide/data-model/overview).
-* **Data Migration:** Import and export your data via CSV or API. [Get started](/l/ko/user-guide/data-migration/overview).
-* **Views & Pipelines:** Organize your data with table views, kanban boards, and sales pipelines. [Discover](/l/ko/user-guide/views-pipelines/overview).
-* **Workflows:** Automate your business processes and integrate with external tools. [Build automations](/l/ko/user-guide/workflows/overview).
-* **AI:** Enhance your CRM with AI-powered features and agents. [Explore AI](/l/ko/user-guide/ai/overview).
-* **Dashboards:** Track performance with custom reports and visualizations. [View dashboards](/l/ko/user-guide/dashboards/overview).
-* **Permissions & Access:** Control who can view, edit, and manage your data with role-based permissions. [Configure access](/l/ko/user-guide/permissions-access/overview).
-* **Notes & Tasks:** Create notes and tasks linked to your records for better collaboration.
-* **API & Webhooks:** Connect to other apps and build custom integrations. [Start integrating](/l/ko/developers/extend/capabilities/apis).
+* **캘린더 및 이메일:** 메일함과 캘린더를 동기화하여 CRM 레코드에서 모든 커뮤니케이션을 확인하세요. [자세히 알아보기](/l/ko/user-guide/calendar-emails/overview).
+* **데이터 모델:** 고유한 비즈니스 프로세스에 맞게 사용자 지정 객체와 필드를 생성하세요. [자세히 보기](/l/ko/user-guide/data-model/overview).
+* **데이터 마이그레이션:** CSV 또는 API를 통해 데이터를 가져오고 내보내세요. [시작하기](/l/ko/user-guide/data-migration/overview).
+* **보기 및 파이프라인:** 테이블 보기, 칸반 보드, 영업 파이프라인으로 데이터를 구성하세요. [자세히 보기](/l/ko/user-guide/views-pipelines/overview).
+* **워크플로우:** 비즈니스 프로세스를 자동화하고 외부 도구와 통합하세요. [자동화 구축](/l/ko/user-guide/workflows/overview).
+* **AI:** AI 기반 기능과 에이전트로 CRM을 강화하세요. [AI 자세히 보기](/l/ko/user-guide/ai/overview).
+* **대시보드:** 맞춤형 보고서와 시각화를 통해 성과를 추적하세요. [대시보드 보기](/l/ko/user-guide/dashboards/overview).
+* **권한 및 액세스:** 역할 기반 권한을 통해 누가 데이터를 보기, 편집, 관리할 수 있는지 제어하세요. [액세스 구성](/l/ko/user-guide/permissions-access/overview).
+* **노트 및 작업:** 더 나은 협업을 위해 레코드에 연결된 노트와 작업을 생성하세요.
+* **API 및 웹훅:** 다른 앱과 연결하고 맞춤형 통합을 구축하세요. [통합 시작하기](/l/ko/developers/extend/capabilities/apis).
-## Join now
+## 지금 가입하세요
-[Register here](https://app.twenty.com) or [become a contributor on GitHub](https://github.com/twentyhq/twenty).
+[여기에서 등록하십시오](https://app.twenty.com) 또는 [GitHub에서 기여자로 참여하세요](https://github.com/twentyhq/twenty).
diff --git a/packages/twenty-docs/l/ko/user-guide/getting-started/how-tos/configure-your-workspace.mdx b/packages/twenty-docs/l/ko/user-guide/getting-started/how-tos/configure-your-workspace.mdx
index 1fa5f00c06..24c0e12d8c 100644
--- a/packages/twenty-docs/l/ko/user-guide/getting-started/how-tos/configure-your-workspace.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/getting-started/how-tos/configure-your-workspace.mdx
@@ -1,77 +1,77 @@
---
-title: Configure Your Workspace
-description: Every business works differently. Start with these 3 steps to shape Twenty around your needs.
+title: 워크스페이스 구성
+description: 모든 비즈니스는 다르게 작동합니다. 요구에 맞게 Twenty를 구성하려면 이 3단계부터 시작하세요.
---
-**Quick Win**: Start with connecting your mailbox. This gives you immediate value and helps your team see Twenty in action with real data. You can do so under Settings → Accounts.
+**빠른 성과**: 메일박스를 먼저 연결하는 것부터 시작하세요. 이는 즉각적인 가치를 부여하고 팀이 실제 데이터로 Twenty를 활동 중인 상태로 볼 수 있도록 돕습니다. 설정 → 계정에서 이를 수행할 수 있습니다.
-## 1. Customize your data model
+## 1. 데이터 모델 사용자 정의하기
-Twenty offers the flexibility you need to shape the data model that will best support your day-to-day.
-Create objects and fields of any type, including relations between your different objects. You can do so under Settings → Data Model.
-Here are a few tips:
+Twenty는 일상 업무를 가장 잘 지원할 수 있는 데이터 모델을 설계하는 데 필요한 유연성을 제공합니다.
+여러 객체 간의 관계를 포함한 모든 유형의 객체 및 필드를 생성할 수 있습니다. 설정 → 데이터 모델에서 이를 할 수 있습니다.
+아래 몇 가지 팁이 있습니다:
-* **You are not limited in the number of custom fields nor custom objects**. Adding custom objects and fields will not lead to upgrading your plan.
-* **People, Companies and Opportunities are the three objects from where you can access the emails and meetings synchronized from your mailbox and calendar**. We recommend using those as much as possible, adding fields to categorize your records if need be. Here is an example:
- * It is best to use the People object for your prospects and partners, creating a field on the People object named `Person Type`, instead of creating a Partner custom object. Because you would not be able to access the emails exchanged with this person from the Partner records.
- * Create different views under People, one to display partners and one to display prospects.
-* Two People cannot have the same email address. Two Companies cannot have the same domain.
-* You can deactivate standard fields and objects you do not want to use.
-* You can hide fields from views: don't be afraid of creating fields, you won't have to display all of them.
+* **사용자 정의 필드나 사용자 정의 객체의 수에는 제한이 없습니다**. 사용자 정의 객체와 필드를 추가해도 요금을 업그레이드할 필요는 없습니다.
+* **People, Companies 및 Opportunities는 메일박스와 캘린더에서 동기화된 이메일 및 회의에 액세스할 수 있는 세 가지 객체입니다**. 필요시 레코드를 분류할 수 있는 필드를 추가하여 가능한 한 많이 사용하는 것을 권장합니다. 다음은 예시입니다:
+ * 잠재 고객 및 파트너에 대한 People 객체를 사용하는 것이 가장 좋으며, People 객체에 'Person Type'이라는 필드를 만드는 것이 파트너 사용자 정의 객체를 생성하는 것보다 낫습니다. 이는 파트너 레코드에서 이 사람과 교환한 이메일에 액세스할 수 없기 때문입니다.
+ * People에서 파트너를 표시하는 보기와 잠재 고객을 표시하는 다른 보기를 만드세요.
+* 두 People은 동일한 이메일 주소를 가질 수 없습니다. 두 Companies는 동일한 도메인을 가질 수 없습니다.
+* 사용하지 않으려는 표준 필드와 객체를 비활성화할 수 있습니다.
+* 보기에서 필드를 숨길 수 있습니다: 필드를 생성하는 것을 두려워하지 마세요, 전부 다 표시할 필요는 없습니다.
-Read [this article](/l/ko/user-guide/data-model/overview) to learn how to design your data model.
+데이터 모델 설계를 배우려면 [이 글](/l/ko/user-guide/data-model/overview)을 읽으세요.
-## 2. Bring your data in
+## 2. 데이터 가져오기
-Bringing your existing data into Twenty gives your team context from the start.
+기존 데이터를 Twenty에 가져오면 팀이 바로 컨텍스트를 가질 수 있습니다.
-### Connect your mailbox
+### 메일박스 연결하기
-If you have not done so when creating your workspace, connect your **Google or Microsoft account** under Settings → Accounts. This allows Twenty to:
+워크스페이스 생성 시 이를 수행하지 않았다면, 설정 → 계정에서 **Google 또는 Microsoft 계정**을 연결하세요. 이로써 Twenty는 다음과 같은 작업을 할 수 있습니다:
-* Import your messages and meetings
-* Auto-create contacts based on interactions (optional)
-* Keep communication history visible for your team
+* 메시지와 회의 가져오기
+* 상호 작용을 기반으로 연락처를 자동 생성하기 (선택사항)
+* 팀에서 커뮤니케이션 기록을 계속 볼 수 있도록 합니다.
-**Using another provider?**
-You can add another mailbox via SMTP or another calendar via CalDAV. You will need to activate the feature under Settings → Releases → Lab, and then go back to the Settings → Accounts tab.
+**다른 공급업체를 사용합니까?**
+SMTP를 통해 다른 메일박스를 추가하거나 CalDAV를 통해 다른 캘린더를 추가할 수 있습니다. 구성하려면 **설정 → 계정**으로 이동하세요.
-### Import data via csv
+### csv로 데이터 가져오기
-Use the Command menu (`Cmd + K` or `Ctrl + K`) to import People, Companies, Opportunities, or any custom objects via CSV.
+Command 메뉴 (`Cmd + K` 또는 `Ctrl + K`)를 사용하여 CSV를 통해 People, Companies, Opportunities 또는 다른 사용자 정의 객체를 가져옵니다.
-**Key guidelines**:
+**주요 지침**:
-* Download the sample file to understand the expected format
-* Limit each file to 10k records
-* Remove duplicate emails for People or duplicate domains for Companies
-* Review and fix errors (highlighted in yellow) before importing
+* 기대되는 형식을 이해하기 위해 샘플 파일을 다운로드해주세요
+* 각 파일의 레코드를 10,000개로 제한하세요.
+* People의 중복 이메일 또는 Companies의 중복 도메인을 제거하세요.
+* 가져오기 전에 오류를 검토하고 수정하세요 (노란색으로 강조 표시된 부분).
Read [this article](/l/ko/user-guide/data-migration/overview) to learn more about data import.
-## 3. Create your first view
+## 3. 첫 번째 뷰 만들기
-Creating different views is key to make the data actionable for your team.
-Here is how to proceed:
+다른 보기를 만드는 것은 팀이 데이터를 실행 가능하게 만드는 데 중요합니다.
+진행 방법은 다음과 같습니다:
-* **Add or hide columns**
- Manage the fields visible in a given view clicking on Options → Fields (from the top right). You can show/hide fields from there.
+* **열 추가 또는 숨기기**
+ 옵션 → 필드(오른쪽 위) 클릭하여 특정 보기에서 보이는 필드를 관리하세요. 거기서 필드를 표시하거나 숨길 수 있습니다.
-* **Reorder fields**
- Reorder the fields from a given view clicking on Options → Fields (from the top right). Drag and drop the fields to reorder them.
+* **필드 순서 변경**
+ 옵션 → 필드(오른쪽 위) 클릭하여 특정 보기에서 필드를 순서대로 이동하세요. 끌어다 놓기하여 필드를 재정렬합니다.
-* **Filter your view**
- Narrow down the records displayed using the Filters from the top right.
+* **보기 필터링**
+ 오른쪽 위 필터 사용하여 표시된 레코드를 제한하세요.
-* **Sort records**
- Reorder records displayed using the Sort function from the top right, or by clicking directly on the column name.
+* **레코드 정렬**
+ 오른쪽 위 정렬 기능 사용하거나 열 이름을 클릭하여 표시된 레코드를 재정렬하세요.
-* **Choose the layout**
- You can switch to a **Kanban layout** or a list **Group By** layout, as long as the object has a `Stage` or similar select-type field.
+* **레이아웃 선택**
+ `단계` 또는 유사한 선택형 필드가 있는 한, **칸반 레이아웃** 또는 **그룹별 목록** 레이아웃으로 전환할 수 있습니다.
-* **Save your view as Favorites**
- This can be done using the dropdown menu showing the different views.
+* **즐겨찾기로 보기 저장**
+ 여러 보기를 보여주는 드롭다운 메뉴를 사용하여 이를 할 수 있습니다.
-## What's next?
+## 다음은 무엇입니까?
-Start creating automations using [workflows](/l/ko/user-guide/workflows/overview).
+[워크플로우](/l/ko/user-guide/workflows/overview)를 사용하여 자동화를 시작하세요.
diff --git a/packages/twenty-docs/l/ko/user-guide/getting-started/how-tos/create-workspace.mdx b/packages/twenty-docs/l/ko/user-guide/getting-started/how-tos/create-workspace.mdx
index f93617f83f..dbcdd30f5a 100644
--- a/packages/twenty-docs/l/ko/user-guide/getting-started/how-tos/create-workspace.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/getting-started/how-tos/create-workspace.mdx
@@ -1,48 +1,48 @@
---
-title: Create a Workspace
-description: Follow a step-by-step guide on how to register on Twenty, choose a subscription plan, and set up your account.
+title: 워크스페이스 만들기
+description: Twenty에 등록하고, 구독 플랜을 선택하고, 계정을 설정하는 방법에 대한 단계별 가이드를 따르십시오.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-## Step 1: Registration
+## 1단계: 등록
-1. Navigate to [Twenty Sign Up](https://app.twenty.com).
-2. Select your preferred sign-up method:
- * **Continue with Google** for Google account registration.
- * **Continue with Microsoft** for Microsoft account registration.
- * Or, **Continue With Email** for email registration.
+1. [Twenty 등록](https://app.twenty.com)으로 이동하세요.
+2. 선호하는 등록 방법을 선택하세요:
+ * Google 계정으로 등록하려면 **Google로 계속**을 선택하십시오.
+ * Microsoft 계정으로 등록하려면 **Microsoft로 계속**을 선택하십시오.
+ * 또는, 이메일로 등록하려면 **이메일로 계속**을 선택하십시오.
-
+
-## Step 2: Choosing a Trial Period
+## 2단계: 시험 기간 선택하기
-Choose between two trial periods:
+두 가지 시험 기간 중 하나를 선택하세요:
-### 30 days
+### 30일
-With credit card
+신용카드 있음
-### 7 days
+### 7일
-Without credit card
+신용카드 없음
-Both trials include:
+두 가지 시험 모두 포함:
-* Full access
-* Unlimited contacts
-* Email integration
-* Custom objects
-* API & Webhooks
+* 전체 접근
+* 무제한 연락처
+* 이메일 통합
+* 사용자 지정 개체
+* API 및 웹훅
-You can click on "Change plan" to choose a different plan or billing interval.
+"플랜 변경"을 클릭하여 다른 플랜이나 청구 주기를 선택할 수 있습니다.
-## Step 3: Payment Confirmation & Account Setup
+## 3단계: 결제 확인 및 계정 설정
-Post payment approval via Stripe, you're directed to create your workspace and user profile. Remember that you can cancel your subscription anytime.
+Stripe를 통한 결제 승인이 완료되면, 작업 공간 및 사용자 프로필을 생성하도록 안내받습니다. 언제든지 구독을 취소할 수 있다는 점을 기억하세요.
-## Support
+## 지원
-For queries or help, connect with the dedicated support team at [contact@twenty.com](mailto:contact@twenty.com) or send a message on [Discord](https://discord.gg/cx5n4Jzs57).
+문의 사항이나 도움이 필요하시면, [contact@twenty.com](mailto:contact@twenty.com)으로 전용 지원팀에 연락하거나 [Discord](https://discord.gg/cx5n4Jzs57)에서 메시지를 보내주세요.
diff --git a/packages/twenty-docs/l/ko/user-guide/getting-started/how-tos/navigate-around-twenty.mdx b/packages/twenty-docs/l/ko/user-guide/getting-started/how-tos/navigate-around-twenty.mdx
index ef1b569098..b795dfee55 100644
--- a/packages/twenty-docs/l/ko/user-guide/getting-started/how-tos/navigate-around-twenty.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/getting-started/how-tos/navigate-around-twenty.mdx
@@ -1,83 +1,84 @@
---
-title: Navigate Around Twenty
-description: Get a quick overview of how to navigate through the platform and where to take different types of actions.
+title: Twenty 둘러보기
+description: 플랫폼을 탐색하고 다양한 유형의 작업을 수행할 수 있는 위치에 대한 빠른 개요를 얻으십시오.
---
-## The Main Layout
+## 주요 레이아웃
-The center of the screen is **where your records live**: people, companies, opportunities, tasks, notes, dashboards, workflows and any other object you created. This is where the day-to-day work happens.
-You can **view, edit, delete records** from there as well as **creating new views**.
+화면 중앙은 **레코드가 있는 곳**입니다: 사람, 회사, 영업기회, 작업, 노트, 대시보드, 워크플로우, 그리고 생성한 기타 모든 개체. 여기에서 일상의 작업이 이루어집니다.
+**기록물을 보고, 편집하고, 삭제**할 수 있으며 **새로운 보기를 생성**할 수 있습니다.
-## The Navigation Bar
+## 내비게이션 바
-On the left side, from the top to the bottom, you'll be able to:
+왼쪽에서는 위에서 아래 순서로 다음을 수행할 수 있습니다:
-* Switch between your **several workspaces** using the dropdown menu or create a new workspace
-* Use the **search bar** (press `/` to focus on it instantly)
-* Open the **Settings** section
-* Have direct access to your **Favourites views**. Favourites are unique for each user.
-* Switch between different objects
-* **Create automations** using workflows
-* Reach out to Support and open our User Guide.
+* 드롭다운 메뉴를 사용하여 여러 작업 공간 간에 전환하거나 새 작업 공간을 만듭니다.
+* **검색창을 사용**하세요 (즉시 초점을 맞추려면 `/`를 누르세요)
+* **설정** 섹션 열기
+* **즐겨찾기 보기**에 직접 액세스할 수 있습니다. 즐겨찾기는 사용자마다 고유합니다.
+* 다른 객체 간 전환
+* 워크플로우를 사용하여 **자동화를 생성**합니다.
-## The Command Menu
+## 명령 메뉴
-The command menu gives you **quick access to actions** in Twenty. You can access it in two ways:
+명령 메뉴는 Twenty에서 **작업에 빠르게 접근할 수 있는 기능을 제공합니다**. 두 가지 방법으로 접근할 수 있습니다:
-* **Keyboard shortcut**: Press `Cmd + K` (Mac) or `Ctrl + K` (Windows)
-* **Mouse**: Click the three dots in the top right corner
- From there, you can:
-* Create new records
-* **Import and export data via csv**
-* Create new views
-* Access deleted records (Twenty supports soft and hard deletes)
-* See the keyboard shortcuts to quickly access objects in your workspace
+* **키보드 단축키**: `Cmd + K`(Mac) 또는 `Ctrl + K`(Windows)을 누르세요
+* **마우스**: 오른쪽 위 모서리에 있는 세 개의 점을 클릭하세요
+ 그곳에서 다음을 수행할 수 있습니다:
+* 새 기록물을 생성
+* **csv를 통한 데이터 가져오기 및 내보내기**
+* 새 보기를 생성
+* 삭제된 기록에 접근 (Twenty는 소프트 삭제와 하드 삭제를 지원합니다)
+* 작업 공간에서 객체에 빠르게 접근할 수 있는 키보드 단축키 보기
-## The Search Bar
+## 검색 표시줄
-The search bar is accesible via the Command Menu, at the top of your navigation bar, or by pressing `/` to focus on it instantly. Search works across all object.
+검색 표시줄은 명령 메뉴를 통해서나 내비게이션 바 상단에서 사용할 수 있으며, 즉시 해당 항목에 포커스를 맞추려면 `/`를 누르세요. 검색은 모든 개체 전반에서 작동합니다.
-## The Side Panel
+## 사이드 패널
-When you click on a record, the side panel appears on the right. This gives you a quick overview of the record's key information, without bringing you to another page. From there, you can decide to close this overview or to get additional information about this record, clicking on the Open button.
+레코드를 클릭하면 오른쪽에 사이드 패널이 표시됩니다. 다른 페이지로 이동하지 않고도 해당 레코드의 핵심 정보를 빠르게 확인할 수 있습니다. 그곳에서 이 개요를 닫거나 'Open' 버튼을 클릭하여 이 레코드에 대한 추가 정보를 확인할 수 있습니다.
-## Views
+## 보기
-Every object (like Opportunities or People) supports multiple views. You're not limited in the number of views per object.
+모든 객체(예: 기회 또는 사람)는 여러 보기를 지원합니다. 객체당 보기 수에는 제한이 없습니다.
-Use the dropdown menu at the top left of the main layout to switch between the different views. For example:
+주요 레이아웃의 좌측 상단의 드롭다운 메뉴를 사용하여 다양한 보기 간 전환이 가능합니다. 예를 들어:
-* Use a Kanban view to track opportunities by stage
-* Use Group By view to create sections and improve efficiency
-* Use filters to focus on specific records (e.g. leads created last week)
-* Save filtered views to reuse them later
-* Favourite views for fast access
+* 기회를 스테이지별로 추적하기 위해 Kanban 뷰를 사용하세요
+* 섹션을 만들고 효율성을 높이기 위해 그룹 보기를 사용하세요
+* 특정 기록물에 집중하기 위해 필터를 사용하세요 (예: 지난주에 생성된 리드)
+* 필터된 보기를 저장하여 나중에 다시 사용하세요
+* 빠른 접근을 위해 보기를 즐겨찾기로 지정하세요
-If you're new to Views, read our [Views & Pipelines guide](/l/ko/user-guide/views-pipelines/overview) to learn how to create and customize them.
+보기가 처음이라면 [보기 및 파이프라인 가이드](/l/ko/user-guide/views-pipelines/overview)를 읽고 생성 및 사용자 정의 방법을 알아보세요.
-## Settings
+## 설정
-Open your Settings from the top left to:
+상단 왼쪽에서 설정을 열어 다음을 수행합니다:
-* **Connect your mailbox and calendar** accounts for seamless email and calendar sync
-* Customize your **data model**: create custom objects, fields, and relationships
-* **Access the API playground and configure webhooks**
-* **Manage user permissions** and workspace access controls
-* Invite team members and manage user roles
-* Edit your profile and workspace preferences
-* Configure billing and monitor workflow credits usage
-* Discover the latest releases and upcoming features (under Releases → Lab tab)
+* **메일박스와 캘린더** 계정을 연결하여 이메일과 캘린더를 원활하게 동기화합니다
+* **데이터 모델**을 사용자 정의하세요: 사용자 정의 객체, 필드, 관계를 생성합니다
+* **API 플레이그라운드에 접속하고 웹훅을 구성하세요**
+* **사용자 권한을 관리**하고 작업 공간 접근 제어를 관리합니다
+* 팀원을 초대하고 사용자 역할을 관리합니다
+* 프로필과 작업 공간 환경설정을 편집합니다
+* 청구를 설정하고 워크플로우 크레딧 사용량을 모니터링합니다
+* 다가오는 기능을 찾아보고 활성화하세요(Updates → Early Access 아래)
+* **지원에 접속**하여 라이브 채팅으로 문의하세요
+* **문서를 열어** 사용자 가이드와 개발자 문서를 둘러보세요
-If you do not see all those sections under Settings, reach out to your workspace administrator - some of them have restricted access.
+설정 아래에서 해당 섹션이 모두 보이지 않는 경우, 워크스페이스 관리자에게 문의하세요 - 일부는 액세스가 제한되어 있습니다.
diff --git a/packages/twenty-docs/l/ko/user-guide/introduction.mdx b/packages/twenty-docs/l/ko/user-guide/introduction.mdx
index dda96e2e90..bd486725c7 100644
--- a/packages/twenty-docs/l/ko/user-guide/introduction.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/introduction.mdx
@@ -1,63 +1,63 @@
---
-title: Discover Twenty
-description: Welcome to Twenty User Guide, your resources for advanced configurations and best practices.
+title: Twenty 알아보기
+description: 고급 구성과 모범 사례를 위한 리소스인 Twenty 사용자 가이드에 오신 것을 환영합니다.
---
import { CardTitle } from "/snippets/card-title.mdx"
- Discover Twenty
- Learn what Twenty is and how it can help your business.
+ Twenty 알아보기
+ Twenty가 무엇이며 비즈니스에 어떻게 도움이 되는지 알아보세요.
- Data Model
- Customize your data model to fit your business processes.
+ 데이터 모델
+ 비즈니스 프로세스에 맞게 데이터 모델을 사용자 정의하세요.
- Data Migration
- Import and export your data via CSV or API.
+ 데이터 마이그레이션
+ CSV 또는 API를 통해 데이터를 가져오고 내보내세요.
- Calendar & Emails
- Centralize your team's meetings and emails.
+ 캘린더 및 이메일
+ 팀의 미팅과 이메일을 한곳에 통합하세요.
- Workflows
- Automate processes and integrate with external tools.
+ 워크플로우
+ 프로세스를 자동화하고 외부 도구와 통합하세요.
AI
- Enhance your team with AI agents.
+ AI 에이전트로 팀을 강화하세요.
- Views & Pipelines
- Organize your data with actionable views and pipelines.
+ 보기 및 파이프라인
+ 실행 가능한 보기와 파이프라인으로 데이터를 구성하세요.
- Dashboards
- Real-time insights to track performance.
+ 대시보드
+ 성과를 추적할 수 있는 실시간 인사이트.
- Permissions & Access
- Manage roles and access to Twenty.
+ 권한 및 액세스
+ Twenty에 대한 역할과 액세스를 관리하세요.
- Billing
- Understand how Twenty pricing and billing works.
+ 청구
+ Twenty의 요금제와 청구 방식에 대해 알아보세요.
- Settings
- Configure your workspace preferences.
+ 설정
+ 워크스페이스 기본 설정을 구성하세요.
diff --git a/packages/twenty-docs/l/ko/user-guide/permissions-access/capabilities/permissions.mdx b/packages/twenty-docs/l/ko/user-guide/permissions-access/capabilities/permissions.mdx
index 2ad09471e9..8491bb0850 100644
--- a/packages/twenty-docs/l/ko/user-guide/permissions-access/capabilities/permissions.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/permissions-access/capabilities/permissions.mdx
@@ -1,198 +1,198 @@
---
-title: Permissions
-description: Control access to objects, fields, and settings with role-based permissions.
+title: 권한
+description: 역할 기반 권한을 통해 객체, 필드 및 설정에 대한 접근을 제어합니다.
image: /images/user-guide/permissions/permissions.png
---
-Twenty's permission system allows you to control access to three main areas:
+Twenty의 권한 시스템은 세 가지 주요 영역에 대한 접근을 제어할 수 있게 해줍니다:
-* **Objects and Fields**: Control who can view, edit, or delete records and individual fields
-* **Settings**: Manage access to workspace configuration and administrative functions
-* **Actions**: Control general workspace actions like importing data or sending emails
+* **객체 및 필드**: 기록 및 개별 필드를 누가 볼 수 있고, 편집하거나 삭제할 수 있는지 제어
+* **설정**: 워크스페이스 구성과 관리자 기능에 대한 접근을 관리합니다
+* **작업**: 데이터 가져오기나 이메일 보내기와 같은 일반 작업 공간 작업을 제어
-## Create a Role
+## 역할 생성
-To create a new role:
+새로운 역할 생성하기:
-1. Go to **Settings → Roles**
-2. Under **All Roles**, click on **+ Create Role**
-3. Enter a role name
-4. In the default **Permissions** tab, [configure permissions](#customize-permissions)
-5. Click **Save** to finish
+1. **설정 → 역할**로 이동
+2. **모든 역할**에서 **+ 역할 생성** 클릭
+3. 역할 이름 입력
+4. 기본 **권한** 탭에서 [권한을 구성합니다](#customize-permissions)
+5. **저장** 클릭하여 완료
-## Delete a Role
+## 역할 삭제
-To delete a role:
+역할을 삭제하려면:
-1. Go to **Settings → Roles**
-2. Click on the role you want to remove
-3. Open the **Settings** tab, then click **Delete Role**
-4. Click **Confirm** in the modal
+1. **설정 → 역할**로 이동
+2. 제거하려는 역할을 클릭합니다
+3. **설정** 탭 열고 **역할 삭제** 클릭
+4. 모달에서 **확인** 클릭
- If a role is deleted, any workspace member assigned to it will be automatically reassigned to the default role. All except the **Admin** role can be deleted. There must always be at least one member assigned to the **Admin** role.
+ 역할이 삭제되면, 해당 역할이 할당된 워크스페이스 구성원은 기본 역할로 자동 재할당됩니다. **Admin** 역할을 제외한 모든 역할을 삭제할 수 있습니다. **Admin** 역할에는 항상 최소 한 명의 구성원이 할당되어 있어야 합니다.
-## Assign Roles to Members
+## 구성원에게 역할 할당
-### View Current Assignments
+### 현재 할당 보기
-* Go to **Settings → Roles**
-* See all roles and how many members are assigned to each
-* View which members have which roles
+* **설정 → 역할**로 이동
+* 모든 역할과 각 역할에 지정된 멤버 수 확인
+* 어떤 회원이 어떤 역할을 가지고 있는지 보기
-### Assign a Role to a Member
+### 구성원에게 역할 할당
-1. Go to **Settings → Roles**
-2. Click on the role you want to assign
-3. Open the **Assignment** tab
-4. Click **+ Assign to member**
-5. Select the workspace member from the list
-6. Confirm the assignment
+1. **설정 → 역할**로 이동
+2. 할당할 역할 클릭
+3. **배정** 탭 열기
+4. **+ 멤버에게 할당** 클릭
+5. 목록에서 워크스페이스 구성원을 선택합니다
+6. 할당 확인
-### Set Default Role
+### 기본 역할 설정
-1. Go to **Settings → Roles**
-2. In the **Options** section, find **Default Role**
-3. Select which role new members should automatically receive
-4. New workspace members will be assigned this role when they join
+1. **설정 → 역할**로 이동
+2. **옵션** 섹션에서 **기본 역할**을 찾습니다
+3. 새로운 멤버가 자동으로 받을 역할 선택
+4. 새 작업 공간 회원이 가입 시 이 역할이 할당됩니다.
- You can only assign roles to existing workspace members. To invite new members, use [Member Management](/l/ko/user-guide/settings/capabilities/member-management).
+ 기존 워크스페이스 구성원에게만 역할을 할당할 수 있습니다. To invite new members, use [Member Management](/l/ko/user-guide/settings/capabilities/member-management).
-## Customize Permissions
+## 권한 사용자 정의
-Permissions determine what each role can access or modify within your workspace, including workspace objects records, settings, and actions.
+권한은 각 역할이 작업 공간 내에서 접근하거나 수정할 수 있는 항목을 결정합니다. 여기에는 작업 공간 객체 기록, 설정 및 작업이 포함됩니다.
-### Object Permissions
+### 객체 권한
-The **Objects** section controls what this role can do with records across your workspace.
+**객체** 섹션에서는 이 역할이 워크스페이스 전반의 레코드에 대해 수행할 수 있는 작업을 제어합니다.
-#### Set Default Permissions (All Objects)
+#### 기본 권한 설정(모든 객체)
-First, configure the baseline permissions that apply to **all objects** by default:
+먼저, 기본적으로 **모든 객체**에 적용되는 기준 권한을 구성합니다:
-| Permission | Description |
-| ---------------------------------- | -------------------------------------- |
-| **See Records on All Objects** | View records in lists and detail pages |
-| **Edit Records on All Objects** | Modify existing records |
-| **Delete Records on All Objects** | Soft-delete records (can be restored) |
-| **Destroy Records on All Objects** | Permanently delete records |
+| 권한 | 설명 |
+| ---------------- | --------------------- |
+| **모든 객체의 기록 보기** | 목록 및 상세 페이지에서 레코드를 조회 |
+| **모든 객체의 기록 편집** | 기존 레코드를 수정 |
+| **모든 객체의 기록 삭제** | 레코드를 소프트 삭제(복원 가능) |
+| **모든 객체의 기록 파기** | 레코드를 영구 삭제 |
-Select or unselect based on what should be the default behavior for this role.
+이 역할의 기본 동작이 무엇이어야 하는지에 따라 선택 또는 선택 해제합니다.
- **Example — Intern role**: An intern should be able to see all objects but not edit them by default. Enable "See Records on All Objects" but leave "Edit Records on All Objects" unchecked.
+ **예시 — 인턴 역할**: 인턴은 기본적으로 모든 객체를 볼 수 있지만 수정할 수는 없어야 합니다. "모든 객체에서 레코드 보기"를 활성화하고, "모든 객체에서 레코드 편집"은 선택 해제 상태로 둡니다.
-#### Add Object-Level Exceptions
+#### 객체 수준 예외 추가
-After setting defaults, use the **Object-Level** sub-section to add rules that override the defaults for specific objects.
+기본값을 설정한 후, **객체 수준** 하위 섹션을 사용해 특정 객체에 대해 기본값을 재정의하는 규칙을 추가합니다.
-Click **+ Add rule** and select an object to create an exception.
+**+ Add rule**를 클릭하고 예외를 만들 객체를 선택합니다.
-**Example rules for an Intern role:**
+**인턴 역할을 위한 예시 규칙:**
-| Rule | Effect |
-| ------------------------------------- | ------------------------------------------------------ |
-| Opportunities → disable "See Records" | Intern cannot see the Opportunities object at all |
-| People → enable "Edit Records" | Intern can edit People records (but not other objects) |
+| 규칙 | 효과 |
+| ----------------------------- | ------------------------------------- |
+| Opportunities → "레코드 보기" 비활성화 | 인턴은 Opportunities 객체를 전혀 볼 수 없습니다 |
+| People → "레코드 수정" 활성화 | 인턴은 People 레코드를 수정할 수 있습니다(다른 객체는 불가) |
-### Field Permissions
+### 필드 권한
-Within each object-level rule, you can go further and configure **field-level permissions** to control access to specific fields.
+각 객체 수준 규칙 내에서 더 나아가 특정 필드에 대한 접근을 제어하기 위해 **필드 수준 권한**을 구성할 수 있습니다.
-| Permission | Description |
-| -------------- | -------------------------- |
-| **See Field** | View the field value |
-| **Edit Field** | Modify the field value |
-| **No Access** | Field is completely hidden |
+| 권한 | 설명 |
+| --------- | ------------- |
+| **필드 보기** | 필드 값을 조회 |
+| **필드 수정** | 필드 값을 수정 |
+| **접근 불가** | 필드가 완전히 숨겨집니다 |
-**Example — Restrict sensitive fields:**
+**예시 — 민감한 필드 제한:**
-For the Intern role with People edit access, you might want to restrict certain fields:
+People 수정 권한이 있는 인턴 역할의 경우, 특정 필드를 제한할 수 있습니다:
-* People → Email → **See Field** only (cannot edit)
-* People → Address → **No Access** (completely hidden)
+* People → Email → **필드 보기**만 허용(수정 불가)
+* People → Address → **접근 불가**(완전히 숨김)
-This allows the intern to edit most People fields while protecting sensitive information.
+이렇게 하면 인턴이 People의 대부분 필드를 수정할 수 있으면서도 민감한 정보를 보호할 수 있습니다.
-### How Permission Inheritance Works
+### 권한 상속 방식
-Permissions cascade from general to specific:
+권한은 일반에서 구체적으로 계단식으로 적용됩니다:
-1. **All Objects** → sets the baseline for all objects
-2. **Object-Level rules** → override the baseline for specific objects
-3. **Field-Level rules** → override the object setting for specific fields
+1. **All Objects** → 모든 객체에 대한 기준을 설정합니다
+2. **Object-Level rules** → 특정 객체에 대해 기준을 재정의합니다
+3. **Field-Level rules** → 특정 필드에 대해 객체 설정을 재정의합니다
-More specific settings always take precedence.
+보다 구체적인 설정이 항상 우선합니다.
-### Managing Permission Overrides
+### 권한 무시 관리
-To override inherited permissions:
+상속된 권한을 재정의하려면:
-1. Click **X** to remove the inherited rule
-2. Select the specific permissions you want
-3. Click the orange **Undo** icon (circular arrow) to revert changes
+1. 상속된 규칙 제거하려면 **X** 클릭
+2. 원하는 구체적인 권한을 선택합니다
+3. 변경 사항을 되돌리려면 주황색 **실행 취소** 아이콘(원형 화살표)을 클릭
-When done, click **Finish**, then **Save** once redirected to the role page.
+완료되면 **마침**, 역할 페이지로 리디렉션되면 **저장** 클릭.
-### Workspace Settings Permissions
+### 작업 공간 설정 권한
-Control access to workspace settings in two ways:
+워크스페이스 설정에 대한 접근은 두 가지 방식으로 제어할 수 있습니다:
-* Toggle **Settings All Access** to grant full access
-* Or enable specific permissions (e.g., API key generation, workspace preferences, role assignment, data model configuration, security settings, and workflow management)
+* **Settings All Access**를 전환하여 전체 접근을 허용합니다
+* 또는 특정 권한을 개별적으로 활성화합니다(예: API 키 생성, 워크스페이스 환경설정, 역할 할당, 데이터 모델 구성, 보안 설정, 워크플로 관리)
- **Current limitation**: Access to workflow management is currently required to manually trigger workflows. This behavior may change in future releases.
+ **현재 제한 사항**: 워크플로를 수동으로 트리거하려면 현재 워크플로 관리 권한이 필요합니다. 이 동작은 향후 릴리스에서 변경될 수 있습니다.
-### Workspace Action Permissions
+### 워크스페이스 작업 권한
-Control access to general workspace actions:
+일반적인 워크스페이스 작업에 대한 접근을 제어합니다:
-* Toggle **Application All Access** to grant full permissions
-* Or enable individual actions such as **Send Email**, **Import CSV**, and **Export CSV**
+* **Application All Access**를 전환하여 전체 권한을 부여합니다
+* 또는 **Send Email**, **Import CSV**, **Export CSV**와 같은 개별 작업을 활성화합니다
-## Assigning Roles to API Keys and AI Agents
+## API 키 및 AI 에이전트에 역할 할당
-Beyond workspace members, roles can also be assigned to **API Keys** and **AI Agents**. This is particularly helpful for teams who want to control exactly "who" can do what in their workspace—including automated processes and integrations.
+워크스페이스 구성원뿐 아니라 **API 키** 및 **AI 에이전트**에도 역할을 할당할 수 있습니다. 이는 자동화 프로세스와 통합을 포함하여 워크스페이스에서 "누가" 무엇을 할 수 있는지를 정확히 제어하려는 팀에 특히 유용합니다.
-### Why Assign Roles to API Keys and AI Agents?
+### API 키와 AI 에이전트에 역할을 할당하는 이유
-* **Security**: Limit what automated processes can access or modify
-* **Compliance**: Ensure integrations only touch the data they need
-* **Control**: Prevent accidental data changes from misconfigured automations
-* **Auditability**: Track which actions were performed by which integration or agent
+* **보안**: 자동화 프로세스가 접근하거나 수정할 수 있는 범위를 제한
+* **규정 준수**: 통합이 필요한 데이터에만 접근하도록 보장
+* **제어**: 잘못 구성된 자동화로 인한 우발적 데이터 변경 방지
+* **감사 추적성**: 어떤 통합 또는 에이전트가 어떤 작업을 수행했는지 추적
-### Assign a Role to an API Key
+### API 키에 역할 할당
-1. Go to **Settings → Roles**
-2. Click on the role you want to assign
-3. Open the **Assignment** tab
-4. Under **API Keys**, click **+ Assign to API key**
-5. Select the API key from the list
-6. Confirm the assignment
+1. **설정 → 역할**로 이동
+2. 할당할 역할 클릭
+3. **배정** 탭 열기
+4. **API 키**에서 **+ Assign to API key**를 클릭합니다
+5. 목록에서 API 키를 선택합니다
+6. 할당 확인
-The API key will now inherit all permissions defined by that role. Any API calls made with this key will be restricted accordingly.
+이제 해당 API 키는 그 역할에 정의된 모든 권한을 상속받습니다. 이 키로 수행되는 모든 API 호출은 그에 따라 제한됩니다.
- API keys without an assigned role use default permissions. For tighter security, always assign a specific role to production API keys.
+ 역할이 할당되지 않은 API 키는 기본 권한을 사용합니다. 보안을 강화하려면 운영 환경의 API 키에 항상 특정 역할을 할당하세요.
-### Assign a Role to an AI Agent
+### AI 에이전트에 역할 할당
-1. Go to **Settings → Roles**
-2. Click on the role you want to assign
-3. Open the **Assignment** tab
-4. Under **AI Agents**, click **+ Assign to AI agent**
-5. Select the AI agent from the list
-6. Confirm the assignment
+1. **설정 → 역할**로 이동
+2. 할당할 역할 클릭
+3. **배정** 탭 열기
+4. **AI 에이전트**에서 **+ Assign to AI agent**를 클릭합니다
+5. 목록에서 AI 에이전트를 선택합니다
+6. 할당 확인
-The AI agent will only be able to access data and perform actions allowed by its assigned role.
+AI 에이전트는 할당된 역할에서 허용한 데이터와 작업에만 접근하고 수행할 수 있습니다.
- For AI agents running within workflows, this ensures the agent cannot access or modify data outside its intended scope—even if the workflow has broader permissions.
+ 워크플로 내에서 실행되는 AI 에이전트의 경우, 워크플로에 더 넓은 권한이 있더라도 에이전트가 의도된 범위를 벗어난 데이터에 접근하거나 수정할 수 없도록 보장합니다.
diff --git a/packages/twenty-docs/l/ko/user-guide/permissions-access/capabilities/sso-configuration.mdx b/packages/twenty-docs/l/ko/user-guide/permissions-access/capabilities/sso-configuration.mdx
index 310c161605..51b2cfaf17 100644
--- a/packages/twenty-docs/l/ko/user-guide/permissions-access/capabilities/sso-configuration.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/permissions-access/capabilities/sso-configuration.mdx
@@ -1,125 +1,125 @@
---
-title: SSO Configuration
-description: Configure Single Sign-On for secure enterprise authentication.
+title: SSO 구성
+description: 안전한 엔터프라이즈 인증을 위해 Single Sign-On(SSO)을 구성하세요.
---
-## About SSO
+## SSO에 대하여
-Single Sign-On (SSO) allows your team members to log into Twenty using your organization's identity provider. This provides:
+Single Sign-On(SSO)을 사용하면 팀 구성원이 조직의 아이덴티티 제공자(IdP)를 통해 Twenty에 로그인할 수 있습니다. 이는 다음을 제공합니다:
-* **Centralized access control**: Manage access from one place
-* **Enhanced security**: Leverage your existing security policies
-* **Better user experience**: One set of credentials for all tools
+* **중앙집중식 액세스 제어**: 한 곳에서 액세스를 관리합니다
+* **강화된 보안**: 기존 보안 정책을 활용합니다
+* **향상된 사용자 경험**: 모든 도구에서 하나의 자격 증명만 사용합니다
-## Supported Providers
+## 지원되는 제공자
-Twenty supports SSO with:
+Twenty는 다음 제공자와 SSO를 지원합니다:
-* **SAML 2.0**: Works with most enterprise identity providers
-* **Google Workspace**: For organizations using Google
-* **Microsoft Entra ID**: (formerly Azure AD) For Microsoft environments
+* **SAML 2.0**: 대부분의 엔터프라이즈 아이덴티티 제공자와 호환됩니다
+* **Google Workspace**: Google을 사용하는 조직용
+* **Microsoft Entra ID**: (이전 명칭: Azure AD) Microsoft 환경용
-## Setting Up SSO
+## SSO 설정
-### Prerequisites
+### 사전 준비
-* Organization plan (cloud and self-hosted workspaces)
-* Admin access to your identity provider
-* Admin access to Twenty workspace
+* Organization 플랜(클라우드 및 셀프 호스팅 워크스페이스)
+* 아이덴티티 제공자에 대한 관리자 권한
+* Twenty 워크스페이스에 대한 관리자 권한
- **For self-hosting users willing to set up SSO**, reach out to contact@twenty.com
+ **SSO 설정을 원하는 셀프 호스팅 사용자**는 contact@twenty.com으로 문의하세요
-### Configuration Steps
+### 구성 단계
-#### 1. Access SSO Settings
+#### 1. SSO 설정에 액세스
-1. Go to **Settings → Security**
-2. Find the **SSO Configuration** section
-3. Click **Configure SSO**
+1. **설정 → 보안**으로 이동하세요.
+2. **SSO 구성** 섹션을 찾으세요
+3. **SSO 구성**을 클릭하세요
-#### 2) Choose Your Provider
+#### 2) 제공자 선택
-Select your identity provider from the list or choose "Custom SAML" for other providers.
+목록에서 아이덴티티 제공자를 선택하거나, 다른 제공자의 경우 "Custom SAML"을 선택하세요.
-#### 3. Configure Your Identity Provider
+#### 3. 아이덴티티 제공자 구성
-You'll need to configure your identity provider with:
+아이덴티티 제공자를 다음 정보로 구성해야 합니다:
-* **Entity ID**: Provided by Twenty
-* **ACS URL**: The callback URL for authentication
-* **Certificate**: For secure communication
+* **Entity ID**: Twenty에서 제공
+* **ACS URL**: 인증용 콜백 URL
+* **Certificate**: 보안 통신용
-#### 4. Enter Provider Details in Twenty
+#### 4. Twenty에 제공자 상세 정보 입력
-* **SSO URL**: Login URL from your provider
-* **Entity ID**: Your provider's identifier
-* **Certificate**: X.509 certificate from your provider
+* **SSO URL**: 제공자의 로그인 URL
+* **Entity ID**: 제공자의 식별자
+* **Certificate**: 제공자의 X.509 인증서
-#### 5. Test and Enable
+#### 5. 테스트 및 활성화
-1. Click **Test Configuration** to verify setup
-2. Enable SSO when testing is successful
-3. Configure user provisioning preferences
+1. 구성을 확인하려면 **구성 테스트**를 클릭하세요
+2. 테스트가 성공하면 SSO를 활성화하세요
+3. 사용자 프로비저닝 설정을 구성하세요.
-## User Provisioning
+## 사용자 프로비저닝
-### Just-in-Time (JIT) Provisioning
+### Just-in-Time(JIT) 프로비저닝
-* Users are created automatically on first login
-* Assigned default role automatically
-* No manual user creation needed
+* 최초 로그인 시 사용자가 자동으로 생성됩니다
+* 기본 역할이 자동으로 할당됩니다
+* 사용자를 수동으로 생성할 필요가 없습니다
-### Manual Provisioning
+### 수동 프로비저닝
-* Invite users before they can log in
-* Pre-assign specific roles
-* More control over who can access
+* 사용자가 로그인하기 전에 초대하세요
+* 특정 역할을 사전 할당
+* 액세스 가능한 대상을 보다 세밀하게 제어
-## Managing SSO Users
+## SSO 사용자 관리
-### Role Assignment
+### 역할 할당
-SSO users can be assigned roles like regular users:
+SSO 사용자도 일반 사용자와 마찬가지로 역할을 할당할 수 있습니다:
-1. Go to **Settings → Members**
-2. Find the user
-3. Change their role as needed
+1. **설정 → 구성원**으로 이동하세요.
+2. 사용자를 찾으세요
+3. 필요에 따라 역할을 변경하세요
-### Access Revocation
+### 액세스 권한 철회
-To remove access for SSO users:
+SSO 사용자의 액세스를 제거하려면:
-* Remove them from your identity provider, or
-* Remove them from the Twenty workspace
+* 아이덴티티 제공자에서 제거하거나,
+* Twenty 워크스페이스에서 제거하세요
-## Best Practices
+## 모범 사례
-### Security
+### 보안
-* **Require SSO**: Disable password login for SSO users
-* **Regular audits**: Review access periodically
-* **Strong IdP policies**: Enforce MFA at the identity provider
+* **SSO 필수**: SSO 사용자에 대해 비밀번호 로그인을 비활성화
+* **정기 감사**: 주기적으로 액세스를 검토
+* **강력한 IdP 정책**: 아이덴티티 제공자에서 MFA를 적용
-### User Management
+### 사용자 관리
-* **Clear naming**: Use consistent naming from your directory
-* **Group mapping**: Map IdP groups to Twenty roles (if available)
-* **Offboarding process**: Include Twenty in your deprovisioning workflow
+* **명확한 명명**: 디렉터리에서 일관된 명명 규칙 사용
+* **그룹 매핑**: IdP 그룹을 Twenty 역할에 매핑(가능한 경우)
+* **오프보딩 프로세스**: 디프로비저닝 워크플로우에 Twenty를 포함
-## Troubleshooting
+## 문제 해결
-### Common Issues
+### 일반적인 문제
-* **Certificate errors**: Ensure certificate hasn't expired
-* **URL mismatches**: Verify ACS URL matches exactly
-* **User not found**: Check JIT provisioning settings
+* **인증서 오류**: 인증서가 만료되지 않았는지 확인
+* **URL 불일치**: ACS URL이 정확히 일치하는지 확인
+* **사용자를 찾을 수 없음**: JIT 프로비저닝 설정을 확인
-### Getting Help
+### 도움 받기
-If you encounter issues, contact support with:
+문제가 발생하면 다음 정보를 포함하여 지원팀에 문의하세요:
-* Error messages received
-* Identity provider being used
-* Configuration details (without sensitive data)
+* 수신한 오류 메시지
+* 사용 중인 아이덴티티 제공자
+* 구성 세부 정보(민감한 데이터 제외)
diff --git a/packages/twenty-docs/l/ko/user-guide/permissions-access/how-tos/permissions-faq.mdx b/packages/twenty-docs/l/ko/user-guide/permissions-access/how-tos/permissions-faq.mdx
index 6700b48297..1a16f67451 100644
--- a/packages/twenty-docs/l/ko/user-guide/permissions-access/how-tos/permissions-faq.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/permissions-access/how-tos/permissions-faq.mdx
@@ -1,126 +1,126 @@
---
-title: Permissions FAQ
-description: Frequently asked questions about roles and permissions.
+title: 권한 FAQ
+description: 역할과 권한에 관한 자주 묻는 질문입니다.
---
-## Roles
+## 역할
-
- Twenty comes with an **Admin** and **Member** roles by default. You can create additional custom roles based on your team's needs (e.g., Sales Rep, Manager, Read-Only User).
+
+ Twenty에는 기본적으로 **Admin** 및 **Member** 역할이 포함됩니다. 팀의 필요에 따라 추가 사용자 지정 역할을 만들 수 있습니다(예: 영업 담당자, 관리자, 읽기 전용 사용자).
-
- No, the Admin role cannot be deleted. There must always be at least one member assigned to the Admin role.
+
+ 아니요, Admin 역할은 삭제할 수 없습니다. Admin 역할에는 항상 최소 한 명의 구성원이 할당되어 있어야 합니다.
-
- Any workspace member assigned to that role will be automatically reassigned to the default role.
+
+ 해당 역할이 할당된 워크스페이스 구성원은 기본 역할로 자동 재할당됩니다.
-
- Go to **Settings → Roles**, find the **Default Role** option, and select which role new members should automatically receive when they join.
+
+ **Settings → Roles**로 이동하여 **Default Role** 옵션을 찾은 뒤, 신규 구성원이 가입할 때 자동으로 부여될 역할을 선택하세요.
-
- No, each user can only have one role at a time. Create a custom role if you need a combination of permissions.
+
+ 아니요, 각 사용자는 한 번에 하나의 역할만 가질 수 있습니다. 권한 조합이 필요하다면 사용자 지정 역할을 생성하세요.
-## Permissions
+## 권한
-
- * **Object permissions**: Control access to entire records (e.g., can see/edit/delete People records)
- * **Field permissions**: Control access to specific fields within an object (e.g., can see but not edit the Salary field)
+
+ * **객체 권한**: 전체 레코드에 대한 액세스를 제어합니다(예: People 레코드를 보기/편집/삭제 가능)
+ * **필드 권한**: 객체 내 특정 필드에 대한 액세스를 제어합니다(예: Salary 필드는 볼 수만 있고 편집은 불가)
- Field permissions allow more granular control over sensitive data.
+ 필드 권한은 민감한 데이터에 대해 더 세밀한 제어를 가능하게 합니다.
-
- Permissions cascade from global to specific:
+
+ 권한은 전역 설정에서 구체적 설정으로 계단식으로 적용됩니다:
- 1. **All Objects** sets the baseline for all objects
- 2. **Object-Level Permissions** can override the global setting for specific objects
- 3. **Field-Level Permissions** can override the object setting for specific fields
+ 1. **All Objects**는 모든 객체에 대한 기준을 설정합니다
+ 2. **Object-Level Permissions**는 특정 객체에 대해 전역 설정을 재정의할 수 있습니다
+ 3. **Field-Level Permissions**는 특정 필드에 대해 객체 설정을 재정의할 수 있습니다
- More specific settings always take precedence.
+ 보다 구체적인 설정이 항상 우선합니다.
-
- For objects:
+
+ 객체의 경우:
- * **See Records**: View records in lists and detail pages
- * **Edit Records**: Modify existing records
- * **Delete Records**: Soft-delete records (can be restored)
- * **Destroy Records**: Permanently delete records
+ * **See Records**: 목록 및 상세 페이지에서 레코드를 조회
+ * **Edit Records**: 기존 레코드 수정
+ * **Delete Records**: 레코드를 소프트 삭제(복원 가능)
+ * **Destroy Records**: 레코드를 영구 삭제
- For fields:
+ 필드의 경우:
- * **See Field**: View the field value
- * **Edit Field**: Modify the field value
- * **No Access**: Field is completely hidden
+ * **See Field**: 필드 값 조회
+ * **Edit Field**: 필드 값 수정
+ * **No Access**: 필드가 완전히 숨겨짐
-
- Row-level permissions will be available on the **Organization** plan by Q1 2026. This allows you to restrict access to specific records based on criteria (e.g., only see your own opportunities).
+
+ 행 수준 권한은 2026년 1분기까지 **Organization** 요금제에서 제공될 예정입니다. 이를 통해 기준에 따라 특정 레코드에 대한 액세스를 제한할 수 있습니다(예: 자신의 영업 기회만 보기).
-
- 1. Go to **Settings → Roles**
- 2. Select the role
- 3. Navigate to the object containing the field
- 4. Set the field permission to **See Field** (without Edit Field)
+
+ 1. **설정 → 역할**로 이동
+ 2. 역할을 선택합니다
+ 3. 해당 필드가 포함된 객체로 이동합니다
+ 4. 필드 권한을 **See Field**로 설정합니다(**Edit Field** 없이)
-## Settings & Actions
+## 설정 및 작업
-
- You can control access to:
+
+ 다음에 대한 액세스를 제어할 수 있습니다:
- * API key generation
- * Workspace preferences
- * Role assignment
- * Data model configuration
- * Security settings
- * Workflow management
+ * API 키 생성
+ * 워크스페이스 환경설정
+ * 역할 할당
+ * 데이터 모델 구성
+ * 보안 설정
+ * 워크플로우 관리
- Use **Settings All Access** to grant full access, or enable specific permissions.
+ **Settings All Access**를 사용하여 전체 액세스를 부여하거나, 특정 권한만 활성화하세요.
-
- You can control:
+
+ 다음을 제어할 수 있습니다:
- * **Send Email**: Ability to send emails from Twenty
- * **Import CSV**: Ability to import data via CSV
- * **Export CSV**: Ability to export data to CSV
+ * **Send Email**: Twenty에서 이메일을 보낼 수 있음
+ * **Import CSV**: CSV를 통해 데이터를 가져올 수 있음
+ * **Export CSV**: 데이터를 CSV로 내보낼 수 있음
- Use **Application All Access** to grant all actions, or enable specific ones.
+ **Application All Access**를 사용하여 모든 작업을 허용하거나, 필요한 항목만 활성화하세요.
## SSO
-
- No, SSO is a Premium feature available on the **Organization** plan only.
+
+ 아니요, SSO는 **Organization** 요금제에서만 제공되는 프리미엄 기능입니다.
-
- Twenty supports:
+
+ Twenty는 다음을 지원합니다:
- * **SAML 2.0** (works with most enterprise identity providers)
+ * **SAML 2.0**(대부분의 엔터프라이즈 아이덴티티 제공자와 호환)
* **Google Workspace**
- * **Microsoft Entra ID** (formerly Azure AD)
+ * **Microsoft Entra ID**(이전 명칭: Azure AD)
-
- With JIT provisioning, user accounts are automatically created in Twenty when someone logs in via SSO for the first time. They're assigned the default role automatically.
+
+ JIT 프로비저닝을 사용하면, 사용자가 SSO로 처음 로그인할 때 Twenty에 사용자 계정이 자동으로 생성됩니다. 기본 역할이 자동으로 할당됩니다.
-
- Yes, once SSO is configured, you can disable password login for SSO users to enforce authentication through your identity provider.
+
+ 예. SSO 구성이 완료되면, 아이덴티티 제공자를 통한 인증을 강제하기 위해 SSO 사용자에 대한 비밀번호 로그인을 비활성화할 수 있습니다.
diff --git a/packages/twenty-docs/l/ko/user-guide/permissions-access/overview.mdx b/packages/twenty-docs/l/ko/user-guide/permissions-access/overview.mdx
index 43de8d6262..d156275fc5 100644
--- a/packages/twenty-docs/l/ko/user-guide/permissions-access/overview.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/permissions-access/overview.mdx
@@ -1,40 +1,40 @@
---
-title: Permissions & Access
-description: Manage roles, permissions, and access control in your workspace.
+title: 권한 및 액세스
+description: 워크스페이스에서 역할, 권한 및 액세스 제어를 관리합니다.
---
-
+
-Twenty's permission system lets you control who can access and modify data in your workspace. Create roles, assign permissions, and configure SSO for secure access.
+Twenty의 권한 시스템을 통해 워크스페이스에서 누가 데이터에 액세스하고 수정할 수 있는지 제어할 수 있습니다. 역할을 만들고 권한을 부여하며 보안 액세스를 위해 SSO를 구성하세요.
-## What's in this section
+## 이 섹션의 내용
-
- Create roles and configure object, field, and settings permissions.
+
+ 역할을 만들고 객체, 필드 및 설정 권한을 구성하세요.
-
- Set up Single Sign-On with your identity provider.
+
+ ID 공급자와 함께 Single Sign-On(SSO)을 설정하세요.
-
- Common questions about roles, permissions, and SSO.
+
+ 역할, 권한 및 SSO에 대한 자주 묻는 질문.
-## Key features
+## 주요 기능
-* **Role-based access**: Create custom roles with specific permissions
-* **Object permissions**: Control who can view, edit, or delete records
-* **Field permissions**: Restrict access to sensitive fields
-* **Settings permissions**: Control access to workspace configuration
-* **SSO integration**: Configure single sign-on for enterprise security (Organization plan)
+* **역할 기반 액세스**: 특정 권한을 가진 사용자 지정 역할 생성
+* **객체 권한**: 누가 기록을 보고, 편집하거나 삭제할 수 있는지 제어
+* **필드 권한**: 민감한 필드에 대한 액세스 제한
+* **설정 권한**: 워크스페이스 구성에 대한 액세스 제어
+* **SSO 통합**: 엔터프라이즈 보안을 위해 Single Sign-On(SSO) 구성(Organization 요금제)
-## Quick links
+## 빠른 링크
-* [Create a role](/l/ko/user-guide/permissions-access/capabilities/permissions#create-a-role)
-* [Configure SSO](/l/ko/user-guide/permissions-access/capabilities/sso-configuration)
-* [Manage team members](/l/ko/user-guide/settings/capabilities/member-management)
+* [역할 만들기](/l/ko/user-guide/permissions-access/capabilities/permissions#create-a-role)
+* [SSO 구성](/l/ko/user-guide/permissions-access/capabilities/sso-configuration)
+* [팀 구성원 관리](/l/ko/user-guide/settings/capabilities/member-management)
diff --git a/packages/twenty-docs/l/ko/user-guide/settings/capabilities/domains-settings.mdx b/packages/twenty-docs/l/ko/user-guide/settings/capabilities/domains-settings.mdx
index b2c49c5ae2..f7a54e833a 100644
--- a/packages/twenty-docs/l/ko/user-guide/settings/capabilities/domains-settings.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/settings/capabilities/domains-settings.mdx
@@ -1,47 +1,47 @@
---
-title: Domain Settings
-description: Configure workspace domain, approved access domains, and public domains.
+title: 도메인 설정
+description: 작업 공간 도메인, 승인된 액세스 도메인 및 퍼블릭 도메인을 구성하세요.
---
-Configure domain settings under **Settings → Domains**.
+**설정 → 도메인**에서 도메인 설정을 구성하세요.
-## Workspace Domain
+## 워크스페이스 도메인
-Edit your subdomain name or set a custom domain for your workspace.
+하위 도메인 이름을 편집하거나 작업 공간에 사용자 지정 도메인을 설정하세요.
-### Customize Domain
+### 도메인 사용자 지정
-1. Click **Customize Domain**
-2. Edit your subdomain (e.g., `yourcompany.twenty.com`)
-3. Or set up a custom domain (e.g., `crm.yourcompany.com`)
+1. **도메인 사용자 지정**을 클릭하세요
+2. 하위 도메인을 편집하세요(예: `yourcompany.twenty.com`)
+3. 또는 사용자 지정 도메인을 설정하세요(예: `crm.yourcompany.com`)
-For custom domains, you'll need to configure DNS settings with your domain provider.
+사용자 지정 도메인의 경우 도메인 제공업체에서 DNS 설정을 구성해야 합니다.
-## Approved Domains
+## 승인된 도메인
-Anyone with an email address at these domains is allowed to sign up for this workspace automatically.
+이 도메인의 이메일 주소를 가진 사람은 이 작업 공간에 자동으로 가입할 수 있습니다.
-### Add Approved Access Domain
+### 승인된 액세스 도메인 추가
-1. Click **Add Approved Access Domain**
-2. Enter your company domain (e.g., `yourcompany.com`)
-3. Save
+1. **승인된 액세스 도메인 추가**를 클릭하세요
+2. 회사 도메인을 입력하세요(예: `yourcompany.com`)
+3. 저장
-Once configured, anyone with an email address at that domain can join your workspace without needing a direct invitation.
+구성이 완료되면 해당 도메인의 이메일 주소를 가진 사람은 직접 초대 없이 작업 공간에 가입할 수 있습니다.
- This is useful for allowing your entire team to self-register while keeping the workspace restricted to your organization.
+ 작업 공간을 귀 조직으로 제한하면서 팀 전체가 자가 등록할 수 있도록 하는 데 유용합니다.
-## Public Domains
+## 공개 도메인
-Provision a complete and secure hosting environment on these domains.
+이 도메인에서 완벽하고 안전한 호스팅 환경을 제공하십시오.
-### Add Public Domain
+### 퍼블릭 도메인 추가
-1. Click **Add Public Domain**
-2. Enter the domain you want to use
-3. Configure DNS settings as instructed
-4. Verify the domain
+1. **퍼블릭 도메인 추가**를 클릭하세요
+2. 사용할 도메인을 입력하세요
+3. 안내에 따라 DNS 설정을 구성하세요
+4. 도메인을 검증하세요
-SSL certificates are automatically provisioned for public domains.
+퍼블릭 도메인에는 SSL 인증서가 자동으로 발급됩니다.
diff --git a/packages/twenty-docs/l/ko/user-guide/settings/capabilities/experience-settings.mdx b/packages/twenty-docs/l/ko/user-guide/settings/capabilities/experience-settings.mdx
index e279f7d88b..bb83e7a164 100644
--- a/packages/twenty-docs/l/ko/user-guide/settings/capabilities/experience-settings.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/settings/capabilities/experience-settings.mdx
@@ -1,38 +1,38 @@
---
-title: Experience Settings
-description: Customize your interface theme and regional preferences.
+title: 경험 설정
+description: 인터페이스 테마와 지역 설정을 사용자 정의하세요.
---
-Personalize your Twenty experience under **Settings → Experience**.
+Twenty 사용 경험을 **설정 → 경험**에서 개인화하세요.
-## Appearance
+## 외관
-Choose your visual theme:
+화면 테마를 선택하세요:
-* **Light**: Clean, bright interface
-* **Dark**: Easier on the eyes in low-light conditions
-* **System settings**: Automatically matches your device's theme
+* **라이트**: 깔끔하고 밝은 인터페이스
+* **다크**: 저조도 환경에서 눈에 더 편안합니다
+* **시스템 설정**: 기기의 테마에 자동으로 맞춥니다
-## Language
+## 언어
-Select your preferred language for the Twenty interface from the dropdown menu.
+드롭다운 메뉴에서 Twenty 인터페이스에 사용할 선호 언어를 선택하세요.
-## Formats
+## 형식
-Configure date, time, number, timezone, and calendar start day.
+날짜, 시간, 숫자, 시간대 및 캘린더 시작 요일을 구성하세요.
-| Setting | Description |
-| ---------------------- | ---------------------------------------------------------- |
-| **Time zone** | Your local timezone for accurate timestamps and scheduling |
-| **Date format** | How dates appear (e.g., Dec 12, 2025) |
-| **Time format** | 12-hour (7:22 PM) or 24-hour format |
-| **Number format** | Decimal and thousands separators (e.g., 1,234.56) |
-| **Calendar start day** | First day of the week (Sunday or Monday) |
+| 설정 | 설명 |
+| ------------- | --------------------------- |
+| **시간대** | 정확한 타임스탬프와 일정 관리를 위한 로컬 시간대 |
+| **날짜 형식** | 날짜 표시 방식(예: 2025년 12월 12일) |
+| **시간 형식** | 12시간제(오후 7:22) 또는 24시간제 |
+| **숫자 형식** | 소수점 및 천 단위 구분자(예: 1,234.56) |
+| **캘린더 시작 요일** | 한 주의 시작 요일(일요일 또는 월요일) |
-Each setting can be set to **System settings** to automatically match your device preferences, or you can choose a specific format.
+각 설정은 **시스템 설정**으로 지정해 기기 설정에 자동으로 맞추거나, 특정 형식을 선택할 수 있습니다.
-## How to Update
+## 업데이트 방법
-1. Go to **Settings → Experience**
-2. Adjust your preferences in each section
-3. Changes save automatically
+1. **설정 → 경험**으로 이동
+2. 각 섹션에서 기본 설정을 조정합니다.
+3. 변경 사항은 자동으로 저장됩니다.
diff --git a/packages/twenty-docs/l/ko/user-guide/settings/capabilities/member-management.mdx b/packages/twenty-docs/l/ko/user-guide/settings/capabilities/member-management.mdx
index 7c97deebb9..b13569db0a 100644
--- a/packages/twenty-docs/l/ko/user-guide/settings/capabilities/member-management.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/settings/capabilities/member-management.mdx
@@ -1,87 +1,87 @@
---
-title: Member Management
-description: Invite team members and manage workspace access.
+title: 구성원 관리
+description: 팀원을 초대하고 워크스페이스 접근 권한을 관리합니다.
---
-Manage who has access to your workspace under **Settings → Members**.
+**설정 → 구성원**에서 워크스페이스에 접근할 수 있는 사람을 관리하세요.
-## Invite New Members
+## 새 멤버 초대
-### Using Email Invitation
+### 이메일 초대 사용
-1. Go to **Settings → Members**
-2. Click **+ Invite**
-3. Enter the person's email address
-4. Select a role for the new member
-5. Click **Send invite**
+1. **설정 → 구성원**으로 이동하세요.
+2. **+ 초대**를 클릭하세요.
+3. 해당 사람의 이메일 주소를 입력하세요.
+4. 새 구성원의 역할을 선택하세요.
+5. **초대 보내기**를 클릭하세요.
-The invited person will receive an email with a link to join your workspace.
+초대받은 사람은 워크스페이스에 참여할 수 있는 링크가 포함된 이메일을 받습니다.
-### Using Invite Link
+### 초대 링크 사용
-1. Go to **Settings → Members**
-2. Copy the workspace invite link
-3. Share the link with new team members
-4. They'll receive access once they sign up
+1. **설정 → 구성원**으로 이동하세요.
+2. 작업 공간 초대 링크 복사
+3. 새로운 팀 구성원에게 링크 공유
+4. 가입 후 접근이 가능합니다
-## View and Manage Members
+## 구성원 보기 및 관리
-### View All Members
+### 모든 구성원 보기
-Go to **Settings → Members** to see:
+**설정 → 구성원**으로 이동하여 다음을 확인하세요:
-* All active members
-* Pending invitations
+* 모든 활성 구성원
+* 보류 중인 초대
-### Edit a Member's Profile
+### 구성원 프로필 편집
-Click on a member to open their profile page. As an admin, you can:
+구성원을 클릭하여 프로필 페이지를 엽니다. 관리자인 경우 다음을 수행할 수 있습니다:
-* Edit their **name**
-* Update their **profile picture**
-* **Impersonate** their account (useful for troubleshooting)
-* **Delete** their account
+* **이름** 변경
+* **프로필 사진** 변경
+* 해당 계정을 **가장하기** (문제 해결에 유용)
+* 해당 계정 **삭제**
-### Change a Member's Role
+### 구성원 역할 변경
-On the member's profile page:
+구성원 프로필 페이지에서:
-1. Open the **Permissions** tab
-2. View the currently assigned role
-3. Select a different role from the dropdown
-4. The change takes effect immediately
+1. **권한** 탭 열기
+2. 현재 할당된 역할 보기
+3. 드롭다운에서 다른 역할 선택
+4. 변경 사항은 즉시 적용됩니다.
-→ [Learn more about roles and permissions](/l/ko/user-guide/permissions-access/capabilities/permissions)
+→ [역할과 권한에 대해 더 알아보기](/l/ko/user-guide/permissions-access/capabilities/permissions)
-### Remove a Member
+### 구성원 제거
-1. Click on the member to open their profile
-2. Click **Delete** to remove them from the workspace
+1. 구성원을 클릭하여 프로필을 엽니다.
+2. 워크스페이스에서 제거하려면 **삭제**를 클릭하세요.
- Removed members lose access immediately. Their data (records, notes, tasks) remains in the workspace.
+ 제거된 구성원은 즉시 접근 권한을 잃습니다. 해당 구성원의 데이터(레코드, 노트, 작업)는 워크스페이스에 남아 있습니다.
- **Email sync is also removed.** If the deleted user was the only one who synced certain emails, those emails will be permanently removed from the workspace.
+ **이메일 동기화도 제거됩니다.** 삭제된 사용자가 특정 이메일을 동기화한 유일한 사용자였다면 해당 이메일은 워크스페이스에서 영구적으로 제거됩니다.
-## Pending Invitations
+## 보류 중인 초대
-Manage invitations that haven't been accepted:
+수락되지 않은 초대를 관리합니다:
-* **Resend**: Send the invitation email again
-* **Cancel**: Revoke the invitation before it's accepted
+* **재전송**: 초대 이메일을 다시 보냅니다
+* **취소**: 초대가 수락되기 전에 철회합니다
-## Approved Access Domains
+## 승인된 접근 도메인
-Allow team members to join automatically based on their email domain:
+팀원이 이메일 도메인에 따라 자동으로 참여할 수 있도록 허용합니다:
-1. Go to **Settings → Domains**
-2. Add your company domain (e.g., `yourcompany.com`)
-3. Anyone with that email domain can join without an invitation
+1. **설정 → 도메인**으로 이동하세요.
+2. 회사 도메인을 추가하세요(예: `yourcompany.com`).
+3. 해당 이메일 도메인을 가진 사람은 초대 없이 참여할 수 있습니다.
-## Related
+## 관련 항목
-* [Permissions](/l/ko/user-guide/permissions-access/capabilities/permissions) — configure what each role can do
-* [Domains Settings](/l/ko/user-guide/settings/capabilities/domains-settings) — configure approved domains
+* [권한](/l/ko/user-guide/permissions-access/capabilities/permissions) — 각 역할이 할 수 있는 작업을 구성합니다
+* [도메인 설정](/l/ko/user-guide/settings/capabilities/domains-settings) — 승인된 도메인을 구성합니다
diff --git a/packages/twenty-docs/l/ko/user-guide/settings/capabilities/profile-settings.mdx b/packages/twenty-docs/l/ko/user-guide/settings/capabilities/profile-settings.mdx
index febfa4a86f..a1cca266cd 100644
--- a/packages/twenty-docs/l/ko/user-guide/settings/capabilities/profile-settings.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/settings/capabilities/profile-settings.mdx
@@ -1,43 +1,43 @@
---
-title: Profile Settings
-description: Manage your personal profile and security settings.
+title: 프로필 설정
+description: 개인 프로필 및 보안 설정을 관리합니다.
---
-## Personal Information
+## 개인 정보
-### Name and Email
+### 이름 및 이메일
-* **Display Name**: Update how your name appears to other workspace members
-* **Email Address**: Change your login email (requires verification)
-* **Profile Picture**: Upload a custom avatar or use your initials
+* **표시 이름**: 다른 워크스페이스 구성원에게 표시되는 이름을 업데이트하세요
+* **이메일 주소**: 로그인 이메일을 변경하세요 (인증 필요)
+* **프로필 사진**: 사용자 정의 아바타를 업로드하거나 이니셜을 사용하세요
-## Security Settings
+## 보안 설정
-### Two-Factor Authentication (2FA)
+### 이중 인증 (2FA)
-Enable 2FA to add an extra layer of security to your account:
+계정에 추가 보안을 위한 2FA를 활성화하십시오:
-1. Go to **Settings → Profile Settings**
-2. Click **Enable 2FA**
-3. Scan the QR code with your authenticator app
-4. Enter the verification code to confirm
+1. **설정 → 프로필 설정**으로 이동합니다
+2. **2FA 활성화** 클릭
+3. 인증 앱으로 QR 코드를 스캔합니다
+4. 확인을 위해 인증 코드를 입력합니다
-### Password Management
+### 비밀번호 관리
-* **Change Password**: Update your current password
-* **Password Requirements**: Must be at least 8 characters long
+* **비밀번호 변경**: 현재 비밀번호를 업데이트합니다
+* **비밀번호 요구사항**: 최소 8자 이상이어야 합니다
-## Profile Management
+## 프로필 관리
-### Delete Account
+### 계정 삭제
- Deleting your account will permanently remove your access to all workspaces. This action cannot be undone, you'll lose access to all workspaces where you're a member, and you should consider leaving individual workspaces instead if you only want to exit specific teams.
+ 계정을 삭제하면 모든 워크스페이스에 대한 접근이 영구적으로 제거됩니다. 이 작업은 취소할 수 없으며, 특정 팀에서만 나가고자 한다면 개별 워크스페이스를 먼저 떠나는 것을 고려해야 합니다.
-To delete your account:
+계정을 삭제하려면:
-1. Go to **Settings → Profile Settings**
-2. Scroll to **Danger Zone**
-3. Click **Delete Account**
-4. Confirm by typing your email address
+1. **설정 → 프로필 설정**으로 이동합니다
+2. **위험 구역**까지 스크롤하세요.
+3. **계정 삭제** 클릭
+4. 이메일 주소를 입력하여 확인합니다
diff --git a/packages/twenty-docs/l/ko/user-guide/settings/capabilities/updates-settings.mdx b/packages/twenty-docs/l/ko/user-guide/settings/capabilities/updates-settings.mdx
new file mode 100644
index 0000000000..3391d232b6
--- /dev/null
+++ b/packages/twenty-docs/l/ko/user-guide/settings/capabilities/updates-settings.mdx
@@ -0,0 +1,36 @@
+---
+title: 업데이트 설정
+description: Twenty에서 얼리 액세스 기능을 활성화하세요.
+---
+
+## 업데이트 설정 정보
+
+업데이트 섹션에서는 일반 제공되기 전에 얼리 액세스 기능을 활성화할 수 있습니다.
+
+## 얼리 액세스 기능
+
+얼리 액세스 기능은 일반 제공 전에 아직 테스트 중인 기능입니다.
+
+**현재 얼리 액세스:**
+
+* **대시보드** — 시각적 보고 및 분석
+
+### 얼리 액세스 기능 활성화 방법
+
+1. **설정 → 업데이트**로 이동하세요.
+2. **얼리 액세스** 섹션으로 이동하세요
+3. 활성화하려는 기능을 찾으세요
+4. 토글하여 활성화하세요
+5. 해당 기능이 즉시 사용 가능해집니다
+
+
+ 얼리 액세스 기능은 사용자 피드백에 따라 변경될 수 있습니다. 여러분의 피드백은 Twenty를 개선하는 데 도움이 됩니다!
+
+
+## 기능 피드백
+
+여러분의 피드백은 Twenty를 개선하는 데 도움이 됩니다:
+
+* 얼리 액세스 기능 관련 문제를 보고하세요
+* 새로운 기능을 어떻게 사용하고 있는지 공유하세요
+* 커뮤니티 Discord를 통해 개선 사항을 제안하세요
diff --git a/packages/twenty-docs/l/ko/user-guide/settings/capabilities/workspace-settings.mdx b/packages/twenty-docs/l/ko/user-guide/settings/capabilities/workspace-settings.mdx
index f72f71a814..7c35a3da29 100644
--- a/packages/twenty-docs/l/ko/user-guide/settings/capabilities/workspace-settings.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/settings/capabilities/workspace-settings.mdx
@@ -1,30 +1,30 @@
---
-title: Workspace Settings
-description: Customize your workspace name and branding.
+title: 작업 공간 설정
+description: 작업 공간 이름과 브랜딩을 사용자 지정합니다.
---
-Those are accessible under **Settings → General**.
+이는 **설정 → 일반**에서 접근할 수 있습니다.
-## Workspace Picture
+## 작업 공간 사진
-* **Upload Logo**: Add a custom workspace logo
-* **Supported formats**: PNG, JPEG, and GIF files under 10MB
-* **Remove**: Delete the current workspace logo
+* **로고 업로드**: 사용자 지정 작업 공간 로고 추가
+* **지원 형식**: 10MB 이하의 PNG, JPEG 및 GIF 파일
+* **제거**: 현재 작업 공간 로고 삭제
-## Workspace Name
+## 워크스페이스 이름
-* **Name**: Change your workspace display name
-* This name appears to all workspace members
+* **이름**: 작업 공간 표시 이름 변경
+* 이 이름은 모든 작업 공간 구성원에게 표시됩니다.
-## Danger Zone
+## 위험 구역
- Deleting your workspace permanently removes all data and cannot be undone. All workspace data will be lost forever, all members will lose access immediately, and this action cannot be reversed.
+ 작업 공간을 삭제하면 모든 데이터가 영구적으로 제거되며 되돌릴 수 없습니다. 모든 작업 공간 데이터가 영원히 손실되며, 모든 구성원이 즉시 접근 권한을 잃게 되며, 이 작업은 되돌릴 수 없습니다.
-To delete your workspace:
+작업 공간을 삭제하려면:
-1. Click **Delete workspace** button
-2. Confirm the deletion when prompted
+1. **작업 공간 삭제** 버튼을 클릭합니다.
+2. 확인 메시지가 표시되면 삭제를 확인합니다.
-**Note**: Only workspace administrators can delete workspaces.
+**참고**: 작업 공간 관리자만 작업 공간을 삭제할 수 있습니다.
diff --git a/packages/twenty-docs/l/ko/user-guide/settings/how-tos/settings-faq.mdx b/packages/twenty-docs/l/ko/user-guide/settings/how-tos/settings-faq.mdx
index 19aa50e5a0..b4866f4467 100644
--- a/packages/twenty-docs/l/ko/user-guide/settings/how-tos/settings-faq.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/settings/how-tos/settings-faq.mdx
@@ -1,171 +1,171 @@
---
-title: Settings FAQ
-description: Frequently asked questions about Twenty settings.
+title: 설정 FAQ
+description: Twenty 설정에 대한 자주 묻는 질문입니다.
image: /images/user-guide/setup/settings.png
---
-## Workspace Settings
+## 작업 공간 설정
-
- 1. Go to **Settings → General**
- 2. Find the Workspace Name field
- 3. Enter your new name
- 4. Changes save automatically
+
+ 1. **설정 → 일반**으로 이동하세요.
+ 2. 워크스페이스 이름 필드를 찾으세요.
+ 3. 새 이름을 입력하세요.
+ 4. 변경 사항은 자동으로 저장됩니다.
-
- 1. Go to **Settings → General**
- 2. Click on the current logo or upload area
- 3. Select an image file (PNG, JPEG, or GIF under 10MB)
- 4. The logo updates immediately
+
+ 1. **설정 → 일반**으로 이동하세요.
+ 2. 현재 로고 또는 업로드 영역을 클릭하세요.
+ 3. 10MB 이하의 PNG, JPEG 또는 GIF 이미지를 선택하세요.
+ 4. 로고가 즉시 업데이트됩니다.
-
- Yes, you can create and be a member of multiple workspaces. Each workspace has its own data, settings, and subscription.
+
+ 네, 여러 워크스페이스를 생성하고 멤버가 될 수 있습니다. 각 워크스페이스는 고유한 데이터, 설정 및 구독을 가집니다.
-
- 1. Go to **Settings → General**
- 2. Scroll to Danger Zone
- 3. Click **Delete workspace**
- 4. Confirm the deletion
+
+ 1. **설정 → 일반**으로 이동하세요.
+ 2. 위험 구역까지 스크롤하세요.
+ 3. **워크스페이스 삭제**를 클릭하세요.
+ 4. 삭제를 확인하세요.
- Note: This permanently deletes all data and cannot be undone.
+ 참고: 이 작업은 모든 데이터를 영구적으로 삭제하며 되돌릴 수 없습니다.
-
- Delete the workspaces you no longer need under **Settings → General → Delete workspace**.
+
+ 필요하지 않은 워크스페이스는 **설정 → 일반 → 워크스페이스 삭제**에서 삭제하세요.
- Do not delete your **account** (accessible under Settings → Profile): your account is shared among all your workspaces. Deleting your account removes access to ALL workspaces.
+ **계정**을 삭제하지 마세요(설정 → 프로필에서 접근 가능): 계정은 모든 워크스페이스에서 공유됩니다. 계정을 삭제하면 모든 워크스페이스에 대한 액세스가 제거됩니다.
-
- If you want to temporarily disable your workspace (not permanently delete it), go to **Settings → Billing** and click **Cancel Plan**. Your data will be preserved for a grace period.
+
+ 워크스페이스를 일시적으로 비활성화하려는 경우(영구 삭제가 아님) **설정 → 결제**로 이동하여 **플랜 취소**를 클릭하세요. 데이터는 유예 기간 동안 보존됩니다.
-## Profile Settings
+## 프로필 설정
-
- 1. Go to **Settings → Profile**
- 2. Find the Password section
- 3. Enter your current password
- 4. Enter your new password
- 5. Save changes
+
+ 1. **설정 → 프로필**로 이동하세요.
+ 2. 비밀번호 섹션을 찾으세요.
+ 3. 현재 비밀번호를 입력하세요.
+ 4. 새 비밀번호를 입력하세요.
+ 5. 변경 사항을 저장하세요.
-
- 1. Go to **Settings → Profile**
- 2. Find the 2FA section
- 3. Click **Enable 2FA**
- 4. Scan the QR code with your authenticator app
- 5. Enter the verification code
+
+ 1. **설정 → 프로필**로 이동하세요.
+ 2. 2단계 인증 섹션을 찾으세요.
+ 3. **2FA 활성화** 클릭
+ 4. 인증 앱으로 QR 코드를 스캔합니다
+ 5. 인증 코드를 입력하세요.
-
- To change your email address, please reach out to [contact@twenty.com](mailto:contact@twenty.com).
+
+ 이메일 주소를 변경하려면 [contact@twenty.com](mailto:contact@twenty.com)으로 문의해 주세요.
-
- 1. Go to **Settings → Profile**
- 2. Scroll to Danger Zone
- 3. Click **Delete Account**
- 4. Confirm by typing your email
+
+ 1. **설정 → 프로필**로 이동하세요.
+ 2. 위험 구역까지 스크롤하세요.
+ 3. **계정 삭제** 클릭
+ 4. 이메일 주소를 입력하여 확인하세요.
- Note: This removes your access to all workspaces and deletes all emails synced from your connected accounts.
+ 참고: 이 작업은 모든 워크스페이스에 대한 액세스를 제거하고 연결된 계정에서 동기화된 모든 이메일을 삭제합니다.
-## Experience Settings
+## 경험 설정
-
- 1. Go to **Settings → Experience**
- 2. Find the Theme section
- 3. Select Light, Dark, or System
+
+ 1. **설정 → 환경**으로 이동하세요.
+ 2. 테마 섹션을 찾으세요.
+ 3. 밝은 모드, 어두운 모드 또는 시스템을 선택하세요.
-
- 1. Go to **Settings → Experience**
- 2. Find Date Format
- 3. Select your preferred format
- 4. Changes apply immediately
+
+ 1. **설정 → 환경**으로 이동하세요.
+ 2. 날짜 형식 항목을 찾으세요.
+ 3. 선호하는 형식을 선택하세요.
+ 4. 변경 사항이 즉시 적용됩니다.
-
- 1. Go to **Settings → Experience**
- 2. Find Time Zone
- 3. Select your local time zone
- 4. All timestamps will adjust
+
+ 1. **설정 → 환경**으로 이동하세요.
+ 2. 시간대 항목을 찾으세요.
+ 3. 사용 중인 지역 시간대를 선택하세요.
+ 4. 모든 타임스탬프가 조정됩니다.
-
- 1. Go to **Settings → Experience**
- 2. Find Language
- 3. Select from available languages
- 4. The interface updates to your selection
+
+ 1. **설정 → 환경**으로 이동하세요.
+ 2. 언어 항목을 찾으세요.
+ 3. 사용 가능한 언어 중에서 선택하세요.
+ 4. 인터페이스가 선택한 언어로 업데이트됩니다.
-## Account Settings
+## 계정 설정
-
- 1. Go to **Settings → Accounts**
- 2. Click **Add account**
- 3. Choose Google or Microsoft
- 4. Authorize access
- 5. Configure sync settings
+
+ 1. **설정 → 계정**으로 이동
+ 2. **계정 추가**를 클릭
+ 3. Google 또는 Microsoft를 선택하세요.
+ 4. 액세스 권한을 승인하세요.
+ 5. 동기화 설정을 구성하세요.
-
- Yes, you can connect multiple email accounts. Go to **Settings → Accounts** and add additional accounts as needed.
+
+ 네, 여러 이메일 계정을 연결할 수 있습니다. **설정 → 계정**으로 이동하여 필요한 계정을 추가하세요.
-
- 1. Go to **Settings → Accounts**
- 2. Find the account to remove
- 3. Click **Disconnect**
- 4. Confirm the action
+
+ 1. **설정 → 계정**으로 이동
+ 2. 제거할 계정을 찾으세요.
+ 3. **연결 해제**를 클릭하세요.
+ 4. 작업을 확인하세요.
-## Domains
+## 도메인
-
- Yes! Go to **Settings → Domains** and click **Customize Domain**. You have two options:
+
+ 예! **설정 → 도메인**으로 이동하여 **도메인 사용자 지정**을 클릭하세요. 다음 두 가지 옵션이 있습니다:
- * **Subdomain**: Use a Twenty subdomain like `yourcompany.twenty.com`
- * **Custom domain**: Use your own domain like `crm.yourcompany.com` (requires DNS configuration)
+ * **서브도메인**: `yourcompany.twenty.com`과 같은 Twenty 서브도메인을 사용합니다.
+ * **사용자 지정 도메인**: `crm.yourcompany.com`과 같은 본인 소유 도메인을 사용합니다(DNS 구성이 필요).
- A subdomain is quick to set up, while a custom domain provides a fully branded experience for your team.
+ 서브도메인은 빠르게 설정할 수 있고, 사용자 지정 도메인은 팀에 완전한 브랜드 경험을 제공합니다.
-
- You can configure approved access domains so team members with company email addresses can automatically join your workspace. Go to **Settings → Domains** and add your company domain (e.g., `yourcompany.com`).
+
+ 승인된 접근 도메인을 구성하면 회사 이메일 주소를 가진 팀원이 워크스페이스에 자동으로 참여할 수 있습니다. **설정 → 도메인**으로 이동하여 회사 도메인(예: `yourcompany.com`)을 추가하세요.
-## Lab Features
+## 얼리 액세스 기능
-
- Lab features are experimental capabilities being tested before general release. They may change or be removed without notice.
+
+ 얼리 액세스 기능은 일반 출시 전에 테스트 중인 기능입니다. 현재는 **대시보드**만 얼리 액세스로 제공됩니다. 사용자 피드백에 따라 변경될 수 있습니다.
-
- Lab features are functional but may have bugs or unexpected behavior. Use them cautiously in production environments.
+
+ 얼리 액세스 기능은 정상적으로 동작하지만 사용자 피드백에 따라 변경될 수 있습니다. 사용해도 안전하지만 일반 제공 이전에 변경될 수 있습니다.
-
- 1. Go to **Settings → Releases → Lab**
- 2. Find the feature you want
- 3. Toggle it on
- 4. The feature becomes available immediately
+
+ 1. **설정 → 업데이트 → 얼리 액세스**로 이동하세요
+ 2. 원하는 기능을 찾으세요.
+ 3. 토글하여 활성화하세요.
+ 4. 해당 기능이 즉시 사용 가능해집니다.
diff --git a/packages/twenty-docs/l/ko/user-guide/settings/overview.mdx b/packages/twenty-docs/l/ko/user-guide/settings/overview.mdx
index 245a1d1314..667c000e92 100644
--- a/packages/twenty-docs/l/ko/user-guide/settings/overview.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/settings/overview.mdx
@@ -1,67 +1,67 @@
---
-title: Settings
-description: Set up your Twenty workspace with essential configurations.
+title: 설정
+description: 필수 구성으로 Twenty 워크스페이스를 설정하세요.
image: /images/user-guide/setup/settings.png
---
-
+
-## Initial Setup
+## 초기 설정
-When you first create your workspace, there are several key settings to configure.
+워크스페이스를 처음 만들 때 구성해야 할 몇 가지 핵심 설정이 있습니다.
-### Workspace Name and Logo
+### 워크스페이스 이름 및 로고
-1. Go to **Settings → General**
-2. Update your workspace name
-3. Upload your company logo
-4. Save your changes
+1. **설정 → 일반**으로 이동하세요.
+2. 워크스페이스 이름을 업데이트하세요
+3. 회사 로고를 업로드하세요
+4. 변경 사항을 저장하세요
-### Time Zone and Date Format
+### 시간대 및 날짜 형식
-1. Go to **Settings → Experience**
-2. Select your time zone
-3. Choose your preferred date format
-4. Save your changes
+1. **설정 → 환경**으로 이동하세요.
+2. 시간대를 선택하세요
+3. 선호하는 날짜 형식을 선택하세요
+4. 변경 사항을 저장하세요
-## Essential Configurations
+## 필수 구성
-### Connect Email and Calendar
+### 이메일 및 캘린더 연결
-Set up email and calendar sync:
+이메일 및 캘린더 동기화를 설정하세요:
-1. Go to **Settings → Accounts**
-2. Click **Add account**
-3. Connect your Google or Microsoft account
-4. Configure sync settings
+1. **설정 → 계정**으로 이동
+2. **계정 추가**를 클릭
+3. Google 또는 Microsoft 계정을 연결하세요
+4. 동기화 설정을 구성하세요
-→ [Complete email & calendar setup guide](/l/ko/user-guide/calendar-emails/overview)
+→ [전체 이메일 및 캘린더 설정 가이드](/l/ko/user-guide/calendar-emails/overview)
-### Invite Your Team
+### 팀 초대
-Add team members to your workspace:
+워크스페이스에 팀 구성원을 추가하세요:
-1. Go to **Settings → Members**
-2. Click **+ Invite**
-3. Enter email addresses
-4. Assign appropriate roles
+1. **설정 → 구성원**으로 이동하세요.
+2. **+ 초대**를 클릭하세요
+3. 이메일 주소를 입력하세요
+4. 적절한 역할을 할당하세요
- Before inviting your team, check the default role under **Settings → Roles**. New members are automatically assigned this role when they join.
+ 팀을 초대하기 전에 **설정 → 역할**에서 기본 역할을 확인하세요. 새 구성원은 가입하면 이 역할이 자동으로 할당됩니다.
-## Workspace Settings Checklist
+## 워크스페이스 설정 체크리스트
-* Workspace name and logo configured
-* Time zone and date format set
-* Email and calendar connected
-* Team members invited
-* Roles and permissions configured
+* 워크스페이스 이름 및 로고 구성됨
+* 시간대 및 날짜 형식 설정됨
+* 이메일 및 캘린더 연결됨
+* 팀 구성원 초대됨
+* 역할 및 권한 구성됨
-## Next Steps
+## 다음 단계
-* [Workspace settings](/l/ko/user-guide/settings/capabilities/workspace-settings)
-* [Profile settings](/l/ko/user-guide/settings/capabilities/profile-settings)
-* [Experience settings](/l/ko/user-guide/settings/capabilities/experience-settings)
+* [워크스페이스 설정](/l/ko/user-guide/settings/capabilities/workspace-settings)
+* [프로필 설정](/l/ko/user-guide/settings/capabilities/profile-settings)
+* [사용자 경험 설정](/l/ko/user-guide/settings/capabilities/experience-settings)
diff --git a/packages/twenty-docs/l/ko/user-guide/views-pipelines/capabilities/calendar-view.mdx b/packages/twenty-docs/l/ko/user-guide/views-pipelines/capabilities/calendar-view.mdx
index 16d8d20deb..31bfa4f9f1 100644
--- a/packages/twenty-docs/l/ko/user-guide/views-pipelines/capabilities/calendar-view.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/views-pipelines/capabilities/calendar-view.mdx
@@ -1,46 +1,46 @@
---
-title: Calendar View
-description: Display records with date fields on a calendar.
+title: 캘린더 보기
+description: 날짜 필드가 있는 레코드를 캘린더에 표시합니다.
---
-## About Calendar View
+## 캘린더 보기 소개
-Calendar view displays your records on a calendar based on a date field. Each record appears as an event on the corresponding date.
+캘린더 보기는 날짜 필드를 기준으로 레코드를 캘린더에 표시합니다. 각 레코드는 해당 날짜에 이벤트로 표시됩니다.
-## Creating a Calendar View
+## 캘린더 보기 생성하기
-1. Navigate to an object with date fields
-2. Click the view dropdown → **+ Add view**
-3. Name your view and click **Create**
-4. Open the **Options** on the right
-5. Select **Calendar** as the layout
-6. Choose the **date field** to use for positioning records
-7. Click **Update view**
+1. 날짜 필드가 있는 오브젝트로 이동합니다.
+2. 뷰 드롭다운에서 → **+ 뷰 추가**를 클릭합니다.
+3. 뷰에 이름을 지정하고 **생성**을 클릭합니다.
+4. 오른쪽의 **옵션**을 엽니다.
+5. 레이아웃으로 **캘린더**를 선택합니다.
+6. 레코드의 배치를 위해 사용할 **날짜 필드**를 선택합니다.
+7. **뷰 업데이트**를 클릭합니다.
-## Configuring the Calendar
+## 캘린더 구성
-### Choose the Date Field
+### 날짜 필드 선택
-Under **Options**, select which date field determines where records appear on the calendar.
+**옵션**에서 캘린더에서 레코드가 표시될 위치를 결정하는 날짜 필드를 선택합니다.
-### Display Fields
+### 표시 필드
-Configure which fields show on each calendar event:
+각 캘린더 이벤트에 표시할 필드를 구성합니다:
-1. Click **Options → Fields**
-2. Toggle fields on/off
-3. Drag to reorder
+1. **옵션 → 필드**를 클릭합니다.
+2. 필드를 켜거나 끕니다.
+3. 드래그하여 순서를 변경합니다.
-## Use Cases
+## 사용 사례
-* **Meetings and calls**: View upcoming appointments
-* **Deadlines**: Track due dates and close dates
-* **Events**: Plan and visualize scheduled activities
-* **Follow-ups**: See when tasks are due
+* **회의 및 통화**: 예정된 일정을 확인합니다.
+* **마감**: 마감일과 종료일을 추적합니다.
+* **이벤트**: 예정된 활동을 계획하고 시각화합니다.
+* **후속 조치**: 작업의 마감 시점을 확인합니다.
-## Related
+## 관련 항목
-* [Views Overview](/l/ko/user-guide/views-pipelines/overview) — creating and managing views
-* [Filters and Sorting](/l/ko/user-guide/views-pipelines/capabilities/filters-and-sorting) — filtering calendar data
+* [뷰 개요](/l/ko/user-guide/views-pipelines/overview) — 뷰 생성 및 관리
+* [필터 및 정렬](/l/ko/user-guide/views-pipelines/capabilities/filters-and-sorting) — 캘린더 데이터 필터링
diff --git a/packages/twenty-docs/l/ko/user-guide/views-pipelines/capabilities/fields-and-columns.mdx b/packages/twenty-docs/l/ko/user-guide/views-pipelines/capabilities/fields-and-columns.mdx
index 0c277f270f..0b3ec57be5 100644
--- a/packages/twenty-docs/l/ko/user-guide/views-pipelines/capabilities/fields-and-columns.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/views-pipelines/capabilities/fields-and-columns.mdx
@@ -1,52 +1,52 @@
---
-title: Fields & Columns
-description: Choose which fields to display and how to organize them.
+title: 필드 및 열
+description: 표시할 필드를 선택하고 구성 방식을 정하세요.
---
-## Selecting Fields to Display
+## 표시할 필드 선택
-Each view can show a different set of fields. Customize what's visible to focus on the information that matters.
+각 보기마다 서로 다른 필드 세트를 표시할 수 있습니다. 중요한 정보에 집중할 수 있도록 표시 항목을 사용자 지정하세요.
-### Show or Hide Fields
+### 필드 표시 또는 숨기기
-1. Click **Options** in the top right
-2. Click **Fields**
-3. Click the **eye icon** next to each field to show/hide it
+1. 오른쪽 상단의 **옵션**을 클릭하세요
+2. **Fields**를 클릭하세요
+3. 각 필드 옆의 **눈 아이콘**을 클릭하여 표시/숨기기를 전환하세요
-### Reorder Fields
+### 필드 재정렬
-Change the order fields appear in your view:
+보기에서 필드가 표시되는 순서를 변경하세요:
-1. Click **Options → Fields**
-2. Drag fields up or down
-3. Changes save automatically
+1. **Options → Fields**를 클릭하세요
+2. 필드를 위나 아래로 드래그하세요
+3. 변경 사항은 자동으로 저장됩니다.
-## Field Display by View Type
+## 보기 유형별 필드 표시
-### Table Views
+### 테이블 뷰
-* Fields appear as columns
-* Resize columns by dragging borders
+* 필드는 열로 표시됩니다.
+* 열 경계를 드래그하여 크기를 조정하세요.
-### Kanban Views
+### 칸반 보기
-* Fields appear on cards
-* Reorder via Options → Fields
-* Use Compact view to hide all fields
+* 필드는 카드에 표시됩니다.
+* Options → Fields에서 재정렬하세요
+* 모든 필드를 숨기려면 컴팩트 보기를 사용하세요
-### Calendar Views
+### 캘린더 보기
-* Selected fields show on calendar events
-* Configure via Options → Fields
+* 선택한 필드가 캘린더 이벤트에 표시됩니다.
+* Options → Fields에서 구성하세요
-## Best Practices
+## 모범 사례
-* **Show only what's needed** — too many fields clutters the view
-* **Put important fields first** — most-used columns on the left
-* **Create multiple views** — different field sets for different purposes
-* **Use field visibility per view** — same object, different focus
+* **필요한 것만 표시** — 필드가 너무 많으면 보기가 복잡해집니다.
+* **중요한 필드를 먼저 배치** — 자주 사용하는 열을 왼쪽에 두세요.
+* **여러 보기를 만드세요** — 목적에 따라 서로 다른 필드 세트를 사용하세요.
+* **보기별 필드 표시 설정을 사용하세요** — 동일한 객체라도 초점을 다르게 맞출 수 있습니다.
-## Related
+## 관련 항목
-* [Table Views](/l/ko/user-guide/views-pipelines/capabilities/table-views) — list view features
-* [Kanban Views](/l/ko/user-guide/views-pipelines/capabilities/kanban-views) — card-based views
+* [테이블 뷰](/l/ko/user-guide/views-pipelines/capabilities/table-views) — 목록 보기 기능
+* [칸반 보기](/l/ko/user-guide/views-pipelines/capabilities/kanban-views) — 카드 기반 보기
diff --git a/packages/twenty-docs/l/ko/user-guide/views-pipelines/capabilities/filters-and-sorting.mdx b/packages/twenty-docs/l/ko/user-guide/views-pipelines/capabilities/filters-and-sorting.mdx
index 4ced3254e5..652d976092 100644
--- a/packages/twenty-docs/l/ko/user-guide/views-pipelines/capabilities/filters-and-sorting.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/views-pipelines/capabilities/filters-and-sorting.mdx
@@ -1,78 +1,78 @@
---
-title: Filters & Sorting
-description: Filter and sort records to find exactly what you need.
+title: 필터 및 정렬
+description: 필터링하고 정렬하여 필요한 레코드를 정확히 찾을 수 있습니다.
---
-## Filtering Data
+## 데이터 필터링
-Filters help you focus on specific records by showing only those that match your criteria.
+필터는 조건과 일치하는 레코드만 표시하여 특정 레코드에 집중할 수 있도록 도와줍니다.
-### Adding a Filter
+### 필터 추가
-1. Click the **Filter** button in the toolbar
-2. Select the field to filter by
-3. Choose the operator (equals, contains, etc.)
-4. Enter the filter value
-5. Click **Apply**
+1. 도구 모음에서 **필터** 버튼을 클릭합니다
+2. 필터링할 필드를 선택합니다
+3. 연산자(같음, 포함 등)를 선택합니다
+4. 필터 값을 입력합니다
+5. **적용**을 클릭합니다
-### Filter Operators
+### 필터 연산자
-| Field Type | Available Operators |
-| ---------- | -------------------------------------------------- |
-| Text | Equals, Contains, Starts with, Ends with, Is empty |
-| Number | Equals, Greater than, Less than, Between, Is empty |
-| Date | Equals, Before, After, Between, Is empty |
-| Select | Equals, Is any of, Is empty |
-| Checkbox | Is true, Is false |
-| Relation | Equals, Is empty |
+| 필드 유형 | 사용 가능한 연산자 |
+| ----- | ---------------------- |
+| 텍스트 | 같음, 포함, 시작함, 끝남, 비어 있음 |
+| 숫자 | 같음, 초과, 미만, 사이, 비어 있음 |
+| 날짜 | 같음, 이전, 이후, 사이, 비어 있음 |
+| 선택 | 같음, 다음 중 하나, 비어 있음 |
+| 체크박스 | 참, 거짓 |
+| 관계 | 같음, 비어 있음 |
-### Multiple Filters
+### 다중 필터
-Combine multiple filters to narrow down results:
+결과를 좁히기 위해 여러 필터를 결합합니다:
-* All filters are applied with AND logic
-* Each additional filter further restricts results
+* 모든 필터는 AND 논리로 적용됩니다
+* 필터를 추가할수록 결과가 더 제한됩니다
-### Removing Filters
+### 필터 제거
-* Click the **X** on individual filter chips
-* Click **Clear all** to remove all filters
+* 개별 필터 칩의 **X**를 클릭합니다
+* 모든 필터를 제거하려면 **모두 지우기**를 클릭합니다
-## Sorting Data
+## 데이터 정렬
-Sorting determines the order records appear.
+정렬은 레코드가 표시되는 순서를 결정합니다.
-### Adding a Sort
+### 정렬 추가
-1. Click the **Sort** button in the toolbar
-2. Select the field to sort by
-3. Choose ascending (A-Z, 0-9) or descending (Z-A, 9-0)
-4. Click **Apply**
+1. 도구 모음에서 **정렬** 버튼을 클릭합니다
+2. 정렬할 필드를 선택합니다
+3. 오름차순(A-Z, 0-9) 또는 내림차순(Z-A, 9-0)을 선택합니다
+4. **적용**을 클릭합니다
-### Multiple Sorts
+### 다중 정렬
-Add multiple sort levels:
+여러 정렬 수준을 추가합니다:
-* First sort is primary
-* Subsequent sorts apply within groups of equal values
+* 첫 번째 정렬이 기본입니다
+* 이후 정렬은 동일한 값 그룹 내에서 적용됩니다
-### Quick Column Sorting
+### 빠른 열 정렬
-Click any column header to sort:
+정렬하려면 열 헤더를 클릭하세요:
-* First click: Ascending
-* Second click: Descending
-* Third click: Remove sort
+* 첫 번째 클릭: 오름차순
+* 두 번째 클릭: 내림차순
+* 세 번째 클릭: 정렬 제거
-## Saving Filter and Sort Settings
+## 필터 및 정렬 설정 저장
-Filters and sorts are saved with the view:
+필터와 정렬은 뷰와 함께 저장됩니다:
-1. Configure your filters and sorts
-2. Click **Save** to update the current view
-3. Or click **Save as new view** to create a variant
+1. 필터와 정렬을 구성합니다
+2. 현재 뷰를 업데이트하려면 **저장**을 클릭합니다
+3. 또는 변형을 만들려면 **새 뷰로 저장**을 클릭합니다
-## Related
+## 관련 항목
-* [Table Views](/l/ko/user-guide/views-pipelines/capabilities/table-views) — group by feature
-* [Views Overview](/l/ko/user-guide/views-pipelines/overview) — building and managing views
+* [테이블 뷰](/l/ko/user-guide/views-pipelines/capabilities/table-views) — 그룹화 기능
+* [뷰 개요](/l/ko/user-guide/views-pipelines/overview) — 뷰 생성 및 관리
diff --git a/packages/twenty-docs/l/ko/user-guide/views-pipelines/capabilities/kanban-views.mdx b/packages/twenty-docs/l/ko/user-guide/views-pipelines/capabilities/kanban-views.mdx
index fa616d2f3d..4954d9074c 100644
--- a/packages/twenty-docs/l/ko/user-guide/views-pipelines/capabilities/kanban-views.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/views-pipelines/capabilities/kanban-views.mdx
@@ -1,99 +1,99 @@
---
-title: Kanban Board Views
-description: Learn how to use Kanban views to visualize and manage your workflows.
+title: 칸반 보드 보기
+description: 칸반 보기를 사용하여 워크플로를 시각화하고 관리하는 방법을 알아보세요.
image: /images/user-guide/kanban-views/kanban.png
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-## About Kanban Views
+## 칸반 보기에 대하여
-Kanban views visually map out process flows, where each column stands for a distinct stage and each card represents a record.
+칸반 뷰는 각 열이 개별 단계를 나타내고 각 카드가 레코드를 나타내는 프로세스 흐름을 시각적으로 나타냅니다.
-## Move Cards between Stages
+## 단계 간 카드 이동
-You can move each card between stages as it goes through your workflow by dragging and dropping. To proceed, hold your click on a card and move it to the next stage.
+작업 흐름을 진행하면서 각 카드를 드래그 앤 드롭으로 단계 간에 이동할 수 있습니다. 계속하려면 카드를 클릭한 상태에서 다음 단계로 이동하세요.
-
+
-## Add and Delete Stages
+## 단계 추가 및 삭제
-You can tailor your workflow to suit your needs using stages, which represent a value in a Select Field:
+단계를 사용하여 워크플로우를 요구에 맞게 조정할 수 있으며, 각 단계는 선택 필드의 값을 나타냅니다.
-### Add Stages
+### 단계 추가
-To add a stage, access the Select field settings by navigating to Settings > Data Model, selecting your object, and then the field your Kanban board depends on.
+단계를 추가하려면 설정 > 데이터 모델로 이동하여 개체를 선택한 다음, 칸반 보드가 의존하는 필드를 선택하여 선택 필드 설정에 액세스하세요.
-
+
-### Remove Stages
+### 단계 제거
-To remove a stage, hover the stage name or the `⋮` icon, click `Edit from settings` in the Select field settings, and then click **Delete** next to the relevant stage.
+단계를 제거하려면 단계 이름 또는 `⋮` 아이콘 위로 마우스를 올린 다음, 선택 필드 설정에서 `설정에서 편집`을 클릭하고 해당 단계 옆의 **삭제**를 클릭하세요.
-## Display Fields
+## 필드 표시
-You can configure your Kanban board to display some fields and hide others. To hide a field, click on **Options** on the top right, then on **Fields** to bring up the list of options. Look for the field needed in the Hidden Fields section and click on the eye button to display the field.
+칸반 보드에서 일부 필드를 표시하고 다른 필드를 숨기도록 구성할 수 있습니다. 필드를 숨기려면 오른쪽 상단의 **옵션**을 클릭한 다음 **필드**를 클릭하여 옵션 목록을 표시합니다. 숨겨진 필드 섹션에서 필요한 필드를 찾아 눈 모양 버튼을 클릭하여 해당 필드를 표시하세요.
-You can also rearrange the order of fields by holding down the field name and dragging it to where you want it.
+필드명을 누른 상태로 끌어서 원하는 위치로 이동시키면 필드의 순서를 변경할 수 있습니다.
-## Compact View
+## 컴팩트 보기
-You can hide all the fields and get an overview of all records at a glance. To enable:
+모든 필드를 숨겨 모든 레코드를 한눈에 파악할 수 있습니다. 활성화하려면:
-1. Click **Options** on the top right
-2. Turn on the toggle for **Compact view**
+1. 오른쪽 상단의 **옵션**을 클릭하세요
+2. **Compact view** 토글을 켜세요
-## Column Aggregations
+## 열 집계
-Each column in a Kanban view can display aggregated values at the top, helping you understand your data at a glance.
+칸반 보기의 각 열은 상단에 집계 값을 표시할 수 있어 데이터를 한눈에 파악하는 데 도움이 됩니다.
-### Available Aggregations
+### 사용 가능한 집계
-| Aggregation | Description |
-| ----------- | --------------------------------------------- |
-| **Count** | Number of records in the column |
-| **Sum** | Total of a numeric field (e.g., deal amounts) |
-| **Average** | Average value of a numeric field |
-| **Min** | Lowest value |
-| **Max** | Highest value |
+| 집계 | 설명 |
+| ------ | ------------------- |
+| **개수** | 해당 열의 레코드 수 |
+| **합계** | 숫자 필드의 총합(예: 거래 금액) |
+| **평균** | 숫자 필드의 평균값 |
+| **최소** | 최솟값 |
+| **최대** | 최댓값 |
-### Configuring Aggregations
+### 집계 구성
-1. Click on the number displayed next to the Stage value, at the top of a column
-2. Select the aggregation type
-3. Choose the field to aggregate
+1. 열 상단의 단계 값 옆에 표시된 숫자를 클릭하세요
+2. 집계 유형을 선택하세요
+3. 집계할 필드를 선택하세요
-**Example:** Show total deal value per stage by aggregating the Amount field with Sum.
+**예시:** Amount를 Sum으로 집계하여 단계별 총 거래 금액을 표시합니다.
-## When to Use Kanban Views
+## 칸반 보기를 사용할 때
-Kanban views are ideal for:
+칸반 보기는 다음에 적합합니다:
-* **Sales pipelines**: Track deals through stages from lead to close
-* **Project management**: Monitor tasks through workflow states
-* **Recruitment**: Track candidates through hiring stages
-* **Any staged process**: Visualize any workflow with defined stages
+* **영업 파이프라인**: 리드부터 계약 성사까지 단계별로 거래를 추적합니다
+* **프로젝트 관리**: 워크플로 상태를 통해 작업을 모니터링합니다
+* **채용**: 채용 단계 전반에서 지원자를 추적합니다
+* **단계가 있는 모든 프로세스**: 정의된 단계가 있는 워크플로를 시각화합니다
-## Best Practices
+## 모범 사례
-### Organize Your Stages
+### 단계 정리
-* **Limit stages**: 5-7 stages is ideal for visibility
-* **Clear naming**: Use descriptive stage names
-* **Logical order**: Arrange stages in process order
+* **단계 수 제한**: 가시성을 위해 5~7개 단계가 이상적입니다
+* **명확한 이름 지정**: 설명적인 단계 이름을 사용하세요
+* **논리적 순서**: 프로세스 순서대로 단계를 배열하세요
-### Optimize Card Display
+### 카드 표시 최적화
-* **Show key fields**: Display only the most important information
-* **Use compact view**: For high-level overviews
-* **Color coding**: Use stage colors to quickly identify status
+* **핵심 필드 표시**: 가장 중요한 정보만 표시하세요
+* **컴팩트 뷰 사용**: 상위 수준 개요에 적합합니다
+* **색상 구분**: 상태를 빠르게 파악할 수 있도록 단계 색상을 사용하세요
-### Maintain Data Quality
+### 데이터 품질 유지
-* **Update regularly**: Keep cards moving through stages
-* **Archive completed**: Move closed items out of active view
-* **Review stale cards**: Follow up on cards stuck in stages
+* **정기적으로 업데이트**: 카드가 단계별로 진행되도록 유지하세요
+* **완료 항목 보관**: 종료된 항목을 활성 뷰에서 제외하세요
+* **오래된 카드 검토**: 단계에 정체된 카드에 후속 조치를 취하세요
diff --git a/packages/twenty-docs/l/ko/user-guide/views-pipelines/capabilities/table-views.mdx b/packages/twenty-docs/l/ko/user-guide/views-pipelines/capabilities/table-views.mdx
index e9f1b6d987..f35a45cf65 100644
--- a/packages/twenty-docs/l/ko/user-guide/views-pipelines/capabilities/table-views.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/views-pipelines/capabilities/table-views.mdx
@@ -1,64 +1,64 @@
---
-title: Table Views
-description: Display your data in a spreadsheet-like list format.
+title: 테이블 뷰
+description: 스프레드시트와 유사한 목록 형식으로 데이터를 표시하세요.
---
-## About Table Views
+## 테이블 뷰에 대하여
-Table views display records in rows with customizable columns—like a spreadsheet. This is the default view type for most objects.
+테이블 보기는 스프레드시트처럼 사용자 지정 가능한 열을 갖춘 행으로 레코드를 표시합니다. 대부분의 개체에서 기본 보기 유형입니다.
-## Features
+## 기능
-### Column Configuration
+### 열 구성
-* Show or hide columns (fields)
-* Resize column widths
-* Reorder columns by dragging
+* 열(필드) 표시 또는 숨기기
+* 열 너비 조정
+* 드래그하여 열 재정렬
-### Group By a Select Field
+### 선택 유형 필드로 그룹화
-Organize records into collapsible groups based on a field of select type.
+선택 유형 필드를 기준으로 레코드를 접을 수 있는 그룹으로 구성하세요.
-1. Click **Options**
-2. Select **Group**
-3. Choose a Select field
-4. Configure group order under **Options → Group → Sort**:
- * **Alphabetical** or **Reverse alphabetical**
- * **Manual order**: Drag groups under "Visible groups" to reorder
- * Click the **eye icon** next to a group to hide it
+1. **Options**를 클릭하세요
+2. **Group**을 선택하세요
+3. 선택 필드를 선택하세요
+4. **Options → Group → Sort**에서 그룹 순서를 설정하세요:
+ * **Alphabetical** 또는 **Reverse alphabetical**
+ * **Manual order**: "Visible groups" 아래에서 그룹을 드래그해 순서를 변경하세요
+ * 그룹 옆의 **눈 아이콘**을 클릭하여 숨기세요
-**Use cases:**
+**사용 사례:**
-* Group Company by Type
-* Group Opportunities by Stage
-* Group Tasks by Status
+* 회사를 유형별로 그룹화
+* 영업 기회를 단계별로 그룹화
+* 작업을 상태별로 그룹화
- **For best performance, limit to 10-15 visible groups per view.** If you need more groups, consider using a Dashboard instead.
+ **최상의 성능을 위해 표시되는 그룹을 10~15개로 제한하세요.** 더 필요하다면 대신 대시보드를 사용하는 것을 고려하세요.
-### Column Widths
+### 열 너비
-Resize columns to show more or less content:
+더 많거나 더 적은 콘텐츠를 표시하도록 열 너비를 조정하세요:
-1. Hover between two column headers
-2. Click and drag the column border
-3. Release to set the new width
+1. 두 열 머리글 사이에 마우스를 올리세요
+2. 열 경계를 클릭하여 드래그하세요
+3. 마우스를 놓으면 새 너비가 설정됩니다
-## When to Use Table Views
+## 테이블 보기를 사용할 때
-Table views work best for:
+테이블 보기는 다음에 가장 적합합니다:
-* **Browsing large datasets** — scan many records quickly
-* **Data entry** — edit multiple records efficiently
-* **Detailed analysis** — see many fields at once
-* **Sorting and filtering** — find specific records
+* **대용량 데이터셋 탐색** — 많은 레코드를 빠르게 훑어보기
+* **데이터 입력** — 여러 레코드를 효율적으로 편집
+* **자세한 분석** — 많은 필드를 한 번에 확인
+* **정렬 및 필터링** — 특정 레코드를 찾기
-## Related
+## 관련 항목
-* [Fields and Columns](/l/ko/user-guide/views-pipelines/capabilities/fields-and-columns) — configuring which fields to display
-* [Filters and Sorting](/l/ko/user-guide/views-pipelines/capabilities/filters-and-sorting) — narrowing down records
+* [필드 및 열](/l/ko/user-guide/views-pipelines/capabilities/fields-and-columns) — 표시할 필드를 구성하기
+* [필터 및 정렬](/l/ko/user-guide/views-pipelines/capabilities/filters-and-sorting) — 레코드 범위 좁히기
diff --git a/packages/twenty-docs/l/ko/user-guide/views-pipelines/capabilities/view-settings.mdx b/packages/twenty-docs/l/ko/user-guide/views-pipelines/capabilities/view-settings.mdx
index 552f4ef806..25df099b1b 100644
--- a/packages/twenty-docs/l/ko/user-guide/views-pipelines/capabilities/view-settings.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/views-pipelines/capabilities/view-settings.mdx
@@ -1,74 +1,74 @@
---
-title: View Settings
-description: Manage view visibility, naming, icons, and organization.
+title: 보기 설정
+description: 보기의 가시성, 이름, 아이콘 및 구성을 관리하세요.
---
-## View Visibility
+## 뷰 가시성
-Control who can see your custom views.
+사용자 지정 보기를 누가 볼 수 있는지 제어하세요.
-### Visibility Options
+### 가시성 옵션
-| Setting | Who Can See |
-| ------------- | --------------------- |
-| **Workspace** | All workspace members |
-| **Unlisted** | Only you |
+| 설정 | 볼 수 있는 대상 |
+| ---------- | ------------ |
+| **워크스페이스** | 모든 워크스페이스 멤버 |
+| **비공개** | 본인만 |
-### Changing Visibility
+### 가시성 변경
-1. Open the view
-2. Click **Options → Visibility**
-3. Select **Workspace** or **Unlisted**
+1. 보기를 여세요.
+2. **Options → Visibility**를 클릭하세요.
+3. **워크스페이스** 또는 **비공개**를 선택하세요.
- The default "All [Object Name]" views cannot have their visibility changed.
+ 기본 "All [Object Name]" 보기는 가시성을 변경할 수 없습니다.
-## Rename a View
+## 보기 이름 변경
-1. Open the view dropdown
-2. Click the **⋮** menu next to the view
-3. Select **Edit**
-4. Enter the new name
+1. 보기 드롭다운 메뉴를 여세요.
+2. 보기 옆의 **⋮** 메뉴를 클릭하세요.
+3. **Edit**을 선택하세요.
+4. 새 이름을 입력하세요.
-## Change View Icon
+## 보기 아이콘 변경
-1. Open the view dropdown
-2. Click the **⋮** menu next to the view
-3. Select **Edit**
-4. Click the icon to change it
+1. 보기 드롭다운 메뉴를 여세요.
+2. 보기 옆의 **⋮** 메뉴를 클릭하세요.
+3. **Edit**을 선택하세요.
+4. 아이콘을 클릭하여 변경하세요.
-## Reorder Views
+## 보기 재정렬
-Change the order views appear in the dropdown:
+드롭다운에 표시되는 보기의 순서를 변경하려면:
-1. Open the view dropdown
-2. Drag views by their handle
-3. Drop in the desired position
-4. Order saves automatically
+1. 보기 드롭다운 메뉴를 여세요.
+2. 핸들을 이용해 보기를 드래그하세요.
+3. 원하는 위치에 놓으세요.
+4. 순서는 자동으로 저장됩니다.
-## Favorites
+## 즐겨찾기
-Pin frequently used views for quick access:
+빠른 액세스를 위해 자주 사용하는 보기를 고정하세요:
-1. Open the view dropdown
-2. Click the **⋮** menu next to a view
-3. Select **Add to favorites**
+1. 보기 드롭다운 메뉴를 여세요.
+2. 보기 옆의 **⋮** 메뉴를 클릭하세요.
+3. **Add to favorites**를 선택하세요.
-Favorited views appear in a dedicated section for easy access.
+즐겨찾기에 추가된 보기는 손쉽게 액세스할 수 있도록 전용 섹션에 표시됩니다.
-## Delete a View
+## 보기 삭제
-1. Open the view dropdown
-2. Click the **⋮** menu next to the view
-3. Select **Delete**
-4. Confirm deletion
+1. 보기 드롭다운 메뉴를 여세요.
+2. 보기 옆의 **⋮** 메뉴를 클릭하세요.
+3. **Delete**를 선택하세요.
+4. 삭제를 확인하세요.
- Deleted views cannot be recovered.
+ 삭제된 보기는 복구할 수 없습니다.
-## Related
+## 관련 항목
-* [Views Overview](/l/ko/user-guide/views-pipelines/overview) — creating views
-* [How to Restrict Access](/l/ko/user-guide/views-pipelines/how-tos/restrict-access-to-your-view) — step-by-step guide
+* [뷰 개요](/l/ko/user-guide/views-pipelines/overview) — 뷰 생성
+* [액세스를 제한하는 방법](/l/ko/user-guide/views-pipelines/how-tos/restrict-access-to-your-view) — 단계별 가이드
diff --git a/packages/twenty-docs/l/ko/user-guide/views-pipelines/how-tos/create-a-calendar-view-for-tasks-due.mdx b/packages/twenty-docs/l/ko/user-guide/views-pipelines/how-tos/create-a-calendar-view-for-tasks-due.mdx
index 818b23ede2..9441cc1784 100644
--- a/packages/twenty-docs/l/ko/user-guide/views-pipelines/how-tos/create-a-calendar-view-for-tasks-due.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/views-pipelines/how-tos/create-a-calendar-view-for-tasks-due.mdx
@@ -1,61 +1,61 @@
---
-title: Create a Calendar View for Tasks Due
-description: Visualize your tasks and deadlines on a calendar.
+title: 마감 예정 작업을 위한 캘린더 보기 만들기
+description: 캘린더에서 작업과 마감일을 시각화하세요.
---
-## Prerequisites
+## 사전 준비
-Your Tasks object needs a **Due Date** field (Date or Date & Time type).
+Tasks 객체에는 **Due Date** 필드가 필요합니다(Date 또는 Date & Time 유형).
-## Steps
+## 단계
-1. Navigate to **Tasks**
-2. Click the view dropdown → **+ Add view**
-3. Name your view (e.g., "Tasks Calendar")
-4. Click **Create**
-5. Click **Options** and select **Calendar** as the layout
-6. Choose **Due Date** as the date field
-7. Click **Save**
+1. **Tasks**로 이동하세요
+2. 뷰 드롭다운에서 → **+ 뷰 추가**를 클릭하세요
+3. 뷰의 이름을 지정하세요(예: "Tasks Calendar")
+4. **Create**를 클릭하세요
+5. **Options**를 클릭한 다음 레이아웃으로 **Calendar**를 선택하세요
+6. 날짜 필드로 **Due Date**를 선택하세요
+7. **저장** 클릭
-## Configure Your Calendar
+## 캘린더 구성
-### Display Fields on Events
+### 이벤트에 표시할 필드
-1. Click **Options → Fields**
-2. Click the **eye icon** to show/hide fields
-3. Drag to reorder
+1. **Options → Fields**를 클릭하세요
+2. **눈 아이콘**을 클릭하여 필드를 표시/숨기세요
+3. 드래그하여 순서를 변경합니다
-Recommended fields to display:
+표시할 권장 필드:
-* **Title** — task name
-* **Assignee** — who's responsible
-* **Status** — current progress
+* **Title** — 작업 이름
+* **Assignee** — 담당자
+* **Status** — 현재 진행 상태
-### Filter Your Calendar
+### 캘린더 필터링
-Create focused views:
+집중된 보기 만들기:
-* **My Tasks**: Filter by Assignee = Me
-* **This Week**: Filter by Due Date = This week
-* **Overdue**: Filter by Due Date < Today, Status ≠ Done
+* **My Tasks**: Assignee = Me로 필터링
+* **This Week**: Due Date = This week으로 필터링
+* **기한 초과**: 마감일 < 오늘, 상태 ≠ 완료로 필터링
-## Other Calendar Use Cases
+## 기타 캘린더 사용 사례
-| Object | Date Field | Purpose |
-| ------------- | ---------- | ------------------------- |
-| Opportunities | Close Date | Track expected closes |
-| Custom Events | Event Date | Plan activities |
-| Projects | Deadline | Monitor project timelines |
+| 객체 | 날짜 필드 | 목적 |
+| ---------- | ------ | ------------- |
+| 기회 | 마감일 | 예상 마감일을 추적 |
+| 사용자 지정 이벤트 | 이벤트 날짜 | 활동을 계획하기 |
+| 프로젝트 | 마감일 | 프로젝트 일정을 모니터링 |
-## Tips
+## 팁
-* **Review weekly**: Start each week by checking your calendar view
-* **Combine with table view**: Use calendar for overview, table for details
-* **Set visibility**: Keep personal task calendars as Unlisted
+* **주간 검토**: 매주 캘린더 뷰를 확인하는 것으로 시작하세요
+* **테이블 뷰와 함께 사용**: 개요는 캘린더, 세부 정보는 테이블을 사용하세요
+* **가시성 설정**: 개인 작업 캘린더는 Unlisted로 유지하세요
-## Related
+## 관련 항목
-* [Calendar View](/l/ko/user-guide/views-pipelines/capabilities/calendar-view) — all calendar features
-* [Filters and Sorting](/l/ko/user-guide/views-pipelines/capabilities/filters-and-sorting) — filter your calendar
+* [캘린더 뷰](/l/ko/user-guide/views-pipelines/capabilities/calendar-view) — 모든 캘린더 기능
+* [필터 및 정렬](/l/ko/user-guide/views-pipelines/capabilities/filters-and-sorting) — 캘린더 필터링
diff --git a/packages/twenty-docs/l/ko/user-guide/views-pipelines/how-tos/create-a-kanban-view-for-projects.mdx b/packages/twenty-docs/l/ko/user-guide/views-pipelines/how-tos/create-a-kanban-view-for-projects.mdx
index 664c478dde..2854346481 100644
--- a/packages/twenty-docs/l/ko/user-guide/views-pipelines/how-tos/create-a-kanban-view-for-projects.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/views-pipelines/how-tos/create-a-kanban-view-for-projects.mdx
@@ -1,80 +1,80 @@
---
-title: Create a Kanban View for Projects
-description: Track projects through stages using a visual board.
+title: 프로젝트를 위한 칸반 보기 만들기
+description: 시각적 보드를 사용해 단계별로 프로젝트를 추적하세요.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-Use a Kanban view to visualize your projects (or any object with stages) as cards moving through columns.
+칸반 보기를 사용하여 프로젝트(또는 단계가 있는 모든 객체)를 열을 따라 이동하는 카드로 시각화하세요.
-
+
-## Prerequisites
+## 사전 준비
-Your object needs a **Select field** to use as columns (e.g., Status, Stage, Phase).
+열로 사용할 **Select 필드**가 객체에 필요합니다(예: Status, Stage, Phase).
-If you don't have one:
+없다면:
-1. Go to **Settings → Data Model**
-2. Select your object
-3. Add a Select field with your stage options
+1. **설정 → 데이터 모델**로 이동
+2. 객체를 선택하세요
+3. 단계 옵션이 있는 Select 필드를 추가하세요
-## Steps
+## 단계
-1. Navigate to your object (e.g., Projects, Tasks)
-2. Click the view dropdown → **+ Add view**
-3. Name your view (e.g., "Project Board")
-4. Click **Create**
-5. Click **Options** and select **Kanban** as the layout
-6. The view uses your Select field for columns automatically
-7. Click **Save**
+1. 객체로 이동하세요(예: 프로젝트, 작업)
+2. 뷰 드롭다운에서 → **+ 뷰 추가**를 클릭하세요
+3. 뷰의 이름을 지정하세요(예: "Project Board")
+4. **Create**를 클릭하세요
+5. **Options**를 클릭한 다음 레이아웃으로 **Kanban**을 선택하세요
+6. 뷰는 Select 필드를 열로 자동으로 사용합니다
+7. **저장** 클릭
-## Configure Your Board
+## 보드 구성
-### Show Key Fields on Cards
+### 카드에 주요 필드 표시
-1. Click **Options → Fields**
-2. Find fields in the "Hidden Fields" section
-3. Click the **eye icon** to display them on cards
-4. Drag to reorder
+1. **Options → Fields**를 클릭합니다
+2. "Hidden Fields" 섹션에서 필드를 찾으세요
+3. **눈 아이콘**을 클릭하여 카드에 표시합니다
+4. 드래그하여 순서를 변경합니다
-### Enable Compact View
+### 컴팩트 보기 활성화
-For a high-level overview:
+상위 수준에서 확인하려면:
-1. Click **Options**
-2. Turn on **Compact view**
+1. **Options**를 클릭하세요
+2. **Compact view** 토글을 켜세요
-Cards show only the record name.
+카드에는 레코드 이름만 표시됩니다.
-### Add Aggregations
+### 집계 추가
-Show counts or totals at the top of each column:
+각 열 상단에 개수 또는 합계를 표시합니다:
-1. Click the number next to a column name
-2. Select an aggregation (Count, Sum, etc.)
-3. Choose a field if needed
+1. 열 이름 옆의 숫자를 클릭하세요
+2. 집계(Count, Sum 등)를 선택하세요
+3. 필요하면 필드를 선택하세요
-## Moving Cards
+## 카드 이동
-Drag and drop cards between columns to update their status.
+열 사이로 카드를 드래그 앤 드롭하여 상태를 업데이트하세요.
-
+
-## Example: Task Board
+## 예시: 작업 보드
-| Column (Status) | Cards |
-| --------------- | ----------------- |
-| **To Do** | New tasks |
-| **In Progress** | Active work |
-| **Review** | Awaiting approval |
-| **Done** | Completed |
+| 열(상태) | 카드 |
+| -------- | -------- |
+| **할 일** | 새 작업 |
+| **진행 중** | 진행 중인 작업 |
+| **검토** | 승인 대기 중 |
+| **완료** | 완료됨 |
-## Related
+## 관련 항목
-* [Kanban Views](/l/ko/user-guide/views-pipelines/capabilities/kanban-views) — aggregations, compact view, stages
-* [How to Set Up a Sales Pipeline](/l/ko/user-guide/views-pipelines/how-tos/set-up-a-sales-pipeline) — Kanban for Opportunities
+* [칸반 보기](/l/ko/user-guide/views-pipelines/capabilities/kanban-views) — 집계, 컴팩트 보기, 단계
+* [영업 파이프라인 설정 방법](/l/ko/user-guide/views-pipelines/how-tos/set-up-a-sales-pipeline) — 기회용 칸반
diff --git a/packages/twenty-docs/l/ko/user-guide/views-pipelines/how-tos/create-a-table-view-with-grouping.mdx b/packages/twenty-docs/l/ko/user-guide/views-pipelines/how-tos/create-a-table-view-with-grouping.mdx
index 4172dc7fea..cb7cd779db 100644
--- a/packages/twenty-docs/l/ko/user-guide/views-pipelines/how-tos/create-a-table-view-with-grouping.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/views-pipelines/how-tos/create-a-table-view-with-grouping.mdx
@@ -1,51 +1,51 @@
---
-title: Create a Table View with Grouping
-description: Organize your records into collapsible groups by field value.
+title: 그룹화된 테이블 뷰 만들기
+description: 필드 값별로 레코드를 접을 수 있는 그룹으로 구성하세요.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-Group your table view by a Select field to organize records into collapsible sections.
+테이블 뷰를 Select 필드로 그룹화하여 레코드를 접을 수 있는 섹션으로 구성하세요.
-## Steps
+## 단계
-1. Navigate to the object (People, Companies, etc.)
-2. Click the view dropdown → **+ Add view**
-3. Name your view (e.g., "Companies by Type")
-4. Click **Create**
-5. Click **Options → Group**
-6. Choose a Select field to group by
-7. Click **Save**
+1. 해당 객체(사람, 회사 등)로 이동합니다.
+2. 뷰 드롭다운에서 → **+ 뷰 추가**를 클릭합니다.
+3. 뷰의 이름을 지정합니다(예: "유형별 회사").
+4. **만들기**를 클릭합니다.
+5. **옵션 → 그룹**을 클릭합니다.
+6. 그룹 기준이 될 Select 필드를 선택합니다.
+7. **저장** 클릭
-## Configure Group Order
+## 그룹 순서 설정
-Under **Options → Group → Sort**, choose how groups are ordered:
+**옵션 → 그룹 → 정렬**에서 그룹의 정렬 방식을 선택합니다:
-| Option | Description |
-| ------------------------ | --------------------------------------------- |
-| **Alphabetical** | A to Z |
-| **Reverse alphabetical** | Z to A |
-| **Manual order** | Drag groups to reorder under "Visible groups" |
+| 옵션 | 설명 |
+| ---------- | -------------------------------- |
+| **알파벳순** | A부터 Z |
+| **알파벳 역순** | Z부터 A |
+| **수동 정렬** | "표시되는 그룹" 아래에서 그룹을 끌어 순서를 변경하세요. |
-Click the **eye icon** next to a group to hide it from the view.
+뷰에서 숨기려면 그룹 옆의 **눈 아이콘**을 클릭하세요.
- **For best performance, limit to 10-15 visible groups.** If you need more, consider using a Dashboard instead.
+ **최상의 성능을 위해 표시되는 그룹을 10~15개로 제한하세요.** 더 필요하다면 대신 대시보드를 사용하는 것을 고려하세요.
-## Example: Companies by Industry
+## 예: 업종별 회사
-1. Go to **Companies**
-2. Create a new view named "By Industry"
-3. Click **Options → Group**
-4. Select the **Industry** field
-5. Save
+1. **회사**로 이동합니다.
+2. "업종별"이라는 새 뷰를 만듭니다.
+3. **옵션 → 그룹**을 클릭합니다.
+4. **업종** 필드를 선택합니다.
+5. 저장
-Now your companies are organized by industry, making it easy to focus on one segment at a time.
+이제 회사가 업종별로 정리되어 한 번에 한 세그먼트에 집중하기가 쉬워집니다.
-## Related
+## 관련 항목
-* [Table Views](/l/ko/user-guide/views-pipelines/capabilities/table-views) — all table view features
-* [Filters and Sorting](/l/ko/user-guide/views-pipelines/capabilities/filters-and-sorting) — combine grouping with filters
+* [테이블 뷰](/l/ko/user-guide/views-pipelines/capabilities/table-views) — 모든 테이블 뷰 기능
+* [필터 및 정렬](/l/ko/user-guide/views-pipelines/capabilities/filters-and-sorting) — 그룹화를 필터와 함께 사용하기
diff --git a/packages/twenty-docs/l/ko/user-guide/views-pipelines/how-tos/restrict-access-to-your-view.mdx b/packages/twenty-docs/l/ko/user-guide/views-pipelines/how-tos/restrict-access-to-your-view.mdx
index 1ad0930387..d3b78056b9 100644
--- a/packages/twenty-docs/l/ko/user-guide/views-pipelines/how-tos/restrict-access-to-your-view.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/views-pipelines/how-tos/restrict-access-to-your-view.mdx
@@ -1,32 +1,32 @@
---
-title: Restrict Access to Your View
-description: Control who can see your custom views.
+title: 내 보기에 대한 액세스 제한하기
+description: 사용자 지정 보기를 누가 볼 수 있는지 제어하세요.
---
-Each view (except the default "All [Object Name]" views) has its own visibility setting.
+각 보기(기본 "All [Object Name]" 보기 제외)에는 자체 가시성 설정이 있습니다.
-## Steps
+## 단계
-1. Open the view you want to restrict
-2. Click **Options** in the top right
-3. Click **Visibility**
-4. Select **Unlisted**
+1. 제한하려는 보기를 엽니다
+2. 오른쪽 상단의 **옵션**을 클릭합니다
+3. **가시성**을 클릭합니다
+4. **비공개**를 선택합니다
-Your view is now visible only to you.
+이제 보기는 본인에게만 표시됩니다.
-## Visibility Options
+## 가시성 옵션
-| Setting | Who Can See |
-| ------------- | --------------------- |
-| **Workspace** | All workspace members |
-| **Unlisted** | Only you |
+| 설정 | 볼 수 있는 대상 |
+| ---------- | ------------ |
+| **워크스페이스** | 모든 워크스페이스 멤버 |
+| **비공개** | 본인만 |
-## Notes
+## 노트
-* The default "All [Object Name]" views cannot be made unlisted
-* Unlisted views don't appear in other users' view dropdowns
-* You can change visibility back to Workspace at any time
+* 기본 "All [Object Name]" 보기는 비공개로 설정할 수 없습니다
+* 비공개 보기는 다른 사용자의 보기 드롭다운에 표시되지 않습니다
+* 언제든 가시성을 워크스페이스로 되돌릴 수 있습니다
-## Related
+## 관련
-* [View Settings](/l/ko/user-guide/views-pipelines/capabilities/view-settings) — all view configuration options
+* [보기 설정](/l/ko/user-guide/views-pipelines/capabilities/view-settings) — 모든 보기 구성 옵션
diff --git a/packages/twenty-docs/l/ko/user-guide/views-pipelines/how-tos/set-up-a-sales-pipeline.mdx b/packages/twenty-docs/l/ko/user-guide/views-pipelines/how-tos/set-up-a-sales-pipeline.mdx
index 9b2c7072f8..d08d2b1e71 100644
--- a/packages/twenty-docs/l/ko/user-guide/views-pipelines/how-tos/set-up-a-sales-pipeline.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/views-pipelines/how-tos/set-up-a-sales-pipeline.mdx
@@ -1,85 +1,85 @@
---
-title: Set Up a Sales Pipeline
-description: Configure your sales pipeline to track opportunities through stages.
+title: 영업 파이프라인 설정
+description: 영업 파이프라인을 구성하여 단계별로 기회를 추적하세요.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-A sales pipeline in Twenty is a Kanban view of your Opportunities object, where each column represents a stage in your sales process.
+Twenty의 영업 파이프라인은 기회 객체의 칸반 보기로, 각 열은 영업 프로세스의 단계를 나타냅니다.
-## Step 1: Configure Your Stages
+## 1단계: 단계 구성
-Stages are defined in the Opportunities object's **Stage** field.
+단계는 기회 객체의 **Stage** 필드에서 정의됩니다.
-1. Go to **Settings → Data Model**
-2. Select **Opportunities**
-3. Find and click the **Stage** field
-4. Add, remove, or rename stages to match your process
+1. **설정 → 데이터 모델**로 이동
+2. **Opportunities**를 선택하세요
+3. **Stage** 필드를 찾아 클릭하세요
+4. 프로세스에 맞게 단계를 추가, 제거 또는 이름 변경하세요
-
+
-### Recommended Stages
+### 권장 단계
-| Stage | Purpose |
-| --------------- | ----------------------------------- |
-| **New** | Fresh opportunities just identified |
-| **Qualified** | Confirmed as a good fit |
-| **Meeting** | Engaged in discussions |
-| **Proposal** | Proposal sent |
-| **Negotiation** | Working on terms |
-| **Closed Won** | Deal successful |
-| **Closed Lost** | Deal unsuccessful |
+| 단계 | 목적 |
+| --------------- | ------------ |
+| **New** | 방금 식별된 신규 기회 |
+| **Qualified** | 적합한 것으로 확인됨 |
+| **Meeting** | 논의 진행 중 |
+| **Proposal** | 제안서 발송됨 |
+| **Negotiation** | 조건 협의 중 |
+| **Closed Won** | 거래 성사 |
+| **Closed Lost** | 거래 실패 |
- **5-7 stages is optimal.** Too many stages makes the pipeline hard to scan; too few loses visibility into deal progress.
+ **5-7개 단계가 최적입니다.** 단계가 너무 많으면 파이프라인을 한눈에 파악하기 어렵고, 너무 적으면 거래 진행 상황의 가시성이 떨어집니다.
-## Step 2: Create a Pipeline View
+## 2단계: 파이프라인 보기 만들기
-1. Go to **Opportunities**
-2. Click the view dropdown → **+ Add view**
-3. Name it "Sales Pipeline"
-4. Click **Create**
-5. Open **Options** and select **Kanban** as the layout
+1. **Opportunities**로 이동
+2. 뷰 드롭다운에서 → **+ 뷰 추가**를 클릭하세요
+3. "Sales Pipeline"으로 이름을 지정하세요
+4. **Create**를 클릭하세요
+5. **Options**을 열고 레이아웃으로 **Kanban**을 선택하세요
-The view automatically uses the Stage field for columns.
+해당 보기는 열로 Stage 필드를 자동으로 사용합니다.
-## Step 3: Configure Your View
+## 3단계: 보기 구성
-### Show Key Fields
+### 핵심 필드 표시
-1. Click **Options → Fields**
-2. Look for fields in the "Hidden Fields" section
-3. Click the **eye icon** to display: Company, Amount, Close Date, Owner
+1. **Options → Fields**를 클릭하세요
+2. "Hidden Fields" 섹션에서 필드를 찾으세요
+3. 눈 모양 아이콘을 클릭하여 다음을 표시하세요: Company, Amount, Close Date, Owner
-### Enable Aggregations
+### 집계 사용
-Show totals at the top of each column:
+각 열 상단에 합계를 표시합니다:
-1. Click the number displayed next to a Stage name at the top of a column
-2. Select the aggregation type (Count, Sum, Average, etc.)
-3. Choose the field to aggregate (e.g., Amount)
+1. 열 상단의 Stage 이름 옆에 표시된 숫자를 클릭하세요
+2. 집계 유형(Count, Sum, Average 등)을 선택하세요
+3. 집계할 필드(예: Amount)를 선택하세요
-**Example:** Show total deal value per stage by aggregating Amount with Sum.
+**예시:** Amount를 Sum으로 집계하여 단계별 총 거래 금액을 표시합니다.
-### Use Compact View (Optional)
+### Compact View 사용(선택 사항)
-For a high-level overview with minimal card content:
+카드 내용을 최소화하고 한눈에 개요를 보려면:
-1. Click **Options**
-2. Turn on the toggle for **Compact view**
+1. **Options**를 클릭하세요
+2. **Compact view** 토글을 켜세요
-## Step 4: Create Personal and Team Views
+## 4단계: 개인 및 팀 보기 만들기
### "My Pipeline"
* **Filter**: Owner = Me
-* **Visibility**: Unlisted (personal view)
+* **Visibility**: Unlisted (개인용 보기)
### "Team Pipeline"
-* **Filter**: None (show all)
-* **Visibility**: Workspace (shared view)
+* **Filter**: None (모두 표시)
+* **Visibility**: Workspace (공유 보기)
### "Closing This Month"
@@ -87,34 +87,34 @@ For a high-level overview with minimal card content:
* **Filter**: Close Date = This month, Stage ≠ Closed Won, Stage ≠ Closed Lost
* **Sort**: Close Date ascending
-## Working with Opportunities
+## 기회 다루기
-### Creating Opportunities
+### 기회 만들기
-* Click **+ New** in the Opportunities view
-* Or click **+** in a specific stage column
+* Opportunities 보기에서 **+ New**를 클릭하세요
+* 또는 특정 단계 열에서 \*\*+\*\*를 클릭하세요
-### Moving Through Stages
+### 단계 진행
-Drag and drop opportunity cards between columns to update their stage.
+열 사이로 기회 카드를 드래그 앤 드롭하여 단계를 업데이트하세요.
-
+
-## Best Practices
+## 모범 사례
-### Pipeline Hygiene
+### 파이프라인 위생 관리
-* Update deals daily as they progress
-* Move or close stale deals promptly
-* Keep close dates realistic
+* 거래 진행 상황을 매일 업데이트하세요
+* 오래된 거래는 신속히 이동하거나 종료하세요
+* 종결일을 현실적으로 유지하세요
-### Stage Discipline
+### 단계 규율
-* Define clear criteria for each stage
-* Move deals promptly when criteria are met
-* Don't let deals sit in stages too long
+* 각 단계에 대한 명확한 기준을 정의하세요
+* 기준이 충족되면 거래를 신속히 이동하세요
+* 거래가 단계에 너무 오래 머물지 않도록 하세요
-## Related
+## 관련 항목
-* [Kanban Views](/l/ko/user-guide/views-pipelines/capabilities/kanban-views) — aggregations and compact view
-* [Filters and Sorting](/l/ko/user-guide/views-pipelines/capabilities/filters-and-sorting) — creating filtered views
+* [칸반 보기](/l/ko/user-guide/views-pipelines/capabilities/kanban-views) — 집계 및 컴팩트 보기
+* [필터 및 정렬](/l/ko/user-guide/views-pipelines/capabilities/filters-and-sorting) — 필터된 보기 만들기
diff --git a/packages/twenty-docs/l/ko/user-guide/views-pipelines/how-tos/show-expected-amount-in-pipeline.mdx b/packages/twenty-docs/l/ko/user-guide/views-pipelines/how-tos/show-expected-amount-in-pipeline.mdx
index fdfeddb5f8..e313a96671 100644
--- a/packages/twenty-docs/l/ko/user-guide/views-pipelines/how-tos/show-expected-amount-in-pipeline.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/views-pipelines/how-tos/show-expected-amount-in-pipeline.mdx
@@ -1,149 +1,149 @@
---
-title: Show Expected Amount in Your Pipeline
-description: Calculate and display weighted deal values based on stage probability.
+title: 파이프라인에 예상 금액 표시{
+description: 단계별 확률을 기준으로 거래 금액에 가중치를 적용하여 계산하고 표시합니다.
---
-The Expected Amount is a calculated value: **Amount × Probability**. This helps you forecast revenue by weighting deals based on how likely they are to close.
+예상 금액은 계산된 값입니다: **Amount × Probability**. 이는 거래의 성사 가능성에 따른 가중치를 적용해 매출을 예측하는 데 도움이 됩니다.
- This is an example of creating [Formula Fields](/l/ko/user-guide/workflows/how-tos/crm-automations/formula-fields) using workflows.
+ 이는 워크플로를 사용하여 [수식 필드](/l/ko/user-guide/workflows/how-tos/crm-automations/formula-fields)를 만드는 예시입니다.
-This guide walks you through setting up the custom fields and workflows needed to calculate and display expected amounts in your pipeline.
+이 가이드는 파이프라인에서 예상 금액을 계산하고 표시하는 데 필요한 사용자 정의 필드와 워크플로를 설정하는 방법을 안내합니다.
-## Step 1: Create Custom Fields
+## 1단계: 사용자 정의 필드 생성
-You need two custom fields on the Opportunities object.
+Opportunities 객체에 사용자 정의 필드 두 개가 필요합니다.
-### Create the Probability Field
+### Probability 필드 만들기
-1. Go to **Settings → Data Model → Opportunities**
-2. Click **+ Add Field**
-3. Configure:
- * **Name**: Probability
- * **Type**: Number
- * **Description**: Stage-based probability (0-100%)
-4. Click **Save**
+1. **Settings → Data Model → Opportunities**로 이동합니다.
+2. **+ 필드 추가**를 클릭합니다.
+3. 구성:
+ * **이름**: Probability
+ * **유형**: 숫자
+ * **설명**: 단계 기반 확률(0~100%)
+4. **저장** 클릭
-### Create the Expected Amount Field
+### Expected Amount 필드 만들기
-1. Click **+ Add Field**
-2. Configure:
- * **Name**: Expected Amount
- * **Type**: Currency
- * **Description**: Calculated: Amount × Probability
-3. Click **Save**
+1. **+ 필드 추가**를 클릭합니다.
+2. 구성:
+ * **이름**: Expected Amount
+ * **유형**: 통화
+ * **설명**: 계산식: Amount × Probability
+3. **저장** 클릭
-### Optional: Make Fields Read-Only for Users
+### 선택 사항: 사용자에 대해 필드를 읽기 전용으로 설정
-If you don't want users manually editing these calculated fields:
+사용자가 이러한 계산된 필드를 수동으로 편집하지 못하게 하려면:
-1. Go to **Settings → Roles**
-2. Select the role to configure
-3. Find the Opportunities object
-4. Set **Probability** and **Expected Amount** fields to read-only
+1. **설정 → 역할**로 이동
+2. 구성할 역할을 선택합니다.
+3. Opportunities 객체를 찾습니다.
+4. **Probability** 및 **Expected Amount** 필드를 읽기 전용으로 설정합니다.
-This ensures only the workflows can update these values.
+이렇게 하면 워크플로만 이러한 값을 업데이트할 수 있습니다.
-## Step 2: Create Workflow #1 — Update Probability on Stage Change
+## 2단계: 워크플로 #1 만들기 — 단계 변경 시 Probability 업데이트
-This workflow automatically sets the Probability when an opportunity moves to a new stage.
+이 워크플로는 Opportunities 레코드가 새 단계로 이동할 때 Probability를 자동으로 설정합니다.
-### Create the Workflow
+### 워크플로 만들기
-1. Go to **Workflows**
-2. Click **+ New Workflow**
-3. Name it "Update Probability on Stage Change"
+1. **Workflows**로 이동합니다.
+2. **+ New Workflow**를 클릭합니다.
+3. 이름을 "Update Probability on Stage Change"로 지정합니다.
-### Configure the Trigger
+### 트리거 구성
-1. Add a **Record Created or Updated** trigger
-2. Select **Opportunities** as the object
-3. Filter on: **Stage** field is updated
+1. **Record Created or Updated** 트리거를 추가합니다.
+2. 객체로 **Opportunities**를 선택합니다.
+3. 다음으로 필터링: **Stage** 필드가 업데이트됨
-### Add Branches for Each Stage
+### 각 단계별 분기 추가
-Create a branch for each stage with its probability:
+각 단계에 해당 확률로 분기를 만듭니다:
-| Stage | Probability |
-| ----------- | ----------- |
-| New | 10% |
-| Qualified | 25% |
-| Meeting | 40% |
-| Proposal | 60% |
-| Negotiation | 80% |
-| Closed Won | 100% |
-| Closed Lost | 0% |
+| 단계 | 확률 |
+| ----------- | ---- |
+| 새로운 | 10% |
+| Qualified | 25% |
+| Meeting | 40% |
+| Proposal | 60% |
+| Negotiation | 80% |
+| Closed Won | 100% |
+| Closed Lost | 0% |
- To create a new branch, right click on the workflow canvas and click **New action**. Then, link this action to the previous node by dragging the arrow from the previous node to this new action.
+ 새 분기를 만들려면 워크플로 캔버스를 마우스 오른쪽 버튼으로 클릭하고 **New action**을 클릭합니다. 그런 다음 이전 노드에서 이 새 액션으로 화살표를 드래그하여 이전 노드와 연결합니다.
-For each stage:
+각 단계에 대해:
-1. Add a **Filter** node: Stage = [stage name]
-2. Add an **Update Record** action:
- * Record: The triggering Opportunity
- * Field: Probability
- * Value: [probability for that stage]
+1. **Filter** 노드를 추가합니다: Stage = [단계 이름]
+2. **Update Record** 액션을 추가합니다:
+ * 레코드: 트리거된 Opportunity
+ * 필드: Probability
+ * 값: [해당 단계의 확률]
-### Calculate Expected Amount
+### Expected Amount 계산
-After the branches rejoin:
+분기가 다시 합쳐진 후:
-1. Add a **Filter** node: Amount is not empty
-2. Add an **Update Record** action:
- * Record: The triggering Opportunity
- * Field: Expected Amount
- * Value: Amount × Probability
+1. **Filter** 노드를 추가합니다: Amount가 비어 있지 않음
+2. **Update Record** 액션을 추가합니다:
+ * 레코드: 트리거된 Opportunity
+ * 필드: Expected Amount
+ * 값: Amount × Probability
-## Step 3: Create Workflow #2 — Recalculate on Amount Change
+## 3단계: 워크플로 #2 만들기 — Amount 변경 시 재계산
-This workflow updates the Expected Amount when the deal Amount changes.
+이 워크플로는 거래의 Amount가 변경될 때 Expected Amount를 업데이트합니다.
-### Create the Workflow
+### 워크플로 만들기
-1. Go to **Workflows**
-2. Click **+ New Workflow**
-3. Name it "Recalculate Expected Amount on Amount Change"
+1. **Workflows**로 이동합니다.
+2. **+ New Workflow**를 클릭합니다.
+3. 이름을 "Recalculate Expected Amount on Amount Change"로 지정합니다.
-### Configure the Trigger
+### 트리거 구성
-1. Add a **Record Created or Updated** trigger
-2. Select **Opportunities** as the object
-3. Filter on: **Amount** field is updated
+1. **Record Created or Updated** 트리거를 추가합니다.
+2. 객체로 **Opportunities**를 선택합니다.
+3. 다음으로 필터링: **Amount** 필드가 업데이트됨
-### Add the Logic
+### 로직 추가
-1. Add a **Filter** node: Amount is not empty
-2. Add an **Update Record** action:
- * Record: The triggering Opportunity
- * Field: Expected Amount
- * Value: Amount × Probability
+1. **Filter** 노드를 추가합니다: Amount가 비어 있지 않음
+2. **Update Record** 액션을 추가합니다:
+ * 레코드: 트리거된 Opportunity
+ * 필드: Expected Amount
+ * 값: Amount × Probability
-## Step 4: Display in Your Pipeline
+## 4단계: 파이프라인에 표시
-Now show the Expected Amount totals in your Kanban view:
+이제 칸반 보기에서 Expected Amount 합계를 표시합니다:
-1. Open your **Sales Pipeline** Kanban view
-2. Click the **number** next to any Stage name at the top of a column
-3. Select **Sum**
-4. Choose **Expected Amount**
+1. Sales Pipeline 칸반 보기를 엽니다.
+2. 열 상단의 Stage 이름 옆 숫자를 클릭합니다.
+3. **Sum**을 선택합니다.
+4. Expected Amount를 선택합니다.
-Each column now shows the total weighted pipeline value for that stage.
+이제 각 열에는 해당 단계의 가중 파이프라인 총액이 표시됩니다.
-## Summary
+## 요약
-| Component | Purpose |
-| ------------------------- | ------------------------------------------------------------------------- |
-| **Probability field** | Stores the stage-based win probability |
-| **Expected Amount field** | Stores Amount × Probability |
-| **Workflow #1** | Updates Probability when Stage changes, then recalculates Expected Amount |
-| **Workflow #2** | Recalculates Expected Amount when Amount changes |
-| **Aggregation** | Displays Sum of Expected Amount per stage |
+| 구성 요소 | 용도 |
+| ---------------------- | ------------------------------------------------------------- |
+| **Probability 필드** | 단계 기반 성공 확률을 저장합니다. |
+| **Expected Amount 필드** | Amount × Probability 값을 저장합니다. |
+| **워크플로 #1** | Stage가 변경되면 Probability를 업데이트하고, 이어서 Expected Amount를 재계산합니다. |
+| **워크플로 #2** | Amount가 변경되면 Expected Amount를 재계산합니다. |
+| **집계** | 단계별 Expected Amount의 합계를 표시합니다. |
-## Related
+## 관련 항목
-* [Formula Fields](/l/ko/user-guide/workflows/how-tos/crm-automations/formula-fields) — create calculated fields using workflows
-* [Kanban Views](/l/ko/user-guide/views-pipelines/capabilities/kanban-views) — column aggregations
-* [How to Create Custom Fields](/l/ko/user-guide/data-model/how-tos/create-custom-fields) — field configuration
+* [수식 필드](/l/ko/user-guide/workflows/how-tos/crm-automations/formula-fields) — 워크플로를 사용하여 계산된 필드를 생성
+* [칸반 보기](/l/ko/user-guide/views-pipelines/capabilities/kanban-views) — 열 집계
+* [사용자 정의 필드 만드는 방법](/l/ko/user-guide/data-model/how-tos/create-custom-fields) — 필드 구성
diff --git a/packages/twenty-docs/l/ko/user-guide/views-pipelines/how-tos/track-time-in-stage.mdx b/packages/twenty-docs/l/ko/user-guide/views-pipelines/how-tos/track-time-in-stage.mdx
index 4e9c62dd51..7241f2380e 100644
--- a/packages/twenty-docs/l/ko/user-guide/views-pipelines/how-tos/track-time-in-stage.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/views-pipelines/how-tos/track-time-in-stage.mdx
@@ -1,33 +1,33 @@
---
-title: Track How Long Opportunities Stay in Each Stage
-description: Monitor deal velocity by tracking when opportunities enter each stage.
+title: 각 단계에서 영업 기회가 머무는 기간 추적
+description: 영업 기회가 각 단계에 진입한 시점을 추적하여 거래 속도를 모니터링하세요.
---
- This is an example of creating [Formula Fields](/l/ko/user-guide/workflows/how-tos/crm-automations/formula-fields) using workflows — specifically date calculations.
+ 이는 워크플로를 사용해 [수식 필드](/l/ko/user-guide/workflows/how-tos/crm-automations/formula-fields)를 만드는 예시로, 특히 날짜 계산에 관한 내용입니다.
-Tracking when opportunities enter each stage helps you identify bottlenecks and measure deal velocity.
+영업 기회가 각 단계에 진입한 시점을 추적하면 병목을 파악하고 거래 속도를 측정할 수 있습니다.
-This guide walks you through setting up custom fields and a workflow to automatically record when an opportunity moves to each stage, and calculate how many days it spent in the previous stage.
+이 가이드는 사용자 정의 필드와 워크플로를 구성하여 영업 기회가 각 단계로 이동한 시점을 자동으로 기록하고, 이전 단계에서 보낸 일수를 계산하는 방법을 안내합니다.
-## Step 1: Create Custom Fields
+## 1단계: 사용자 정의 필드 생성
-You need two types of fields for each stage:
+각 단계마다 두 가지 유형의 필드가 필요합니다:
-* **Date & Time fields**: Record when the opportunity entered each stage
-* **Number fields**: Store how many days the opportunity spent in each stage
+* **날짜 및 시간 필드**: 영업 기회가 각 단계에 진입한 시점을 기록
+* **숫자 필드**: 영업 기회가 각 단계에서 보낸 일수 저장
-### Create the "Last Entered" Fields
+### "Last Entered" 필드 생성
-1. Go to **Settings → Data Model → Opportunities**
-2. For each stage, click **+ Add Field** and configure:
- * **Name**: Last Entered [Stage Name] (e.g., "Last Entered New", "Last Entered Qualified")
+1. **설정 → 데이터 모델 → Opportunities**로 이동
+2. 각 단계에서 **+ Add Field**를 클릭하고 다음을 구성합니다:
+ * **Name**: Last Entered [단계 이름] (예: "Last Entered New", "Last Entered Qualified")
* **Type**: Date & Time
- * **Description**: Timestamp when opportunity entered this stage
-3. Click **Save**
+ * **Description**: 이 단계에 영업 기회가 진입한 시각의 타임스탬프
+3. **저장** 클릭
-Create these fields:
+다음 필드를 생성합니다:
* Last Entered New
* Last Entered Qualified
@@ -37,15 +37,15 @@ Create these fields:
* Last Entered Closed Won
* Last Entered Closed Lost
-### Create the "Days in Stage" Fields
+### "Days in Stage" 필드 생성
-1. For each stage, click **+ Add Field** and configure:
- * **Name**: Days in [Stage Name] (e.g., "Days in New", "Days in Qualified")
+1. 각 단계에서 **+ Add Field**를 클릭하고 다음을 구성합니다:
+ * **Name**: Days in [단계 이름] (예: "Days in New", "Days in Qualified")
* **Type**: Number
- * **Description**: Number of days spent in this stage
-2. Click **Save**
+ * **Description**: 이 단계에서 보낸 일수
+2. **저장** 클릭
-Create these fields:
+다음 필드를 생성합니다:
* Days in New
* Days in Qualified
@@ -54,51 +54,51 @@ Create these fields:
* Days in Negotiation
- You don't need "Days in" fields for Closed Won and Closed Lost since those are final stages.
+ "Closed Won"과 "Closed Lost"는 마지막 단계이므로 "Days in" 필드는 필요하지 않습니다.
-### Optional: Make Fields Read-Only
+### 선택 사항: 필드를 읽기 전용으로 설정
-If you don't want users manually editing these calculated fields:
+사용자가 이 계산된 필드를 수동으로 편집하지 못하게 하려면:
-1. Go to **Settings → Roles**
-2. Select the role to configure
-3. Find the Opportunities object
-4. Set the "Last Entered" and "Days in" fields to read-only
+1. **설정 → 역할**로 이동
+2. 구성할 역할을 선택합니다
+3. Opportunities 오브젝트를 찾습니다
+4. "Last Entered" 및 "Days in" 필드를 읽기 전용으로 설정합니다
-## Step 2: Create the Workflow
+## 2단계: 워크플로 생성
-This single workflow handles both tasks:
+이 단일 워크플로가 두 가지 작업을 모두 처리합니다:
-* Records the timestamp when entering a new stage
-* Calculates days spent in the previous stage
+* 새 단계에 진입한 시각의 타임스탬프를 기록
+* 이전 단계에서 보낸 일수를 계산
-### Create the Workflow
+### 워크플로 생성
-1. Go to **Workflows**
-2. Click **+ New Workflow**
-3. Name it "Track Stage Time"
+1. **Workflows**로 이동
+2. **+ New Workflow**를 클릭
+3. "Track Stage Time"으로 이름 지정
-### Configure the Trigger
+### 트리거 구성
-1. Add a **Record Updated** trigger
-2. Select **Opportunities** as the object
-3. Filter on: **Stage** field is updated
+1. **Record Updated** 트리거를 추가
+2. 오브젝트로 **Opportunities**를 선택
+3. 필터: **Stage** 필드가 업데이트됨
-### Add Branches for Each Stage
+### 각 단계에 대한 브랜치 추가
- To create a new branch, right click on the workflow canvas and click **New action**. Then, link this action to the previous node by dragging the arrow from the previous node to this new action.
+ 새 브랜치를 만들려면 워크플로 캔버스에서 마우스 오른쪽 버튼을 클릭하고 **New action**을 클릭합니다. 그런 다음 이전 노드에서 이 새 액션으로 화살표를 끌어 이전 노드와 이 액션을 연결합니다.
---
-**Branch 1: Stage = New (first stage)**
+**브랜치 1: Stage = New(첫 번째 단계)**
-Since this is the first stage, we only record the entry timestamp—no previous stage to calculate.
+이 단계는 첫 단계이므로 진입 타임스탬프만 기록하며, 계산할 이전 단계는 없습니다.
-1. Add a **Filter** node: Stage = New
-2. Add a **Code** action:
+1. **Filter** 노드를 추가: Stage = New
+2. **Code** 액션 추가:
```javascript
export const main = async (): Promise => {
@@ -106,19 +106,19 @@ export const main = async (): Promise => {
};
```
-3. Add an **Update Record** action:
- * Record: The triggering Opportunity
+3. **Update Record** 액션 추가:
+ * Record: 트리거된 Opportunity
* Field: Last Entered New
- * Value: `now` from Code node
+ * Value: Code 노드의 `now`
---
-**Branch 2: Stage = Qualified**
+**브랜치 2: Stage = Qualified**
-When moving to Qualified, record entry time AND calculate days spent in New.
+Qualified로 이동할 때 진입 시각을 기록하고 New에서 보낸 일수를 계산합니다.
-1. Add a **Filter** node: Stage = Qualified
-2. Add a **Code** action:
+1. **Filter** 노드 추가: Stage = Qualified
+2. **Code** 액션 추가:
```javascript
export const main = async (params: {
@@ -138,21 +138,21 @@ export const main = async (params: {
};
```
-3. Configure the Code node input: map `lastEnteredPreviousStage` to the **Last Entered New** field
-4. Add an **Update Record** action:
- * Record: The triggering Opportunity
- * Fields to update:
+3. Code 노드 입력 구성: `lastEnteredPreviousStage`를 **Last Entered New** 필드에 매핑
+4. **Update Record** 액션 추가:
+ * Record: 트리거된 Opportunity
+ * 업데이트할 필드:
* Last Entered Qualified = `now`
* Days in New = `daysInPreviousStage`
---
-**Branch 3: Stage = Meeting**
+**브랜치 3: Stage = Meeting**
-When moving to Meeting, record entry time AND calculate days spent in Qualified.
+Meeting으로 이동할 때 진입 시각을 기록하고 Qualified에서 보낸 일수를 계산합니다.
-1. Add a **Filter** node: Stage = Meeting
-2. Add a **Code** action:
+1. **Filter** 노드 추가: Stage = Meeting
+2. **Code** 액션 추가:
```javascript
export const main = async (params: {
@@ -172,60 +172,60 @@ export const main = async (params: {
};
```
-3. Configure the Code node input: map `lastEnteredPreviousStage` to the **Last Entered Qualified** field
-4. Add an **Update Record** action:
- * Record: The triggering Opportunity
- * Fields to update:
+3. Code 노드 입력 구성: `lastEnteredPreviousStage`를 **Last Entered Qualified** 필드에 매핑
+4. **Update Record** 액션 추가:
+ * Record: 트리거된 Opportunity
+ * 업데이트할 필드:
* Last Entered Meeting = `now`
* Days in Qualified = `daysInPreviousStage`
---
-**Continue for remaining stages:**
+**나머지 단계 계속:**
-| Stage | Records | Calculates |
+| 단계 | 기록 | 계산 |
| ----------- | ------------------------ | ------------------- |
| Proposal | Last Entered Proposal | Days in Meeting |
| Negotiation | Last Entered Negotiation | Days in Proposal |
| Closed Won | Last Entered Closed Won | Days in Negotiation |
| Closed Lost | Last Entered Closed Lost | Days in Negotiation |
-The branches do not need to rejoin—each runs independently when its stage condition is met.
+브랜치는 다시 합칠 필요가 없습니다. 각 브랜치는 해당 단계 조건이 충족되면 독립적으로 실행됩니다.
-## Step 3: Analyze Time in Stage
+## 3단계: 단계 체류 시간 분석
-With timestamps and day counts recorded, you can now analyze deal velocity.
+타임스탬프와 일수 기록을 바탕으로 이제 거래 속도를 분석할 수 있습니다.
-### Create a "Slow Deals" View
+### "Slow Deals" 보기 만들기
-1. Create a Table view of Opportunities
-2. Add columns: Name, Stage, Days in [previous stage], Amount
-3. Sort by "Days in" field (descending)
-4. Filter by Stage to focus on one stage at a time
+1. Opportunities의 테이블 보기 생성
+2. 다음 열을 추가: Name, Stage, Days in [이전 단계], Amount
+3. "Days in" 필드로 정렬(내림차순)
+4. Stage로 필터링하여 한 번에 한 단계에 집중
-Deals at the top spent the most time in the previous stage.
+상단의 거래가 이전 단계에서 보낸 시간이 가장 깁니다.
-### Use Aggregations
+### 집계 사용
-In your pipeline Kanban view:
+파이프라인 칸반 보기에서:
-1. Click the number next to a Stage name
-2. Select **Average**
-3. Choose a "Days in" field
+1. Stage 이름 옆의 숫자를 클릭합니다
+2. **Average**를 선택합니다
+3. "Days in" 필드를 선택합니다
-This shows the average time deals spend in each stage.
+그러면 거래가 각 단계에서 보낸 평균 시간이 표시됩니다.
-## Summary
+## 요약
-| Component | Purpose |
-| ------------------------ | ------------------------------------------------- |
-| **Last Entered fields** | Store when opportunity entered each stage |
-| **Days in fields** | Store how many days spent in each stage |
-| **Workflow** | Records timestamp AND calculates days in one pass |
-| **Views & Aggregations** | Analyze deal velocity and identify bottlenecks |
+| 구성 요소 | 용도 |
+| ------------------- | ---------------------------- |
+| **Last Entered 필드** | 영업 기회가 각 단계에 진입한 시점을 저장 |
+| **Days in 필드** | 각 단계에서 보낸 일수를 저장 |
+| **워크플로** | 한 번의 실행으로 타임스탬프를 기록하고 일수를 계산 |
+| **보기 및 집계** | 거래 속도를 분석하고 병목을 식별 |
-## Related
+## 관련
-* [Workflows](/l/ko/user-guide/workflows/overview) — automation basics
-* [How to Create Custom Fields](/l/ko/user-guide/data-model/how-tos/create-custom-fields) — field configuration
-* [Kanban Views](/l/ko/user-guide/views-pipelines/capabilities/kanban-views) — aggregations
+* [워크플로](/l/ko/user-guide/workflows/overview) — 자동화 기본
+* [사용자 정의 필드 생성 방법](/l/ko/user-guide/data-model/how-tos/create-custom-fields) — 필드 구성
+* [칸반 보기](/l/ko/user-guide/views-pipelines/capabilities/kanban-views) — 집계
diff --git a/packages/twenty-docs/l/ko/user-guide/views-pipelines/overview.mdx b/packages/twenty-docs/l/ko/user-guide/views-pipelines/overview.mdx
index fd93eab89c..cc4b4c0563 100644
--- a/packages/twenty-docs/l/ko/user-guide/views-pipelines/overview.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/views-pipelines/overview.mdx
@@ -1,137 +1,137 @@
---
-title: Views & Pipelines
-description: Learn how to create and manage views in Twenty.
+title: 보기 및 파이프라인
+description: Twenty에서 보기를 생성하고 관리하는 방법을 알아보세요.
image: /images/user-guide/table-views/table.png
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-
+
-## Understanding Views
+## 보기 이해하기
-Views are saved configurations that determine how your data is displayed. Each view can have its own:
+보기는 데이터가 어떻게 표시될지를 결정하는 저장된 구성입니다. 각 보기는 다음을 고유하게 가질 수 있습니다:
-* **Layout**: Table, Kanban, or Calendar
-* **Filters**: Which records to show
-* **Sorting**: How records are ordered
-* **Fields**: Which columns are visible
+* **레이아웃**: 테이블, 칸반 또는 캘린더
+* **필터**: 표시할 레코드
+* **정렬**: 레코드의 정렬 방식
+* **필드**: 표시할 열
-## View Types
+## 보기 유형
-### Table View
+### 테이블 보기
-The default spreadsheet-like view showing records in rows with customizable columns.
+스프레드시트와 유사한 기본 보기로, 레코드를 행으로 표시하며 열을 사용자 지정할 수 있습니다.
-### Kanban View
+### 칸반 보기
-A visual board view where records appear as cards organized by stages. Ideal for:
+레코드가 단계별로 구성된 카드로 표시되는 보드형 시각적 보기입니다. 다음에 적합합니다:
-* Sales pipelines
-* Project tracking
-* Any workflow with defined stages
+* 영업 파이프라인
+* 프로젝트 추적
+* 정의된 단계가 있는 모든 워크플로
-### Calendar View
+### 캘린더 보기
-Display records with date fields on a calendar. Perfect for:
+날짜 필드가 있는 레코드를 달력에 표시합니다. 다음에 적합합니다:
-* Meetings and events
-* Deadlines and due dates
-* Time-based planning
+* 회의 및 행사
+* 마감일 및 기한
+* 시간 기반 계획
-## Creating a View
+## 뷰 생성하기
-There are two ways to create a new view.
+새 뷰를 생성하는 두 가지 방법이 있습니다.
-### Use the View Dropdown Menu
+### 보기 드롭다운 메뉴 사용
-1. Navigate to any object (People, Companies, etc.)
-2. Click the view name at the top left (shows current view with a dropdown arrow)
-3. Click **+ Add view**
-4. Name your view and click **Create**
-5. Choose a layout (Table, Kanban, or Calendar) under **Options**
-6. Add filters and sorting as needed
-7. Select which fields to display and reorder them
-8. Click **Save**
+1. 임의의 객체(사람, 회사 등)로 이동합니다.
+2. 왼쪽 상단의 보기 이름을 클릭합니다(현재 보기가 드롭다운 화살표와 함께 표시됨).
+3. **+ 보기 추가**를 클릭합니다.
+4. 보기 이름을 입력하고 **만들기**를 클릭합니다.
+5. **옵션**에서 레이아웃(테이블, 칸반 또는 캘린더)을 선택합니다.
+6. 필요에 따라 필터와 정렬을 추가합니다.
+7. 표시할 필드를 선택하고 순서를 재정렬합니다.
+8. **저장** 클릭
-
+
-### Start by editting an existing view
+### 기존 보기를 편집하는 것부터 시작하세요.
-1. Navigate to any object (People, Companies, etc.)
-2. Choose a layout (Table, Kanban, or Calendar) under **Options** or Add filters and sorting as needed
-3. Click on **Save as new view**
-4. Name your view and click **Create**
-5. Keep editing your new view
-6. Click on **Update view** to save your additional configurations
+1. 임의의 객체(사람, 회사 등)로 이동합니다.
+2. **옵션**에서 레이아웃(테이블, 칸반 또는 캘린더)을 선택하거나 필요에 따라 필터와 정렬을 추가합니다.
+3. **새 보기로 저장**을 클릭합니다.
+4. 보기 이름을 입력하고 **만들기**를 클릭합니다.
+5. 새 보기를 계속 편집합니다.
+6. 추가 구성 내용을 저장하려면 **보기 업데이트**를 클릭합니다.
-
+
-## Managing Views
+## 보기 관리
-### Edit a View
+### 보기 편집
-1. Select the view from the dropdown
-2. Make your changes (filters, sorting, columns)
-3. Click **Save** to update the view
+1. 드롭다운에서 보기를 선택합니다.
+2. 변경 사항(필터, 정렬, 열)을 적용합니다.
+3. 보기를 업데이트하려면 **저장**을 클릭합니다.
-### Rename a View or Change Its Icon
+### 보기 이름 변경 또는 아이콘 변경
-1. Open the view dropdown
-2. Click the **⋮** menu next to the view name
-3. Select **Edit**
-4. Change the name or icon
-5. Click **Save**
+1. 보기 드롭다운을 엽니다.
+2. 보기 이름 옆의 **⋮** 메뉴를 클릭합니다.
+3. **편집**을 선택합니다.
+4. 이름 또는 아이콘을 변경합니다.
+5. **저장** 클릭
-### Reorder Views
+### 보기 재정렬
-1. Open the view dropdown
-2. Click and drag a view by its handle
-3. Drop it in the desired position
-4. The new order is saved automatically
+1. 보기 드롭다운을 엽니다.
+2. 핸들을 클릭한 채로 보기를 드래그합니다.
+3. 원하는 위치에 놓습니다.
+4. 새 순서는 자동으로 저장됩니다.
-### Add to Favorites
+### 즐겨찾기에 추가
-Pin frequently used views for quick access:
+자주 사용하는 보기를 고정하여 빠르게 액세스하세요:
-1. Open the view dropdown
-2. Click the **⋮** menu next to a view
-3. Select **Add to favorites**
-4. The view appears in your favorites section
+1. 보기 드롭다운을 엽니다.
+2. 보기 옆의 **⋮** 메뉴를 클릭합니다.
+3. **즐겨찾기에 추가**를 선택합니다.
+4. 해당 보기가 즐겨찾기 섹션에 표시됩니다.
-### Delete a View
+### 보기 삭제
-1. Select the view to delete
-2. Click the view dropdown
-3. Click the **⋮** menu next to the view
-4. Select **Delete**
-5. Confirm deletion
+1. 삭제할 보기를 선택합니다.
+2. 보기 드롭다운을 클릭합니다.
+3. 보기 옆의 **⋮** 메뉴를 클릭합니다.
+4. **삭제**를 선택합니다.
+5. 삭제를 확인합니다.
- Deleted views cannot be recovered. Make sure you want to remove it before confirming.
+ 삭제된 보기는 복구할 수 없습니다. 확인하기 전에 제거할지 반드시 확인하세요.
-## View Visibility
+## 뷰 가시성
-Each view (except the default "All [Object Name]" views) has its own visibility setting.
+각 보기(기본 "모든 [객체 이름]" 보기 제외)에는 고유한 가시성 설정이 있습니다.
-To change visibility:
+가시성을 변경하려면:
-1. Open the view
-2. Click **Options → Visibility**
-3. Choose:
- * **Workspace**: Visible to all workspace members
- * **Unlisted**: Visible only to you
+1. 보기를 엽니다.
+2. **옵션 → 가시성**을 클릭합니다.
+3. 다음을 선택합니다:
+ * **워크스페이스**: 모든 워크스페이스 구성원에게 표시
+ * **비공개**: 본인에게만 표시
- The default "All [Object Name]" views cannot have their visibility changed.
+ 기본 "모든 [객체 이름]" 보기는 가시성을 변경할 수 없습니다.
-## Next Steps
+## 다음 단계
-* [Table Views](/l/ko/user-guide/views-pipelines/capabilities/table-views)
-* [Kanban Views](/l/ko/user-guide/views-pipelines/capabilities/kanban-views)
-* [Filters and Sorting](/l/ko/user-guide/views-pipelines/capabilities/filters-and-sorting)
-* [View Settings](/l/ko/user-guide/views-pipelines/capabilities/view-settings)
+* [테이블 보기](/l/ko/user-guide/views-pipelines/capabilities/table-views)
+* [칸반 보기](/l/ko/user-guide/views-pipelines/capabilities/kanban-views)
+* [필터와 정렬](/l/ko/user-guide/views-pipelines/capabilities/filters-and-sorting)
+* [보기 설정](/l/ko/user-guide/views-pipelines/capabilities/view-settings)
diff --git a/packages/twenty-docs/l/ko/user-guide/workflows/capabilities/send-emails-from-workflows.mdx b/packages/twenty-docs/l/ko/user-guide/workflows/capabilities/send-emails-from-workflows.mdx
index a132d1d214..9494976d99 100644
--- a/packages/twenty-docs/l/ko/user-guide/workflows/capabilities/send-emails-from-workflows.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/workflows/capabilities/send-emails-from-workflows.mdx
@@ -1,46 +1,46 @@
---
-title: Send Emails from Workflows
-description: Send personalized emails automatically using workflow actions.
+title: 워크플로우를 통해 이메일 보내기
+description: 워크플로우 액션을 사용해 개인화된 이메일을 자동으로 보냅니다.
image: /images/user-guide/workflows/workflow.png
---
-Automatically send emails when specific events occur in your CRM—welcome new contacts, follow up on opportunities, or notify team members.
+CRM에서 특정 이벤트가 발생하면 자동으로 이메일을 보냅니다—신규 연락처 환영, 기회 팔로업, 팀원 알림 등.
-## Prerequisites
+## 사전 준비
-Before you can send emails from workflows:
+워크플로우에서 이메일을 보내기 전에:
-1. Connect an email account under **Settings → Accounts**
-2. Ensure the account has sending permissions enabled
+1. **설정 → 계정**에서 이메일 계정을 연결하세요
+2. 계정에 발송 권한이 활성화되어 있는지 확인하세요
-## Basic Email Workflow
+## 기본 이메일 워크플로우
-### Example: Welcome Email for New Contacts
+### 예시: 신규 연락처 환영 이메일
-**Goal**: Send a welcome email when a new person is added to the CRM.
+**목표**: CRM에 새 연락처가 추가되면 환영 이메일을 보냅니다.
-**Setup**:
+**설정**:
-1. **Create workflow**: Go to **Settings → Workflows** and click **+ New Workflow**
+1. **워크플로우 생성**: **설정 → 워크플로우**로 이동하여 **+ 새 워크플로우**를 클릭하세요
-2. **Add trigger**: Select **Record is Created** → **People**
+2. **트리거 추가**: **레코드가 생성됨** → **People**를 선택하세요
-3. **Add Send Email action**:
- * Click **+** to add an action
- * Select **Send Email**
- * Configure the email:
+3. **이메일 보내기 액션 추가**:
+ * 액션을 추가하려면 \*\*+\*\*를 클릭하세요
+ * **이메일 보내기**를 선택하세요
+ * 이메일을 구성하세요:
-| Field | Value |
-| ----------- | -------------------------------------- |
-| **To** | `{{trigger.object.email}}` |
-| **Subject** | `Welcome to {{Your Company Name}}` |
-| **Body** | `Hi {{trigger.object.firstName}}, ...` |
+| 필드 | 값 |
+| --------- | -------------------------------------- |
+| **받는 사람** | `{{trigger.object.email}}` |
+| **제목** | `{{Your Company Name}}에 오신 것을 환영합니다` |
+| **본문** | `Hi {{trigger.object.firstName}}, ...` |
-4. **Test and activate**: Test with a sample record, then activate
+4. **테스트 및 활성화**: 샘플 레코드로 테스트한 다음 활성화하세요
-## Using Variables in Emails
+## 이메일에서 변수 사용
-Reference data from previous steps using `{{variable}}` syntax:
+`{{variable}}` 구문을 사용하여 이전 단계의 데이터를 참조하세요:
```text
Hi {{trigger.object.firstName}},
@@ -53,97 +53,116 @@ Best regards,
The Team
```
-### Available Variables from Triggers
+### 트리거에서 사용 가능한 변수
-| Trigger Type | Common Variables |
-| -------------------------- | -------------------------------------- |
-| **Record Created/Updated** | `{{trigger.object.fieldName}}` |
-| **Manual** | `{{trigger.selectedRecord.fieldName}}` |
-| **Webhook** | `{{trigger.body.fieldName}}` |
+| 트리거 유형 | 공통 변수 |
+| ---------------- | -------------------------------------- |
+| **레코드 생성/업데이트됨** | `{{trigger.object.fieldName}}` |
+| **수동** | `{{trigger.selectedRecord.fieldName}}` |
+| **Webhook** | `{{trigger.body.fieldName}}` |
-## Advanced: Conditional Emails
+## 고급: 조건부 이메일
-### Example: Different Emails Based on Lead Source
+### 예시: 리드 소스에 따라 다른 이메일
-**Goal**: Send different welcome emails based on where the lead came from.
+**목표**: 리드의 유입 경로에 따라 서로 다른 환영 이메일을 보냅니다.
-**Setup**:
+**설정**:
-1. **Trigger**: Record is Created (People)
+1. **트리거**: 레코드가 생성됨 (People)
-2. **Add Filter action**:
- * Condition: `{{trigger.object.source}}` equals `"Website"`
- * If true → continue to website welcome email
+2. **필터 액션 추가**:
+ * 조건: `{{trigger.object.source}}`가 "Website"와 같음
+ * 참이면 → 웹사이트 환영 이메일로 계속
-3. **Branch for other sources**:
- * Create parallel branches for different sources
- * Each branch has its own Send Email action
+3. **다른 소스를 위한 분기**:
+ * 서로 다른 소스에 대해 병렬 분기를 만드세요
+ * 각 분기에는 자체 이메일 보내기 액션이 있습니다
-## Sending Emails to Multiple Recipients
+## 여러 수신자에게 이메일 보내기
-### Example: Notify Team When Deal Closes
+### 예시: 거래 성사 시 팀에 알림
-**Goal**: Email the sales rep and their manager when an opportunity is won.
+**목표**: 기회가 성사되면 영업 담당자와 해당 관리자에게 이메일을 보냅니다.
-**Setup**:
+**설정**:
-1. **Trigger**: Record is Updated (Opportunities, Stage = "Closed Won")
+1. **트리거**: 레코드가 업데이트됨 (기회, 단계 = "Closed Won")
-2. **Search Records**: Find the opportunity owner's manager
+2. **레코드 검색**: 기회 소유자의 관리자를 찾으세요
-3. **Send Email #1**: To opportunity owner
- * To: `{{trigger.object.owner.email}}`
- * Subject: `Congratulations on closing {{trigger.object.name}}!`
+3. **이메일 보내기 #1**: 기회 소유자에게
+ * 받는 사람: `{{trigger.object.owner.email}}`
+ * 제목: `Congratulations on closing {{trigger.object.name}}!`
-4. **Send Email #2**: To manager
- * To: `{{searchRecords.manager.email}}`
- * Subject: `Deal Won: {{trigger.object.name}}`
+4. **이메일 보내기 #2**: 관리자에게
+ * 받는 사람: `{{searchRecords.manager.email}}`
+ * 제목: `Deal Won: {{trigger.object.name}}`
-## Scheduled Follow-up Emails
+## 예약된 후속 이메일
-### Example: Follow Up 3 Days After Meeting
+### 예시: 회의 3일 후 팔로업
-**Goal**: Send a follow-up email 3 days after a meeting is logged.
+**목표**: 회의가 기록된 후 3일 뒤에 팔로업 이메일을 보냅니다.
-**Setup**:
+**설정**:
-1. **Trigger**: Record is Created (Activities, Type = "Meeting")
+1. **트리거**: 레코드가 생성됨 (활동, 유형 = "회의")
-2. **Delay action**: Wait 3 days
+2. **지연 액션**: 3일 대기
-3. **Send Email**:
- * To: Meeting attendee
- * Subject: Following up on our conversation
- * Body: Reference meeting details from trigger
+3. **이메일 보내기**:
+ * 받는 사람: 회의 참석자
+ * 제목: 우리의 대화에 대한 후속 안내
+ * 본문: 트리거에서 회의 세부 정보를 참조하세요
-## Best Practices
+## 이메일 첨부 파일
-### Email Content
+워크플로우에서 발송되는 이메일에 파일을 첨부할 수 있습니다. 첨부 파일은 워크플로우를 구성할 때 업로드하는 정적 파일입니다.
-* Keep subject lines concise and relevant
-* Personalize with recipient's name
-* Include a clear call to action
-* Test emails before activating
+### 첨부 파일 추가 방법
-### Deliverability
+1. **이메일 보내기** 작업에서 **첨부 파일** 버튼을 클릭합니다
+2. 클릭하여 컴퓨터에서 파일을 업로드합니다
+3. 이 작업으로 전송되는 모든 이메일에 해당 파일이 첨부됩니다
-* Don't send too many emails too quickly
-* Use professional email signatures
-* Avoid spam trigger words
-* Ensure unsubscribe options for marketing emails
+### 일반적인 사용 사례
-### Troubleshooting
-
-* Verify email account is connected and active
-* Check recipient email address is valid
-* Review workflow runs for error messages
-* Test with your own email address first
+| 사용 사례 | 예시 파일 |
+| ------------ | --------------- |
+| **환영 이메일** | 회사 소개 브로셔(PDF) |
+| **온보딩 시퀀스** | 시작 가이드 |
+| **영업 후속 조치** | 제품 카탈로그 또는 가격표 |
+| **이벤트 확인** | 이벤트 세부 정보 또는 일정 |
- **Coming soon**: Email attachments will be available in Q1 2026.
+ 첨부 파일은 정적입니다—모든 수신자에게 동일한 파일이 전송됩니다. 개인화된 견적서와 같은 동적 문서의 경우 [서버리스 함수](/l/ko/user-guide/workflows/how-tos/connect-to-other-tools/generate-pdf-from-twenty)를 사용하여 파일을 생성하고 첨부합니다.
-## Related
+## 모범 사례
-* [Workflow Triggers](/l/ko/user-guide/workflows/capabilities/workflow-triggers)
-* [Workflow Actions](/l/ko/user-guide/workflows/capabilities/workflow-actions)
+### 이메일 콘텐츠
+
+* 제목은 간결하고 관련성 있게 유지하세요
+* 수신자 이름으로 개인화하세요
+* 명확한 행동 유도를 포함하세요
+* 활성화 전에 이메일을 테스트하세요
+
+### 도달률
+
+* 너무 많은 이메일을 너무 빠르게 보내지 마세요
+* 전문적인 이메일 서명을 사용하세요
+* 스팸 트리거 단어를 피하세요
+* 마케팅 이메일에 수신 거부 옵션이 있도록 하세요
+
+### 문제 해결
+
+* 이메일 계정이 연결되어 있고 활성 상태인지 확인하세요
+* 수신자 이메일 주소가 유효한지 확인하세요
+* 워크플로우 실행 내역에서 오류 메시지를 확인하세요
+* 먼저 자신의 이메일 주소로 테스트하세요
+
+## 관련 항목
+
+* [워크플로우 트리거](/l/ko/user-guide/workflows/capabilities/workflow-triggers)
+* [워크플로우 액션](/l/ko/user-guide/workflows/capabilities/workflow-actions)
diff --git a/packages/twenty-docs/l/ko/user-guide/workflows/capabilities/use-branches-in-workflows.mdx b/packages/twenty-docs/l/ko/user-guide/workflows/capabilities/use-branches-in-workflows.mdx
index bb235970c0..2ae5d6e762 100644
--- a/packages/twenty-docs/l/ko/user-guide/workflows/capabilities/use-branches-in-workflows.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/workflows/capabilities/use-branches-in-workflows.mdx
@@ -1,90 +1,90 @@
---
-title: Use Branches in Workflows
-description: Understand how branches work and how to control which path is executed.
+title: 워크플로우에서 분기 사용
+description: 분기가 어떻게 작동하는지와 어떤 경로가 실행될지 제어하는 방법을 이해하세요.
---
-## How Branches Work
+## 분기 작동 방식
-In the workflow editor, you can create multiple paths (branches) going out from a single node. This allows you to build complex automations with different outcomes.
+워크플로우 편집기에서 단일 노드에서 여러 경로(분기)를 만들 수 있습니다. 이를 통해 서로 다른 결과를 갖는 복잡한 자동화를 구축할 수 있습니다.
-**Important**: When a workflow runs, **all branches execute in parallel by default**. There is no built-in "if/else" logic to choose one branch over another—every path will run simultaneously.
+**중요**: 워크플로우가 실행될 때, **기본적으로 모든 분기가 병렬로 실행됩니다**. 한 분기를 다른 분기보다 선택하는 내장된 "if/else" 로직은 없습니다—모든 경로가 동시에 실행됩니다.
-## Controlling Which Branch Runs
+## 어떤 분기가 실행될지 제어하기
-To execute only one branch based on specific conditions, **add a Filter node at the beginning of each branch**.
+특정 조건에 따라 하나의 분기만 실행하려면, **각 분기의 시작 부분에 필터 노드를 추가하세요**.
-### Example Setup
+### 예시 설정
-1. Create your workflow with multiple branches from a single node
-2. Add a **Filter** node as the first step in each branch
-3. Set conditions on each Filter to determine when that branch should continue
-4. Only the branch(es) whose Filter conditions are met will proceed
+1. 단일 노드에서 여러 분기로 워크플로우를 생성하세요
+2. 각 분기의 첫 단계로 **필터** 노드를 추가하세요
+3. 각 필터에 조건을 설정하여 해당 분기를 언제 계속할지 결정하세요
+4. 필터 조건을 충족하는 분기만 진행됩니다
-### How Filters Work
+### 필터 작동 방식
-* If the Filter condition is **met**: The branch continues executing
-* If the Filter condition is **not met**: The branch stops at the Filter node
+* 필터 조건이 **충족되면**: 분기가 계속 실행됩니다
+* 필터 조건이 **충족되지 않으면**: 분기는 필터 노드에서 중지됩니다
-This effectively creates conditional logic where only the appropriate branch runs based on your data.
+이렇게 하면 데이터에 따라 해당되는 분기만 실행되는 조건부 로직이 사실상 만들어집니다.
-## Example: Route by Deal Size
+## 예시: 거래 규모별 라우팅
-**Scenario**: When a deal is closed, send different notifications based on deal size.
+**시나리오**: 거래가 마감되면 거래 규모에 따라 다른 알림을 보냅니다.
-1. **Trigger**: Opportunity updated (Stage = Closed Won)
-2. **Branch 1**: Filter for Amount > $10,000 → Send Slack message to #big-deals
-3. **Branch 2**: Filter for Amount ≤ $10,000 → Send email to sales manager
+1. **트리거**: 기회가 업데이트됨 (단계 = Closed Won)
+2. **분기 1**: 금액 > $10,000에 대한 필터 → Slack 메시지를 #big-deals에 보내기
+3. **분기 2**: 금액 ≤ $10,000에 대한 필터 → 영업 관리자에게 이메일 보내기
-Both branches start, but only the one matching the deal amount will continue past its Filter.
+두 분기 모두 시작되지만, 거래 금액과 일치하는 분기만 필터를 통과해 계속됩니다.
-## Creating Branches
+## 분기 생성
- To create a new branch from an existing step, click the **+** button on the step and add your action. You can add multiple branches by clicking **+** multiple times.
+ 기존 단계에서 새 분기를 만들려면 해당 단계의 **+** 버튼을 클릭하고 액션을 추가하세요. \*\*+\*\*를 여러 번 클릭하여 여러 분기를 추가할 수 있습니다.
-1. In the workflow editor, select the step you want to branch from
-2. Click the **+** button to add an action
-3. This creates one branch
-4. Click **+** again on the same step to create additional branches
-5. Each branch can have its own sequence of actions
+1. 워크플로우 편집기에서 분기를 만들고자 하는 단계를 선택하세요
+2. 액션을 추가하려면 **+** 버튼을 클릭하세요
+3. 이렇게 하면 하나의 분기가 생성됩니다
+4. 같은 단계에서 \*\*+\*\*를 다시 클릭하여 추가 분기를 만드세요
+5. 각 분기는 자체 액션 시퀀스를 가질 수 있습니다
-## Merging Branches Back Together
+## 분기를 다시 병합하기
-After parallel branches complete their work, you can merge them back into a single path:
+병렬 분기가 작업을 완료한 후, 다시 하나의 경로로 병합할 수 있습니다:
-1. Complete your branched actions
-2. Add a new step that should run after all branches
-3. Drag a connection from the last step of each branch to this new step
-4. The merged step waits for all connected branches to complete before executing
+1. 분기된 액션을 완료하세요
+2. 모든 분기 이후에 실행되어야 하는 새 단계를 추가하세요
+3. 각 분기의 마지막 단계에서 이 새 단계로 연결선을 드래그하세요
+4. 병합된 단계는 연결된 모든 분기가 완료될 때까지 대기한 후 실행됩니다
-### Example: Process Then Notify
+### 예시: 처리 후 알림
```
-Trigger
+트리거
│
- ├── Branch A: Update Customer Record
+ ├── 분기 A: 고객 레코드 업데이트
│
- └── Branch B: Create Support Ticket
+ └── 분기 B: 지원 티켓 생성
↘ ↙
- Merged Step: Send Confirmation Email
+ 병합 단계: 확인 이메일 보내기
```
-The confirmation email sends only after both the customer update and ticket creation are done.
+확인 이메일은 고객 업데이트와 티켓 생성이 모두 완료된 후에만 전송됩니다.
-## Best Practices
+## 모범 사례
-* Always use **Filter nodes** at the start of branches when you want conditional execution
-* Keep branch conditions **mutually exclusive** to avoid duplicate actions
-* Test your workflows with different data to ensure the correct branches run
-* **Rename branch steps** descriptively so it's clear what each path does
-* **Merge branches** when you need a final action after parallel processing
+* 조건부 실행을 원할 때는 분기 시작에서 항상 **필터 노드**를 사용하세요
+* 중복 액션을 피하려면 분기 조건을 **서로 배타적**으로 유지하세요
+* 올바른 분기가 실행되는지 확인하기 위해 다양한 데이터로 워크플로우를 테스트하세요
+* **분기 단계의 이름을 바꾸어** 각 경로가 무엇을 하는지 명확히 알 수 있도록 설명적으로 지정하세요
+* 병렬 처리 후 최종 액션이 필요할 때는 **분기를 병합**하세요
-## Related
+## 관련 항목
-* [Workflows FAQ](/l/ko/user-guide/workflows/how-tos/need-more-help/workflows-faq) — answers about parallel execution
-* [Workflow Actions](/l/ko/user-guide/workflows/capabilities/workflow-actions) — available actions for branches
+* [워크플로우 FAQ](/l/ko/user-guide/workflows/how-tos/need-more-help/workflows-faq) — 병렬 실행에 대한 답변
+* [워크플로우 액션](/l/ko/user-guide/workflows/capabilities/workflow-actions) — 분기에서 사용할 수 있는 액션
diff --git a/packages/twenty-docs/l/ko/user-guide/workflows/capabilities/use-iterator.mdx b/packages/twenty-docs/l/ko/user-guide/workflows/capabilities/use-iterator.mdx
index bb98e9f949..5f1756267f 100644
--- a/packages/twenty-docs/l/ko/user-guide/workflows/capabilities/use-iterator.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/workflows/capabilities/use-iterator.mdx
@@ -1,92 +1,88 @@
---
-title: Use Iterator
-description: Loop through arrays of records to perform actions on each item.
+title: Iterator 사용
+description: 레코드 배열을 순회하여 각 항목에 대해 작업을 수행합니다.
image: /images/user-guide/workflows/workflow.png
---
-Iterator lets you loop through an array of records and perform actions on each one. It's essential for workflows that need to process multiple records returned by Search Records or received via webhooks.
+Iterator를 사용하면 레코드 배열을 반복하면서 각 항목에 대해 작업을 수행할 수 있습니다. 이는 Search Records가 반환하거나 웹훅으로 수신한 여러 레코드를 처리해야 하는 워크플로우에 필수적입니다.
-
- Iterator is currently in beta. Activate it under **Settings → Releases → Lab**.
-
+## Iterator 사용 시기
-## When to Use Iterator
+| 시나리오 | 예시 |
+| ------------ | -------------------- |
+| **검색 결과 처리** | 찾은 각 사람에게 이메일 보내기 |
+| **웹훅 배열 처리** | 각 항목에 대해 순서대로 레코드 생성 |
+| **대량 업데이트** | 계산된 값으로 여러 레코드를 업데이트 |
+| **알림** | 이벤트에 대해 여러 사람에게 알림 |
-| Scenario | Example |
-| -------------------------- | ---------------------------------------------- |
-| **Process search results** | Send email to each person found |
-| **Handle webhook arrays** | Create records for each item in order |
-| **Bulk updates** | Update multiple records with calculated values |
-| **Notifications** | Alert multiple people about an event |
+## Iterator 이해하기
-## Understanding Iterator
+Iterator는 입력으로 **배열**을 필요로 합니다. 그다음:
-Iterator expects an **array** as input. It then:
+1. 배열에서 첫 번째 항목을 가져옵니다
+2. 해당 항목으로 Iterator 내부의 모든 액션을 실행합니다
+3. 다음 항목으로 이동합니다
+4. 모든 항목이 처리될 때까지 반복합니다
-1. Takes the first item from the array
-2. Runs all actions inside the iterator with that item
-3. Moves to the next item
-4. Repeats until all items are processed
+## 기본 설정
-## Basic Setup
+### 예시: 검색 결과의 모든 사람에게 이메일 보내기
-### Example: Email Everyone in Search Results
+**목표**: 특정 회사의 모든 연락처를 찾아 각 사람에게 개인화된 이메일을 보냅니다.
-**Goal**: Find all contacts in a specific company and send each one a personalized email.
+### 1단계: 레코드 검색
-### Step 1: Search for Records
+1. **레코드 검색** 액션을 추가합니다
+2. 오브젝트: **People**
+3. 필터: Company가 "Acme Inc"와 같음
+4. 이렇게 하면 사람들의 배열이 반환됩니다
-1. Add **Search Records** action
-2. Object: **People**
-3. Filter: Company equals "Acme Inc"
-4. This returns an array of people
+### 2단계: 결과 존재 여부 확인
-### Step 2: Check Results Exist
+1. **필터** 액션을 추가합니다
+2. 조건: `{{searchRecords.length}}`가 0보다 큼
+3. 이렇게 하면 결과가 비어 있을 때 발생하는 Iterator 오류를 방지합니다
-1. Add **Filter** action
-2. Condition: `{{searchRecords.length}}` is greater than 0
-3. This prevents Iterator errors on empty results
+### 3단계: 이터레이터 추가
-### Step 3: Add Iterator
+1. **Iterator** 액션을 추가합니다
+2. 배열 입력: `{{searchRecords}}` 선택
+3. 이렇게 하면 루프가 생성됩니다
-1. Add **Iterator** action
-2. Array input: Select `{{searchRecords}}`
-3. This creates a loop
+### 4단계: Iterator 내부에 액션 추가
-### Step 4: Add Actions Inside Iterator
+Iterator 아래에 배치된 액션은 각 항목에 대해 실행됩니다:
-Actions placed after Iterator run for each item:
+1. **Send Email** 액션을 추가합니다(Iterator 내부)
+2. 받는 사람: `{{iterator.currentItem.email}}`
+3. 제목: 안녕하세요 `{{iterator.currentItem.firstName}}`!
+4. 본문: 현재 항목의 필드를 사용한 개인화 메시지
-1. Add **Send Email** action (inside iterator)
-2. To: `{{iterator.currentItem.email}}`
-3. Subject: Hello `{{iterator.currentItem.firstName}}`!
-4. Body: Personalized message using current item fields
+### 결과
-### Result
+Search Records가 5명의 사람을 반환하면, Iterator는 다음을 수행합니다:
-If Search Records returns 5 people, the Iterator:
+* 사람 1에게 이메일을 보냅니다
+* 사람 2에게 이메일을 보냅니다
+* ... 5명 모두에 대해 계속 진행합니다
-* Sends email to person 1
-* Sends email to person 2
-* ... continues for all 5
+## 현재 항목 데이터에 접근하기
-## Accessing Current Item Data
+Iterator 내부에서 현재 레코드에 접근하려면 `{{iterator.currentItem}}`를 사용하세요:
-Inside Iterator, use `{{iterator.currentItem}}` to access the current record:
+| 변수 | 설명 |
+| --------------------------------------- | ------------------- |
+| `{{iterator.currentItem}}` | 현재 레코드 객체 전체 |
+| `{{iterator.currentItem.id}}` | 레코드 ID |
+| `{{iterator.currentItem.email}}` | 이메일 필드 |
+| `{{iterator.currentItem.company.name}}` | 연관된 회사 이름 |
+| `{{iterator.index}}` | 배열에서의 현재 위치(0부터 시작) |
-| Variable | Description |
-| --------------------------------------- | ----------------------------------- |
-| `{{iterator.currentItem}}` | The entire current record object |
-| `{{iterator.currentItem.id}}` | Record ID |
-| `{{iterator.currentItem.email}}` | Email field |
-| `{{iterator.currentItem.company.name}}` | Related company name |
-| `{{iterator.index}}` | Current position in array (0-based) |
+## 일반적인 패턴
-## Common Patterns
+### 여러 레코드 업데이트
-### Update Multiple Records
-
-**Goal**: Mark all overdue tasks as "Late"
+**목표**: 기한이 지난 모든 작업을 "Late"로 표시
```
1. Search Records (Tasks, Due Date < Today, Status ≠ Completed)
@@ -98,9 +94,9 @@ Inside Iterator, use `{{iterator.currentItem}}` to access the current record:
- Status: Late
```
-### Create Records from Array
+### 배열에서 레코드 생성
-**Goal**: Webhook receives order with multiple items, create a record for each
+**목표**: 웹훅이 여러 항목이 있는 주문을 수신하면 각 항목에 대해 레코드를 생성
```
1. Webhook Trigger (receives items array)
@@ -113,9 +109,9 @@ Inside Iterator, use `{{iterator.currentItem}}` to access the current record:
- Related Order: {{trigger.body.orderId}}
```
-### Conditional Processing Inside Loop
+### 루프 내부 조건부 처리
-**Goal**: Only send email to contacts with valid emails
+**목표**: 유효한 이메일이 있는 연락처에게만 이메일 보내기
```
1. Search Records (People)
@@ -125,56 +121,56 @@ Inside Iterator, use `{{iterator.currentItem}}` to access the current record:
- To: {{iterator.currentItem.email}}
```
-## Troubleshooting
+## 문제 해결
-### "Iterator expects an array"
+### "Iterator는 배열을 필요로 합니다"
-**Cause**: You passed a single record instead of an array.
+**원인**: 배열이 아닌 단일 레코드를 전달했습니다.
-**Fix**: Make sure you're passing the result of Search Records or an array field, not a single record.
+**해결 방법**: 단일 레코드가 아니라 Search Records의 결과 또는 배열 필드를 전달했는지 확인하세요.
```
✅ Correct: {{searchRecords}}
❌ Wrong: {{searchRecords[0]}}
```
-### Iterator Doesn't Run
+### Iterator가 실행되지 않음
-**Cause**: The array is empty.
+**원인**: 배열이 비어 있습니다.
-**Fix**: Add a Filter before Iterator to check array length:
+**해결 방법**: 배열 길이를 확인하기 위해 Iterator 앞에 Filter를 추가하세요:
```
Filter: {{searchRecords.length}} > 0
```
-### Actions Run Too Many Times
+### 액션이 너무 많이 실행됨
-**Cause**: Search Records returned more records than expected.
+**원인**: Search Records가 예상보다 많은 레코드를 반환했습니다.
-**Fix**:
+**해결 방법**:
-* Add more specific filters to Search Records
-* Set a limit on Search Records (max 200)
-* Add Filter inside Iterator for additional conditions
+* Search Records에 더 구체적인 필터를 추가하세요
+* Search Records에 한도를 설정하세요(최대 200)
+* 추가 조건을 위해 Iterator 내부에 Filter를 추가하세요
-## Performance Considerations
+## 성능 고려 사항
-* **Credit usage**: Each iteration consumes credits for its actions
-* **Time**: Large arrays take longer to process
-* **Limits**: Consider batching very large operations
-* **Rate limits**: External API calls may hit rate limits with many iterations
+* **크레딧 사용량**: 각 반복은 해당 액션 실행에 크레딧을 소모합니다
+* **시간**: 큰 배열일수록 처리에 더 오래 걸립니다
+* **제한**: 매우 큰 작업은 배치 처리하는 것을 고려하세요
+* **요청 제한**: 반복이 많으면 외부 API 호출이 요청 제한에 걸릴 수 있습니다
-## Best Practices
+## 모범 사례
-1. **Always check array length** before Iterator to avoid errors
-2. **Add filters inside loops** when not all items need processing
-3. **Rename your Iterator step** to describe what it's looping through
-4. **Test with small arrays** before processing large datasets
-5. **Monitor workflow runs** to ensure iterations complete as expected
+1. 오류를 피하려면 Iterator 전에 **항상 배열 길이를 확인하세요**
+2. 모든 항목을 처리할 필요가 없는 경우 **루프 내부에 필터를 추가하세요**
+3. 순회 대상을 설명하도록 **Iterator 단계의 이름을 바꾸세요**
+4. **작은 배열로 테스트하세요** 대용량 데이터를 처리하기 전에
+5. 반복이 예상대로 완료되는지 확인하려면 **워크플로우 실행을 모니터링하세요**
-## Related
+## 관련 항목
-* [Workflow Actions](/l/ko/user-guide/workflows/capabilities/workflow-actions)
-* [How to Use Branches](/l/ko/user-guide/workflows/capabilities/use-branches-in-workflows)
-* [Workflows FAQ](/l/ko/user-guide/workflows/how-tos/need-more-help/workflows-faq)
+* [워크플로우 액션](/l/ko/user-guide/workflows/capabilities/workflow-actions)
+* [브랜치 사용 방법](/l/ko/user-guide/workflows/capabilities/use-branches-in-workflows)
+* [워크플로우 FAQ](/l/ko/user-guide/workflows/how-tos/need-more-help/workflows-faq)
diff --git a/packages/twenty-docs/l/ko/user-guide/workflows/capabilities/workflow-actions.mdx b/packages/twenty-docs/l/ko/user-guide/workflows/capabilities/workflow-actions.mdx
index 9a7176b978..4e725c1153 100644
--- a/packages/twenty-docs/l/ko/user-guide/workflows/capabilities/workflow-actions.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/workflows/capabilities/workflow-actions.mdx
@@ -1,311 +1,311 @@
---
-title: Workflow Actions
-description: Learn about the actions available in Twenty workflows.
+title: 워크플로우 액션
+description: Twenty 워크플로에서 사용할 수 있는 동작에 대해 알아보세요.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-## About Actions
+## 동작 소개
-Actions define what happens after a trigger fires. You can chain multiple actions together to build complex automations.
+트리거가 발생한 후의 동작 정의. 여러 동작을 서로 연결해 복잡한 자동화를 구축할 수 있습니다.
- * Use the variable picker (click the `(x+)` icon) to browse available data from previous steps
- * Hover over any input field to see which step a variable comes from — helpful when the same field (e.g., ID) exists in multiple previous steps
- * Give each action a descriptive name for easier maintenance
+ * 변수 선택기(`(x+)` 아이콘)을 클릭하여 이전 단계의 사용 가능한 데이터를 탐색하세요.
+ * 어떤 입력 필드 위에 마우스를 올려두면 변수가 어느 단계에서 왔는지 확인할 수 있습니다 — 동일한 필드(예: ID)가 여러 이전 단계에 존재하는 경우 유용합니다.
+ * 유지 관리를 쉽게 하려면 각 동작에 설명적인 이름을 지정하세요.
-## Record Actions
+## 레코드 동작
-### Create a Record
+### 레코드 생성
-Adds a new record to a selected object.
+선택된 객체에 새 레코드 추가.
-**Configuration**:
+**구성**:
-* Select the target object
-* Fill out the required and optional fields
-* Use data from previous steps or input values manually to populate fields
+* 대상 객체 선택
+* 필수 및 선택 필드 작성
+* 이전 단계의 데이터를 사용하거나 값을 수동으로 입력하여 필드를 채우세요.
-**Output**: The newly created record data is available for use in subsequent steps.
+**출력**: 새로 생성된 레코드 데이터는 다음 단계에서 사용 가능.
-### Update Record
+### 레코드 업데이트
-Modifies an existing record in a selected object.
+선택된 객체에서 기존 레코드 수정.
-**Configuration**:
+**구성**:
-* Select the target object
-* Choose the specific record to update.
- * You can either choose a fixed record, using the drop down menu displaying all available records.
- * Or you can have the record dynamically selected, by designating a record found in a previous step, using the `(x+)`. You cannot search for the record based on different criteria at this stage. If you've not yet identified the record, add a `Search Record` step before this `Update Record` step.
-* Select fields to modify and enter new values
+* 대상 객체 선택
+* 업데이트할 특정 레코드 선택.
+ * 사용 가능한 모든 레코드를 표시하는 드롭다운 메뉴에서 고정된 레코드를 선택할 수도 있습니다.
+ * 또는 `(x+)`를 사용해 이전 단계에서 찾은 레코드를 지정하여 레코드를 동적으로 선택하도록 할 수 있습니다. 이 단계에서는 서로 다른 기준으로 레코드를 검색할 수 없습니다. 아직 레코드를 식별하지 못한 경우, 이 `Update Record` 단계 전에 `Search Record` 단계를 추가하세요.
+* 수정할 필드 선택 및 새 값 입력
-**Output**: The updated record data is available for use in subsequent steps.
+**출력**: 업데이트된 레코드 데이터는 다음 단계에서 사용 가능.
-### Delete Record
+### 레코드 삭제
-Removes a record from a selected object.
+선택된 객체에서 레코드를 제거.
-**Configuration**:
+**구성**:
-* Select the target object
-* Choose the specific record to delete
+* 대상 객체 선택
+* 삭제할 특정 레코드 선택
-**Output**: The deleted record data remains available for use in subsequent steps.
+**출력**: 삭제된 레코드 데이터는 다음 단계에서 사용 가능.
-### Search Records
+### 레코드 검색
-Finds records within a selected object using filter conditions.
+필터 조건을 사용하여 선택된 객체 내에서 레코드 찾기.
-**Configuration**:
+**구성**:
-* Select the object to search
-* Set filter criteria to narrow results
-* Configure sorting and limits
+* 검색할 객체 선택
+* 결과 범위를 좁히기 위한 필터 기준 설정
+* 정렬 및 제한 구성
-**Output**: Returns matching records that can be used in subsequent steps.
+**출력**: 매칭된 레코드를 반환하여 다음 단계에서 사용 가능.
- **Limit**: Search Records returns a maximum of **200 records**. If you need to process more, add specific filters to reduce results or use scheduled workflows to process in batches.
+ **제한**: Search Records는 최대 **200개 레코드**를 반환합니다. 더 많이 처리해야 하는 경우, 결과를 줄이기 위해 특정 필터를 추가하거나 예약된 워크플로를 사용해 배치로 처리하세요.
-**Best Practice**: Use [branches](/l/ko/user-guide/workflows/capabilities/workflow-branches) after Search Records to handle "found" vs "not found" scenarios.
+**모범 사례**: Search Records 이후 [분기](/l/ko/user-guide/workflows/capabilities/workflow-branches)를 사용하여 "발견됨" vs "찾을 수 없음" 시나리오를 처리하세요.
-### Upsert Record
+### 레코드 업서트
-Creates a new record or updates an existing one based on matching criteria. This is useful when you're not sure if a record already exists.
+일치 기준에 따라 새 레코드를 생성하거나 기존 레코드를 업데이트합니다. 레코드가 이미 존재하는지 확실하지 않을 때 유용합니다.
-**Configuration**:
+**구성**:
-* Select the target object
-* Note which fields can be used for matching: email for People, domain for Companies, ID for any object, or any field marked as Unique. You'll need to populate at least one of these below.
-* Fill out the field values. Do not forget to populate at least one of the unique identifiers.
+* 대상 객체 선택
+* 일치에 사용할 수 있는 필드를 확인하세요: People에는 이메일, Companies에는 도메인, 모든 오브젝트에는 ID, 또는 고유(Unique)로 표시된 임의의 필드. 아래 항목 중 최소 하나는 채워야 합니다.
+* 필드 값을 입력하세요. 고유 식별자 중 최소 하나는 반드시 입력하세요.
- **Matching usually works even better when adding only one unique identifier.** For example, the screenshot below will match companies based on their domain. The ID is not necessarily needed.
+ **고유 식별자를 하나만 추가하면 일치가 더 잘 작동하는 경우가 많습니다.** 예를 들어 아래 스크린샷은 도메인을 기준으로 회사를 일치시킵니다. ID가 반드시 필요한 것은 아닙니다.
-* Use data from previous steps to populate fields
+* 이전 단계의 데이터를 사용하여 필드 채우기
-**How it works**:
+**작동 원리**:
-1. Searches for a record matching your criteria
-2. If found → updates the existing record
-3. If not found → creates a new record
+1. 조건에 맞는 레코드를 검색합니다
+2. 찾으면 → 기존 레코드를 업데이트합니다
+3. 찾지 못하면 → 새 레코드를 생성합니다
-**Output**: The created or updated record data is available for use in subsequent steps.
+**출력**: 생성되었거나 업데이트된 레코드 데이터를 이후 단계에서 사용할 수 있습니다.
-## Flow Actions
+## 플로우 작업
-### Iterator
+### 반복자
-**Loops through an array of records** returned from a previous step, allowing you to perform actions on each record individually.
+**이전 단계에서 반환된 레코드 배열을 반복 처리**하여 각 레코드에 대해 개별적으로 작업을 수행할 수 있습니다.
-**Configuration**:
+**구성**:
-* Select the array of records from a previous step (e.g., results from Search Records, from a Manual trigger with Bulk availability, from a code node)
-* Define the actions to perform on each record in the loop.
+* 이전 단계의 레코드 배열을 선택합니다(예: Search Records 결과, 대량 사용이 가능한 수동 트리거, 코드 노드).
+* 반복 내에서 각 레코드에 대해 수행할 액션 정의.
- - You can add several actions within an iterator.
- - When using branches inside an iterator, make sure the last step of each branch connects back to the iterator to close the loop.
+ - 이터레이터 내에 여러 작업을 추가할 수 있습니다.
+ - 이터레이터 내부에 분기를 사용할 때, 각 분기의 마지막 단계가 루프를 닫도록 이터레이터로 다시 연결되는지 확인하세요.
-* Access `Current Item` Fields: to use fields from the record currently being processed, click on the **Iterator** step, then select **Current item**. The list of available fields from that record will be displayed and can be selected for use in subsequent actions.
+* `Current Item` 필드에 접근: 현재 처리 중인 레코드의 필드를 사용하려면 **Iterator** 단계에서 **Current item**을 선택하세요. 해당 레코드에서 사용 가능한 필드 목록이 표시되며, 이후 작업에서 사용하도록 선택할 수 있습니다.
-
+
-### Filter
+### 필터
-Filters records based on specified conditions, allowing only records that meet the criteria to pass through.
+지정한 조건에 따라 레코드를 필터링하여 기준을 충족하는 레코드만 통과시킵니다.
-**Configuration**:
+**구성**:
-* Select the record to filter
-* Define filter conditions and criteria
-* Configure which records should pass through to subsequent steps
+* 필터링할 레코드를 선택합니다
+* 필터 조건 및 기준 정의
+* 다음 단계로 전달할 레코드 구성
- 1. **Output**: Filter nodes don't return data—they act as gates. If the conditions are met, the workflow continues. If not, the workflow stops at that branch.
- 2. The `IS` operator can be used with numeric fields. It performs as an `EQUAL`.
+ 1. **출력**: 필터 노드는 데이터를 반환하지 않으며 게이트 역할을 합니다. 조건을 충족하면 워크플로우가 계속됩니다. 그렇지 않으면 해당 분기에서 워크플로우가 중지됩니다.
+ 2. 숫자 필드에서 `IS` 연산자를 사용할 수 있습니다. 이는 `EQUAL`과 동일하게 동작합니다.
-### Delay
+### 지연
-Pauses workflow execution for a specified duration or until a specific date/time.
+지정한 기간 또는 특정 날짜/시간까지 워크플로우 실행을 일시 중지합니다.
-**Delay Types**:
+**지연 유형**:
-| Type | Description |
-| ------------------ | ------------------------------------------------------------------ |
-| **Duration** | Wait for a specific amount of time (days, hours, minutes, seconds) |
-| **Scheduled Date** | Wait until a specific date and time |
+| 유형 | 설명 |
+| --------- | --------------------------- |
+| **기간** | 지정한 시간(일, 시간, 분, 초)만큼 기다립니다 |
+| **예약 날짜** | 특정 날짜와 시간까지 기다립니다 |
-**Configuration for Duration**:
+**기간 설정**:
-* Set days, hours, minutes, and/or seconds
-* Combine multiple units (e.g., 2 days and 4 hours)
+* 일, 시간, 분 및/또는 초를 설정합니다
+* 여러 단위를 조합할 수 있습니다(예: 2일 4시간).
-**Configuration for Scheduled Date**:
+**예약 날짜 설정**:
-* Select a date and time
-* Can reference a date field from a previous step (e.g., follow up 3 days after a meeting)
+* 날짜와 시간을 선택합니다
+* 이전 단계의 날짜 필드를 참조할 수 있습니다(예: 회의 3일 후에 후속 조치).
-**Use cases**:
+**사용 사례**:
-* Wait 24 hours before sending a follow-up email
-* Pause until an opportunity's close date
-* Schedule actions for business hours
+* 후속 이메일을 보내기 전에 24시간 대기
+* 영업 기회의 마감일까지 일시 중지
+* 영업시간에 작업을 예약
- The scheduled date cannot be in the past. If a date field from a previous step is used and the date has already passed, the workflow will fail.
+ 예약 날짜는 과거일 수 없습니다. 이전 단계의 날짜 필드를 사용했고 그 날짜가 이미 지났다면, 워크플로우가 실패합니다.
-**Limits & Credits**:
+**제한 및 크레딧**:
-* **No maximum duration limit**—you can set delays of minutes, days, weeks, or longer
-* **1 credit consumed** when the Delay node executes, regardless of duration
-* **No credits consumed** while waiting—a 5-minute delay costs the same as a 5-day delay
+* **최대 기간 제한 없음**—분, 일, 주 또는 그 이상으로 지연을 설정할 수 있습니다
+* 지속 시간과 무관하게 Delay 노드가 실행될 때 **크레딧 1개가 소모됩니다**
+* 대기 중에는 **크레딧이 소모되지 않습니다**—5분 지연과 5일 지연의 비용은 동일합니다
-## Communication Actions
+## 커뮤니케이션 작업
-### Send Email
+### 이메일 보내기
-Sends an email from your workflow. This is great for templated group emails. Emails will look like the ones you send from your mailbox.
-Not suited for newsletters (which require richer formatting) or automated email sequences.
+워크플로우에서 이메일 전송. 템플릿이 있는 그룹 이메일에 적합합니다. 이메일은 사용자의 메일함에서 보내는 이메일과 동일하게 보입니다.
+풍부한 서식이 필요한 뉴스레터나 자동 이메일 시퀀스에는 적합하지 않습니다.
-**Prerequisites**: Add an email account in Settings → Accounts
+**필수 조건**: 설정 > 계정에 이메일 계정 추가
-**Configuration**:
+**구성**:
-* Select the sender email account
+* 발신 이메일 계정을 선택합니다
- You can only send emails from mailboxes synced to your own Twenty account. Sending from other team members' mailboxes (e.g., the account owner's email) is on the roadmap.
+ 자신의 Twenty 계정과 동기화된 메일함에서만 이메일을 보낼 수 있습니다. 다른 팀원의 메일함(예: 계정 소유자의 이메일)에서 보내는 기능은 향후 지원 예정입니다.
-For all the following steps, you can reference variables from previous steps for personalization.
+이후 모든 단계에서 개인화를 위해 이전 단계의 변수를 참조할 수 있습니다.
-* Enter recipient email address.
+* 수신자 이메일 주소 입력.
- Only one recipient is possible at the moment.
+ 현재는 수신자를 한 명만 지정할 수 있습니다.
-* Set subject line.
-* Compose message body. You can format links, create numbered list, bullet point lists, add attachments.
+* 제목 설정.
+* 메시지 본문 작성. 링크 서식 지정, 번호 매기기 목록 및 글머리 기호 목록 생성, 첨부 파일 추가가 가능합니다.
- Adding HTML signatures is not possible at the moment.
+ 현재는 HTML 서명을 추가할 수 없습니다.
-### Form
+### 양식
-Prompts a form during workflow execution to collect user input. The responses can then be used in subsequent steps to create records, send emails, or execute any other action based on the input.
+워크플로우 실행 중에 양식을 표시하여 사용자 입력을 수집합니다. 이 응답은 이후 단계에서 입력을 기반으로 레코드 생성, 이메일 전송 또는 기타 작업 수행에 사용할 수 있습니다.
- **Forms are designed for manual triggers only**. For workflows with other triggers (Record Created, Updated, etc.), forms are only accessible via the workflow run interface, which is not the expected user experience. A notifications center will be released in 2026 to properly support forms in automated workflows.
+ **양식은 수동 트리거 전용으로 설계되었습니다**. 다른 트리거 (레코드 생성, 업데이트 등)와 함께하는 워크플로우의 경우, 형식은 워크플로우 실행 인터페이스를 통해서만 접근 가능하여 기대와 달라짐. 2026년 자동 워크플로우에서 양식을 적절히 지원하기 위한 알림 센터가 출시될 예정입니다.
-**Configuration**:
+**구성**:
-* Configure the fields that users will be asked to fill. For each field, choose
- * a type among text, number, date, a given record, a select field. Select fields from all objects are available.
- * a label
- * a default value under `Placeholder` (optional)
-* Edit the form title
+* 사용자가 입력해야 할 필드를 구성합니다. 각 필드에 대해 다음을 선택합니다
+ * 텍스트, 숫자, 날짜, 지정된 레코드, 선택 필드 중 유형 모든 오브젝트의 선택 필드를 사용할 수 있습니다.
+ * 라벨
+ * `Placeholder` 아래의 기본값(선택 사항)
+* 양식 제목 편집
-**Output**: Form responses are available for use in subsequent steps.
+**출력**: 양식 응답은 다음 단계에서 사용 가능.
-**Example**: The "Quick Lead" workflow is available by default in all workspaces, available anywhere in the Command Menu `Cmd + K`.
+**예시**: "Quick Lead" 워크플로우는 모든 워크스페이스에서 기본으로 제공되며, 명령 메뉴 `Cmd + K` 어디에서나 사용할 수 있습니다.
-**How to fill the form**:
+**양식 작성 방법**:
-* Trigger your manual workflow from the command menu `Cmd K`
-* Fill the form that is displayed in the side panel and click `Submit`.
+* 명령 메뉴 `Cmd K`에서 수동 워크플로우를 트리거하세요
+* 사이드 패널에 표시된 양식을 작성하고 `Submit`을 클릭하세요.
- The fields cannot be made mandatory.
+ 필드를 필수로 지정할 수 없습니다.
-
+
-## Integration Actions
+## 통합 작업
-### Code
+### 코드
-Runs custom JavaScript within your workflow.
+워크플로우 내에서 사용자 정의 JavaScript를 실행합니다.
-**Configuration**:
+**구성**:
-* Access variables from previous steps. You can edit the variables names dynamically.
+* 이전 단계의 변수에 접근. 변수 이름을 동적으로 편집할 수 있습니다.
-
+
-* Write JavaScript code in the editor
-* Return variables for use in subsequent steps
-* Test code directly in the step
+* 에디터에서 자바스크립트 코드 작성
+* 다음 단계에서 사용할 변수를 반환
+* 해당 단계에서 코드를 직접 테스트하세요
- If you need to use external API keys in your code, you must input them directly in the function body. You cannot configure API keys elsewhere and reference them in the serverless function.
+ 코드에서 외부 API 키를 사용해야 하는 경우, 함수 본문에 직접 입력해야 합니다. 다른 곳에서 API 키를 구성한 뒤 서버리스 함수에서 참조할 수는 없습니다.
- **Working with arrays?** Arrays from external systems or previous steps may come as strings. See [How to handle arrays in Code actions](/l/ko/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions) for the solution.
+ **배열을 다루고 있나요?** 외부 시스템이나 이전 단계에서 전달된 배열이 문자열로 올 수 있습니다. 해결 방법은 [Code 액션에서 배열 처리하기](/l/ko/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions)를 참조하세요.
- Click the square icon at the top right of the code editor to display it in full screen — helpful since the default editor width is limited.
+ 코드 편집기 오른쪽 상단의 사각형 아이콘을 클릭하여 전체 화면으로 표시하세요 — 기본 편집기 너비가 제한되어 있어 유용합니다.
-### HTTP Request
+### HTTP 요청
-Sends a request to an external API as part of your workflow.
+워크플로우의 일부로 외부 API에 요청을 보냅니다.
-**Configuration**:
+**구성**:
-* Enter the API endpoint URL. Using parameters from previous steps is possible.
-* Select HTTP method (GET, POST, PUT, PATCH, DELETE)
-* Add required headers and values
-* Provide sample response for structure preview
+* API 엔드포인트 URL 입력. 이전 단계의 매개변수를 사용할 수 있습니다.
+* HTTP 메소드 선택 (GET, POST, PUT, PATCH, DELETE)
+* 필수 헤더 및 값 추가
+* 구조 미리보기를 위한 샘플 응답 제공
-## AI Actions
+## AI 작업
-### AI Agent - Coming Soon
+### AI 에이전트 - 곧 제공 예정
-Runs an AI agent within your workflow to perform intelligent tasks.
+워크플로우 내에서 AI 에이전트를 실행하여 지능형 작업을 수행합니다.
-**Configuration**:
+**구성**:
-* **Agent**: Select an existing AI agent or use the default agent
-* **Prompt**: Write the instruction for the AI agent
-* Reference variables from previous steps in the prompt
+* **Agent**: 기존 AI 에이전트를 선택하거나 기본 에이전트를 사용합니다
+* **Prompt**: AI 에이전트에 대한 지시문을 작성합니다
+* 프롬프트에서 이전 단계의 변수를 참조합니다.
-**What AI Agents can do**:
+**AI 에이전트가 할 수 있는 일**:
-* Analyze and summarize data
-* Classify or categorize records
-* Generate text content
-* Make decisions based on data
-* Interact with your CRM data using tools
+* 데이터를 분석하고 요약합니다
+* 레코드를 분류하거나 범주화합니다
+* 텍스트 콘텐츠를 생성합니다
+* 데이터를 기반으로 의사결정을 내립니다
+* 도구를 사용하여 CRM 데이터와 상호작용합니다
-**Output**: The AI agent's response is available for use in subsequent steps. If the agent has a structured output schema, the response will follow that format.
+**출력**: AI 에이전트의 응답을 이후 단계에서 사용할 수 있습니다. 에이전트에 구조화된 출력 스키마가 있는 경우 응답은 해당 형식을 따릅니다.
- AI Agent actions consume workflow credits based on the AI model used. See [Workflow Credits](/l/ko/user-guide/workflows/capabilities/workflow-credits) for details.
+ AI 에이전트 작업은 사용된 AI 모델에 따라 워크플로우 크레딧을 소모합니다. 자세한 내용은 [워크플로우 크레딧](/l/ko/user-guide/workflows/capabilities/workflow-credits)을 참조하세요.
- AI agents respect role-based permissions. You can assign specific roles to agents under **Settings → Roles** to control what data they can access. See [Permissions](/l/ko/user-guide/permissions-access/capabilities/permissions) for details.
+ AI 에이전트는 역할 기반 권한을 준수합니다. **설정 → 역할**에서 에이전트에 특정 역할을 할당해, 액세스할 수 있는 데이터를 제어할 수 있습니다. 자세한 내용은 [권한](/l/ko/user-guide/permissions-access/capabilities/permissions)을 참조하세요.
diff --git a/packages/twenty-docs/l/ko/user-guide/workflows/capabilities/workflow-branches.mdx b/packages/twenty-docs/l/ko/user-guide/workflows/capabilities/workflow-branches.mdx
index 102f08ec59..39c3850071 100644
--- a/packages/twenty-docs/l/ko/user-guide/workflows/capabilities/workflow-branches.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/workflows/capabilities/workflow-branches.mdx
@@ -1,66 +1,64 @@
---
-title: Workflow Branches
-description: Create parallel paths and conditional logic in your workflows.
+title: 워크플로우 분기
+description: 워크플로우에서 병렬 경로와 조건부 로직을 생성하세요.
---
-Branches allow you to split your workflow into multiple paths that can run simultaneously or conditionally based on your data.
+분기는 워크플로우를 여러 경로로 나누어 데이터에 따라 동시에 또는 조건부로 실행할 수 있게 해줍니다.
-## How Branches Work
+## 분기가 작동하는 방식
-When you create multiple connections from a single node, each path becomes a branch. By default, **all branches execute in parallel**—they don't wait for each other.
+단일 노드에서 여러 연결을 만들면 각 경로가 분기가 됩니다. 기본적으로 **모든 분기는 병렬로 실행**되며—서로를 기다리지 않습니다.
-## Creating Branches
+## 분기 만들기
-### Add a New Branch
+### 새 분기 추가
-1. **Right-click on the main canvas** of the workflow (not on an existing node)
-2. Click **Add node**
-3. Choose the node type for your new branch
-4. Drag an arrow from the bottom of the previous step to the top of this new action
-5. Repeat to add more branches from the same node
+1. 워크플로우의 **메인 캔버스**(기존 노드가 아닌 곳)를 마우스 오른쪽 버튼으로 클릭하세요
+2. **노드 추가**를 클릭하세요
+3. 새 분기를 위한 노드 유형을 선택하세요
+4. 이전 단계의 하단에서 이 새 작업의 상단으로 화살표를 드래그하세요
+5. 같은 노드에서 더 많은 분기를 추가하려면 이 과정을 반복하세요
- Each branch is independent. Adding a branch doesn't affect other existing paths from that node.
+ 각 분기는 독립적입니다. 분기를 추가해도 해당 노드의 다른 기존 경로에는 영향을 주지 않습니다.
-### Visual Layout
+### 시각적 레이아웃
-Branches appear as parallel paths in the workflow editor. You can drag nodes to rearrange the visual layout without affecting execution.
+분기는 워크플로우 편집기에서 병렬 경로로 표시됩니다. 실행에 영향을 주지 않고 노드를 드래그하여 시각적 레이아웃을 재배치할 수 있습니다.
-## Conditional Branches
+## 조건부 분기
-Since all branches run by default, use **Filter** nodes to control which paths actually execute:
+모든 분기가 기본적으로 실행되므로, 실제로 어떤 경로를 실행할지 제어하려면 **Filter** 노드를 사용하세요:
-| Branch | Filter Condition | Action |
-| ------ | --------------------- | -------------------------- |
-| A | Stage = "Won" | Send congratulations email |
-| B | Stage = "Lost" | Create follow-up task |
-| C | Stage = "Negotiation" | Notify manager |
+| 분기 | 필터 조건 | 작업 |
+| -- | --------- | ---------- |
+| A | 단계 = "성공" | 축하 이메일 보내기 |
+| B | 단계 = "실패" | 후속 작업 생성 |
+| C | 단계 = "협상" | 관리자에게 알리기 |
-1. Create branches from your trigger or action
-2. Add a **Filter** node as the first step of each branch
-3. Configure each filter with mutually exclusive conditions
-4. Add your actions after each filter
+1. 트리거 또는 작업에서 분기를 만드세요
+2. 각 분기의 첫 단계로 **Filter** 노드를 추가하세요
+3. 각 필터를 상호 배타적인 조건으로 구성하세요
+4. 각 필터 뒤에 작업을 추가하세요
-Only the branch(es) where the filter condition is met will continue executing.
+필터 조건을 충족하는 분기만 실행을 계속합니다.
-## Merging Branches
+## 분기 병합
-**Branches don't automatically merge.** Each branch runs independently until it ends. You have full flexibility in how you handle this:
+**분기는 자동으로 병합되지 않습니다.** 각 분기는 끝날 때까지 독립적으로 실행됩니다. 처리 방식은 전적으로 유연합니다:
-* **Option 1: Keep branches separate**
- Each branch handles its own follow-up actions independently. This is the simplest approach when branches don't need to converge.
+* **옵션 1: 분기를 분리된 상태로 유지**\n 각 분기는 후속 작업을 독립적으로 처리합니다. 분기가 합쳐질 필요가 없을 때 가장 간단한 접근 방식입니다.
-* **Option 2: Merge branches manually**
- When creating your workflow, you can manually connect multiple branches to the same downstream action. Simply drag arrows from the end of each branch to a common node.
+* **옵션 2: 분기를 수동으로 병합**\n 워크플로우를 만들 때 여러 분기를 동일한 다운스트림 작업에 수동으로 연결할 수 있습니다. 각 분기의 끝에서 공통 노드로 화살표를 드래그하기만 하면 됩니다.
- While you can use a [Delay](/l/ko/user-guide/workflows/capabilities/workflow-actions#delay) node to pause execution, it's not currently configurable to wait "until another branch ends."
+ 실행을 일시 중지하려면 [Delay](/l/ko/user-guide/workflows/capabilities/workflow-actions#delay) 노드를 사용할 수 있지만, 현재는 "다른 분기가 끝날 때까지" 대기하도록 설정할 수 없습니다.
-## Related
+## 관련 항목
-* [How to Use Branches in Workflows](/l/ko/user-guide/workflows/capabilities/use-branches-in-workflows) - Step-by-step guide
-* [Workflow Actions](/l/ko/user-guide/workflows/capabilities/workflow-actions) - Available actions including Filter
+* [워크플로우에서 분기 사용하는 방법](/l/ko/user-guide/workflows/capabilities/use-branches-in-workflows) - 단계별 가이드
+* [워크플로우 작업](/l/ko/user-guide/workflows/capabilities/workflow-actions) - Filter를 포함한 사용 가능한 작업
diff --git a/packages/twenty-docs/l/ko/user-guide/workflows/capabilities/workflow-credits.mdx b/packages/twenty-docs/l/ko/user-guide/workflows/capabilities/workflow-credits.mdx
index 437aee5822..46194d8b7c 100644
--- a/packages/twenty-docs/l/ko/user-guide/workflows/capabilities/workflow-credits.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/workflows/capabilities/workflow-credits.mdx
@@ -1,76 +1,76 @@
---
-title: Workflow Credits
-description: Understand workflow credit consumption and management.
+title: 워크플로우 크레딧
+description: 워크플로우 크레딧 소모 및 관리 이해하기.
---
-Workflow credits power your automations in Twenty. Understanding how they work helps you optimize costs and manage your automation budget effectively.
+워크플로우 크레딧은 Twenty에서 자동화를 지원합니다. 작동 방식을 이해하면 비용을 최적화하고 자동화 예산을 효과적으로 관리할 수 있습니다.
-## Credit Allocation
+## 크레딧 할당
-Workflow credits are allocated based on your billing cycle, not your plan tier:
+워크플로우 크레딧은 요금제 티어가 아니라 청구 주기에 따라 할당됩니다:
-| Billing Cycle | Credits |
-| ------------------------ | --------------------------- |
-| **Monthly subscription** | 5 million credits per month |
-| **Yearly subscription** | 50 million credits per year |
+| 청구 주기 | 크레딧 |
+| --------- | ------------- |
+| **월간 구독** | 매월 500만 크레딧 |
+| **연간 구독** | 매년 5,000만 크레딧 |
- 5 million monthly credits are generous for standard automations. Most teams won't exceed this limit with typical workflow usage. Additional credits are primarily needed for advanced Code actions and AI-powered workflows.
+ 표준 자동화에는 매월 500만 크레딧이면 넉넉합니다. 대부분의 팀은 일반적인 워크플로우 사용으로 이 한도를 초과하지 않습니다. 추가 크레딧은 주로 고급 Code 작업 및 AI 기반 워크플로우에 필요합니다.
-## How Credit Consumption Works
+## 크레딧 소비 방식 이해
-Credits are consumed when workflows execute, not when you create them. Each workflow action consumes credits based on its complexity:
+워크플로우가 실행될 때 크레딧이 소모되며, 생성할 때는 아닙니다. 각 워크플로우 동작은 그 복잡성에 따라 크레딧을 소모합니다:
-### Credit Consumption by Action Type
+### 동작 유형별 크레딧 소비
-* **Basic internal operations**: Very low credit consumption
- * Search Records
- * Create Record
- * Update Record
- * Delete Record
- * Form actions
+* **기본 내부 작업**: 크레딧 소모량 매우 낮음
+ * 레코드 검색
+ * 레코드 생성
+ * 레코드 업데이트
+ * 레코드 삭제
+ * 양식 작업
-* **Complex operations**: Higher credit consumption
- * Code actions (JavaScript execution)
- * HTTP Requests to external services
+* **복잡한 작업**: 높은 크레딧 소비
+ * 코드 작업 (JavaScript 실행)
+ * 외부 서비스로의 HTTP 요청
-* **AI features**: Higher credit consumption
- * AI Agent actions consume credits based on the AI model used
- * More complex prompts and longer outputs use more credits
+* **AI 기능**: 크레딧 소모량 높음
+ * AI 에이전트 작업은 사용된 AI 모델에 따라 워크플로우 크레딧을 소모합니다
+ * 더 복잡한 프롬프트와 더 긴 출력은 더 많은 크레딧을 사용합니다
-* **Delay actions**: Minimal credit consumption
- * The Delay node consumes **1 credit** when it executes
- * **No credits are consumed** during the wait period
- * A 5-minute delay costs the same as a 5-day delay
+* **Delay 작업**: 최소한의 크레딧 소모
+ * Delay 노드는 실행될 때 **크레딧 1개**를 소모합니다
+ * 대기 기간 동안에는 **크레딧이 소모되지 않습니다**
+ * 5분 지연은 5일 지연과 같은 크레딧이 소모됩니다
-### Real-Time Deduction
+### 실시간 차감
-Credits are deducted in real-time as workflows execute. This means:
+워크플로우가 실행될 때 크레딧이 실시간으로 차감됩니다. 이는 다음을 의미합니다:
-* Draft workflows don't consume credits
-* Only active, running workflows use your credit allocation
-* Failed workflows still consume credits for completed steps
+* 초안 워크플로우는 크레딧을 소모하지 않습니다
+* 활성화된 실행 중인 워크플로우만 크레딧 할당을 사용합니다
+* 실패한 워크플로우도 완료된 단계에 대해 크레딧을 소모합니다
-## Managing Credits
+## 크레딧 관리
-### Check Credit Usage
+### 크레딧 사용량 확인
-1. Go to **Settings → Billing**
-2. View your current credit consumption and remaining balance
-3. Monitor usage patterns to optimize your workflows
+1. **설정 → 결제**로 이동
+2. 현재 크레딧 소비량과 잔액 확인
+3. 사용 패턴을 모니터링하여 워크플로우 최적화
-### Purchasing Additional Credits
+### 추가 크레딧 구입
-If you need more credits beyond your plan allocation:
+플랜 할당을 초과하는 추가 크레딧이 필요한 경우:
-1. Go to **Settings → Billing**
-2. Click on the option to purchase additional credits. Packages of different sizes are available.
-3. Credits are added to your current balance
+1. **설정 → 결제**로 이동
+2. 추가 크레딧 구매 옵션을 클릭합니다. 다양한 크기의 패키지가 제공됩니다.
+3. 크레딧이 현재 잔액에 추가됩니다
-## Best Practices
+## 모범 사례
-* **Batch Processing**: Use bulk operations and Iterator actions efficiently
-* **Manual Trigger Optimization**: For manual triggers, choose `Bulk` availability to process multiple records in a single workflow run
-* Optimize Code actions for efficiency
-* Batch operations to reduce individual action calls
+* **배치 처리**: 대량 작업 및 이터레이터 작업을 효율적으로 사용하세요
+* **수동 트리거 최적화**: 수동 트리거의 경우, 한 번의 워크플로우 실행에서 여러 레코드를 처리하려면 `Bulk` 가용성을 선택하세요
+* 효율성을 위한 코드 작업 최적화
+* 개별 작업 호출을 줄이기 위해 일괄 작업
diff --git a/packages/twenty-docs/l/ko/user-guide/workflows/capabilities/workflow-runs.mdx b/packages/twenty-docs/l/ko/user-guide/workflows/capabilities/workflow-runs.mdx
index 87a0ecfdf8..f442baf416 100644
--- a/packages/twenty-docs/l/ko/user-guide/workflows/capabilities/workflow-runs.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/workflows/capabilities/workflow-runs.mdx
@@ -1,92 +1,92 @@
---
-title: Workflow Runs
-description: Monitor and manage workflow executions.
+title: Workflow 실행들
+description: 워크플로우 실행을 모니터링하고 관리합니다.
image: /images/user-guide/workflows/workflow.png
---
-## About Runs
+## 실행에 대하여
-A **Run** is a record of a workflow execution. Every time a workflow is triggered—whether by a record event, schedule, manual action, or webhook—a new run is created.
+**실행**은 워크플로우 실행의 기록입니다. 레코드 이벤트, 일정, 수동 작업 또는 웹훅 등으로 워크플로우가 트리거될 때마다 새 실행이 생성됩니다.
-## Viewing Runs
+## 실행 보기
-### From the Workflow Editor
+### 워크플로우 편집기에서
-1. Open the workflow you want to monitor
-2. Click the **Runs** panel on the right side
-3. See a list of recent runs with their status
+1. 모니터링하려는 워크플로우를 엽니다
+2. 오른쪽의 **실행** 패널을 클릭합니다
+3. 최근 실행과 해당 상태 목록을 확인합니다
-### From the Workflow Runs View
+### 워크플로우 실행 보기에서
-1. Go to **Workflow Runs** in the sidebar
-2. View runs across all workflows
-3. Filter by status, workflow, or date
+1. 사이드바에서 **워크플로우 실행**으로 이동합니다
+2. 모든 워크플로우의 실행을 확인합니다
+3. 상태, 워크플로우 또는 날짜로 필터링합니다
-## Run Statuses
+## 실행 상태
-| Status | Description |
-| ------------- | ------------------------------------------------------------------------ |
-| **Running** | Workflow is currently executing |
-| **Completed** | Workflow finished successfully |
-| **Failed** | Workflow encountered an error and stopped |
-| **Waiting** | Workflow is paused (e.g., waiting for a Delay action or Form submission) |
+| 상태 | 설명 |
+| -------- | --------------------------------------------- |
+| **실행 중** | 워크플로우가 현재 실행 중입니다 |
+| **완료됨** | 워크플로우가 성공적으로 완료되었습니다 |
+| **실패** | 워크플로우에서 오류가 발생하여 중지되었습니다 |
+| **대기 중** | 워크플로우가 일시 중지되었습니다(예: Delay 액션 대기 또는 양식 제출 대기) |
-## Run Details
+## 실행 세부정보
-Click on any run to see:
+임의의 실행을 클릭하면 다음을 확인할 수 있습니다:
-* **Status**: Current state of the run
-* **Started at**: When the run began
-* **Duration**: How long the run took
-* **Trigger data**: The input that started the workflow
-* **Step outputs**: Data returned by each step
-* **Error messages**: If the run failed, what went wrong
+* **상태**: 실행의 현재 상태
+* **시작 시각**: 실행이 시작된 시점
+* **소요 시간**: 실행에 걸린 시간
+* **트리거 데이터**: 워크플로우를 시작시킨 입력값
+* **단계 출력**: 각 단계에서 반환된 데이터
+* **오류 메시지**: 실행이 실패한 경우 어떤 문제가 있었는지
-## Step-by-Step Execution
+## 단계별 실행
-Each run shows the progression through your workflow:
+각 실행에는 워크플로우의 진행 상황이 표시됩니다:
-1. See which steps completed successfully
-2. Identify where failures occurred
-3. View the data passed between steps
-4. Debug issues by examining step inputs and outputs
+1. 성공적으로 완료된 단계를 확인합니다
+2. 실패가 발생한 위치를 파악합니다
+3. 단계 간에 전달된 데이터를 확인합니다
+4. 단계 입력과 출력을 확인하여 문제를 디버깅합니다
-## Error Handling
+## 오류 처리
-When a run fails:
+실행이 실패한 경우:
-1. Open the failed run
-2. Find the step that caused the failure
-3. Check the error message for details
-4. Common issues:
- * Missing required fields
- * Invalid data format
- * External API errors
- * Permission issues
+1. 실패한 실행을 엽니다
+2. 실패를 유발한 단계를 찾습니다
+3. 오류 메시지에서 세부정보를 확인합니다
+4. 일반적인 문제:
+ * 필수 필드 누락
+ * 잘못된 데이터 형식입니다
+ * 외부 API 오류
+ * 권한 문제
-## Re-running Workflows
+## 워크플로우 재실행
-If a run fails, you can:
+실행이 실패한 경우 다음을 수행할 수 있습니다:
-* Fix the underlying issue and wait for the next trigger
-* For manual workflows, trigger again with the same or updated data
-* Review the workflow logic to prevent future failures
+* 근본 원인을 수정하고 다음 트리거를 기다립니다
+* 수동 워크플로우의 경우 동일한 데이터 또는 업데이트된 데이터로 다시 트리거합니다
+* 향후 실패를 방지하기 위해 워크플로우 논리를 점검합니다
-## Performance Tips
+## 성능 팁
-### Managing Run History
+### 실행 기록 관리
-* Runs are retained for historical reference
-* Very old runs may be archived automatically
-* Export run data if you need to keep records
+* 실행은 이력 참고를 위해 보관됩니다
+* 매우 오래된 실행은 자동으로 보관될 수 있습니다
+* 기록을 유지해야 하는 경우 실행 데이터를 내보냅니다
-### Monitoring Best Practices
+### 모니터링 모범 사례
-* Check runs regularly after activating new workflows
-* Review failed runs to identify patterns
+* 새 워크플로우를 활성화한 후 실행을 정기적으로 확인합니다
+* 실패한 실행을 검토하여 패턴을 파악합니다
-## Related
+## 관련 항목
-* [Workflow Triggers](/l/ko/user-guide/workflows/capabilities/workflow-triggers)
-* [Workflow Actions](/l/ko/user-guide/workflows/capabilities/workflow-actions)
-* [Workflow Troubleshooting](/l/ko/user-guide/workflows/how-tos/need-more-help/workflow-troubleshooting)
+* [워크플로우 트리거](/l/ko/user-guide/workflows/capabilities/workflow-triggers)
+* [워크플로우 액션](/l/ko/user-guide/workflows/capabilities/workflow-actions)
+* [워크플로우 문제 해결](/l/ko/user-guide/workflows/how-tos/need-more-help/workflow-troubleshooting)
diff --git a/packages/twenty-docs/l/ko/user-guide/workflows/capabilities/workflow-triggers.mdx b/packages/twenty-docs/l/ko/user-guide/workflows/capabilities/workflow-triggers.mdx
index 8f9e66b33c..6f06050b64 100644
--- a/packages/twenty-docs/l/ko/user-guide/workflows/capabilities/workflow-triggers.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/workflows/capabilities/workflow-triggers.mdx
@@ -1,136 +1,136 @@
---
-title: Workflow Triggers
-description: Learn about the different triggers that start your workflows.
+title: 워크플로우 트리거
+description: 워크플로우를 시작하는 다양한 트리거에 대해 알아보세요.
---
-## About Triggers
+## 트리거에 대하여
-Workflows always start with a single trigger that defines when the automation should run.
+워크플로우는 항상 자동화가 실행되어야 하는 시기를 정의하는 단일 트리거로 시작합니다.
- **Advanced objects are supported!** Beyond standard CRM objects (People, Companies, Opportunities), you can also trigger workflows and perform actions on:
+ **고급 객체도 지원됩니다!** 표준 CRM 객체(사람, 회사, 영업 기회) 외에도 다음 대상으로 워크플로우를 트리거하고 작업을 수행할 수 있습니다:
- * Workspace Members
- * Calendar Events
- * Messages (Emails)
- * Tasks, Notes, and many other system objects
+ * 워크스페이스 구성원
+ * 캘린더 이벤트
+ * 메시지(이메일)
+ * 작업, 노트 및 기타 많은 시스템 객체
- This opens up powerful automations like notifying team members when calendar events are created, or processing incoming emails automatically.
+ 이렇게 하면 캘린더 이벤트가 생성될 때 팀 구성원에게 알림을 보내거나, 수신 이메일을 자동으로 처리하는 등의 강력한 자동화를 구현할 수 있습니다.
-## Record is Created
+## 레코드 생성됨
-Starts the workflow when a new record is created in a selected object (People, Companies, Opportunities, or any custom object).
+선택한 객체(사람, 회사, 기회 또는 기타 사용자 정의 객체)에 새 레코드가 생성될 때 워크플로우를 시작합니다.
-**Configuration**: Select the object type to monitor for new records.
+**구성**: 새 레코드를 모니터링할 객체 유형을 선택합니다.
- * This trigger is great for records created by csv, mailbox and calendar synchronization, API.
- * **It is not recommended for records created manually**: with this trigger, workflows start as soon as the record is created. Since Twenty UI offers auto-save on the fly (there is not an edit mode and then a validation to save records), the workflow will be triggered before the user inputs all the fields.
- To trigger this workflow on records created manually, it is recommended to use the trigger `Record is created or updated` instead.
+ * 이 트리거는 CSV, 메일박스 및 캘린더 동기화, API로 생성된 레코드에 적합합니다.
+ * **수동으로 생성된 레코드에는 권장되지 않습니다**: 이 트리거를 사용하면 레코드가 생성되는 즉시 워크플로우가 시작됩니다. Twenty UI는 실시간 자동 저장을 제공하므로(레코드를 저장하기 위한 별도의 편집 모드와 검증 단계가 없습니다), 사용자가 모든 필드를 입력하기 전에 워크플로우가 트리거될 수 있습니다.
+ 수동으로 생성된 레코드에서 이 워크플로우를 트리거하려면, 대신 트리거 `Record is created or updated`를 사용하는 것이 좋습니다.
-## Record is Updated
+## 레코드 업데이트됨
-Starts the workflow when changes are made to an existing record.
+기존 레코드에 변경 사항이 있을 때 워크플로우를 시작합니다.
-**Configuration**:
+**구성**:
-* Select the object type
-* Optionally specify which fields to monitor for changes
+* 객체 유형을 선택합니다
+* 변경 사항을 모니터링할 필드를 선택적으로 지정
-## Record is Updated or Created
+## 레코드 업데이트 또는 생성됨
-Starts the workflow when a record is either created or updated in a selected object.
+선택한 객체에서 레코드가 생성되거나 업데이트될 때 워크플로우를 시작합니다.
-**Why This Matters**: This trigger is particularly helpful because records created via different methods behave differently:
+**중요한 이유**: 이 트리거는 다양한 방식으로 생성된 레코드가 서로 다르게 동작하기 때문에 특히 유용합니다:
-* **API/CSV imports**: Records are created with all fields populated immediately
-* **Manual creation**: Records are created first, then fields are added in subsequent updates
+* **API/CSV 가져오기**: 필드가 즉시 채워진 상태로 레코드가 생성됩니다
+* **수동 생성**: 레코드는 먼저 생성되고, 그 후 필드가 추가됩니다
-**Configuration**:
+**구성**:
-* Select the object type to monitor
-* Optionally specify which fields to monitor for changes
-* The workflow will trigger both on initial creation and any subsequent updates
+* 모니터링할 객체 유형을 선택
+* 변경 사항을 모니터링할 필드를 선택적으로 지정
+* 워크플로우는 초기 생성과 모든 후속 업데이트에서 트리거됩니다
-## Record is Deleted
+## 레코드 삭제됨
-Starts the workflow when a record is removed from an object.
+객체에서 레코드가 제거될 때 워크플로우를 시작합니다.
-**Configuration**: Select the object type to monitor for deletions.
+**구성**: 삭제를 모니터링할 객체 유형을 선택합니다.
-## Manual Trigger
+## 수동 트리거
-Starts the workflow when triggered by a user action. This trigger can be accessed through the `Cmd+K` menu or via a custom button that will be displayed in the top navbar after selecting record(s).
+사용자 작업에 의해 트리거될 때 워크플로우가 시작됩니다. 이 트리거는 `Cmd+K` 메뉴를 통해 액세스하거나, 레코드를 선택한 후 상단 내비게이션 바에 표시되는 사용자 정의 버튼을 통해 사용할 수 있습니다.
-**Availability Configuration**:
-Choose how the workflow should handle record selection:
+**가용성 구성**:
+워크플로우가 레코드 선택을 어떻게 처리할지 선택합니다:
-* **Global**: No record is required to trigger this workflow. The workflow is triggered from the command menu `Cmd + K` anywhere (from any object) and does not use record(s) as input.
+* **전역**: 이 워크플로우를 트리거하려면 레코드가 필요하지 않습니다. 워크플로우는 어디서든(어떤 객체에서도) 명령 메뉴 `Cmd + K`에서 트리거되며 레코드를 입력으로 사용하지 않습니다.
-* **Single**: The selected record(s) will be passed to your workflow. This is configured for a given object. Several records can be selected before triggering the workflow. The workflow will run from beginning to end as many times as there are records selected.
+* **단일**: 선택된 레코드가 워크플로우로 전달됩니다. 지정된 객체에 대해 구성되어 있습니다. 여러 개의 레코드를 선택한 후 워크플로우를 시작할 수 있습니다. 워크플로우는 처음부터 끝까지 선택된 레코드 수만큼 실행됩니다.
- **Soft limit: 100 runs/minute**. Beyond this, workflows remain in "Not Started" status and are processed gradually—either by a background job or when another workflow enters the queue. This means you can select more than 100 records with a Single trigger; execution will just be slower.
+ **소프트 제한: 분당 100회 실행**. 이를 초과하면 워크플로우는 "Not Started" 상태로 유지되며, 백그라운드 작업에 의해 또는 다른 워크플로우가 대기열에 들어올 때 점진적으로 처리됩니다. 즉, 단일 트리거로 100개가 넘는 레코드를 선택할 수 있으며, 실행이 다소 느려질 뿐입니다.
-* **Bulk**: The selected record(s) will be passed to your workflow. This is configured for a given object. Several records can be selected before triggering the workflow. The workflow will run once, providing the entire list of records as input. This means the workflow needs to contain an [Iterator action](/l/ko/user-guide/workflows/capabilities/workflow-actions#iterator).
+* **대량 처리**: 선택된 레코드가 워크플로우로 전달됩니다. 지정된 객체에 대해 구성되어 있습니다. 여러 개의 레코드를 선택한 후 워크플로우를 시작할 수 있습니다. 워크플로우는 전체 레코드 목록을 입력으로 하여 한 번 실행됩니다. 이는 워크플로우에 [이터레이터 작업](/l/ko/user-guide/workflows/capabilities/workflow-actions#iterator)이 포함되어야 함을 의미합니다.
- This is more advanced, and best for people who want to optimize the number of workflow runs.
+ 이 방식은 더 고급이며, 워크플로우 실행 횟수를 최적화하려는 사용자에게 가장 적합합니다.
-**Additional Configuration**:
+**추가 구성**:
-* Select the target object (for Single and Bulk availability)
-* Choose a command icon for the workflow trigger
-* Configure navbar placement (Pinned or Not Pinned)
+* 대상 객체 선택(단일 및 대량 사용 가능)
+* 워크플로우 트리거를 위한 명령 아이콘 선택
+* 내비게이션 바 배치 구성 (고정 또는 비고정)
-**Access Methods**:
+**접근 방법**:
-* `Cmd+K` menu to find and launch manual workflows
-* Custom button in the top navbar (if configured)
+* `Cmd+K` 메뉴에서 수동 워크플로우 찾기 및 실행
+* 상단 내비게이션 바의 사용자 정의 버튼 (구성된 경우)
-## Time-Based Trigger: On a Schedule
+## 시간 기반 트리거: 일정에 따라
-Starts the workflow on a recurring basis you define.
+정의한 일정에 따라 반복적으로 워크플로우를 시작합니다.
-**Configuration**:
+**구성**:
-* Select time unit (minutes, hours, days)
-* Enter a value or use custom cron expressions for advanced scheduling
+* 시간 단위 선택 (분, 시간, 일)
+* 값을 입력하거나 고급 스케줄링을 위한 사용자 정의 크론 표현식을 사용
- **Timezone**: Scheduled workflows run in **UTC**. When setting hours for daily schedules, convert your local time to UTC.
+ **시간대**: 예약된 워크플로우는 **UTC**로 실행됩니다. 일일 일정의 시간을 설정할 때는 로컬 시간을 UTC로 변환하세요.
-## External Trigger: Webhook
+## 외부 트리거: 웹훅
-Starts the workflow when a GET or POST request is received from an external service.
+외부 서비스로부터 GET 또는 POST 요청을 수신하면 워크플로우를 시작합니다.
-**Configuration**:
+**구성**:
-* The workflow provides a unique webhook URL—copy this and add it to your external system as the endpoint to call.
-* For POST requests, define the expected body structure so Twenty knows what data to expect. Add here the fields you will receive that will be needed below in your workflow.
-* Configure authentication (coming soon).
+* 워크플로우가 고유한 웹훅 URL을 제공합니다. 이를 복사하여 외부 시스템에서 호출할 엔드포인트로 추가하세요.
+* POST 요청의 경우, Twenty가 어떤 데이터를 받을지 알 수 있도록 예상되는 본문 구조를 정의하세요. 이후 워크플로우에서 필요하게 될 수신 필드를 여기에서 추가하세요.
+* 인증을 구성합니다(곧 지원 예정).
-## Choosing the Right Trigger
+## 적합한 트리거 선택
-| Use Case | Recommended Trigger |
-| --------------------------- | ---------------------------- |
-| New leads need processing | Record is Created |
-| Data changes need sync | Record is Updated |
-| Import/manual data handling | Record is Updated or Created |
-| Cleanup after deletion | Record is Deleted |
-| User-initiated action | Launch Manually |
-| Recurring reports | On a Schedule |
-| External integration | Webhook or On a Schedule |
+| 사용 사례 | 권장 트리거 |
+| ---------------- | --------------- |
+| 새 리드 처리 필요 | 레코드 생성됨 |
+| 데이터 변경 사항 동기화 필요 | 레코드 업데이트됨 |
+| 가져오기/수동 데이터 처리 | 레코드 업데이트 또는 생성됨 |
+| 삭제 후 정리 | 레코드 삭제됨 |
+| 사용자에 의해 시작된 작업 | 수동 실행 |
+| 반복 보고서 | 일정에 따라 |
+| 외부 통합 | 웹훅 또는 일정에 따라 |
diff --git a/packages/twenty-docs/l/ko/user-guide/workflows/capabilities/workflow-versions.mdx b/packages/twenty-docs/l/ko/user-guide/workflows/capabilities/workflow-versions.mdx
index f68977d9e6..41b0790e13 100644
--- a/packages/twenty-docs/l/ko/user-guide/workflows/capabilities/workflow-versions.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/workflows/capabilities/workflow-versions.mdx
@@ -1,85 +1,85 @@
---
-title: Workflow Versions
-description: Manage workflow versions and drafts.
+title: Workflow 버전들
+description: 워크플로 버전과 초안을 관리합니다.
image: /images/user-guide/workflows/workflow.png
---
-## About Versions
+## 버전 정보
-Every time you activate a workflow, a new version is created. This allows you to track changes over time and revert to previous configurations if needed.
+워크플로를 활성화할 때마다 새 버전이 생성됩니다. 이를 통해 시간 경과에 따른 변경 사항을 추적하고 필요 시 이전 구성으로 되돌릴 수 있습니다.
-## Version Statuses
+## 버전 상태
-| Status | Description |
-| --------------- | -------------------------------------- |
-| **Draft** | Being edited, not yet published |
-| **Active** | Live version responding to triggers |
-| **Deactivated** | Previously active but manually stopped |
-| **Archived** | Past versions kept for history |
+| 상태 | 설명 |
+| --------- | -------------------- |
+| **초안** | 편집 중이며 아직 게시되지 않음 |
+| **활성** | 트리거에 반응하는 라이브 버전 |
+| **비활성화됨** | 이전에 활성화되었지만 수동으로 중지됨 |
+| **보관됨** | 기록을 위해 보관된 이전 버전 |
-## Working with Drafts
+## 초안 작업
-When you edit an active workflow, your changes are saved as a **draft**. The active version continues to run while you work on updates.
+활성 워크플로를 편집하면 변경 사항이 **초안**으로 저장됩니다. 업데이트 작업을 하는 동안에도 활성 버전은 계속 실행됩니다.
-Once you're done editing, you can:
+편집을 마치면 다음을 수행할 수 있습니다:
-* **Activate**: Publish the draft as the new active version (the previous version is archived)
-* **Discard**: Delete the draft and keep the current active version
+* **활성화**: 초안을 새 활성 버전으로 게시합니다(이전 버전은 보관됩니다)
+* **폐기**: 초안을 삭제하고 현재 활성 버전을 유지합니다
-## Version History
+## 버전 히스토리
-### Viewing Past Versions
+### 이전 버전 보기
-1. Open the workflow
-2. Click the **Versions** tab
-3. See all previous versions with timestamps
+1. 워크플로를 엽니다
+2. **버전** 탭을 클릭합니다
+3. 타임스탬프와 함께 모든 이전 버전을 확인합니다
-### Restoring a Version
+### 버전 복원
-1. Find the version you want to restore
-2. Click **Use as draft**
-3. The version is copied to a new draft
-4. Make any necessary updates
-5. Activate when ready
+1. 복원하려는 버전을 찾습니다
+2. **초안으로 사용**을 클릭합니다
+3. 해당 버전이 새 초안으로 복사됩니다
+4. 필요한 업데이트를 수행합니다
+5. 준비되면 활성화합니다
-## Best Practices
+## 모범 사례
-### Version Management
+### 버전 관리
-* Activate only when ready for production
-* Keep meaningful changes between versions
-* Document major changes in workflow names or descriptions
-* Test in draft mode before activating
+* 운영 환경 준비가 되었을 때만 활성화합니다
+* 버전 간에는 의미 있는 변경만 반영합니다
+* 워크플로 이름이나 설명의 주요 변경 사항을 문서화합니다
+* 활성화하기 전에 초안 모드에서 테스트합니다
-### Reverting Changes
+### 변경 사항 되돌리기
-* If a new version causes issues, restore the previous version
-* Use the version history to track what changed
-* Always test restored versions before activating
+* 새 버전에서 문제가 발생하면 이전 버전을 복원합니다
+* 버전 기록을 사용해 무엇이 변경되었는지 추적합니다
+* 복원한 버전은 항상 활성화 전에 테스트합니다
-## Common Workflows
+## 일반적인 워크플로
-### Quick Edit
+### 빠른 편집
-1. Make minor changes to an active workflow
-2. Test in draft mode
-3. Activate the new version
+1. 활성 워크플로에 소규모 변경을 적용합니다
+2. 초안 모드에서 테스트합니다
+3. 새 버전을 활성화합니다
-### Major Revision
+### 대규모 수정
-1. Use the previous version as a starting point
-2. Make significant changes in draft
-3. Thoroughly test all scenarios
-4. Activate when confident
+1. 이전 버전을 시작점으로 사용합니다
+2. 초안에서 중요한 변경을 수행합니다
+3. 모든 시나리오를 철저히 테스트합니다
+4. 확신이 서면 활성화합니다
-### Rollback
+### 롤백
-1. Identify the issue with the current version
-2. Find the last working version in history
-3. Click **Use as draft**
-4. Activate to restore the old behavior
+1. 현재 버전의 문제를 식별합니다
+2. 기록에서 마지막으로 정상 동작한 버전을 찾습니다
+3. **초안으로 사용**을 클릭합니다
+4. 활성화하여 이전 동작을 복원합니다
-## Related
+## 관련 항목
-* [Getting Started with Workflows](/l/ko/user-guide/workflows/overview)
-* [Workflow Runs](/l/ko/user-guide/workflows/capabilities/workflow-runs)
+* [워크플로 시작하기](/l/ko/user-guide/workflows/overview)
+* [워크플로 실행](/l/ko/user-guide/workflows/capabilities/workflow-runs)
diff --git a/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions.mdx b/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions.mdx
index bbc096202f..b5b0d5654e 100644
--- a/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions.mdx
@@ -1,24 +1,24 @@
---
-title: Handle Arrays in Code Actions
-description: Learn how to properly handle array inputs in workflow Code actions.
+title: Code 액션에서 배열 처리
+description: 워크플로의 Code 액션에서 배열 입력을 올바르게 처리하는 방법을 알아보세요.
---
-When working with arrays in Code actions, you may encounter two common challenges:
+Code 액션에서 배열을 다룰 때 흔히 마주하는 두 가지 문제가 있습니다:
-1. **Arrays passed as strings** — data from external systems or previous steps arrives as a string instead of an actual array
-2. **Can't select individual items** — you can only select the entire array, not specific fields within it
+1. **문자열로 전달된 배열** — 외부 시스템이나 이전 단계에서 실제 배열이 아닌 문자열로 전달됨
+2. **개별 항목을 선택할 수 없음** — 배열 전체만 선택할 수 있고, 그 안의 특정 필드는 선택할 수 없음
-Both can be solved with a Code node.
+둘 다 Code 노드로 해결할 수 있습니다.
-## Parsing Arrays from Strings
+## 문자열에서 배열 파싱하기
-Arrays are often passed between workflow steps as strings or JSON rather than native arrays. This happens when:
+배열은 워크플로 단계 간에 네이티브 배열이 아니라 문자열이나 JSON으로 전달되는 경우가 자주 있습니다. 다음과 같은 경우에 발생합니다:
-* Receiving data from external APIs via HTTP Request
-* Processing webhook payloads
-* Passing data between workflow steps
+* HTTP Request로 외부 API에서 데이터를 받을 때
+* 웹훅 페이로드를 처리할 때
+* 워크플로 단계 간에 데이터를 전달할 때
-**Solution**: Add this pattern at the start of your Code action:
+**해결책**: Code 액션의 시작 부분에 다음 패턴을 추가하세요:
```javascript
export const main = async (params: {
@@ -39,13 +39,13 @@ export const main = async (params: {
};
```
-The key line `typeof users === "string" ? JSON.parse(users) : users` checks if the input is a string, parses it if needed, or uses it directly if it's already an array.
+핵심 구문 `typeof users === "string" ? `JSON.parse(users) : users\` 는 입력이 문자열인지 확인하고, 필요하면 파싱하며, 이미 배열인 경우 그대로 사용합니다.
-## Extracting Individual Fields from Arrays
+## 배열에서 개별 필드 추출하기
-A webhook might return an array like `answers: [...]`, but in subsequent workflow steps you can only select the **entire array** — not individual items within it.
+웹훅이 `answers: [...]`와 같은 배열을 반환할 수 있지만, 이후 워크플로 단계에서는 **배열 전체**만 선택할 수 있고 그 안의 개별 항목은 선택할 수 없습니다.
-**Solution**: Add a Code node to extract specific fields and return them as a structured object:
+**해결책**: 특정 필드를 추출하여 구조화된 객체로 반환하도록 Code 노드를 추가하세요:
```javascript
export const main = async (params: {
@@ -71,12 +71,12 @@ export const main = async (params: {
};
```
-The Code node returns a structured object instead of an array. In subsequent steps, you can now select individual fields like `answer.firstname` and `answer.name` from the variable picker.
+Code 노드는 배열 대신 구조화된 객체를 반환합니다. 이후 단계에서는 변수 선택기에서 `answer.firstname` 및 `answer.name`과 같은 개별 필드를 선택할 수 있습니다.
- We're actively working on making array handling easier in future updates.
+ 향후 업데이트에서 배열 처리를 더 쉽게 만들기 위해 적극적으로 개선하고 있습니다.
- Click the square icon at the top right of the code editor to display it in full screen — helpful since the default editor width is limited.
+ 코드 편집기 오른쪽 상단의 사각형 아이콘을 클릭하여 전체 화면으로 표시하세요 — 기본 편집기 너비가 제한되어 있어 유용합니다.
diff --git a/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/connect-to-other-tools/bring-product-data-in-twenty.mdx b/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/connect-to-other-tools/bring-product-data-in-twenty.mdx
index 0b35a3342d..ec2e5a5c62 100644
--- a/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/connect-to-other-tools/bring-product-data-in-twenty.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/connect-to-other-tools/bring-product-data-in-twenty.mdx
@@ -1,31 +1,31 @@
---
-title: Bring Product Data into Twenty
-description: Sync product catalog data from a data warehouse into your CRM on a schedule.
+title: Twenty로 제품 데이터 가져오기
+description: 일정에 따라 데이터 웨어하우스의 제품 카탈로그 데이터를 CRM으로 동기화하세요.
---
-Use this pattern to keep Twenty in sync with product data from your data warehouse (e.g., Snowflake, BigQuery, PostgreSQL).
+이 패턴을 사용하여 데이터 웨어하우스(예: Snowflake, BigQuery, PostgreSQL)의 제품 데이터와 Twenty를 동기화 상태로 유지하세요.
-## Workflow Structure
+## 워크플로우 구조
-1. **Trigger**: On a Schedule
-2. **Code**: Query your data warehouse
-3. **Code** (optional): Format data as array
-4. **Iterator**: Loop through each product
-5. **Upsert Record**: Create or update in Twenty
+1. **트리거**: 일정에 따라
+2. **코드**: 데이터 웨어하우스에 질의
+3. **코드**(선택): 데이터를 배열로 형식 지정
+4. **Iterator**: 각 제품을 순회
+5. **레코드 업서트**: Twenty에서 생성 또는 업데이트
-## Step 1: Schedule the Trigger
+## 단계 1: 트리거 일정 설정
-Set the workflow to run at a frequency matching your data freshness needs:
+데이터 최신성 요구에 맞는 빈도로 워크플로우가 실행되도록 설정하세요:
-* Every 5 minutes for near real-time sync
-* Every hour for less critical data
-* Daily for batch updates
+* 거의 실시간 동기화를 위해 5분마다
+* 중요도가 낮은 데이터의 경우 매시간
+* 배치 업데이트의 경우 매일
-## Step 2: Query Your Data Warehouse
+## 단계 2: 데이터 웨어하우스 질의
-Add a **Code** action to fetch recent data:
+최근 데이터를 가져오기 위해 **코드** 액션을 추가합니다:
```javascript
export const main = async () => {
@@ -54,14 +54,14 @@ export const main = async () => {
```
- Filter by `updated_at >= last X minutes` to retrieve only recently changed records. This keeps the sync efficient.
+ `updated_at >= last X minutes`로 필터링하여 최근에 변경된 레코드만 가져옵니다. 동기화를 효율적으로 유지할 수 있습니다.
-## Step 3: Format Data (Optional)
+## 단계 3: 데이터 형식 지정(선택)
-If your warehouse returns data in a format that needs transformation, add another **Code** action. Common transformations include type conversions, field renaming, and data cleanup.
+웨어하우스가 변환이 필요한 형식으로 데이터를 반환하는 경우, **코드** 액션을 하나 더 추가하세요. 일반적인 변환에는 타입 변환, 필드 이름 변경, 데이터 정리가 포함됩니다.
-### Example: User Data with Boolean and Status Fields
+### 예시: 불리언 및 상태 필드를 포함한 사용자 데이터
```javascript
export const main = async (params: {
@@ -86,7 +86,7 @@ export const main = async (params: {
};
```
-### Example: Product Data with Type Conversions
+### 예시: 타입 변환이 포함된 제품 데이터
```javascript
export const main = async (params: { products: any }) => {
@@ -107,7 +107,7 @@ export const main = async (params: { products: any }) => {
};
```
-### Example: Date and Currency Formatting
+### 예시: 날짜 및 통화 형식 지정
```javascript
export const main = async (params: { deals: any }) => {
@@ -131,52 +131,52 @@ export const main = async (params: { deals: any }) => {
};
```
-### Common Transformations
+### 일반적인 변환
-| Source Format | Target Format | Code |
+| 소스 형식 | 대상 형식 | 코드 |
| -------------------- | ---------------- | ---------------------------------------- |
| `"true"` / `"false"` | `true` / `false` | `v === true \|\| v === "true"` |
| `"123.45"` | `123.45` | `parseFloat(value)` |
| `"active"` | `"ACTIVE"` | `value.toUpperCase()` |
-| `1704067200` (Unix) | ISO date | `new Date(v * 1000).toISOString()` |
+| `1704067200` (Unix) | ISO 날짜 | `new Date(v * 1000).toISOString()` |
| `"$1,234.56"` | `1234.56` | `parseFloat(v.replace(/[^0-9.-]/g, ""))` |
| `null` / `undefined` | `""` | `value \|\| ""` |
-## Step 4: Iterate Through Products
+## 단계 4: 제품 순회
-Add an **Iterator** action:
+**Iterator** 액션을 추가합니다:
-* Input: `{{code.products}}`
+* 입력: `{{code.products}}`
-This loops through each product in the array.
+배열의 각 제품을 순회합니다.
-## Step 5: Upsert Each Record
+## 5단계: 각 레코드를 업서트하기
-Inside the iterator, add an **Upsert Record** action:
+이터레이터 내부에 **레코드 업서트** 액션을 추가합니다:
-| Setting | Value |
-| ------------ | -------------------------------------- |
-| **Object** | Your custom Product object |
-| **Match by** | External ID or SKU (unique identifier) |
-| **Name** | `{{iterator.item.name}}` |
-| **SKU** | `{{iterator.item.sku}}` |
-| **Price** | `{{iterator.item.price}}` |
+| 설정 | 값 |
+| --------- | -------------------------- |
+| **객체** | 사용자 지정 제품 객체 |
+| **일치 기준** | External ID 또는 SKU(고유 식별자) |
+| **Name** | `{{iterator.item.name}}` |
+| **SKU** | `{{iterator.item.sku}}` |
+| **Price** | `{{iterator.item.price}}` |
- Use **Upsert** (update or create) instead of building separate branches for create vs. update. It's faster to build and easier to debug.
+ 생성과 업데이트를 위한 분기 흐름을 따로 만들기보다 **Upsert**(업데이트 또는 생성)를 사용하세요. 구현이 더 빠르고 디버깅이 더 쉽습니다.
-## Example Use Cases
+## 사용 예시
-| Source | Data |
-| ----------------------- | ----------------------------------- |
-| **ERP system** | Product catalog, pricing, inventory |
-| **E-commerce platform** | Orders, customers, product updates |
-| **Data warehouse** | Aggregated metrics, enriched data |
-| **Inventory system** | Stock levels, reorder alerts |
+| 소스 | 데이터 |
+| ------------- | --------------- |
+| **ERP 시스템** | 제품 카탈로그, 가격, 재고 |
+| **전자상거래 플랫폼** | 주문, 고객, 제품 업데이트 |
+| **데이터 웨어하우스** | 집계 지표, 보강된 데이터 |
+| **재고 시스템** | 재고 수준, 재주문 알림 |
-## Related
+## 관련 항목
-* [Workflow Triggers](/l/ko/user-guide/workflows/capabilities/workflow-triggers)
-* [Workflow Actions](/l/ko/user-guide/workflows/capabilities/workflow-actions)
-* [Handle Arrays in Code Actions](/l/ko/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions)
+* [워크플로우 트리거](/l/ko/user-guide/workflows/capabilities/workflow-triggers)
+* [워크플로우 액션](/l/ko/user-guide/workflows/capabilities/workflow-actions)
+* [Code 액션에서 배열 처리하기](/l/ko/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions)
diff --git a/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/connect-to-other-tools/bring-typeform-submissions-in-twenty.mdx b/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/connect-to-other-tools/bring-typeform-submissions-in-twenty.mdx
index a737fbb7f3..92f3137556 100644
--- a/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/connect-to-other-tools/bring-typeform-submissions-in-twenty.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/connect-to-other-tools/bring-typeform-submissions-in-twenty.mdx
@@ -1,27 +1,27 @@
---
-title: Bring Typeform Submissions into Twenty
-description: Handle Typeform's webhook payload to create leads from form submissions.
+title: Typeform 응답을 Twenty로 가져오기
+description: Typeform의 Webhook 페이로드를 처리하여 폼 제출에서 리드를 생성합니다.
---
-For standard webhook setup, see [Set Up a Webhook Trigger](/l/ko/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger). This article covers the specific handling required for Typeform's custom payload structure.
+표준 Webhook 설정은 [Webhook 트리거 설정](/l/ko/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger)을 참조하세요. 이 문서는 Typeform의 맞춤형 페이로드 구조에 필요한 특정 처리 방법을 다룹니다.
-### Step 1: Create a Webhook Workflow
+### 1단계: Webhook 워크플로우 생성
-1. Go to **Settings → Workflows**
-2. Click **+ New Workflow**
-3. Select **Webhook** as the trigger
-4. Copy the webhook URL
+1. **설정 → 워크플로우**로 이동
+2. **+ 새 워크플로우**를 클릭
+3. 트리거로 **Webhook**을 선택합니다
+4. Webhook URL을 복사합니다
-### Step 2: Configure Typeform
+### 2단계: Typeform 구성
-1. In Typeform, open your form
-2. Go to **Connect → Webhooks**
-3. Paste your Twenty webhook URL
-4. Save
+1. Typeform에서 폼을 엽니다
+2. **Connect → Webhooks**로 이동
+3. Twenty Webhook URL을 붙여넣습니다
+4. 저장
-### Step 3: Understand the Typeform Payload
+### 3단계: Typeform 페이로드 이해하기
-Typeform sends a nested JSON structure. Here's a simplified example:
+Typeform은 중첩된 JSON 구조를 전송합니다. 간단한 예시는 다음과 같습니다:
```json
{
@@ -60,15 +60,15 @@ Typeform sends a nested JSON structure. Here's a simplified example:
}
```
-Key things to note:
+주요 유의 사항:
-* Form data is nested under `form_response`
-* **Answers are returned as an array**, not as named fields
-* Each answer includes the field type and title for reference
+* 폼 데이터는 `form_response` 아래에 중첩됩니다
+* **답변은 명명된 필드가 아니라 배열로 반환됩니다**
+* 각 답변에는 참고용으로 필드 유형과 제목이 포함됩니다
-### Step 4: Extract Fields from the Answers Array
+### 4단계: 답변 배열에서 필드 추출
-Since `answers` is an array, you can only select the entire array in subsequent steps — not individual fields. Add a **Code** action to extract the fields you need:
+`answers`가 배열이므로 이후 단계에서는 전체 배열만 선택할 수 있으며, 개별 필드는 선택할 수 없습니다. 필요한 필드를 추출하기 위해 **Code** 액션을 추가합니다:
```javascript
export const main = async (params: {
@@ -100,31 +100,31 @@ export const main = async (params: {
};
```
-Now in subsequent steps, you can select `contact.firstName`, `contact.email`, etc. from the variable picker.
+이후 단계에서는 변수 선택기에서 `contact.firstName` 및 `contact.email`과 같은 개별 필드를 선택할 수 있습니다.
- For more details on handling arrays in Code actions, see [Handle Arrays in Code Actions](/l/ko/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions).
+ 배열 처리에 대한 자세한 내용은 [Code 액션에서 배열 처리하기](/l/ko/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions)를 참조하세요.
-### Step 5: Create the Record
+### 5단계: 레코드 생성
-Add a **Create Record** action:
+**레코드 생성** 액션을 추가합니다:
-| Field | Value |
-| -------------- | ---------------------------------------------------- |
-| **Object** | People |
-| **First Name** | `{{code.contact.firstName}}` |
-| **Last Name** | `{{code.contact.lastName}}` |
-| **Email** | `{{code.contact.email}}` |
-| **Company** | Search or create based on `{{code.contact.company}}` |
+| 필드 | 값 |
+| ------- | ---------------------------------------- |
+| **객체** | 사람들 |
+| **이름** | `{{code.contact.firstName}}` |
+| **성** | `{{code.contact.lastName}}` |
+| **이메일** | `{{code.contact.email}}` |
+| **회사** | `{{code.contact.company}}` 기준으로 검색 또는 생성 |
-### Step 6: Test and Activate
+### 6단계: 테스트 및 활성화
-1. Submit a test response in Typeform
-2. Check the workflow run to verify data was captured
-3. Activate the workflow
+1. Typeform에서 테스트 응답을 제출합니다
+2. 워크플로우 실행을 확인해 데이터가 수집되었는지 검증합니다
+3. 워크플로우를 활성화합니다
-## Related
+## 관련 항목
-* [Set Up a Webhook Trigger](/l/ko/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger)
-* [Handle Arrays in Code Actions](/l/ko/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions)
+* [Webhook 트리거 설정](/l/ko/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger)
+* [Code 액션에서 배열 처리하기](/l/ko/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions)
diff --git a/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/connect-to-other-tools/generate-pdf-from-twenty.mdx b/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/connect-to-other-tools/generate-pdf-from-twenty.mdx
new file mode 100644
index 0000000000..ff5b978aa7
--- /dev/null
+++ b/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/connect-to-other-tools/generate-pdf-from-twenty.mdx
@@ -0,0 +1,228 @@
+---
+title: Twenty에서 PDF 생성
+description: "레코드에 PDF(예: 견적서)를 생성해 첨부하는 워크플로우를 만드세요."
+---
+
+Twenty에서 PDF를 자동으로 생성하거나 가져와 레코드에 첨부합니다. 이는 Company, Opportunity 또는 기타 객체에 연결된 견적서, 송장, 보고서를 생성할 때 흔히 사용됩니다.
+
+## 개요
+
+이 워크플로우는 **수동 트리거**를 사용하므로 사용자가 선택한 레코드에 대해 필요할 때 PDF를 생성할 수 있습니다. **서버리스 함수**가 다음을 처리합니다:
+
+1. URL에서 PDF를 다운로드(PDF 생성 서비스에서 제공)
+2. 파일을 Twenty에 업로드
+3. 레코드에 연결된 첨부 파일 생성
+
+## 사전 준비
+
+워크플로우를 설정하기 전에:
+
+1. **API 키 생성**: **Settings → APIs**로 이동하여 새 API 키를 만드세요. 이 토큰은 서버리스 함수에 필요합니다.
+2. **PDF 생성 서비스 설정**(선택 사항): PDF를 동적으로 생성하려면(예: 견적서) Carbone, PDFMonkey, DocuSeal 같은 서비스를 사용해 PDF를 만들고 다운로드 URL을 받으세요.
+
+## 단계별 설정
+
+### 1단계: 트리거 구성
+
+1. **워크플로우**로 이동해 새 워크플로우를 생성합니다
+2. **수동 트리거**를 선택합니다
+3. PDF를 첨부할 객체를 선택하세요(예: **Company** 또는 **Opportunity**).
+
+
+ 수동 트리거를 사용하면 사용자가 레코드를 선택한 후 우측 상단에 표시되는 버튼으로 이 워크플로우를 실행해 PDF를 생성하고 첨부할 수 있습니다.
+
+
+### 2단계: 서버리스 함수 추가
+
+1. **서버리스 함수** 작업을 추가합니다
+2. 아래 코드로 새 함수를 만드세요
+3. 입력 매개변수를 구성하세요
+
+#### 입력 매개변수
+
+| 매개변수 | 값 |
+| ----------- | ----------------------- |
+| `companyId` | `{{trigger.object.id}}` |
+
+
+ 다른 객체(Person, Opportunity 등)에 첨부하는 경우 해당 매개변수 이름을 바꾸고(예: `personId`, `opportunityId`) 서버리스 함수를 업데이트하세요.
+
+
+#### 서버리스 함수 코드
+
+```typescript
+export const main = async (
+ params: { companyId: string },
+) => {
+ const { companyId } = params;
+
+ // Replace with your Twenty GraphQL endpoint
+ // Cloud: https://api.twenty.com/graphql
+ // Self-hosted: https://your-domain.com/graphql
+ const graphqlEndpoint = 'https://api.twenty.com/graphql';
+
+ // Replace with your API key from Settings → APIs
+ const authToken = 'YOUR_API_KEY';
+
+ // Replace with your PDF URL
+ // This could be from a PDF generation service or a static URL
+ const pdfUrl = 'https://your-pdf-service.com/generated-quote.pdf';
+ const filename = 'quote.pdf';
+
+ // Step 1: Download the PDF file
+ const pdfResponse = await fetch(pdfUrl);
+
+ if (!pdfResponse.ok) {
+ throw new Error(`Failed to download PDF: ${pdfResponse.status}`);
+ }
+
+ const pdfBlob = await pdfResponse.blob();
+ const pdfFile = new File([pdfBlob], filename, { type: 'application/pdf' });
+
+ // Step 2: Upload the file via GraphQL multipart upload
+ const uploadMutation = `
+ mutation UploadFile($file: Upload!, $fileFolder: FileFolder) {
+ uploadFile(file: $file, fileFolder: $fileFolder) {
+ path
+ }
+ }
+ `;
+
+ const uploadForm = new FormData();
+ uploadForm.append('operations', JSON.stringify({
+ query: uploadMutation,
+ variables: { file: null, fileFolder: 'Attachment' },
+ }));
+ uploadForm.append('map', JSON.stringify({ '0': ['variables.file'] }));
+ uploadForm.append('0', pdfFile);
+
+ const uploadResponse = await fetch(graphqlEndpoint, {
+ method: 'POST',
+ headers: { Authorization: `Bearer ${authToken}` },
+ body: uploadForm,
+ });
+
+ const uploadResult = await uploadResponse.json();
+
+ if (uploadResult.errors?.length) {
+ throw new Error(`Upload failed: ${uploadResult.errors[0].message}`);
+ }
+
+ const filePath = uploadResult.data?.uploadFile?.path;
+
+ if (!filePath) {
+ throw new Error('No file path returned from upload');
+ }
+
+ // Step 3: Create the attachment linked to the company
+ const attachmentMutation = `
+ mutation CreateAttachment($data: AttachmentCreateInput!) {
+ createAttachment(data: $data) {
+ id
+ name
+ }
+ }
+ `;
+
+ const attachmentResponse = await fetch(graphqlEndpoint, {
+ method: 'POST',
+ headers: {
+ Authorization: `Bearer ${authToken}`,
+ 'Content-Type': 'application/json',
+ },
+ body: JSON.stringify({
+ query: attachmentMutation,
+ variables: {
+ data: {
+ name: filename,
+ fullPath: filePath,
+ companyId,
+ },
+ },
+ }),
+ });
+
+ const attachmentResult = await attachmentResponse.json();
+
+ if (attachmentResult.errors?.length) {
+ throw new Error(`Attachment creation failed: ${attachmentResult.errors[0].message}`);
+ }
+
+ return attachmentResult.data?.createAttachment;
+};
+```
+
+### 3단계: 사용 사례에 맞게 사용자 지정
+
+#### 다른 객체에 첨부하려면
+
+`companyId`를 해당 필드로 바꾸세요:
+
+| 개체 | 필드 이름 |
+| --------- | -------------------- |
+| 회사 | `companyId` |
+| 사람 | `personId` |
+| 기회 | `opportunityId` |
+| 사용자 지정 개체 | `yourCustomObjectId` |
+
+함수 매개변수와 첨부 생성 mutation의 `variables.data` 객체를 모두 업데이트하세요.
+
+#### 동적 PDF URL을 사용하려면
+
+PDF 생성 서비스를 사용하는 경우 다음을 수행할 수 있습니다:
+
+1. 먼저 PDF를 생성하기 위해 HTTP 요청 작업을 만듭니다
+2. 반환된 PDF URL을 서버리스 함수의 매개변수로 전달합니다
+
+```typescript
+export const main = async (
+ params: { companyId: string; pdfUrl: string; filename: string },
+) => {
+ const { companyId, pdfUrl, filename } = params;
+ // ... rest of the function
+};
+```
+
+### 4단계: 테스트 및 활성화
+
+1. 워크플로우를 저장합니다
+2. Company 레코드로 이동합니다
+3. **⋮** 메뉴를 클릭하고 워크플로우를 선택합니다
+4. 레코드의 **Attachments** 섹션에서 PDF가 첨부되었는지 확인합니다
+5. 워크플로우를 활성화합니다
+
+## PDF 생성 서비스와 결합하기
+
+동적 견적서나 송장을 생성하려면:
+
+### 예시: 견적서 생성 → PDF 첨부
+
+| 단계 | 작업 | 목적 |
+| -- | --------------- | ------------------------------- |
+| 1 | 수동 트리거(Company) | 사용자가 레코드에서 시작 |
+| 2 | 레코드 검색 | Opportunity 또는 라인 아이템 세부정보 가져오기 |
+| 3 | HTTP 요청 | 레코드 데이터를 사용해 PDF 생성 API 호출 |
+| 4 | 서버리스 함수 | 생성된 PDF를 다운로드해 첨부 |
+
+### 널리 사용되는 PDF 생성 서비스
+
+* **Carbone** - 템플릿 기반 문서 생성
+* **PDFMonkey** - 템플릿 기반 동적 PDF 생성
+* **DocuSeal** - 문서 자동화 플랫폼
+* **Documint** - API 우선 문서 생성
+
+각 서비스는 PDF URL을 반환하는 API를 제공하며, 이 URL을 서버리스 함수에 전달할 수 있습니다.
+
+## 문제 해결
+
+| 문제 | 해결책 |
+| ------------- | --------------------------------------- |
+| "PDF 다운로드 실패" | PDF URL에 접근할 수 있으며 유효한 PDF를 반환하는지 확인하세요 |
+| "업로드 실패" | API 키가 유효하고 쓰기 권한이 있는지 확인하세요 |
+| "첨부 파일 생성 실패" | 객체 ID 필드 이름이 대상 객체와 일치하는지 확인하세요 |
+
+## 관련 항목
+
+* [워크플로우 트리거](/l/ko/user-guide/workflows/capabilities/workflow-triggers)
+* [서버리스 함수](/l/ko/user-guide/workflows/capabilities/workflow-actions#serverless-function)
+* [Twenty에서 견적서 또는 송장 생성](/l/ko/user-guide/workflows/how-tos/connect-to-other-tools/generate-quote-or-invoice-from-twenty)
diff --git a/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/connect-to-other-tools/generate-quote-or-invoice-from-twenty.mdx b/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/connect-to-other-tools/generate-quote-or-invoice-from-twenty.mdx
index bd9c2a5731..8b9c676e5c 100644
--- a/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/connect-to-other-tools/generate-quote-or-invoice-from-twenty.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/connect-to-other-tools/generate-quote-or-invoice-from-twenty.mdx
@@ -1,52 +1,52 @@
---
-title: Generate a Quote or Invoice from Twenty
-description: Automatically create invoices in external tools when deals close.
+title: Twenty에서 견적서 또는 인보이스 생성
+description: 거래가 성사되면 외부 도구에서 인보이스를 자동으로 생성합니다.
---
-Automatically send deal data to your invoicing system (Stripe, QuickBooks, Xero, etc.) when an opportunity is won.
+거래 데이터를 인보이스 시스템(Stripe, QuickBooks, Xero 등)으로 자동으로 전송합니다. 기회가 성사되었을 때.
-## Workflow Structure
+## 워크플로우 구조
-1. **Trigger**: Record is Updated (Opportunity)
-2. **Filter**: Stage = Closed Won
-3. **Search Record**: Get Company details
-4. **Code** (optional): Format payload
-5. **HTTP Request**: Send to invoicing system
+1. **트리거**: 레코드가 업데이트됨(기회)
+2. **필터**: Stage = Closed Won
+3. **레코드 검색**: 회사 세부정보 가져오기
+4. **코드**(선택): 페이로드 형식 지정
+5. **HTTP 요청**: 인보이스 시스템으로 전송
-## Step 1: Set Up the Trigger
+## 단계 1: 트리거 설정
-1. Create a new workflow
-2. Select **Record is Updated** trigger
-3. Choose **Opportunity** as the object
+1. 새 워크플로우 만들기
+2. **레코드가 업데이트됨** 트리거 선택
+3. 객체로 **기회(Opportunity)** 선택
-## Step 2: Filter for Closed Won
+## 단계 2: Closed Won 필터링
-Add a **Filter** action to only continue when the deal is won:
+거래가 성사된 경우에만 계속되도록 **필터** 작업을 추가합니다:
-| Setting | Value |
-| ------------- | --------------------------------- |
-| **Field** | Stage |
-| **Condition** | Equals |
-| **Value** | `CLOSED_WON` (or your stage name) |
+| 설정 | 값 |
+| ------ | ------------------------------- |
+| **필드** | 단계 |
+| **조건** | 같음 |
+| **값** | `CLOSED_WON` (또는 사용 중인 스테이지 이름) |
- The trigger fires on any Opportunity update. The Filter ensures the workflow only continues when the stage changes to Closed Won.
+ 트리거는 모든 기회 업데이트에서 실행됩니다. 필터는 스테이지가 Closed Won으로 변경될 때만 워크플로우가 계속 진행되도록 보장합니다.
-## Step 3: Get Company Details
+## 단계 3: 회사 세부정보 가져오기
-The Opportunity record may not include all Company fields you need for the invoice. Add a **Search Record** action:
+기회 레코드에는 인보이스에 필요한 모든 회사 필드가 포함되지 않을 수 있습니다. **레코드 검색** 작업을 추가합니다:
-| Setting | Value |
-| ------------ | ---------------------------------------- |
-| **Object** | Company |
-| **Match by** | ID equals `{{trigger.object.companyId}}` |
+| 설정 | 값 |
+| --------- | -------------------------------------- |
+| **객체** | 회사 |
+| **일치 기준** | ID가 `{{trigger.object.companyId}}`와 같음 |
-This retrieves the full Company record with billing address, tax ID, etc.
+청구지 주소, 세금 ID 등과 함께 전체 회사 레코드를 가져옵니다.
-## Step 4: Format the Payload (Optional)
+## 단계 4: 페이로드 형식 지정(선택)
-If your invoicing system expects a specific format, add a **Code** action:
+인보이스 시스템에서 특정 형식이 필요한 경우 **코드** 작업을 추가합니다:
```javascript
export const main = async (params: {
@@ -84,18 +84,18 @@ export const main = async (params: {
};
```
-## Step 5: Send to Invoicing System
+## 단계 5: 인보이스 시스템으로 전송
-Add an **HTTP Request** action:
+**HTTP 요청** 작업을 추가합니다:
-| Setting | Value |
-| ----------- | ----------------------------------------- |
-| **Method** | POST |
-| **URL** | Your invoicing API endpoint |
-| **Headers** | `Authorization: Bearer YOUR_API_KEY` |
-| **Body** | `{{code.invoice}}` or map fields directly |
+| 설정 | 값 |
+| ------- | ------------------------------------ |
+| **방법** | POST |
+| **URL** | 인보이스 API 엔드포인트 |
+| **헤더** | `Authorization: Bearer YOUR_API_KEY` |
+| **본문** | `{{code.invoice}}` 또는 필드를 직접 매핑 |
-### Example: Stripe Invoice
+### 예시: Stripe 인보이스
```
POST https://api.stripe.com/v1/invoices
@@ -109,7 +109,7 @@ Body:
days_until_due: 30
```
-### Example: QuickBooks Invoice
+### 예시: QuickBooks 인보이스
```
POST https://quickbooks.api.intuit.com/v3/company/{realmId}/invoice
@@ -120,24 +120,25 @@ Headers:
Body: {{code.invoice}}
```
-## Complete Workflow Summary
+## 전체 워크플로우 요약
-| Step | Action | Purpose |
-| ---- | ----------------------- | ------------------------------------ |
-| 1 | Trigger: Record Updated | Fires when any Opportunity changes |
-| 2 | Filter | Only proceed if Stage = Closed Won |
-| 3 | Search Record | Get full Company details for billing |
-| 4 | Code | Format data for invoicing API |
-| 5 | HTTP Request | Create invoice in external system |
+| 단계 | 작업 | 목적 |
+| -- | -------------- | --------------------------- |
+| 1 | 트리거: 레코드 업데이트됨 | 어떤 기회가 변경되면 실행 |
+| 2 | 필터 | Stage = Closed Won인 경우에만 진행 |
+| 3 | 레코드 검색 | 청구를 위한 전체 회사 세부정보 가져오기 |
+| 4 | 코드 | 인보이스 API용 데이터 형식 지정 |
+| 5 | HTTP 요청 | 외부 시스템에서 인보이스 생성 |
-## Tips
+## 팁
-* **Store external IDs**: Save the invoice ID returned by the API back to the Opportunity using an **Update Record** action
-* **Error handling**: Add a branch to send a notification if the HTTP request fails
-* **Test first**: Use your invoicing system's sandbox/test mode before going live
+* **외부 ID 저장**: **레코드 업데이트** 작업을 사용하여 API가 반환한 인보이스 ID를 기회에 다시 저장합니다
+* **오류 처리**: HTTP 요청이 실패하면 알림을 보내는 분기 추가
+* **먼저 테스트**: 실제 운영 전에 인보이스 시스템의 샌드박스/테스트 모드를 사용하세요
-## Related
+## 관련 항목
-* [Workflow Triggers](/l/ko/user-guide/workflows/capabilities/workflow-triggers)
-* [Workflow Actions](/l/ko/user-guide/workflows/capabilities/workflow-actions)
-* [Closed Won Automations](/l/ko/user-guide/workflows/how-tos/crm-automations/closed-won-automations)
+* [Twenty에서 PDF 생성](/l/ko/user-guide/workflows/how-tos/connect-to-other-tools/generate-pdf-from-twenty) — 생성된 PDF를 레코드에 첨부
+* [워크플로우 트리거](/l/ko/user-guide/workflows/capabilities/workflow-triggers)
+* [워크플로우 액션](/l/ko/user-guide/workflows/capabilities/workflow-actions)
+* [Closed Won 자동화](/l/ko/user-guide/workflows/how-tos/crm-automations/closed-won-automations)
diff --git a/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx b/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx
index 79c0de0411..880cfbe4a3 100644
--- a/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx
@@ -1,44 +1,44 @@
---
-title: Set Up a Webhook Trigger
-description: Receive data from external services to trigger workflows.
+title: 웹훅 트리거 설정
+description: 외부 서비스에서 데이터를 받아 워크플로우를 트리거합니다.
image: /images/user-guide/workflows/workflow.png
---
-Webhook triggers allow external services to start your workflows by sending data to a unique URL. Use them to connect forms, third-party apps, and custom integrations.
+웹훅 트리거는 고유한 URL로 데이터를 보내 외부 서비스가 워크플로우를 시작할 수 있게 합니다. 양식, 서드파티 앱 및 커스텀 통합과 연결하는 데 사용하세요.
-## When to Use Webhooks
+## 웹훅을 언제 사용할지
-| Use Case | Example |
-| ----------------------- | --------------------------------------- |
-| **Web forms** | Contact form submissions create leads |
-| **Third-party apps** | Stripe payment → create customer record |
-| **Custom integrations** | Your app → Twenty automation |
-| **No-code tools** | Zapier, Make, n8n connections |
+| 사용 사례 | 예시 |
+| ---------- | --------------------- |
+| **웹 폼** | 문의 폼 제출 시 리드가 생성됩니다 |
+| **서드파티 앱** | Stripe 결제 → 고객 레코드 생성 |
+| **커스텀 통합** | 사용자 앱 → Twenty 자동화 |
+| **노코드 도구** | Zapier, Make, n8n 연결 |
-## Step-by-Step Setup
+## 단계별 설정
-### Step 1: Create the Workflow
+### 1단계: 워크플로우 생성
-1. Go to **Settings → Workflows**
-2. Click **+ New Workflow**
-3. Name it (e.g., "Website Form Submission")
+1. **설정 → 워크플로우**로 이동
+2. **+ 새 워크플로우**를 클릭
+3. 이름을 지정합니다(예: "웹사이트 폼 제출")
-### Step 2: Configure the Webhook Trigger
+### 2단계: 웹훅 트리거 구성
-1. Click on the trigger block
-2. Select **Webhook**
-3. You'll receive a unique webhook URL like:
+1. 트리거 블록을 클릭하세요
+2. **웹훅**을 선택
+3. 다음과 같은 고유한 웹훅 URL이 제공됩니다:
```
https://api.twenty.com/webhooks/workflow/abc123...
```
-4. Copy this URL—you'll need it for your external service
+4. 이 URL을 복사하세요—외부 서비스에 필요합니다
-### Step 3: Define Expected Data Structure
+### 3단계: 예상 데이터 구조 정의
-For **POST** requests, define the expected body structure:
+**POST** 요청의 경우, 예상 본문 구조를 정의하세요:
-1. Click **Define expected body**
-2. Enter a sample JSON that matches what your service will send:
+1. **예상 본문 정의**를 클릭
+2. 서비스가 보내는 형식과 일치하는 샘플 JSON을 입력하세요:
```json
{
@@ -50,30 +50,30 @@ For **POST** requests, define the expected body structure:
}
```
-3. Click **Save**—this creates variables you can use in subsequent steps
+3. **저장**을 클릭하세요—이렇게 하면 이후 단계에서 사용할 수 있는 변수가 생성됩니다
-### Step 4: Add Actions
+### 4단계: 액션 추가
-Now add actions that use the webhook data:
+이제 웹훅 데이터를 사용하는 액션을 추가하세요:
-**Example: Create a Person record**
+**예시: 사람 레코드 생성**
-1. Add **Create Record** action
-2. Select **People** object
-3. Map fields:
+1. **레코드 생성** 액션을 추가
+2. **People** 객체를 선택
+3. 필드 매핑:
-| Field | Value |
-| ---------- | ---------------------------------------------------- |
-| First Name | `{{trigger.body.firstName}}` |
-| Last Name | `{{trigger.body.lastName}}` |
-| Email | `{{trigger.body.email}}` |
-| Company | Search or create based on `{{trigger.body.company}}` |
+| 필드 | 값 |
+| --- | ---------------------------------------- |
+| 이름 | `{{trigger.body.firstName}}` |
+| 성 | `{{trigger.body.lastName}}` |
+| 이메일 | `{{trigger.body.email}}` |
+| 회사 | `{{trigger.body.company}}` 기준으로 검색 또는 생성 |
-### Step 5: Test the Webhook
+### 5단계: 웹훅 테스트
-Before activating, test your webhook:
+활성화하기 전에 웹훅을 테스트하세요:
-**Using cURL**:
+**cURL 사용**:
```bash
curl -X POST https://api.twenty.com/webhooks/workflow/abc123... \
@@ -81,22 +81,22 @@ curl -X POST https://api.twenty.com/webhooks/workflow/abc123... \
-d '{"firstName":"Test","lastName":"User","email":"test@example.com"}'
```
-**Using Postman or similar**:
+**Postman 등 사용**:
-1. Create a POST request to your webhook URL
-2. Set Content-Type header to `application/json`
-3. Add your test JSON body
-4. Send and check workflow runs
+1. 웹훅 URL로 POST 요청을 생성
+2. Content-Type 헤더를 `application/json`으로 설정
+3. 테스트 JSON 본문을 추가
+4. 전송하고 워크플로우 실행을 확인하세요.
-### Step 6: Activate
+### 6단계: 활성화
-Once tested, click **Activate** to make the workflow live.
+테스트가 완료되면 **활성화**를 클릭하여 워크플로우를 라이브로 전환하세요.
-## Handling Different Data Structures
+## 다양한 데이터 구조 처리
-### Nested Data
+### 중첩 데이터
-If your webhook sends nested data:
+웹훅이 중첩 데이터를 보내는 경우:
```json
{
@@ -108,11 +108,11 @@ If your webhook sends nested data:
}
```
-Reference with: `{{trigger.body.contact.email}}`
+다음과 같이 참조: `{{trigger.body.contact.email}}`
-### Arrays
+### 배열
-If data includes arrays:
+데이터에 배열이 포함된 경우:
```json
{
@@ -123,11 +123,11 @@ If data includes arrays:
}
```
-How you handle arrays depends on your use case:
+배열 처리 방식은 사용 사례에 따라 다릅니다:
-**Unknown number of items → Use Iterator**
+**항목 개수를 알 수 없음 → Iterator 사용**
-If you need to process each item in the array (e.g., create a record for each), add a **Code** action to parse the array, then use **Iterator**:
+배열의 각 항목을 처리해야 하는 경우(예: 각 항목마다 레코드 생성), 배열을 파싱하기 위해 **Code** 액션을 추가한 다음 **Iterator**를 사용하세요:
```javascript
export const main = async (params: { items: any }) => {
@@ -138,11 +138,11 @@ export const main = async (params: { items: any }) => {
};
```
-Then use Iterator to loop through: `{{code.items}}`
+그런 다음 Iterator로 순회합니다: `{{code.items}}`
-**Known/specific fields → Extract to named fields**
+**알려진/특정 필드 → 명명된 필드로 추출**
-If the array contains specific fields you want to access individually (e.g., form answers where position 0 is always "first name", position 1 is always "last name"), add a **Code** action to extract them:
+배열에 개별적으로 접근하려는 특정 필드가 포함되어 있다면(예: 위치 0은 항상 "first name", 위치 1은 항상 "last name"인 폼 답변), 이를 추출하기 위해 **Code** 액션을 추가하세요:
```javascript
export const main = async (params: { items: any }) => {
@@ -159,13 +159,13 @@ export const main = async (params: { items: any }) => {
};
```
-Now you can select `product.name` and `product.qty` individually in subsequent steps.
+이제 이후 단계에서 `product.name` 및 `product.qty`를 개별적으로 선택할 수 있습니다.
- For more details on handling arrays, see [Handle Arrays in Code Actions](/l/ko/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions).
+ 배열 처리에 대한 자세한 내용은 [Code 액션에서 배열 처리하기](/l/ko/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions)를 참조하세요.
-## Related
+## 관련 항목
-* [Workflow Triggers](/l/ko/user-guide/workflows/capabilities/workflow-triggers)
-* [Workflow Actions](/l/ko/user-guide/workflows/capabilities/workflow-actions)
+* [워크플로우 트리거](/l/ko/user-guide/workflows/capabilities/workflow-triggers)
+* [워크플로우 액션](/l/ko/user-guide/workflows/capabilities/workflow-actions)
diff --git a/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/crm-automations/closed-won-automations.mdx b/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/crm-automations/closed-won-automations.mdx
index 1c6a086580..8e68b3006d 100644
--- a/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/crm-automations/closed-won-automations.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/crm-automations/closed-won-automations.mdx
@@ -1,140 +1,140 @@
---
-title: Closed Won Automations
-description: Automate post-win activities when opportunities close.
+title: Closed Won 자동화
+description: 기회가 성사되면 사후 작업을 자동화합니다.
---
-When a deal closes, multiple things need to happen: update company status, notify team members, create onboarding tasks. Automate all of this with a single workflow.
+거래가 성사되면 여러 작업이 필요합니다: 회사 상태 업데이트, 팀 구성원 알림, 온보딩 작업 생성. 워크플로우 하나로 이 모든 것을 자동화하세요.
-## The Problem
+## 문제
-When an opportunity moves to "Closed Won":
+기회가 "Closed Won" 단계로 이동하면:
-* Company type needs to change from "Prospect" to "Customer"
-* Onboarding tasks need to be created
-* Customer success team needs to be notified
-* Sales rep needs confirmation
+* 회사 유형을 "Prospect"에서 "Customer"로 변경해야 합니다
+* 온보딩 작업을 생성해야 합니다
+* Customer Success 팀에 알림을 보내야 합니다
+* 영업 담당자에게 확인을 보내야 합니다
-Doing this manually is time-consuming and error-prone.
+이 작업을 수동으로 하면 시간도 많이 들고 오류가 발생하기 쉽습니다.
-## The Solution
+## 해결책
-Create a workflow that handles all post-win activities automatically.
+성사 후 모든 활동을 자동으로 처리하는 워크플로우를 만드세요.
-## Complete Workflow Setup
+## 전체 워크플로우 설정
-### Step 1: Create the Workflow
+### 1단계: 워크플로우 생성
-1. Go to **Settings → Workflows**
-2. Click **+ New Workflow**
-3. Name it "Deal Won - Post-Win Automation"
+1. **설정 → 워크플로우**로 이동
+2. **+ 새 워크플로우**를 클릭
+3. 이름을 "Deal Won - Post-Win Automation"으로 지정
-### Step 2: Configure the Trigger
+### 2단계: 트리거 구성
-1. Select **Record is Updated**
-2. Choose **Opportunities**
-3. Under "Fields to monitor", select **Stage**
+1. **레코드가 업데이트됨**을 선택
+2. **Opportunities**를 선택
+3. "Fields to monitor"에서 **Stage**를 선택
-### Step 3: Add Stage Filter
+### 3단계: Stage 필터 추가
-1. Add **Filter** action
-2. Condition: `{{trigger.object.stage}}` equals "Closed Won"
+1. **필터** 액션을 추가합니다
+2. 조건: `{{trigger.object.stage}}`이 "Closed Won"과 같음
-### Step 4: Update Company Type
+### 4단계: 회사 유형 업데이트
-1. Add **Update Record** action
-2. Configure:
+1. **Update Record** 액션을 추가
+2. 구성:
-| Field | Value |
-| ------------------- | ------------------------------- |
-| **Object** | Companies |
-| **Record** | `{{trigger.object.company.id}}` |
-| **Type** | Customer |
-| **First Deal Date** | `{{trigger.object.closedAt}}` |
-| **Account Owner** | `{{trigger.object.owner.id}}` |
+| 필드 | 값 |
+| ----------- | ------------------------------- |
+| **객체** | 회사 |
+| **레코드** | `{{trigger.object.company.id}}` |
+| **유형** | 고객 |
+| **첫 거래 날짜** | `{{trigger.object.closedAt}}` |
+| **계정 소유자** | `{{trigger.object.owner.id}}` |
-### Step 5: Create Onboarding Task
+### 5단계: 온보딩 작업 생성
-1. Add **Create Record** action
-2. Configure:
+1. **레코드 생성** 액션을 추가
+2. 구성:
-| Field | Value |
-| ----------------------- | ---------------------------------------------------------------------------------------------------- |
-| **Object** | Tasks |
-| **Title** | `Onboarding: {{trigger.object.name}}` |
-| **Assignee** | Customer Success team member |
-| **Due Date** | 3 days from now |
-| **Priority** | High |
-| **Related Company** | `{{trigger.object.company.id}}` |
-| **Related Opportunity** | `{{trigger.object.id}}` |
-| **Description** | `New customer onboarding for {{trigger.object.company.name}}. Deal value: {{trigger.object.amount}}` |
+| 필드 | 값 |
+| --------- | ------------------------------------------------------------------------------ |
+| **객체** | 작업 |
+| **제목** | `Onboarding: {{trigger.object.name}}` |
+| **담당자** | Customer Success 팀 구성원 |
+| **마감일** | 지금부터 3일 후 |
+| **우선 순위** | 높음 |
+| **관련 회사** | `{{trigger.object.company.id}}` |
+| **관련 기회** | `{{trigger.object.id}}` |
+| **설명** | `신규 고객 온보딩: {{trigger.object.company.name}}. 거래 금액: {{trigger.object.amount}}` |
-### Step 6: Notify Customer Success
+### 6단계: Customer Success에 알림 보내기
-1. Add **Send Email** action
-2. Configure:
+1. 이메일 보내기 액션 추가
+2. 구성:
-| Field | Value |
-| ----------- | -------------------------------------------------- |
-| **To** | customer-success@yourcompany.com |
-| **Subject** | `🎉 New Customer: {{trigger.object.company.name}}` |
-| **Body** | See example below |
+| 필드 | 값 |
+| --------- | -------------------------------------------------- |
+| **받는 사람** | customer-success@yourcompany.com |
+| **제목** | `🎉 New Customer: {{trigger.object.company.name}}` |
+| **본문** | 아래 예시를 참조하세요 |
-**Email body example**:
+**이메일 본문 예시**:
```
-Hi CS Team,
+안녕하세요 CS 팀,
-We have a new customer!
+신규 고객이 생겼습니다!
-Company: {{trigger.object.company.name}}
-Deal: {{trigger.object.name}}
-Value: {{trigger.object.amount}}
-Sales Rep: {{trigger.object.owner.name}}
-Close Date: {{trigger.object.closedAt}}
+회사: {{trigger.object.company.name}}
+거래: {{trigger.object.name}}
+금액: {{trigger.object.amount}}
+영업 담당자: {{trigger.object.owner.name}}
+종결일: {{trigger.object.closedAt}}
-An onboarding task has been created automatically.
+온보딩 작업이 자동으로 생성되었습니다.
-Let's give them a great start!
+멋진 시작을 할 수 있도록 도와주세요!
```
-### Step 7: Confirm to Sales Rep
+### 7단계: 영업 담당자에게 확인 보내기
-1. Add another **Send Email** action
-2. Configure:
+1. 또 하나의 **이메일 보내기** 액션 추가
+2. 구성:
-| Field | Value |
-| ----------- | -------------------------------------------------------------------------------------------------------------------- |
-| **To** | `{{trigger.object.owner.email}}` |
-| **Subject** | `✅ Deal Closed: {{trigger.object.name}}` |
-| **Body** | Congratulations! Your deal has been processed. The customer success team has been notified and onboarding has begun. |
+| 필드 | 값 |
+| --------- | ---------------------------------------------------------------- |
+| **받는 사람** | `{{trigger.object.owner.email}}` |
+| **제목** | `✅ Deal Closed: {{trigger.object.name}}` |
+| **본문** | 축하합니다! 거래가 처리되었습니다. Customer Success 팀에 알림이 전송되었으며 온보딩이 시작되었습니다. |
-### Step 8: Test and Activate
+### 8단계: 테스트 및 활성화
-1. Test by moving a test opportunity to "Closed Won"
-2. Verify:
- * Company type changed to "Customer"
- * Onboarding task created
- * CS team received email
- * Sales rep received confirmation
-3. Activate when ready
+1. 테스트용 기회를 "Closed Won"으로 이동하여 테스트하세요
+2. 확인:
+ * 회사 유형이 "Customer"로 변경됨
+ * 온보딩 작업 생성됨
+ * CS 팀이 이메일을 받음
+ * 영업 담당자가 확인을 받음
+3. 준비되면 활성화합니다
-## Handling Closed Lost
+## Closed Lost 처리
-Create a similar workflow for lost deals:
+실패한 거래에 대해서도 유사한 워크플로우를 만드세요:
-### Trigger
+### 트리거
-* Record is Updated (Opportunities, Stage = "Closed Lost")
+* 레코드가 업데이트됨 (Opportunities, Stage = "Closed Lost")
-### Actions
+### 작업
-1. **Create Record**: Task for "Lost Deal Analysis"
-2. **Update Record**: Add lost reason to company record
-3. **Send Email**: Notify manager of lost deal
+1. **레코드 생성**: "Lost Deal Analysis"용 작업
+2. **레코드 업데이트**: 회사 레코드에 실패 사유 추가
+3. **이메일 보내기**: 실패한 거래를 관리자에게 알림
-## Advanced: Multi-Step Onboarding
+## 고급: 다단계 온보딩
-For complex onboarding, create multiple tasks:
+복잡한 온보딩의 경우 여러 작업을 생성합니다:
```javascript
export const main = async (params) => {
@@ -149,31 +149,31 @@ export const main = async (params) => {
};
```
-Use **Iterator** to create each task from the array.
+배열에서 각 작업을 생성하려면 **Iterator**를 사용하세요.
-## Customization Ideas
+## 맞춤화 아이디어
-### Keep your other tools up-to-date
+### 다른 도구도 최신 상태로 유지하세요
-* Create customer in billing system with an **HTTP Request**
+* **HTTP Request**로 결제 시스템에 고객 생성
-### Conditional Actions
+### 조건부 작업
-Use **Filter** actions to:
+**필터** 액션을 사용하여 다음을 수행:
-* Different onboarding for enterprise vs SMB
-* Different assignees based on region
-* Skip notifications for small deals
+* 엔터프라이즈와 SMB에 다른 온보딩 적용
+* 지역에 따라 다른 담당자 지정
+* 소액 거래는 알림 생략
-### Include Deal Details
+### 거래 세부 정보 포함
-Use **Code** action to format:
+형식을 지정하려면 **Code** 액션을 사용하세요:
-* Deal summary documents
-* Handoff notes for CS team
-* Custom onboarding checklists
+* 거래 요약 문서
+* CS 팀을 위한 인수인계 노트
+* 맞춤형 온보딩 체크리스트
-## Related
+## 관련 항목
-* [Workflow Actions](/l/ko/user-guide/workflows/capabilities/workflow-actions)
-* [Send Emails from Workflows](/l/ko/user-guide/workflows/capabilities/send-emails-from-workflows)
+* [워크플로우 액션](/l/ko/user-guide/workflows/capabilities/workflow-actions)
+* [워크플로우에서 이메일 보내기](/l/ko/user-guide/workflows/capabilities/send-emails-from-workflows)
diff --git a/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/crm-automations/detect-stale-opportunities.mdx b/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/crm-automations/detect-stale-opportunities.mdx
index 595c13e569..cce92a3791 100644
--- a/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/crm-automations/detect-stale-opportunities.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/crm-automations/detect-stale-opportunities.mdx
@@ -1,56 +1,56 @@
---
-title: Detect Stale Opportunities
-description: Automatically notify managers when opportunities haven't been updated.
+title: 오래된 기회 감지
+description: 기회가 업데이트되지 않았을 때 관리자에게 자동으로 알립니다.
---
-Keep your pipeline healthy by alerting managers when opportunities go stale. This workflow checks for opportunities that haven't been updated in a specified number of days.
+기회가 오래되면 관리자에게 알림을 보내 파이프라인을 건강하게 유지하세요. 이 워크플로우는 지정한 일수 동안 업데이트되지 않은 기회를 확인합니다.
-## The Problem
+## 문제
-Opportunities sitting without updates lead to:
+업데이트 없이 방치된 기회는 다음을 초래합니다:
-* Deals going cold
-* Unreliable forecasts
-* Lost revenue
+* 거래가 식어감
+* 신뢰할 수 없는 매출 예측
+* 매출 손실
-## The Solution
+## 해결책
-Create a scheduled workflow that finds stale opportunities and emails their managers.
+오래된 기회를 찾아 해당 관리자에게 이메일을 보내는 예약 워크플로우를 만듭니다.
-## Step-by-Step Setup
+## 단계별 설정
-### Step 1: Create the Workflow
+### 1단계: 워크플로우 생성
-1. Go to **Settings → Workflows**
-2. Click **+ New Workflow**
-3. Name it "Stale Opportunity Alert"
+1. **설정 → 워크플로우**로 이동
+2. **+ 새 워크플로우**를 클릭
+3. 이름을 "오래된 기회 경고"로 지정
-### Step 2: Configure the Trigger
+### 2단계: 트리거 구성
-1. Select **On a Schedule**
-2. Set to run daily (e.g., every day at 8 AM)
+1. **On a Schedule**를 선택
+2. 매일 실행되도록 설정합니다(예: 매일 오전 8시).
-### Step 3: Search for Stale Opportunities
+### 3단계: 오래된 기회 검색
-1. Add **Search Records** action
-2. Configure:
+1. **레코드 검색** 액션을 추가합니다
+2. 구성:
-| Field | Value |
-| ---------- | ----------------------------------------------- |
-| **Object** | Opportunities |
-| **Filter** | Updated At is before (today - 7 days) |
-| **Filter** | Stage is not "Closed Won" AND not "Closed Lost" |
-| **Limit** | 100 |
+| 필드 | 값 |
+| ------ | ------------------------------------------ |
+| **객체** | 기회 |
+| **필터** | Updated At이 (오늘 - 7일) 이전 |
+| **필터** | Stage가 "Closed Won"이 아니며 "Closed Lost"도 아님 |
+| **제한** | 100 |
-### Step 4: Check If Any Found
+### 4단계: 발견된 항목이 있는지 확인
-1. Add **Filter** action
-2. Condition: `{{searchRecords.length}}` is greater than 0
-3. If no stale opportunities, the workflow stops here
+1. **필터** 액션을 추가합니다
+2. 조건: `{{searchRecords.length}}`가 0보다 큼
+3. 오래된 기회가 없으면 워크플로우는 여기서 중지됩니다
-### Step 5: Format the Alert (Code Action)
+### 5단계: 경고 형식 지정(코드 액션)
-Add a **Code** action to format the email:
+이메일을 형식 지정하기 위해 **코드** 액션을 추가합니다:
```javascript
export const main = async (params) => {
@@ -88,49 +88,49 @@ export const main = async (params) => {
};
```
-### Step 6: Send Alert Email
+### 6단계: 경고 이메일 보내기
-Add **Send Email** action:
+이메일 보내기 액션 추가:
-| Field | Value |
-| ----------- | ----------------------------------------------------------- |
-| **To** | sales-manager@yourcompany.com |
-| **Subject** | `🚨 {{code.totalCount}} Stale Opportunities Need Attention` |
-| **Body** | `{{code.summary}}` |
+| 필드 | 값 |
+| --------- | -------------------------------------------- |
+| **받는 사람** | sales-manager@yourcompany.com |
+| **제목** | `🚨 {{code.totalCount}}건의 오래된 기회에 주의가 필요합니다` |
+| **본문** | `{{code.summary}}` |
-### Step 7: Test and Activate
+### 7단계: 테스트 및 활성화
-1. Click **Test** to run the workflow
-2. Check that the email contains the right data
-3. Activate when ready
+1. 워크플로우를 실행하려면 **Test**를 클릭합니다
+2. 이메일에 올바른 데이터가 포함되어 있는지 확인합니다
+3. 준비되면 활성화합니다
-## Customization Options
+## 맞춤 설정 옵션
-### Change Staleness Threshold
+### 정체 임계값 변경
-Modify the Search Records filter to change from 7 days to your preferred period:
+레코드 검색 필터를 수정하여 7일을 원하는 기간으로 변경합니다:
-* 3 days for high-velocity sales
-* 14 days for enterprise deals
-* 30 days for long sales cycles
+* 고속 영업의 경우 3일
+* 엔터프라이즈 거래의 경우 14일
+* 긴 영업 주기의 경우 30일
-### Alert Individual Reps
+### 개별 영업 담당자 알림
-Instead of one manager email, use **Iterator** to send personalized emails to each rep about their own stale deals.
+관리자에게 보내는 단일 이메일 대신 **Iterator**를 사용하여 각 영업 담당자에게 자신의 오래된 거래에 대한 개인화된 이메일을 보냅니다.
-### Add Escalation
+### 에스컬레이션 추가
-Create multiple workflows with increasing severity:
+심각도가 점차 높아지도록 여러 개의 워크플로우를 만듭니다:
-1. Day 7: Email to rep
-2. Day 14: Email to rep + manager
-3. Day 21: Create task for manager to intervene
+1. 7일차: 영업 담당자에게 이메일
+2. 14일차: 영업 담당자 및 관리자에게 이메일
+3. 21일차: 관리자가 개입할 수 있도록 작업 생성
-### Include in Slack
+### Slack에 포함
-Use **HTTP Request** to post to a Slack webhook instead of or in addition to email.
+이메일 대신 또는 추가로 **HTTP Request**를 사용해 Slack 웹훅으로 게시합니다.
-## Related
+## 관련 항목
-* [Workflow Actions](/l/ko/user-guide/workflows/capabilities/workflow-actions)
-* [Send Emails from Workflows](/l/ko/user-guide/workflows/capabilities/send-emails-from-workflows)
+* [워크플로우 액션](/l/ko/user-guide/workflows/capabilities/workflow-actions)
+* [워크플로우에서 이메일 보내기](/l/ko/user-guide/workflows/capabilities/send-emails-from-workflows)
diff --git a/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/crm-automations/display-number-of-emails-received.mdx b/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/crm-automations/display-number-of-emails-received.mdx
index e29100fe45..9ba807f1c7 100644
--- a/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/crm-automations/display-number-of-emails-received.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/crm-automations/display-number-of-emails-received.mdx
@@ -1,74 +1,74 @@
---
-title: Display Number of Emails Received
-description: Create a workflow to automatically count and display the number of emails received from each contact.
+title: 수신한 이메일 수 표시
+description: 각 연락처로부터 받은 이메일 수를 자동으로 집계해 표시하는 워크플로우를 만듭니다.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-## Overview
+## 개요
-This workflow triggers every time a new email is received and updates a custom field on the Person record with the total count of emails from that sender.
+이 워크플로우는 새 이메일을 받을 때마다 트리거되며, 해당 발신자로부터 받은 이메일의 총 개수를 사람 레코드의 사용자 지정 필드에 업데이트합니다.
-## Prerequisites
+## 사전 준비
-Before setting up this workflow, create a custom field on the **People** object:
+이 워크플로우를 설정하기 전에 **사람** 객체에 사용자 지정 필드를 생성합니다:
-1. Go to **Settings → Data Model → People**
-2. Add a new **Number** field
-3. Name it something like "Number of emails received from this person"
+1. **설정 → 데이터 모델 → 사람**으로 이동
+2. 새 **숫자** 필드를 추가합니다
+3. 필드 이름을 "이 사람에게서 받은 이메일 수"처럼 지정합니다
-## Step-by-Step Setup
+## 단계별 설정
-
+
-### Step 1: Configure the Trigger
+### 1단계: 트리거 구성
-1. Go to **Workflows** and create a new workflow
-2. Select **Record is Created** as the trigger
-3. Choose **Message Participants** (available under Advanced objects)
+1. **워크플로우**로 이동해 새 워크플로우를 생성합니다
+2. 트리거로 **레코드가 생성됨**을 선택합니다
+3. **Message Participants**를 선택합니다(고급 객체에 있음)
- A Message Participant is a combination of a message ID and a person ID, creating one unique record per message. This is easier to track than Messages directly because we can access the `handle` field, which contains the sender's (or recipient's) email address.
+ Message Participant는 메시지 ID와 사람 ID의 조합으로, 메시지마다 하나의 고유 레코드를 생성합니다. 이는 발신자(또는 수신자)의 이메일 주소가 들어 있는 `handle` 필드에 접근할 수 있으므로 메시지를 직접 추적하는 것보다 더 쉽습니다.
-### Step 2: Filter on Role
+### 2단계: Role 기준으로 필터링
-1. Add a **Filter** action
-2. Set the condition: **Role** equals **FROM**
+1. **필터** 액션을 추가합니다
+2. 조건을 설정합니다: **Role**이 **FROM**과 같음
-This ensures you only count messages sent by this person, not messages sent to them.
+이렇게 하면 해당 사람이 보낸 메시지만 집계되고, 그 사람에게 보낸 메시지는 제외됩니다.
-### Step 3: Search All Message Participants with Same Handle
+### 3단계: 동일한 Handle을 가진 모든 Message Participants 검색
-1. Add a **Search Records** action
-2. Select **Message Participants** as the object
-3. Add filters: **Handle** equals the handle from the trigger (the sender's email address) and **Role** equals **FROM**
-4. Increase the **Limit** from 1 to **200** (the maximum)
+1. **레코드 검색** 액션을 추가합니다
+2. 객체로 **Message Participants**를 선택합니다
+3. 필터를 추가합니다: **Handle**이 트리거의 handle(발신자의 이메일 주소)과 같고, **Role**이 **FROM**과 같음
+4. **Limit**을 1에서 최대값인 **200**으로 늘립니다
-This finds all messages from this email address to get the total count.
+해당 이메일 주소에서 보낸 모든 메시지를 찾아 총 개수를 구합니다.
- The Search Records action is limited to returning 200 records maximum. However, since you're only using the `totalCount` value (not the individual records), this step will return the total number of emails sent by this person.
+ Search Records 액션은 최대 200개의 레코드만 반환합니다. 그러나 개별 레코드가 아니라 `totalCount` 값만 사용하므로, 이 단계는 해당 사람이 보낸 이메일의 총 개수를 반환합니다.
-### Step 4: Update the Person Record with a Create or Update Record action
+### 4단계: Create or Update Record 액션으로 사람 레코드를 업데이트합니다
-1. Add a **Create or Update Record** action
+1. **레코드 생성 또는 업데이트** 액션을 추가합니다
- Use **Upsert Record** instead of **Update Record** here. This lets you identify the person by their email address (the `handle` field) rather than requiring a record ID from a previous step.
+ 여기서는 **Update Record** 대신 **Upsert Record**를 사용하세요. 이렇게 하면 이전 단계의 레코드 ID가 없어도 `handle` 필드(이메일 주소)로 사람을 식별할 수 있습니다.
-2. Select **People** as the object
-3. Find the person by matching their email to the `handle` from the Message Participant
-4. Set your custom "Number of emails received" field to `{{searchRecords.totalCount}}`
+2. 객체로 **People**를 선택합니다
+3. Message Participant의 `handle`과 해당 사람의 이메일을 일치시켜 사람을 찾습니다.
+4. 사용자 지정 "수신한 이메일 수" 필드를 `{{searchRecords.totalCount}}`로 설정합니다
-The `totalCount` value from the Search Records action represents the total number of emails received from this person.
+Search Records 액션의 `totalCount` 값은 이 사람에게서 받은 이메일의 총 개수를 나타냅니다.
-## Related
+## 관련 항목
-* [Workflow Actions](/l/ko/user-guide/workflows/capabilities/workflow-actions)
-* [Create Custom Fields](/l/ko/user-guide/data-model/how-tos/customize-your-data-model)
-* [Search Records Action](/l/ko/user-guide/workflows/capabilities/workflow-actions#search-records)
+* [워크플로우 액션](/l/ko/user-guide/workflows/capabilities/workflow-actions)
+* [사용자 지정 필드 만들기](/l/ko/user-guide/data-model/how-tos/customize-your-data-model)
+* [레코드 검색 액션](/l/ko/user-guide/workflows/capabilities/workflow-actions#search-records)
diff --git a/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx b/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx
index 797f64faf5..4ab87443f1 100644
--- a/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx
@@ -1,130 +1,130 @@
---
-title: Display Related Record Data
-description: Show data from related records (e.g., Company info on Opportunities) using workflows.
+title: 관련 레코드 데이터 표시
+description: "워크플로우를 사용해 관련 레코드의 데이터를 표시합니다(예: Opportunities에 회사 정보 표시)."
---
-Display data from related records directly on your records — for example, show the employee count from a Company on its Opportunities. This workflow workaround is useful until nested fields are natively available.
+관련 레코드의 데이터를 내 레코드에 직접 표시하세요 — 예를 들어, Company의 직원 수를 해당 Opportunities에 표시합니다. 중첩 필드가 기본적으로 제공될 때까지 이 워크플로우 우회 방법이 유용합니다.
-## Common Use Cases
+## 일반적인 사용 사례
-| Source | Destination | Fields to Copy |
-| ----------- | ----------- | ------------------------------- |
-| Company | Opportunity | Industry, Company Size, ARR |
-| Person | Opportunity | Email, Phone, Title |
-| Opportunity | Company | Last Deal Amount, Last Won Date |
+| 소스 | 대상 | 복사할 필드 |
+| -- | -- | ------------------ |
+| 회사 | 기회 | 산업, 회사 규모, ARR |
+| 사람 | 기회 | 이메일, 전화, 직함 |
+| 기회 | 회사 | 최근 거래 금액, 최근 성사 일자 |
-## Basic Field Copy
+## 기본 필드 복사
-### Example: Copy Contact Email to Opportunity
+### 예시: 연락처 이메일을 Opportunity로 복사
-**Goal**: When setting a Point of Contact on an opportunity, copy their email to the opportunity for easy access.
+**목표**: Opportunity에서 담당자를 설정할 때, 쉽게 액세스할 수 있도록 해당 이메일을 Opportunity로 복사합니다.
-### Prerequisite
+### 사전 준비
-Create the destination fields in **Settings → Data Model → Opportunities** before building the workflow:
+워크플로우를 만들기 전에 **설정 → 데이터 모델 → Opportunities**에서 대상 필드를 생성하세요:
-* Contact Email (type: Email)
-* Contact Phone (type: Phone)
+* 연락처 이메일(유형: Email)
+* 연락처 전화(유형: Phone)
-### Setup
+### 설정
-1. **Trigger**: Record is Updated (Opportunities, Point of Contact field)
+1. **트리거**: 레코드가 업데이트됨 (Opportunities, 담당자 필드)
-2. **Filter**: Check that Point of Contact is not empty
+2. **필터**: 담당자가 비어 있지 않은지 확인
-3. **Search Records**: Find the linked person
- * Object: People
- * Filter: ID equals `{{trigger.object.pointOfContact.id}}`
+3. **레코드 검색**: 연결된 사람 찾기
+ * 객체: People
+ * 필터: ID가 `{{trigger.object.pointOfContact.id}}`와 같음
-4. **Update Record**:
- * Object: Opportunities
- * Record: `{{trigger.object.id}}`
- * Contact Email: `{{searchRecords[0].email}}`
- * Contact Phone: `{{searchRecords[0].phone}}`
+4. **레코드 업데이트**:
+ * 객체: Opportunities
+ * 레코드: `{{trigger.object.id}}`
+ * 연락처 이메일: `{{searchRecords[0].email}}`
+ * 연락처 전화: `{{searchRecords[0].phone}}`
-## Copy Multiple Fields
+## 여러 필드 복사
-### Example: Sync Company Info to All Related Opportunities
+### 예시: 모든 관련 Opportunities에 회사 정보 동기화
-**Goal**: When company details change, update all related opportunities.
+**목표**: 회사 세부 정보가 변경되면 관련된 모든 Opportunities를 업데이트합니다.
-### Setup
+### 설정
-1. **Trigger**: Record is Updated (Companies)
- * Fields: Industry, Company Size, Annual Revenue
+1. **트리거**: 레코드가 업데이트됨 (Companies)
+ * 필드: 산업, 회사 규모, 연간 매출
-2. **Search Records**: Find all opportunities for this company
- * Object: Opportunities
- * Filter: Company ID equals `{{trigger.object.id}}`
+2. **레코드 검색**: 이 회사의 모든 Opportunities 찾기
+ * 객체: Opportunities
+ * 필터: 회사 ID가 `{{trigger.object.id}}`와 같음
-3. **Iterator**: Loop through each opportunity
+3. **Iterator**: 각 Opportunity를 순회
-4. **Update Record** (inside iterator):
- * Object: Opportunities
- * Record: `{{iterator.currentItem.id}}`
- * Company Industry: `{{trigger.object.industry}}`
- * Company Size: `{{trigger.object.companySize}}`
- * Company ARR: `{{trigger.object.annualRevenue}}`
+4. **레코드 업데이트** (iterator 내부):
+ * 객체: Opportunities
+ * 레코드: `{{iterator.currentItem.id}}`
+ * 회사 산업: `{{trigger.object.industry}}`
+ * 회사 규모: `{{trigger.object.companySize}}`
+ * 회사 ARR: `{{trigger.object.annualRevenue}}`
-## Copy on Record Creation
+## 레코드 생성 시 복사
-### Example: Pre-fill Opportunity with Company Data
+### 예시: 회사 데이터로 Opportunity를 미리 채우기
-**Goal**: When creating an opportunity linked to a company, automatically copy key company info.
+**목표**: 회사와 연결된 Opportunity를 생성할 때 핵심 회사 정보를 자동으로 복사합니다.
-### Prerequisite
+### 사전 준비
-Create the destination fields in **Settings → Data Model → Opportunities**:
+**설정 → 데이터 모델 → Opportunities**에서 대상 필드를 생성하세요:
-* Company Industry (type: Text)
-* Company Size (type: Number)
+* 회사 산업(유형: Text)
+* 회사 규모(유형: Number)
-### Setup
+### 설정
-1. **Trigger**: Record is Created (Opportunities)
- * Filter: Company is not empty
+1. **트리거**: 레코드가 생성됨 (Opportunities)
+ * 필터: 회사가 비어 있지 않음
-2. **Search Records**: Get the linked company's details
- * Object: Companies
- * Filter: ID equals `{{trigger.object.company.id}}`
+2. **레코드 검색**: 연결된 회사의 세부 정보 가져오기
+ * 객체: Companies
+ * 필터: ID가 `{{trigger.object.company.id}}`와 같음
-3. **Update Record**:
- * Object: Opportunities
- * Record: `{{trigger.object.id}}`
- * Company Industry: `{{searchRecords[0].industry}}`
- * Company Size: `{{searchRecords[0].employees}}`
+3. **레코드 업데이트**:
+ * 객체: Opportunities
+ * 레코드: `{{trigger.object.id}}`
+ * 회사 산업: `{{searchRecords[0].industry}}`
+ * 회사 규모: `{{searchRecords[0].employees}}`
- **Tasks and Notes limitation**: Relations on Tasks and Notes are hardcoded as many-to-many and are not yet available in workflow triggers or actions. To access these relations, use the [API](/l/ko/developers/extend/capabilities/apis) instead.
+ **작업 및 노트 제한 사항**: 작업과 노트의 관계는 다대다로 하드코딩되어 있으며, 워크플로우 트리거 또는 액션에서 아직 사용할 수 없습니다. 이러한 관계에 액세스하려면 대신 [API](/l/ko/developers/extend/capabilities/apis)를 사용하세요.
-## Bidirectional Sync
+## 양방향 동기화
-### Example: Keep Primary Contact in Sync
+### 예시: 기본 담당자 동기화 유지
-**Goal**: When a company's primary contact changes, update the contact. When a person becomes primary, update the company.
+**목표**: 회사의 기본 담당자가 변경되면 담당자를 업데이트합니다. 사람이 기본 담당자가 되면 회사를 업데이트합니다.
-### Workflow 1: Company → Person
+### 워크플로우 1: Company → Person
-1. **Trigger**: Record is Updated (Companies, Primary Contact field)
-2. **Update Record**: Set person's "Is Primary Contact" to true
-3. **Search Records**: Find previous primary contact
-4. **Update Record**: Set previous contact's "Is Primary Contact" to false
+1. **트리거**: 레코드가 업데이트됨 (Companies, 기본 담당자 필드)
+2. **레코드 업데이트**: 사람의 "Is Primary Contact"를 true로 설정
+3. **레코드 검색**: 이전 기본 담당자 찾기
+4. **레코드 업데이트**: 이전 담당자의 "Is Primary Contact"를 false로 설정
-### Workflow 2: Person → Company
+### 워크플로우 2: Person → Company
-1. **Trigger**: Record is Updated (People, Is Primary Contact = true)
-2. **Update Record**: Set company's Primary Contact to this person
+1. **트리거**: 레코드가 업데이트됨 (People, Is Primary Contact = true)
+2. **레코드 업데이트**: 회사의 기본 담당자를 이 사람으로 설정
- Be careful with bidirectional syncs to avoid infinite loops. Use filters to check if the value actually changed before updating.
+ 무한 루프를 피하기 위해 양방향 동기화에 주의하세요. 업데이트하기 전에 값이 실제로 변경되었는지 필터로 확인하세요.
-## Using Code for Complex Mapping
+## 복잡한 매핑에 코드 사용
-### Example: Transform Data During Copy
+### 예시: 복사 중 데이터 변환
-**Goal**: Copy and format phone number from person to opportunity.
+**목표**: 사람의 전화번호를 Opportunity로 복사하고 형식을 지정합니다.
```javascript
export const main = async (params) => {
@@ -144,27 +144,27 @@ export const main = async (params) => {
};
```
-## Best Practices
+## 모범 사례
-### Avoid Loops
+### 루프 방지
-* Don't create workflows that trigger each other endlessly
-* Use specific field conditions
-* Add checks to see if value actually changed
+* 서로를 끝없이 트리거하는 워크플로우를 만들지 마세요
+* 특정 필드 조건 사용
+* 값이 실제로 변경되었는지 확인을 추가하세요
-### Handle Missing Data
+### 누락된 데이터 처리
-* Always check if source record exists before copying
-* Provide default values for optional fields
-* Use filters to skip when source field is empty
+* 복사하기 전에 소스 레코드가 존재하는지 항상 확인하세요
+* 선택적 필드에 기본값 제공
+* 소스 필드가 비어 있을 때 건너뛰도록 필터 사용
-### Performance
+### 성능
-* Batch updates when copying to many records
-* Use scheduled workflows for bulk sync operations
-* Consider using Iterator for multiple record updates
+* 여러 레코드에 복사할 때 일괄 업데이트 사용
+* 대량 동기화 작업에는 예약된 워크플로우를 사용하세요
+* 다수의 레코드를 업데이트할 때 Iterator 사용을 고려하세요
-## Related
+## 관련 항목
-* [Workflow Actions](/l/ko/user-guide/workflows/capabilities/workflow-actions)
-* [Workflow Triggers](/l/ko/user-guide/workflows/capabilities/workflow-triggers)
+* [워크플로우 액션](/l/ko/user-guide/workflows/capabilities/workflow-actions)
+* [워크플로우 트리거](/l/ko/user-guide/workflows/capabilities/workflow-triggers)
diff --git a/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/crm-automations/formula-fields.mdx b/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/crm-automations/formula-fields.mdx
index 177af6832d..e36d0ca127 100644
--- a/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/crm-automations/formula-fields.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/crm-automations/formula-fields.mdx
@@ -1,37 +1,37 @@
---
-title: Formula Fields
-description: Create formula fields using workflows until native support is available.
+title: 수식 필드
+description: 네이티브 지원이 제공될 때까지 워크플로우를 사용해 수식 필드를 생성하세요.
---
-Twenty doesn't yet support native formula fields yet (coming in 2026), but you can achieve the same result using workflows. This workaround lets you automatically calculate and populate field values—from simple concatenations to complex business logic.
+Twenty는 아직 네이티브 수식 필드를 지원하지 않습니다(2026년에 제공 예정이지만), 워크플로우를 사용하면 동일한 결과를 얻을 수 있습니다. 이 우회 방법을 사용하면 단순한 연결부터 복잡한 비즈니스 로직까지 필드 값을 자동으로 계산하고 채울 수 있습니다.
-## Common Use Cases
+## 일반적인 사용 사례
-| Use Case | Formula Example |
-| ------------------- | --------------------------------- |
-| **Full name** | First Name + " " + Last Name |
-| **Expected amount** | Amount × Probability |
-| **Days until due** | Due Date - Today |
-| **Days in stage** | Today - Stage Entry Date |
-| **Lead score** | Points based on multiple criteria |
+| 사용 사례 | 수식 예시 |
+| --------------- | ---------------------------- |
+| **전체 이름** | First Name + " " + Last Name |
+| **예상 금액** | Amount × Probability |
+| **마감일까지 남은 일수** | Due Date - Today |
+| **단계 경과 일수** | Today - Stage Entry Date |
+| **리드 점수** | 여러 기준을 기반으로 한 점수 |
- For a complete example of tracking time in pipeline stages, see [Track How Long Opportunities Stay in Each Stage](/l/ko/user-guide/views-pipelines/how-tos/track-time-in-stage).
+ 파이프라인 단계에서 시간을 추적하는 전체 예시는 [각 단계에서 기회가 머무는 기간 추적하기](/l/ko/user-guide/views-pipelines/how-tos/track-time-in-stage)를 참조하세요.
-## Basic Formula: Concatenation
+## 기본 수식: 연결
-### Example: Auto-Fill Full Name
+### 예시: 전체 이름 자동 채우기
-**Goal**: Automatically combine first and last name into a full name field.
+**목표**: 이름과 성을 결합해 전체 이름 필드에 자동으로 입력합니다.
-### Setup
+### 설정
-1. **Trigger**: Record is Updated or Created (People)
+1. **트리거**: 레코드가 업데이트되거나 생성됨 (People)
-2. **Filter**: Check that first name or last name changed
+2. **필터**: 이름 또는 성이 변경되었는지 확인
-3. **Code action**:
+3. **코드 액션**:
```javascript
export const main = async (params) => {
@@ -45,21 +45,21 @@ export const main = async (params) => {
};
```
-4. **Update Record**: Set Full Name to `{{code.fullName}}`
+4. **레코드 업데이트**: Full Name을 `{{code.fullName}}`(으)로 설정
-## Numeric Formula: Expected Amount
+## 수치 수식: 예상 금액
-### Example: Calculate Expected Revenue
+### 예시: 예상 매출 계산
-**Goal**: Multiply opportunity amount by probability to get expected amount.
+**목표**: 기회 금액에 확률을 곱하여 예상 금액을 계산합니다.
-See [How to Show Expected Amount in Pipeline](/l/ko/user-guide/views-pipelines/how-tos/show-expected-amount-in-pipeline) for the complete workflow.
+전체 워크플로우는 [파이프라인에서 예상 금액 표시하기](/l/ko/user-guide/views-pipelines/how-tos/show-expected-amount-in-pipeline)를 참조하세요.
-### Quick Setup
+### 빠른 설정
-1. **Trigger**: Record is Updated (Opportunities, Amount OR Probability field)
+1. **트리거**: 레코드가 업데이트됨 (Opportunities, Amount 또는 Probability 필드)
-2. **Code action**:
+2. **코드 액션**:
```javascript
export const main = async (params) => {
@@ -71,19 +71,19 @@ export const main = async (params) => {
};
```
-3. **Update Record**: Set Expected Amount to `{{code.expectedAmount}}`
+3. **레코드 업데이트**: Expected Amount를 `{{code.expectedAmount}}`(으)로 설정
-## Date Formula: Days Calculation
+## 날짜 수식: 일수 계산
-### Example: Days Until Task Due
+### 예시: 작업 마감일까지 남은 일수
-**Goal**: Calculate how many days remain until a task's due date.
+**목표**: 작업 마감일까지 남은 일수를 계산합니다.
-### Setup
+### 설정
-1. **Trigger**: Record is Updated or Created (Tasks, Due Date field)
+1. **트리거**: 레코드가 업데이트되거나 생성됨 (Tasks, Due Date 필드)
-2. **Code action**:
+2. **코드 액션**:
```javascript
export const main = async (params) => {
@@ -102,23 +102,23 @@ export const main = async (params) => {
};
```
-3. **Update Record**: Set Days Until Due to `{{code.daysUntilDue}}`
+3. **레코드 업데이트**: Days Until Due를 `{{code.daysUntilDue}}`(으)로 설정
- Negative values indicate overdue tasks. You can use this field to filter or sort tasks by urgency.
+ 음수 값은 기한이 지난 작업을 의미합니다. 이 필드를 사용하여 긴급도에 따라 작업을 필터링하거나 정렬할 수 있습니다.
-## Conditional Formula: Lead Score
+## 조건 수식: 리드 점수
-### Example: Calculate Lead Score Based on Criteria
+### 예시: 기준에 따라 리드 점수 계산
-**Goal**: Score leads based on company size, industry, and engagement.
+**목표**: 회사 규모, 산업, 참여도에 따라 리드 점수를 산정합니다.
-### Setup
+### 설정
-1. **Trigger**: Record is Updated (People or Companies)
+1. **트리거**: 레코드가 업데이트됨 (People 또는 Companies)
-2. **Code action**:
+2. **코드 액션**:
```javascript
export const main = async (params) => {
@@ -147,19 +147,19 @@ export const main = async (params) => {
};
```
-3. **Update Record**: Set Lead Score to `{{code.leadScore}}`
+3. **레코드 업데이트**: Lead Score를 `{{code.leadScore}}`(으)로 설정
-## Text Formula: Domain Extraction
+## 텍스트 수식: 도메인 추출
-### Example: Extract Domain from Email
+### 예시: 이메일에서 도메인 추출
-**Goal**: Automatically extract and store the email domain.
+**목표**: 이메일 도메인을 자동으로 추출하여 저장합니다.
-### Setup
+### 설정
-1. **Trigger**: Record is Updated (People, Email field)
+1. **트리거**: 레코드가 업데이트됨 (People, Email 필드)
-2. **Code action**:
+2. **코드 액션**:
```javascript
export const main = async (params) => {
@@ -173,30 +173,30 @@ export const main = async (params) => {
};
```
-3. **Update Record**: Set Domain field to `{{code.domain}}`
+3. **레코드 업데이트**: Domain 필드를 `{{code.domain}}`(으)로 설정
-## Best Practices
+## 모범 사례
-### Performance
+### 성능
-* Only trigger on relevant field changes
-* Use filters to skip records that don't need calculation
-* Avoid complex calculations in high-volume workflows
+* 관련 필드 변경에만 트리거되도록 하세요.
+* 계산이 필요 없는 레코드는 필터로 건너뛰세요.
+* 대량 워크플로우에서는 복잡한 계산을 피하세요.
-### Error Handling
+### 오류 처리
-* Check for null/undefined values before calculations
-* Use default values when data is missing
-* Return clear error messages when calculations fail
+* 계산 전에 null/undefined 값을 확인하세요.
+* 데이터가 없을 때는 기본값을 사용하세요.
+* 계산이 실패하면 명확한 오류 메시지를 반환하세요.
-### Testing
+### 테스트
-* Test with edge cases (empty fields, zero values)
-* Verify calculations manually before activating
-* Monitor workflow runs for unexpected results
+* 엣지 케이스로 테스트하세요(빈 필드, 0 값 등).
+* 활성화 전에 계산을 수동으로 검증하세요.
+* 예상치 못한 결과가 있는지 워크플로우 실행을 모니터링하세요.
-## Related
+## 관련 항목
-* [How to Show Expected Amount in Pipeline](/l/ko/user-guide/views-pipelines/how-tos/show-expected-amount-in-pipeline)
-* [How to Track Time in Stage](/l/ko/user-guide/views-pipelines/how-tos/track-time-in-stage)
-* [Workflow Actions](/l/ko/user-guide/workflows/capabilities/workflow-actions)
+* [파이프라인에서 예상 금액 표시하기](/l/ko/user-guide/views-pipelines/how-tos/show-expected-amount-in-pipeline)
+* [단계에서 시간 추적하기](/l/ko/user-guide/views-pipelines/how-tos/track-time-in-stage)
+* [워크플로우 액션](/l/ko/user-guide/workflows/capabilities/workflow-actions)
diff --git a/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/crm-automations/notify-teammates-of-note-to-review.mdx b/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/crm-automations/notify-teammates-of-note-to-review.mdx
new file mode 100644
index 0000000000..6b5ff52294
--- /dev/null
+++ b/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/crm-automations/notify-teammates-of-note-to-review.mdx
@@ -0,0 +1,127 @@
+---
+title: 검토할 노트에 대해 팀원에게 알림 보내기
+description: 노트 검토를 위해 동료를 지정할 때 자동 이메일 알림을 보냅니다.
+---
+
+import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
+
+
+ **노트에서 팀원을 직접 태그하는 기능은 아직 지원되지 않습니다.** 이 기능은 2026년 하반기에 제공될 예정입니다. 그동안 이 워크플로우가 실질적인 대안을 제공합니다.
+
+
+## 과제
+
+노트에서 동료를 태그해 검토 알림을 받도록 하고 싶습니다. 현재 Twenty는 노트나 작업에서 @멘션을 지원하지 않습니다.
+
+## 대안 방법
+
+노트 본문에서 태그하는 대신 다음을 수행할 수 있습니다:
+
+1. 노트 개체에 **검토자** 관계 필드를 생성합니다
+2. 노트를 생성하거나 편집할 때 검토자를 지정합니다
+3. 워크플로우가 검토자에게 노트 링크가 포함된 이메일을 자동으로 보냅니다
+
+
+ **제한 사항**: 이 방법은 필드당 한 명의 검토자만 지정할 수 있습니다. 여러 사람에게 알림이 필요하다면 추가 관계 필드를 생성하세요(예: 검토자 1, 검토자 2). 한 번에 많은 공동 작업자를 태그해야 하는 경우 확장성이 떨어집니다.
+
+
+## 단계별 설정
+
+### 1단계: 검토자 필드 생성
+
+
+
+1. **설정 → 데이터 모델 → 노트**로 이동
+2. **필드 추가**를 클릭합니다
+3. 구성:
+
+| 설정 | 값 |
+| --------- | ---------------------- |
+| **Name** | 검토자 |
+| **유형** | 관계 |
+| **관련 개체** | 워크스페이스 멤버 |
+| **관계 유형** | 여러 노트 → 하나의 워크스페이스 구성원 |
+
+4. 필드를 저장합니다
+
+### 2단계: 워크플로우 생성
+
+
+
+#### 워크플로우 트리거 만들기
+
+1. 메인 화면으로 이동해 새 워크플로우를 생성합니다
+2. 트리거로 **레코드가 업데이트됨**을 선택합니다
+3. 개체로 **노트**를 선택하고 검토자 필드를 지정합니다.
+4. 노트의 검토자가 업데이트될 때마다 트리거됩니다.
+
+#### 방금 검토자가 지정되었는지 확인하는 필터 추가
+
+검토자가 지정된 경우에만 워크플로우가 계속되도록 **필터** 작업을 추가합니다:
+
+| 조건 | 값 |
+| ------- | -------- |
+| **검토자** | 비어 있지 않음 |
+
+#### 워크스페이스 구성원 검색
+
+1. **레코드 검색** 작업을 추가합니다
+2. 고급 객체 아래의 **Workspace Member**를 선택합니다
+3. 필터 추가:
+
+| 조건 | 값 |
+| ------ | ------------------------- |
+| **ID** | `{{note.reviewerId}}`와 같음 |
+
+이렇게 하면 이메일 주소와 이름을 포함한 전체 워크스페이스 구성원 레코드를 가져옵니다.
+
+#### 알림 이메일 보내기
+
+1. **이메일 보내기** 작업을 추가합니다
+2. 구성:
+
+| 필드 | 값 |
+| --------- | ---------------------------------- |
+| **받는 사람** | 레코드 검색 → 첫 번째 워크스페이스 구성원 → 사용자 이메일 |
+| **제목** | 노트 검토가 필요합니다 |
+| **본문** | 아래 예시를 참조하세요 |
+
+**이메일 본문 예시:**
+
+```text
+Hi {{searchRecord.firstWorkspaceMember.name.firstName}},
+
+You've been assigned to review a note.
+
+View the note here:
+https://yourSubDomain.twenty.com/object/note/{{recordIsUpdated.id}}
+
+Best,
+Twenty
+```
+
+
+ `yourSubDomain`을 실제 Twenty 워크스페이스 서브도메인으로 바꾸세요.
+
+
+#### 테스트 및 활성화
+
+1. 워크플로우를 수동으로 실행하려면 **Test**를 클릭합니다
+2. 노트를 생성하거나 편집하고 검토자를 지정합니다
+3. 검토자의 받은편지함에서 알림 이메일을 확인합니다
+4. 워크플로우를 활성화합니다
+
+## 사용법
+
+설정이 완료되면 팀은 다음과 같이 이 워크플로우를 사용할 수 있습니다:
+
+1. 새 노트를 생성(또는 기존 노트를 편집)합니다
+2. **검토자** 필드에서 동료를 선택합니다
+3. 동료는 노트로 바로 이동하는 링크가 포함된 이메일을 자동으로 받습니다
+
+## 관련 항목
+
+* [워크플로우 트리거](/l/ko/user-guide/workflows/capabilities/workflow-triggers)
+* [워크플로우에서 이메일 보내기](/l/ko/user-guide/workflows/capabilities/send-emails-from-workflows)
+* [사용자 지정 필드 만들기](/l/ko/user-guide/data-model/how-tos/create-custom-fields)
+* [관계 필드 만들기](/l/ko/user-guide/data-model/how-tos/create-relation-fields)
diff --git a/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/crm-automations/send-email-alerts-with-tasks-due.mdx b/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/crm-automations/send-email-alerts-with-tasks-due.mdx
index ff62dc2b2a..a8d2bd0aa7 100644
--- a/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/crm-automations/send-email-alerts-with-tasks-due.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/crm-automations/send-email-alerts-with-tasks-due.mdx
@@ -1,56 +1,56 @@
---
-title: Send Email Alerts with Tasks Due
-description: Automatically notify team members about their upcoming or overdue tasks.
+title: 마감 예정 작업에 대한 이메일 알림 보내기
+description: 예정되었거나 기한이 지난 작업에 대해 팀 구성원에게 자동으로 알립니다.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-Send daily email reminders to each team member about their tasks due today.
+오늘 마감인 작업에 대해 각 팀원에게 매일 이메일 알림을 보냅니다.
-## Overview
+## 개요
-This workflow runs on a schedule and:
+이 워크플로우는 일정에 따라 실행되며 다음을 수행합니다:
-1. Fetches all workspace members
-2. Loops through each member
-3. Finds their tasks due today
-4. Formats and sends a personalized email
+1. 모든 워크스페이스 구성원을 가져옵니다
+2. 각 구성원을 순회합니다
+3. 각 구성원의 오늘 마감 작업을 찾습니다
+4. 개인화된 이메일을 작성해 전송합니다
-## Step-by-Step Setup
+## 단계별 설정
-
+
-### Step 1: Configure the Trigger
+### 1단계: 트리거 구성
-1. Go to **Settings → Workflows** and create a new workflow
-2. Select **On a Schedule** as the trigger
-3. Use a cron expression for daily at 8:00 AM: `0 8 * * *`
+1. **Settings → Workflows**로 이동해 새 워크플로우를 생성합니다
+2. 트리거로 **On a Schedule**를 선택합니다
+3. 매일 오전 8시에 실행되도록 다음 cron 표현식을 사용하세요: `0 8 * * *`
-### Step 2: Search for All Workspace Members
+### 2단계: 모든 워크스페이스 구성원 검색
-1. Add a **Search Records** action
-2. Select **Workspace Members** (under advanced objects)
-3. No filters needed — this returns all members
+1. **레코드 검색** 액션을 추가합니다
+2. 고급 객체(advanced objects) 아래의 **Workspace Members**를 선택합니다
+3. 필터는 필요 없습니다 — 모든 구성원이 반환됩니다
-### Step 3: Add an Iterator
+### 3단계: 이터레이터 추가
-1. Add an **Iterator** action
-2. Set the input array to the workspace members from the previous step
-3. All actions inside the iterator will run once per member
+1. **Iterator** 액션을 추가합니다
+2. 입력 배열을 이전 단계의 워크스페이스 구성원으로 설정합니다
+3. 이터레이터 내부의 모든 액션은 구성원당 한 번씩 실행됩니다
-### Step 4: Search for Tasks Due Today (Inside Iterator)
+### 4단계: 오늘 마감 작업 검색(이터레이터 내부)
-1. Inside the iterator, add a **Search Records** action
-2. Select **Tasks** as the object
-3. Add filters:
- * **Assignee** = current workspace member (from the iterator)
- * **Due Date** = today
+1. 이터레이터 내부에 **레코드 검색** 액션을 추가합니다
+2. 객체로 **Tasks**를 선택합니다
+3. 필터 추가:
+ * **Assignee** = 현재 워크스페이스 구성원(이터레이터에서 가져옴)
+ * **Due Date** = 오늘
-### Step 5: Format Tasks into Email Body (Inside Iterator)
+### 5단계: 작업을 이메일 본문 형식으로 정리(이터레이터 내부)
-Add a **Code** action to format the tasks into a readable list with links:
+작업을 링크가 포함된 읽기 쉬운 목록으로 형식화하기 위해 **Code** 액션을 추가합니다:
```javascript
export const main = async (params: {
@@ -79,28 +79,28 @@ export const main = async (params: {
```
- Replace `yourSubDomain` with your actual Twenty workspace subdomain.
+ `yourSubDomain`을 실제 Twenty 워크스페이스 서브도메인으로 바꾸세요.
-### Step 6: Send Email (Inside Iterator)
+### 6단계: 이메일 보내기(이터레이터 내부)
-1. Add a **Send Email** action (still inside the iterator)
-2. Configure:
+1. **Send Email** 액션을 추가합니다(여전히 이터레이터 내부)
+2. 구성:
-| Field | Value |
-| ----------- | --------------------------------------------------------------- |
-| **To** | `{{iterator.currentItem.userEmail}}` (workspace member's email) |
-| **Subject** | Your Tasks Due Today |
-| **Body** | `{{code.formattedTasks}}` |
+| 필드 | 값 |
+| --------- | ------------------------------------------------------ |
+| **받는 사람** | `{{iterator.currentItem.userEmail}}` (워크스페이스 구성원의 이메일) |
+| **제목** | 오늘 마감인 작업 |
+| **본문** | `{{code.formattedTasks}}` |
-### Step 7: Test and Activate
+### 7단계: 테스트 및 활성화
-1. Click **Test** to run the workflow manually
-2. Check inboxes for the emails
-3. Activate the workflow
+1. 워크플로우를 수동으로 실행하려면 **Test**를 클릭합니다
+2. 이메일이 도착했는지 받은편지함을 확인하세요
+3. 워크플로우를 활성화합니다
-## Related
+## 관련 항목
-* [Workflow Actions](/l/ko/user-guide/workflows/capabilities/workflow-actions)
-* [Send Emails from Workflows](/l/ko/user-guide/workflows/capabilities/send-emails-from-workflows)
-* [Handle Arrays in Code Actions](/l/ko/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions)
+* [워크플로우 액션](/l/ko/user-guide/workflows/capabilities/workflow-actions)
+* [워크플로우에서 이메일 보내기](/l/ko/user-guide/workflows/capabilities/send-emails-from-workflows)
+* [Code 액션에서 배열 처리하기](/l/ko/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions)
diff --git a/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/need-more-help/professional-services.mdx b/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/need-more-help/professional-services.mdx
index 674ca6229f..20915b86e8 100644
--- a/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/need-more-help/professional-services.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/need-more-help/professional-services.mdx
@@ -1,29 +1,29 @@
---
-title: Professional Services
-description: Get professional help building complex workflows and automations from Twenty's team and certified partners.
+title: 전문 서비스
+description: Twenty 팀과 인증된 파트너로부터 복잡한 워크플로우 및 자동화를 구축하는 데 전문가의 도움을 받으십시오.
---
-## When Do You Need Professional Help?
+## 언제 전문가의 도움이 필요합니까?
-Consider professional services for:
+다음 항목에 대해 전문 서비스를 고려해 보세요:
-* Complex multi-system integrations
-* Advanced business logic and automation rules
-* Large-scale data processing workflows
-* Custom API development
-* Team training and workflow optimization
-* When you don't have internal resources
+* 복잡한 다중 시스템 통합
+* 고급 비즈니스 논리 및 자동화 규칙
+* 대규모 데이터 처리 워크플로우
+* 맞춤형 API 개발
+* 팀 교육 및 워크플로우 최적화
+* 내부 리소스가 부족할 때
-## Service Options
+## 서비스 옵션
-### Onboarding Packs
+### 온보딩 패키지
-Get help from our core team with our 4-hour [Onboarding packs](https://twenty.com/onboarding-packages):
+당사의 핵심 팀의 도움을 받아 4시간 [온보딩 패키지](https://twenty.com/onboarding-packages)를 받으십시오:
-* **Workflow Creation**: Build custom workflows for your business processes
-* **Data Model Design**: Optimize your data structure for workflow automation
-* **Data Migration**: Import existing data with proper workflow integration
+* **워크플로우 생성**: 비즈니스 프로세스를 위한 사용자 정의 워크플로우를 구축합니다
+* **데이터 모델 설계**: 워크플로우 자동화를 위해 데이터 구조를 최적화합니다
+* **데이터 전송**: 기존 데이터를 적절한 워크플로우 통합으로 가져오기
-### Implementation Partners
+### 구현 파트너
-Work with certified partners for advanced customizations. Contact us at contact@twenty.com to connect with our [implementation partners](https://twenty.com/partners).
+고급 맞춤 설정을 위해 인증된 파트너와 협력하십시오. 우리의 [구현 파트너](https://twenty.com/partners)와 연결하려면 contact@twenty.com으로 문의하십시오.
diff --git a/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/need-more-help/workflow-troubleshooting.mdx b/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/need-more-help/workflow-troubleshooting.mdx
index b243fc4acb..8bb8151ff6 100644
--- a/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/need-more-help/workflow-troubleshooting.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/need-more-help/workflow-troubleshooting.mdx
@@ -1,170 +1,170 @@
---
-title: Workflow Troubleshooting
-description: Common workflow issues and how to resolve them.
+title: 워크플로우 문제 해결
+description: 일반적인 워크플로우 문제와 해결 방법.
---
-## Common Issues and Solutions
+## 일반적인 문제와 해결책
-### Workflow Not Triggering
+### 워크플로우가 작동하지 않음
-**Symptoms**: Your workflow doesn't run when you expect it to.
+**증상**: 워크플로우가 예상한 시점에 실행되지 않습니다.
-**Possible Causes**:
+**가능한 원인**:
-1. **Workflow not activated**: Ensure the workflow is set to "Active" not "Draft"
-2. **Trigger conditions not met**: Verify the trigger matches your expected event
-3. **Field not monitored**: For "Record is Updated" triggers, ensure the specific field is being watched
-4. **Permissions**: Check you have permission to run workflows
+1. **워크플로우가 활성화되지 않음**: 워크플로우가 "Draft"가 아니라 "Active"로 설정되어 있는지 확인하세요
+2. **트리거 조건 불충족**: 트리거가 예상한 이벤트와 일치하는지 확인하세요
+3. **필드가 모니터링되지 않음**: "Record is Updated" 트리거의 경우 특정 필드가 모니터링되고 있는지 확인하세요
+4. **권한**: 워크플로우를 실행할 권한이 있는지 확인하세요
-**Solutions**:
+**해결책**:
-* Verify workflow status in the workflow list
-* Test with the specific action you expect to trigger it
-* Review trigger configuration
-* Contact your admin about permissions
+* 워크플로우 목록에서 워크플로우 상태를 확인하세요
+* 해당 트리거를 유발할 것으로 예상되는 특정 작업으로 테스트하세요
+* 트리거 구성을 검토하세요
+* 권한과 관련해 관리자에게 문의하세요
-### Workflow Triggers Too Early (Empty Fields)
+### 워크플로우 트리거가 너무 일찍 발생함(빈 필드)
-**Symptoms**: When manually creating a record in the UI, your workflow triggers before you've had time to fill in all the fields. The workflow runs with mostly empty field values.
+**증상**: UI에서 레코드를 수동으로 생성할 때 모든 필드를 채우기 전에 워크플로우가 트리거됩니다. 대부분의 필드 값이 비어 있는 상태로 워크플로우가 실행됩니다.
-**Why this happens**: Twenty saves everything in real-time — there's no separate "edit" vs "read" mode. When you create a record, it's saved immediately, triggering the "Record is created" event before you can fill in additional fields.
+**발생 원인**: Twenty는 모든 내용을 실시간으로 저장합니다 — 별도의 "edit" 및 "read" 모드는 없습니다. 레코드를 생성하면 즉시 저장되어 추가 필드를 채우기 전에 "Record is created" 이벤트가 트리거됩니다.
-**When "Record is created" works well**:
+**"Record is created"가 적절한 경우**:
-* Records created via API calls (fields are populated in a single request)
-* Records created via import
-* Automated record creation from other workflows
+* API 호출로 생성된 레코드(단일 요청으로 필드가 채워짐)
+* 가져오기로 생성된 레코드
+* 다른 워크플로우에서 자동으로 생성된 레코드
-**Solution**: For records created manually in the UI, use **"Record is created or updated"** as your trigger instead. This way:
+**해결 방법**: UI에서 수동으로 생성된 레코드의 경우 트리거로 \*\*"Record is created or updated"\*\*를 사용하세요. 이렇게 하면:
-* The workflow triggers after the user has finished filling in and saving the fields
-* You get the complete data rather than empty values
+* 사용자가 필드를 모두 작성하고 저장한 후에 워크플로우가 트리거됩니다
+* 빈 값이 아닌 완전한 데이터를 얻을 수 있습니다
- If you only want the workflow to run once per record, add a Filter action to check a field like `createdAt equals updatedAt` (first save) or use a custom checkbox field to track if the workflow has already run.
+ 레코드당 한 번만 워크플로우를 실행하려면, `createdAt equals updatedAt`(첫 저장)과 같은 필드를 확인하는 필터 액션을 추가하거나, 워크플로우가 이미 실행되었는지 추적하기 위해 사용자 지정 체크박스 필드를 사용하세요.
-### Actions Failing
+### 액션 실패
-**Symptoms**: Workflow runs but some actions fail.
+**증상**: 워크플로우는 실행되지만 일부 액션이 실패합니다.
-**Possible Causes**:
+**가능한 원인**:
-1. **Missing data**: Required fields are empty
-2. **Invalid references**: Variables from previous steps don't exist
-3. **API errors**: External services returning errors
-4. **Permission issues**: Action requires permissions you don't have
+1. **데이터 누락**: 필수 필드가 비어 있음
+2. **잘못된 참조**: 이전 단계의 변수가 존재하지 않음
+3. **API 오류**: 외부 서비스가 오류를 반환함
+4. **권한 문제**: 액션에 필요한 권한이 없음
-**Solutions**:
+**해결책**:
-* Check the workflow run details for error messages
-* Verify all required fields have values
-* Test API connections independently
-* Review role permissions
+* 워크플로우 실행 세부 정보에서 오류 메시지를 확인하세요
+* 모든 필수 필드에 값이 있는지 확인하세요
+* API 연결을 별도로 테스트하세요
+* 역할 권한을 검토하세요
-### HTTP Request Errors
+### HTTP 요청 오류
-**Symptoms**: HTTP Request actions fail or return unexpected results.
+**증상**: HTTP 요청 액션이 실패하거나 예상치 못한 결과를 반환합니다.
-**Common Error Codes**:
+**일반적인 오류 코드**:
-* **400**: Bad request - check your request body format
-* **401**: Unauthorized - verify API key
-* **403**: Forbidden - check API permissions
-* **404**: Not found - verify endpoint URL
-* **429**: Too many requests - implement rate limiting
-* **500**: Server error - external service issue
+* **400**: 잘못된 요청 - 요청 본문 형식을 확인하세요
+* **401**: 인증되지 않음 - API 키를 확인하세요
+* **403**: 접근 거부 - API 권한을 확인하세요
+* **404**: 찾을 수 없음 - 엔드포인트 URL을 확인하세요
+* **429**: 너무 많은 요청 - 요청 속도 제한을 구현하세요
+* **500**: 서버 오류 - 외부 서비스 문제
-**Solutions**:
+**해결책**:
-* Verify API endpoint URL
-* Check authentication headers
-* Test the API call outside of Twenty first
-* Add error handling in Code actions
+* API 엔드포인트 URL을 확인하세요
+* 인증 헤더를 확인하세요
+* 먼저 Twenty 밖에서 API 호출을 테스트하세요
+* 코드 액션에 오류 처리를 추가하세요
-### Code Action Errors
+### 코드 액션 오류
-**Symptoms**: JavaScript code fails to execute.
+**증상**: JavaScript 코드가 실행되지 않습니다.
-**Common Issues**:
+**일반적인 문제**:
-1. **Syntax errors**: Typos or invalid JavaScript
-2. **Undefined variables**: Referencing variables that don't exist
-3. **Type errors**: Operations on wrong data types
-4. **Timeouts**: Code taking too long to execute
+1. **구문 오류**: 오탈자 또는 유효하지 않은 JavaScript
+2. **정의되지 않은 변수**: 존재하지 않는 변수를 참조함
+3. **타입 오류**: 잘못된 데이터 타입에 대한 연산
+4. **시간 초과**: 코드 실행에 너무 오래 걸림
-**Solutions**:
+**해결책**:
-* Use the built-in code editor validation
-* Test code logic in a JavaScript console first
-* Add console.log statements for debugging
-* Simplify complex operations
+* 내장 코드 편집기의 유효성 검사를 사용하세요
+* 먼저 JavaScript 콘솔에서 코드 로직을 테스트하세요
+* 디버깅을 위해 console.log 문을 추가하세요
+* 복잡한 연산을 단순화하세요
-### Email Not Sending
+### 이메일이 전송되지 않음
-**Symptoms**: Send Email action doesn't deliver emails.
+**증상**: 이메일 보내기 액션이 이메일을 전송하지 않습니다.
-**Possible Causes**:
+**가능한 원인**:
-1. **No email account connected**: Check Settings → Accounts
-2. **Invalid email address**: Recipient email is malformed
-3. **Sending limits**: Email provider rate limits reached
-4. **Spam filters**: Emails being blocked
+1. **이메일 계정이 연결되지 않음**: Settings → Accounts를 확인하세요
+2. **잘못된 이메일 주소**: 수신자 이메일이 형식에 맞지 않음
+3. **전송 한도**: 이메일 제공업체의 속도 제한에 도달함
+4. **스팸 필터**: 이메일이 차단됨
-**Solutions**:
+**해결책**:
-* Verify email account connection
-* Validate recipient email addresses
-* Check email provider limits
-* Review email content for spam triggers
+* 이메일 계정 연결 상태를 확인하세요
+* 수신자 이메일 주소를 검증하세요
+* 이메일 제공업체의 제한을 확인하세요
+* 스팸 트리거가 될 수 있는 이메일 콘텐츠를 검토하세요
-## Debugging Workflows
+## 워크플로우 디버깅
-### Using Workflow Runs
+### 워크플로우 실행 활용
-1. Go to the workflow editor
-2. Open the **Runs** panel
-3. Find the failed run
-4. Click to see step-by-step details
-5. Review error messages and output data
+1. 워크플로우 편집기로 이동하세요
+2. **Runs** 패널을 엽니다
+3. 실패한 실행을 찾으세요
+4. 클릭하여 단계별 세부 정보를 확인하세요
+5. 오류 메시지와 출력 데이터를 검토하세요
-### Testing Individual Steps
+### 개별 단계 테스트
-1. For Code actions, use the **Test** button
-2. For HTTP requests, test the endpoint separately
-3. Create test records to trigger workflows
-4. Use manual triggers for controlled testing
+1. 코드 액션의 경우 **Test** 버튼을 사용하세요
+2. HTTP 요청의 경우 엔드포인트를 별도로 테스트하세요
+3. 워크플로우를 트리거하기 위한 테스트 레코드를 생성하세요
+4. 제어된 테스트를 위해 수동 트리거를 사용하세요
-### Common Debugging Patterns
+### 일반적인 디버깅 패턴
-**Add logging**:
-Use Code actions to log intermediate values for debugging.
+**로깅 추가**:
+디버깅을 위해 코드 액션을 사용해 중간 값을 기록하세요.
-**Isolate steps**:
-Test each step independently to identify failures.
+**단계 격리**:
+실패를 식별하기 위해 각 단계를 개별적으로 테스트하세요.
-**Check data flow**:
-Verify that each step receives the expected input data.
+**데이터 흐름 확인**:
+각 단계가 예상된 입력 데이터를 수신하는지 확인하세요.
-## Best Practices to Avoid Issues
+## 문제를 피하기 위한 모범 사례
-### Before Activation
+### 활성화 이전
-* Test thoroughly in draft mode
-* Validate all API connections
-* Review trigger conditions carefully
-* Document expected behavior
+* 초안 모드에서 충분히 테스트하세요
+* 모든 API 연결을 검증하세요
+* 트리거 조건을 주의 깊게 검토하세요
+* 예상 동작을 문서화하세요
-### During Development
+### 개발 중
-* Use descriptive step names
-* Add comments in Code actions
-* Test with realistic data
-* Plan for edge cases
+* 알기 쉬운 단계 이름을 사용하세요
+* 코드 액션에 주석을 추가하세요
+* 현실적인 데이터로 테스트하세요
+* 엣지 케이스를 대비하세요
-### After Activation
+### 활성화 이후
-* Monitor initial runs closely
-* Set up alerts for failures
-* Review run history regularly
-* Keep workflows simple when possible
+* 초기 실행을 면밀히 모니터링하세요
+* 실패에 대한 알림을 설정하세요
+* 실행 기록을 정기적으로 검토하세요
+* 가능한 경우 워크플로우를 단순하게 유지하세요
diff --git a/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/need-more-help/workflows-faq.mdx b/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/need-more-help/workflows-faq.mdx
index 40c57d02c7..171bdc82db 100644
--- a/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/need-more-help/workflows-faq.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/need-more-help/workflows-faq.mdx
@@ -25,8 +25,8 @@ description: Frequently asked questions about workflows in Twenty.
- | Type | Records Required | Workflow Runs |
- | ---- | ---------------- | ------------- |
+ | 유형 | Records Required | Workflow 실행들 |
+ | -- | ---------------- | ------------ |
\| **Global** | None | Once, no record input |
\| **Single** | One or more selected | Once per selected record |
@@ -39,7 +39,7 @@ description: Frequently asked questions about workflows in Twenty.
See [Workflow Triggers](/l/ko/user-guide/workflows/capabilities/workflow-triggers) for details.
-
+
An explicit If/Else node is not yet available but is on our roadmap.
**Current workaround**: Create multiple branches from your step, each starting with a **Filter** action:
@@ -106,7 +106,7 @@ description: Frequently asked questions about workflows in Twenty.
* Use the variable picker when configuring a field
* Or type `{{stepName.fieldName}}` directly
- **Examples**:
+ **예시**:
* Trigger data: `{{trigger.object.email}}`
* Search results: `{{searchRecords[0].name}}`
@@ -176,7 +176,7 @@ description: Frequently asked questions about workflows in Twenty.
* Multiple workflows running simultaneously across your workspace
* High-frequency automated triggers (e.g., Record Updated on a busy object)
- **Solutions**:
+ **해결책**:
* Use **Bulk** triggers instead of Single to process many records in one run
* Space out large batch operations
@@ -187,8 +187,8 @@ description: Frequently asked questions about workflows in Twenty.
Twenty has two rate limits to ensure system stability:
- | Limit | Value | Behavior |
- | ----- | ----- | -------- |
+ | Limit | 값 | Behavior |
+ | ----- | - | -------- |
\| **Soft limit** | 100 runs/minute | Runs queue in "Not Started" status, processed gradually |
\| **Hard limit** | 5,000 runs/hour | Runs immediately fail |
diff --git a/packages/twenty-docs/l/ko/user-guide/workflows/overview.mdx b/packages/twenty-docs/l/ko/user-guide/workflows/overview.mdx
index 541776acb7..769c294ab8 100644
--- a/packages/twenty-docs/l/ko/user-guide/workflows/overview.mdx
+++ b/packages/twenty-docs/l/ko/user-guide/workflows/overview.mdx
@@ -1,80 +1,80 @@
---
-title: Workflows
-description: Learn how to build automations in Twenty.
+title: 워크플로우
+description: Twenty에서 자동화를 구축하는 방법을 알아보세요.
image: /images/user-guide/workflows/workflow.png
---
-
+
-## Why Workflows Matter
+## 워크플로우의 중요성
-Twenty was built to bring maximum flexibility to its users. Rather than forcing you to adapt your business processes to rigid, pre-built features, workflows enable you to build automations that create the CRM that best supports your unique business use cases.
+Twenty는 사용자가 최대한 유연성을 누릴 수 있도록 설계되었습니다. 정해진 기능에 비즈니스 프로세스를 맞추는 대신, 워크플로우를 통해 귀사만의 고유한 비즈니스 사례를 지원할 수 있는 CRM 자동화를 빌드할 수 있습니다.
-Workflows are Twenty's in-app feature for building these automations. They give you the building blocks to create exactly what your business needs, when it needs it.
+워크플로우는 이러한 자동화를 구축하기 위한 Twenty의 앱 내 기능입니다. 필요할 때 필요한 것을 정확히 만들 수 있는 빌딩 블록을 제공합니다.
-## What can I do with workflows?
+## 워크플로우로 무엇을 할 수 있나요?
-We recommend building automations for two main purposes:
+두 가지 주요 목적으로 자동화를 구축하는 것을 권장합니다:
-1. **Internal automations to facilitate your team's day-to-day**: Reduce the amount of manual entries and repetitive tasks that slow down your team.
-2. **Bring data in and out of Twenty**: Connect Twenty via API calls and webhooks to your database and other tools.
+1. **팀의 일상적인 작업을 촉진하기 위한 내부 자동화**: 수작업 입력과 반복적인 작업을 줄여 팀의 속도를 높입니다.
+2. **데이터를 받아오고 Twenty에서 내보내기**: API 호출 및 웹훅을 통해 데이터베이스 및 다른 도구와 Twenty를 연결합니다.
-## Building Your First Workflow
+## 첫 번째 워크플로우 만들기
-### Step 1: Create a New Workflow
+### 1단계: 새 워크플로우 생성
-1. Go to **Workflows** accessible below the other objects
-2. Click **+ New Record**
-3. Give your workflow a name
+1. 다른 오브젝트 아래에 있는 **워크플로우**로 이동합니다
+2. **+ 새 레코드**를 클릭합니다
+3. 워크플로우에 이름을 지정합니다
-### Step 2: Add a Trigger
+### 2단계: 트리거 추가
-Every workflow starts with a trigger. Choose from:
+모든 워크플로우는 트리거로 시작됩니다. 다음 중에서 선택하세요:
-* **Record events**: When a record is created, updated, or deleted
-* **Schedule**: Run at specific times (daily, weekly, etc.)
-* **Manual**: Triggered by a user action
-* **Webhook**: Triggered by a webhook
+* **레코드 이벤트**: 레코드가 생성, 업데이트 또는 삭제될 때
+* **일정**: 지정된 시간에 실행(매일, 매주 등)
+* **수동**: 사용자 동작으로 트리거됩니다
+* **웹훅**: 웹훅에 의해 트리거됩니다
-### Step 3: Add Actions
+### 3단계: 액션 추가
-After your trigger, add one or more actions:
+트리거 다음에 하나 이상의 액션을 추가하세요:
-* **Create Record**: Add new records to any object
-* **Update Record**: Modify existing record data
-* **Delete Record**: Remove records from objects
-* **Search Records**: Find records matching criteria
-* **Upsert Record**: Create or update based on matching criteria
-* **Iterator**: Loop through arrays of records
-* **Filter**: Control which records proceed
-* **Delay**: Wait before continuing (duration or scheduled date)
-* **Send Email**: Send emails via your connected account
-* **Code**: Run custom JavaScript
-* **HTTP Request**: Call external APIs
-* **Form**: Get inputs from users within Twenty UI at the time of execution
-* **AI Agent** (Coming soon): Run intelligent AI tasks
+* **레코드 생성**: 모든 오브젝트에 새 레코드를 추가
+* **레코드 업데이트**: 기존 레코드 데이터를 수정
+* **레코드 삭제**: 오브젝트에서 레코드를 제거
+* **레코드 검색**: 조건과 일치하는 레코드를 찾기
+* **레코드 업서트**: 일치하는 조건에 따라 생성 또는 업데이트
+* **이터레이터**: 레코드 배열을 반복 처리
+* **필터**: 어떤 레코드가 진행할지 제어
+* **지연**: 계속하기 전에 대기(기간 또는 예약 날짜)
+* **이메일 보내기**: 연결된 계정을 통해 이메일 전송
+* **코드**: 커스텀 JavaScript 실행
+* **HTTP 요청**: 외부 API 호출
+* **폼**: 실행 시점에 Twenty UI 내에서 사용자 입력을 받기
+* **AI 에이전트**(곧 제공): 지능형 AI 작업 실행
-### Step 4: Test and Activate
+### 4단계: 테스트 및 활성화
-1. Use the **Test** button to run your workflow with sample data
-2. Review the results to ensure it works as expected
-3. Toggle the workflow **Active** when ready
+1. **테스트** 버튼을 사용해 샘플 데이터로 워크플로우를 실행합니다
+2. 결과를 검토하여 예상대로 작동하는지 확인합니다
+3. 준비가 되면 워크플로우를 **활성화**로 전환합니다
-## Workflow Best Practices
+## 워크플로우 최적화 모범 사례
-* **Edit step names**: Rename your workflow steps to clearly describe what each one does. This helps with maintenance and makes it easier to hand off to coworkers
-* **Leverage previous step data**: You can use fields from records returned by any previous step in your workflow
-* **Start simple**: Begin with basic workflows and add complexity over time as you become more comfortable with the system
-* **Plan before building**: Map out your workflow logic before you start building to avoid getting stuck halfway through
+* **단계 이름 편집**: 각 단계가 무엇을 하는지 명확히 설명하도록 워크플로우 단계의 이름을 바꾸십시오. 이 방법은 유지 관리에 도움이 되고 동료에게 인계하기 쉽게 만듭니다.
+* **이전 단계 데이터 활용**: 워크플로우의 모든 이전 단계에서 반환된 레코드의 필드를 사용할 수 있습니다.
+* **간단하게 시작**: 기본 워크플로우로 시작하고 시스템에 익숙해지면서 점차 복잡도를 추가하십시오.
+* **구축 전 계획**: 워크플로우 논리를 사전에 계획하여 구축 도중 막히는 것을 피하십시오.
-## Next Steps
+## 다음 단계
-* [Workflow Triggers](/l/ko/user-guide/workflows/capabilities/workflow-triggers)
-* [Workflow Actions](/l/ko/user-guide/workflows/capabilities/workflow-actions)
-* [CRM Automations](/l/ko/user-guide/workflows/how-tos/crm-automations/closed-won-automations)
+* [워크플로우 트리거](/l/ko/user-guide/workflows/capabilities/workflow-triggers)
+* [워크플로우 액션](/l/ko/user-guide/workflows/capabilities/workflow-actions)
+* [CRM 자동화](/l/ko/user-guide/workflows/how-tos/crm-automations/closed-won-automations)
diff --git a/packages/twenty-docs/l/pt/developers/contribute/capabilities/backend-development/best-practices-server.mdx b/packages/twenty-docs/l/pt/developers/contribute/capabilities/backend-development/best-practices-server.mdx
index d8f5c5ea7c..4d7666f9ff 100644
--- a/packages/twenty-docs/l/pt/developers/contribute/capabilities/backend-development/best-practices-server.mdx
+++ b/packages/twenty-docs/l/pt/developers/contribute/capabilities/backend-development/best-practices-server.mdx
@@ -1,22 +1,22 @@
---
-title: Best Practices
+title: Melhores Práticas
---
-This document outlines the best practices you should follow when working on the backend.
+Este documento descreve as melhores práticas que você deve seguir ao trabalhar no backend.
-## Follow a modular approach
+## Siga uma abordagem modular
-The backend follows a modular approach, which is a fundamental principle when working with NestJS. Make sure you break down your code into reusable modules to maintain a clean and organized codebase.
-Each module should encapsulate a particular feature or functionality and have a well-defined scope. This modular approach enables clear separation of concerns and removes unnecessary complexities.
+O backend segue uma abordagem modular, que é um princípio fundamental ao trabalhar com NestJS. Certifique-se de dividir seu código em módulos reutilizáveis para manter uma base de código limpa e organizada.
+Cada módulo deve encapsular um recurso ou funcionalidade específico e ter um escopo bem definido. Esta abordagem modular permite uma clara separação de preocupações e remove complexidades desnecessárias.
-## Expose services to use in modules
+## Expor serviços para uso em módulos
-Always create services that have a clear and single responsibility, which enhances code readability and maintainability. Name the services descriptively and consistently.
+Sempre crie serviços que tenham uma responsabilidade clara e única, o que melhora a legibilidade e a manutenção do código. Nomeie os serviços de forma descritiva e consistente.
-You should also expose services that you want to use in other modules. Exposing services to other modules is possible through NestJS's powerful dependency injection system, and promotes loose coupling between components.
+Você também deve expor serviços que deseja usar em outros módulos. Expor serviços para outros módulos é possível através do poderoso sistema de injeção de dependências do NestJS e promove o acoplamento frouxo entre os componentes.
-## Avoid using `any` type
+## Evite usar o tipo `any`
-When you declare a variable as `any`, TypeScript's type checker doesn't perform any type checking, making it possible to assign any type of values to the variable. TypeScript uses type inference to determine the type of variable based on the value. By declaring it as `any`, TypeScript can no longer infer the type. This makes it hard to catch type-related errors during development, leading to runtime errors and makes the code less maintainable, less reliable, and harder to understand for others.
+Quando você declara uma variável como `any`, o verificador de tipos do TypeScript não realiza nenhuma verificação de tipo, tornando possível atribuir qualquer tipo de valores à variável. O TypeScript usa inferência de tipos para determinar o tipo da variável com base no valor. Ao declará-lo como `any`, o TypeScript não pode mais inferir o tipo. Isso torna difícil capturar erros relacionados a tipos durante o desenvolvimento, levando a erros em tempo de execução e tornando o código menos mantenível, menos confiável e mais difícil de entender para os outros.
-This is why everything should have a type. So if you create a new object with a first name and last name, you should create an interface or type that contains a first name and last name that defines the shape of the object you are manipulating.
+Por isso, tudo deve ter um tipo. Assim, se você criar um novo objeto com um primeiro nome e um sobrenome, deve criar uma interface ou tipo que contenha um primeiro nome e um sobrenome que defina a forma do objeto que você está manipulando.
diff --git a/packages/twenty-docs/l/pt/developers/contribute/capabilities/backend-development/custom-objects.mdx b/packages/twenty-docs/l/pt/developers/contribute/capabilities/backend-development/custom-objects.mdx
index 7feec7a639..025faaa928 100644
--- a/packages/twenty-docs/l/pt/developers/contribute/capabilities/backend-development/custom-objects.mdx
+++ b/packages/twenty-docs/l/pt/developers/contribute/capabilities/backend-development/custom-objects.mdx
@@ -1,39 +1,39 @@
---
-title: Custom Objects
+title: Objetos personalizados
---
-Objects are structures that allow you to store data (records, attributes, and values) specific to an organization. Twenty provides both standard and custom objects.
+Os objetos são estruturas que permitem armazenar dados (registros, atributos e valores) específicos de uma organização. O Twenty vem com objetos padrão e personalizados.
-Standard objects are in-built objects with a set of attributes available for all users. Examples of standard objects in Twenty include Company and Person. Standard objects have standard fields that are also available for all Twenty users, like Company.displayName.
+Objetos padronizados são objetos embutidos com um conjunto de atributos disponíveis para todos os usuários. Exemplos de objetos padronizados na Twenty incluem Empresa e Pessoa. Os objetos padrão têm campos padrão que também estão disponíveis para todos os usuários do Twenty, como Company.displayName.
-Custom objects are objects that you can create to store information that is unique to your organization. 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.
+Objetos personalizados são objetos que você pode criar para armazenar informações exclusivas de sua organização. Eles não são embutidos; membros do seu espaço de trabalho podem criar e personalizar objetos personalizados para armazenar informações que os objetos padrão não são adequados.
-## High-level schema
+## Esquema de alto nível
-
+
-## How it works
+## Como Funciona
-Custom objects come from metadata tables that determine the shape, name, and type of the objects. All this information is present in the metadata schema database, consisting of tables:
+Objetos personalizados vêm de tabelas de metadados que determinam a forma, nome e tipo dos objetos. Todas essas informações estão presentes no banco de dados do esquema de metadados, consistindo em tabelas:
-* **DataSource**: Details where the data is present.
-* **Object**: Describes the object and links to a DataSource.
-* **Field**: Outlines an Object's fields and connects to the Object.
+* **DataSource**: Detalha onde os dados estão presentes.
+* **Object**: Descreve o objeto e conecta-se a um DataSource.
+* **Field**: Delimita os campos de um objeto e conecta-se ao objeto.
-To add a custom object, the workspaceMember will query the /metadata API. This updates the metadata accordingly and computes a GraphQL schema based on the metadata, storing it in a GQL cache for later use.
+Para adicionar um objeto personalizado, o workspaceMember consultará a API /metadata. Isso atualiza os metadados de acordo e calcula um esquema GraphQL baseado nos metadados, armazenando-o em um cache GQL para uso posterior.
-
+
-To fetch data, the process involves making queries through the /graphql endpoint and passing them through the Query Resolver.
+Para buscar dados, o processo envolve fazer consultas através do endpoint /graphql e passá-las pelo Query Resolver.
-
+
diff --git a/packages/twenty-docs/l/pt/developers/contribute/capabilities/backend-development/feature-flags.mdx b/packages/twenty-docs/l/pt/developers/contribute/capabilities/backend-development/feature-flags.mdx
index a261cfec3c..75836c2fe5 100644
--- a/packages/twenty-docs/l/pt/developers/contribute/capabilities/backend-development/feature-flags.mdx
+++ b/packages/twenty-docs/l/pt/developers/contribute/capabilities/backend-development/feature-flags.mdx
@@ -1,12 +1,12 @@
---
-title: Feature Flags
+title: Flags de recurso
---
-Feature flags are used to hide experimental features. For Twenty, they are set on workspace level and not on a user level.
+As flags de recurso são usadas para ocultar recursos experimentais. Para a Twenty, eles são definidos no nível do espaço de trabalho e não no nível do usuário.
-## Adding a new feature flag
+## Adicionando uma nova flag de recurso
-In `FeatureFlagKey.ts` add the feature flag:
+Em `FeatureFlagKey.ts` adicione a flag de recurso:
```ts
type FeatureFlagKey =
@@ -14,7 +14,7 @@ type FeatureFlagKey =
| ...;
```
-Also add it to the enum in `feature-flag.entity.ts`:
+Também adicione-o ao enum em `feature-flag.entity.ts`:
```ts
enum FeatureFlagKeys {
@@ -23,7 +23,7 @@ enum FeatureFlagKeys {
}
```
-To apply a feature flag on a **backend** feature use:
+Para aplicar uma flag de recurso em um recurso de **back-end**, use:
```ts
@Gate({
@@ -31,16 +31,16 @@ To apply a feature flag on a **backend** feature use:
})
```
-To apply a feature flag on a **frontend** feature use:
+Para aplicar uma flag de recurso em um recurso de **front-end**, use:
```ts
const isFeatureNameEnabled = useIsFeatureEnabled('IS_FEATURENAME_ENABLED');
```
-## Configure feature flags for the deployment
+## Configurar flags de recurso para a implantação
-Change the corresponding record in the Table `core.featureFlag`:
+Altere o registro correspondente na Tabela `core.featureFlag`:
-| id | key | workspaceId | value |
-| ------ | ------------------------ | ----------- | ------ |
-| Random | `IS_FEATURENAME_ENABLED` | WorkspaceID | `true` |
+| iD | chave | workspaceId | valor |
+| --------- | ------------------------ | ----------- | ------------ |
+| Aleatório | `IS_FEATURENAME_ENABLED` | WorkspaceID | `verdadeiro` |
diff --git a/packages/twenty-docs/l/pt/developers/contribute/capabilities/backend-development/folder-architecture-server.mdx b/packages/twenty-docs/l/pt/developers/contribute/capabilities/backend-development/folder-architecture-server.mdx
index 233d92ac8a..c5520a7cb1 100644
--- a/packages/twenty-docs/l/pt/developers/contribute/capabilities/backend-development/folder-architecture-server.mdx
+++ b/packages/twenty-docs/l/pt/developers/contribute/capabilities/backend-development/folder-architecture-server.mdx
@@ -1,12 +1,12 @@
---
-title: Folder Architecture
-info: A detailed look into our server folder architecture
+title: Arquitetura de Pastas
+info: Um olhar detalhado sobre a arquitetura de pastas do nosso servidor
---
-The backend directory structure is as follows:
+A estrutura do diretório do backend é a seguinte:
```
-server
+servidor
└───ability
└───constants
└───core
@@ -21,37 +21,37 @@ server
└───utils
```
-## Ability
+## Habilidade
-Defines permissions and includes handlers for each entity.
+Define permissões e inclui manipuladores para cada entidade.
-## Decorators
+## Decoradores
-Defines custom decorators in NestJS for added functionality.
+Define decoradores personalizados no NestJS para funcionalidade adicional.
-See [custom decorators](https://docs.nestjs.com/custom-decorators) for more details.
+Veja [decoradores personalizados](https://docs.nestjs.com/custom-decorators) para mais detalhes.
-## Filters
+## Filtros
-Includes exception filters to handle exceptions that might occur in GraphQL endpoints.
+Inclui filtros de exceção para lidar com exceções que podem ocorrer nos endpoints do GraphQL.
## Guards
-See [guards](https://docs.nestjs.com/guards) for more details.
+Veja [guardas](https://docs.nestjs.com/guards) para mais detalhes.
-## Health
+## Integridade
-Includes a publicly available REST API (healthz) that returns a JSON to confirm whether the database is working as expected.
+Inclui uma API REST publicamente disponível (healthz) que retorna um JSON para confirmar se o banco de dados está funcionando como esperado.
-## Metadata
+## Metadados
-Defines custom objects and makes available a GraphQL API (graphql/metadata).
+Define objetos personalizados e disponibiliza uma API GraphQL (graphql/metadata).
-## Workspace
+## Espaço de trabalho
-Generates and serves custom GraphQL schema based on the metadata.
+Gera e serve um esquema GraphQL personalizado com base nos metadados.
-### Workspace Directory Structure
+### Estrutura do Diretório de Trabalho
```
workspace
@@ -83,43 +83,43 @@ workspace
└───workspace.factory.ts
```
-The root of the workspace directory includes the `workspace.factory.ts`, a file containing the `createGraphQLSchema` function. This function generates workspace-specific schema by using the metadata to tailor a schema for individual workspaces. By separating the schema and resolver construction, we use the `makeExecutableSchema` function, which combines these discrete elements.
+A raiz do diretório workspace inclui o `workspace.factory.ts`, um arquivo que contém a função `createGraphQLSchema`. Esta função gera um esquema específico para o espaço de trabalho usando os metadados para adaptar um esquema para espaços de trabalho individuais. Ao separar a construção do esquema e do resolvedor, usamos a função `makeExecutableSchema`, que combina esses elementos discretos.
-This strategy is not just about organization, but also helps with optimization, such as caching generated type definitions to enhance performance and scalability.
+Essa estratégia não se trata apenas de organização, mas também ajuda na otimização, como no armazenamento em cache das definições de tipo geradas para melhorar o desempenho e a escalabilidade.
-### Workspace Schema builder
+### Construtor de Esquema do Workspace
-Generates the GraphQL schema, and includes:
+Gera o esquema GraphQL, e inclui:
-#### Factories:
+#### Fábricas:
-Specialised constructors to generate GraphQL-related constructs.
+Construtores especializados para gerar construções relacionadas ao GraphQL.
-* The type.factory translates field metadata into GraphQL types using `TypeMapperService`.
-* The type-definition.factory creates GraphQL input or output objects derived from `objectMetadata`.
+* O type.factory traduz os metadados dos campos em tipos GraphQL usando o `TypeMapperService`.
+* A type-definition.factory cria objetos de entrada ou saída do GraphQL derivados de `objectMetadata`.
-#### GraphQL Types
+#### Tipos GraphQL
-Includes enumerations, inputs, objects, and scalars, and serves as the building blocks for the schema construction.
+Inclui enumerações, entradas, objetos e escalares, e serve como blocos de construção para a construção do esquema.
-#### Interfaces and Object Definitions
+#### Interfaces e Definições de Objetos
-Contains the blueprints for GraphQL entities, and includes both predefined and custom types like `MONEY` or `URL`.
+Contém os planos para entidades GraphQL, e inclui tipos predefinidos e personalizados como `MONEY` ou `URL`.
-#### Services
+#### Serviços
-Contains the service responsible for associating FieldMetadataType with its appropriate GraphQL scalar or query modifiers.
+Contém o serviço responsável por associar o FieldMetadataType com seu scalar ou modificadores de consulta GraphQL apropriados.
-#### Storage
+#### Armazenamento
-Includes the `TypeDefinitionsStorage` class that contains reusable type definitions, preventing duplication of GraphQL types.
+Inclui a classe `TypeDefinitionsStorage` que contém definições de tipos reutilizáveis, evitando a duplicação de tipos GraphQL.
-### Workspace Resolver Builder
+### Construtor de Resolvedor de Workspace
-Creates resolver functions for querying and mutating the GraphQL schema.
+Cria funções resolvedoras para consultar e modificar o esquema GraphQL.
-Each factory in this directory is responsible for producing a distinct resolver type, such as the `FindManyResolverFactory`, designed for adaptable application across various tables.
+Cada fábrica neste diretório é responsável por produzir um tipo distinto de resolvedor, como a `FindManyResolverFactory`, projetada para aplicação adaptável em várias tabelas.
-### Workspace Query Runner
+### Executor de Consultas do Workspace
-Runs the generated queries on the database and parses the result.
+Executa as consultas geradas no banco de dados e analisa o resultado.
diff --git a/packages/twenty-docs/l/pt/developers/contribute/capabilities/backend-development/queue.mdx b/packages/twenty-docs/l/pt/developers/contribute/capabilities/backend-development/queue.mdx
index 6148c0fbf0..47b1e63a8d 100644
--- a/packages/twenty-docs/l/pt/developers/contribute/capabilities/backend-development/queue.mdx
+++ b/packages/twenty-docs/l/pt/developers/contribute/capabilities/backend-development/queue.mdx
@@ -1,20 +1,20 @@
---
-title: Message Queue
+title: Fila de Mensagens
---
-Queues facilitate async operations to be performed. They can be used for performing background tasks such as sending a welcome email on register.
-Each use case will have its own queue class extended from `MessageQueueServiceBase`.
+Filas facilitam operações assíncronas a serem realizadas. Elas podem ser usadas para realizar tarefas em segundo plano, como enviar um email de boas-vindas ao se registrar.
+Cada caso de uso terá sua própria classe de fila estendida de `MessageQueueServiceBase`.
-Currently, we only support `bull-mq`[bull-mq](https://bullmq.io/) as the queue driver.
+Atualmente, só damos suporte ao `bull-mq`[bull-mq](https://bullmq.io/) como o driver de fila.
-## Steps to create and use a new queue
+## Passos para criar e usar uma nova fila
-1. Add a queue name for your new queue under enum `MESSAGE_QUEUES`.
-2. Provide the factory implementation of the queue with the queue name as the dependency token.
-3. Inject the queue that you created in the required module/service with the queue name as the dependency token.
-4. Add worker class with token based injection just like producer.
+1. Adicione um nome de fila para sua nova fila no enum `MESSAGE_QUEUES`.
+2. Forneça a implementação da fábrica da fila com o nome da fila como o token de dependência.
+3. Injete a fila que você criou no módulo/serviço necessário com o nome da fila como o token de dependência.
+4. Adicione uma classe de trabalhador com injeção baseada em token, assim como o produtor.
-### Example usage
+### Exemplo de uso
```ts
class Resolver {
diff --git a/packages/twenty-docs/l/pt/developers/contribute/capabilities/backend-development/server-commands.mdx b/packages/twenty-docs/l/pt/developers/contribute/capabilities/backend-development/server-commands.mdx
index 6951909788..8842039220 100644
--- a/packages/twenty-docs/l/pt/developers/contribute/capabilities/backend-development/server-commands.mdx
+++ b/packages/twenty-docs/l/pt/developers/contribute/capabilities/backend-development/server-commands.mdx
@@ -1,19 +1,19 @@
---
-title: Backend Commands
+title: Comandos de Backend
---
-## Useful commands
+## Comandos Úteis
-These commands should be executed from packages/twenty-server folder.
+Esses comandos devem ser executados a partir da pasta packages/twenty-server.
From any other folder you can run `npx nx {command} twenty-server` (or `npx nx run twenty-server:{command}`).
-### First time setup
+### Configuração inicial
```
npx nx database:reset twenty-server # setup the database with dev seeds
```
-### Starting the server
+### Iniciando o servidor
```
npx nx run twenty-server:start
@@ -25,16 +25,16 @@ npx nx run twenty-server:start
npx nx run twenty-server:lint # pass --fix to fix lint errors
```
-### Test
+### Teste
```
npx nx run twenty-server:test:unit # run unit tests
npx nx run twenty-server:test:integration # run integration tests
```
-Note: you can run `npx nx run twenty-server:test:integration:with-db-reset` in case you need to reset the database before running the integration tests.
+Nota: você pode executar `npx nx run twenty-server:test:integration:with-db-reset` caso precise redefinir o banco de dados antes de executar os testes de integração.
-### Resetting the database
+### Redefinindo o banco de dados
If you want to reset and seed the database, you can run the following command:
@@ -42,9 +42,9 @@ If you want to reset and seed the database, you can run the following command:
npx nx run twenty-server:database:reset
```
-### Migrations
+### Migrações
-#### For objects in Core/Metadata schemas (TypeORM)
+#### Para objetos nos esquemas Core/Metadata (TypeORM)
```bash
npx nx run twenty-server:typeorm migration:generate src/database/typeorm/core/migrations/nameOfYourMigration -d src/database/typeorm/core/core.datasource.ts
@@ -52,26 +52,25 @@ npx nx run twenty-server:typeorm migration:generate src/database/typeorm/core/mi
#### For Workspace objects
-There are no migrations files, migration are generated automatically for each workspace,
-stored in the database, and applied with this command
+Não há arquivos de migração, as migrações são geradas automaticamente para cada espaço de trabalho, armazenadas no banco de dados e aplicadas com este comando
```bash
npx nx run twenty-server:command workspace:sync-metadata -f
```
- This will drop the database and re-run the migrations and seed.
+ Isso excluirá o banco de dados e reexecutará as migrações e seeds.
- Make sure to back up any data you want to keep before running this command.
+ Certifique-se de fazer backup de todos os dados que deseja manter antes de executar este comando.
-## Tech Stack
+## Pilha de Tecnologias
-Twenty primarily uses NestJS for the backend.
+O Twenty usa principalmente NestJS para o backend.
-Prisma was the first ORM we used. But in order to allow users to create custom fields and custom objects, a lower-level made more sense as we need to have fine-grained control. The project now uses TypeORM.
+Prisma foi o primeiro ORM que usamos. Mas para permitir que os usuários criem campos e objetos personalizados, um nível mais baixo fazia mais sentido, pois precisamos ter controle detalhado. O projeto agora usa TypeORM.
-Here's what the tech stack now looks like.
+Veja como a pilha de tecnologia se parece agora.
**Core**
@@ -79,23 +78,23 @@ Here's what the tech stack now looks like.
* [TypeORM](https://typeorm.io/)
* [GraphQL Yoga](https://the-guild.dev/graphql/yoga-server)
-**Database**
+**Banco de Dados**
* [Postgres](https://www.postgresql.org/)
**Third-party integrations**
-* [Sentry](https://sentry.io/welcome/) for tracking bugs
+* [Sentry](https://sentry.io/welcome/) para rastreamento de bugs
-**Testing**
+**Testes**
* [Jest](https://jestjs.io/)
-**Tooling**
+**Ferramentas**
* [Yarn](https://yarnpkg.com/)
* [ESLint](https://eslint.org/)
-**Development**
+**Desenvolvimento**
* [AWS EKS](https://aws.amazon.com/eks/)
diff --git a/packages/twenty-docs/l/pt/developers/contribute/capabilities/backend-development/zapier.mdx b/packages/twenty-docs/l/pt/developers/contribute/capabilities/backend-development/zapier.mdx
index 46bcd563fc..b88eae11ea 100644
--- a/packages/twenty-docs/l/pt/developers/contribute/capabilities/backend-development/zapier.mdx
+++ b/packages/twenty-docs/l/pt/developers/contribute/capabilities/backend-development/zapier.mdx
@@ -1,18 +1,18 @@
---
-title: Zapier App
+title: Aplicativo Zapier
---
-Effortlessly sync Twenty with 3000+ apps using [Zapier](https://zapier.com/). Automate tasks, boost productivity, and supercharge your customer relationships!
+Sincronize o Twenty com mais de 3000 aplicativos usando [Zapier](https://zapier.com/) sem esforço. Automatize tarefas, aumente a produtividade e potencialize seus relacionamentos com clientes!
-## About Zapier
+## Sobre o Zapier
-Zapier is a tool that allows you to automate workflows by connecting the apps that your team uses every day. The fundamental concept of Zapier is automation workflows, called Zaps, and include triggers and actions.
+O Zapier é uma ferramenta que permite automações de fluxos de trabalho conectando os aplicativos que sua equipe usa todos os dias. O conceito fundamental do Zapier são automações de fluxos de trabalho, chamadas Zaps, que incluem disparadores e ações.
-You can learn more about how Zapier works [here](https://zapier.com/how-it-works).
+Você pode aprender mais sobre como o Zapier funciona [aqui](https://zapier.com/how-it-works).
-## Setup
+## Configuração
-### Step 1: Install Zapier packages
+### Etapa 1: Instalar pacotes do Zapier
```bash
cd packages/twenty-zapier
@@ -20,33 +20,33 @@ cd packages/twenty-zapier
yarn
```
-### Step 2: Login with the CLI
+### Etapa 2: Faça login com o CLI
-Use your Zapier credentials to log in using the CLI:
+Use suas credenciais do Zapier para fazer login usando o CLI:
```bash
zapier login
```
-### Step 3: Set environment variables
+### Etapa 3: Defina as variáveis de ambiente
-From the `packages/twenty-zapier` folder, run:
+Na pasta `packages/twenty-zapier`, execute:
```bash
cp .env.example .env
```
-Run the application locally, go to [http://localhost:3000/settings/api-webhooks](http://localhost:3000/settings/api-webhooks), and generate an API key.
+Execute o aplicativo localmente, vá para [http://localhost:3000/settings/api-webhooks](http://localhost:3000/settings/api-webhooks) e gere uma chave API.
-Replace the **YOUR_API_KEY** value in the `.env` file with the API key you just generated.
+Substitua o valor **YOUR_API_KEY** no arquivo `.env` pela chave API que você acabou de gerar.
-## Development
+## Desenvolvimento
- Make sure to run `yarn build` before any `zapier` command.
+ Certifique-se de executar `yarn build` antes de qualquer comando `zapier`.
-### Test
+### Teste
```bash
yarn test
@@ -58,25 +58,25 @@ yarn test
yarn format
```
-### Watch and compile as you edit code
+### Assista e compile enquanto edita o código
```bash
yarn watch
```
-### Validate your Zapier app
+### Valide seu aplicativo Zapier
```bash
yarn validate
```
-### Deploy your Zapier app
+### Implante seu aplicativo Zapier
```bash
yarn deploy
```
-### List all Zapier CLI commands
+### Liste todos os comandos CLI do Zapier
```bash
zapier
diff --git a/packages/twenty-docs/l/pt/developers/contribute/capabilities/bug-and-requests.mdx b/packages/twenty-docs/l/pt/developers/contribute/capabilities/bug-and-requests.mdx
index 4db64b703d..c8b8d4f27d 100644
--- a/packages/twenty-docs/l/pt/developers/contribute/capabilities/bug-and-requests.mdx
+++ b/packages/twenty-docs/l/pt/developers/contribute/capabilities/bug-and-requests.mdx
@@ -1,78 +1,78 @@
---
-title: Bugs, Requests & Pull Requests
-info: Report issues, request features, and contribute code
+title: Bugs, solicitações e Pull Requests
+info: Reporte issues, solicite funcionalidades e contribua com código
---
-## Reporting Bugs
+## Relatar Erros
-To report a bug, please [create an issue on GitHub](https://github.com/twentyhq/twenty/issues/new).
+Para relatar um erro, por favor [crie um problema no GitHub](https://github.com/twentyhq/twenty/issues/new).
-You can also ask for help on [Discord](https://discord.gg/cx5n4Jzs57).
+Você também pode pedir ajuda no [Discord](https://discord.gg/cx5n4Jzs57).
-## Feature Requests
+## Solicitações de Funcionalidades
-If you're not sure if it's a bug, and you feel it's closer to a feature request, then you should probably [open a discussion instead](https://github.com/twentyhq/twenty/discussions/new).
+Se você não tem certeza se é um erro e sente que está mais próximo de uma solicitação de funcionalidade, então você provavelmente deve [abrir uma discussão em vez disso](https://github.com/twentyhq/twenty/discussions/new).
-## Submit a Pull Request
+## Envie um Pull Request
-Contributing code to Twenty starts with a pull request (PR).
+Contribuir com código para o Twenty começa com um pull request (PR).
-### Before You Start
+### Antes de Começar
-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. Confira as [issues existentes](https://github.com/twentyhq/twenty/issues) para trabalhos relacionados
+2. Para novas funcionalidades, abra primeiro uma issue para discutir
+3. Consulte nosso [Código de Conduta](https://github.com/twentyhq/twenty/blob/main/CODE_OF_CONDUCT.md)
-### Fork and Clone
+### Fork e clone
-1. Fork the repository on GitHub
-2. Clone your fork:
+1. Crie um fork do repositório no GitHub
+2. Clone seu fork:
```bash
git clone https://github.com/YOUR_USERNAME/twenty.git
cd twenty
```
-3. Add upstream remote:
+3. Adicione o remoto upstream:
```bash
git remote add upstream https://github.com/twentyhq/twenty.git
```
-### Create a Branch
+### Crie uma branch
```bash
git checkout -b feature/your-feature-name
```
-Use descriptive branch names:
+Use nomes de branch descritivos:
* `feature/add-export-button`
* `fix/login-redirect-issue`
* `docs/update-api-guide`
-### Make Your Changes
+### Faça suas alterações
-1. Write clean, well-documented code
-2. Follow existing code style
-3. Add tests for new functionality
-4. Update documentation if needed
+1. Escreva código limpo e bem documentado
+2. Siga o estilo de código existente
+3. Adicione testes para a nova funcionalidade
+4. Atualize a documentação se necessário
-### Submit Your PR
+### Envie seu PR
-1. Push your branch:
+1. Faça push da sua branch:
```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. Abra um PR no GitHub
+3. Preencha o modelo do PR
+4. Vincule as issues relacionadas
-### PR Checklist
+### Checklist de PR
-* [ ] Code follows project style guidelines
-* [ ] Tests pass locally
-* [ ] Documentation is updated
-* [ ] PR description explains the changes
+* [ ] O código segue as diretrizes de estilo do projeto
+* [ ] Os testes passam localmente
+* [ ] A documentação está atualizada
+* [ ] A descrição do PR explica as alterações
diff --git a/packages/twenty-docs/l/pt/developers/contribute/capabilities/frontend-development/best-practices-front.mdx b/packages/twenty-docs/l/pt/developers/contribute/capabilities/frontend-development/best-practices-front.mdx
index 187c2d848c..6d1efaac07 100644
--- a/packages/twenty-docs/l/pt/developers/contribute/capabilities/frontend-development/best-practices-front.mdx
+++ b/packages/twenty-docs/l/pt/developers/contribute/capabilities/frontend-development/best-practices-front.mdx
@@ -1,19 +1,19 @@
---
-title: Best Practices
+title: Melhores Práticas
---
-This document outlines the best practices you should follow when working on the frontend.
+Este documento descreve as melhores práticas que você deve seguir ao trabalhar no frontend.
-## State management
+## Gerenciamento de Estado
-React and Recoil handle state management in the codebase.
+React e Recoil lidam com o gerenciamento de estado na base de código.
-### Use `useRecoilState` to store state
+### Use `useRecoilState` para armazenar o estado
-It's good practice to create as many atoms as you need to store your state.
+É uma boa prática criar tantos átomos quanto necessário para armazenar seu estado.
- It's better to use extra atoms than trying to be too concise with props drilling.
+ É melhor usar átomos extras do que tentar ser muito conciso com a perfuração de props.
```tsx
@@ -36,29 +36,29 @@ export const MyComponent = () => {
}
```
-### Do not use `useRef` to store state
+### Não use `useRef` para armazenar estado
-Avoid using `useRef` to store state.
+Evite usar `useRef` para armazenar estado.
If you want to store state, you should use `useState` or `useRecoilState`.
-See [how to manage re-renders](#managing-re-renders) if you feel like you need `useRef` to prevent some re-renders from happening.
+Veja [como gerenciar re-renderizações](#managing-re-renders) se você sentir que precisa de `useRef` para evitar que algumas re-renderizações aconteçam.
-## Managing re-renders
+## Gerenciando re-renderizações
-Re-renders can be hard to manage in React.
+As re-renderizações podem ser difíceis de gerenciar no React.
-Here are some rules to follow to avoid unnecessary re-renders.
+Aqui estão algumas regras a seguir para evitar re-renderizações desnecessárias.
-Keep in mind that you can **always** avoid re-renders by understanding their cause.
+Lembre-se de que você pode **sempre** evitar re-renderizações entendendo sua causa.
-### Work at the root level
+### Trabalhe no nível raiz
-Avoiding re-renders in new features is now made easy by eliminating them at the root level.
+Evitar re-renderizações em novos recursos agora é fácil eliminando-as no nível raiz.
The `PageChangeEffect` sidecar component contains just one `useEffect` that holds all the logic to execute on a page change.
-That way you know that there's just one place that can trigger a re-render.
+Assim você sabe que há apenas um lugar que pode disparar uma re-renderização.
### Always think twice before adding `useEffect` in your codebase
@@ -68,13 +68,13 @@ You should think whether you need `useEffect`, or if you can move the logic in a
You'll find it generally easy to move the logic in a `handleClick` or `handleChange` function.
-You can also find them in libraries like Apollo: `onCompleted`, `onError`, etc.
+Você também pode encontrá-las em bibliotecas como Apollo: `onCompleted`, `onError`, etc.
### Use a sibling component to extract `useEffect` or data fetching logic
If you feel like you need to add a `useEffect` in your root component, you should consider extracting it in a sidecar component.
-You can apply the same for data fetching logic, with Apollo hooks.
+Você pode aplicar o mesmo para lógica de busca de dados, com hooks do Apollo.
```tsx
// ❌ Bad, will cause re-renders even if data is not changing,
@@ -129,43 +129,43 @@ export const App = () => (
);
```
-### Use recoil family states and recoil family selectors
+### Use estados de família Recoil e seletores de família Recoil
-Recoil family states and selectors are a great way to avoid re-renders.
+Estados de família Recoil e seletores são uma ótima maneira de evitar re-renderizações.
-They are useful when you need to store a list of items.
+Eles são úteis quando você precisa armazenar uma lista de itens.
-### You shouldn't use `React.memo(MyComponent)`
+### Você não deve usar `React.memo(MyComponent)`
-Avoid using `React.memo()` because it does not solve the cause of the re-render, but instead breaks the re-render chain, which can lead to unexpected behavior and make the code very hard to refactor.
+Evite usar `React.memo()` porque não resolve a causa da re-renderização, mas em vez disso quebra a cadeia de re-renderização, o que pode levar a um comportamento inesperado e tornar o código muito difícil de refatorar.
-### Limit `useCallback` or `useMemo` usage
+### Limite o uso de `useCallback` ou `useMemo`
-They are often not necessary and will make the code harder to read and maintain for a gain of performance that is unnoticeable.
+Eles muitas vezes não são necessários e tornarão o código mais difícil de ler e manter por um ganho de desempenho que é imperceptível.
## Console.logs
-`console.log` statements are valuable during development, offering real-time insights into variable values and code flow. But, leaving them in production code can lead to several issues:
+As instruções `console.log` são valiosas durante o desenvolvimento, oferecendo insights em tempo real sobre valores de variáveis e fluxo de código. Mas, deixá-los no código de produção pode levar a vários problemas:
-1. **Performance**: Excessive logging can affect the runtime performance, especially on client-side applications.
+1. **Desempenho**: Log excessivo pode afetar o desempenho de execução, especialmente em aplicativos do lado do cliente.
-2. **Security**: Logging sensitive data can expose critical information to anyone who inspects the browser's console.
+2. **Segurança**: Registrar dados sensíveis pode expor informações críticas para qualquer pessoa que inspecionar o console do navegador.
-3. **Cleanliness**: Filling up the console with logs can obscure important warnings or errors that developers or tools need to see.
+3. **Limpeza**: Encher o console com logs pode obscurecer avisos ou erros importantes que desenvolvedores ou ferramentas precisam ver.
-4. **Professionalism**: End users or clients checking the console and seeing a myriad of log statements might question the code's quality and polish.
+4. **Profissionalismo**: Usuários finais ou clientes verificando o console e vendo uma infinidade de instruções de log podem questionar a qualidade e o acabamento do código.
-Make sure you remove all `console.logs` before pushing the code to production.
+Certifique-se de remover todos os `console.logs` antes de enviar o código para produção.
-## Naming
+## Nomeação
-### Variable Naming
+### Nomeação de Variáveis
-Variable names ought to precisely depict the purpose or function of the variable.
+Os nomes das variáveis devem descrever precisamente o propósito ou função da variável.
-#### The issue with generic names
+#### O problema com nomes genéricos
-Generic names in programming are not ideal because they lack specificity, leading to ambiguity and reduced code readability. Such names fail to convey the variable or function's purpose, making it challenging for developers to understand the code's intent without deeper investigation. This can result in increased debugging time, higher susceptibility to errors, and difficulties in maintenance and collaboration. Meanwhile, descriptive naming makes the code self-explanatory and easier to navigate, enhancing code quality and developer productivity.
+Nomes genéricos na programação não são ideais porque carecem de especificidade, levando a ambiguidade e reduzindo a legibilidade do código. Tais nomes não conseguem transmitir o propósito da variável ou função, tornando desafiador para os desenvolvedores entender a intenção do código sem uma investigação mais profunda. Isso pode resultar em aumento do tempo de depuração, maior susceptibilidade a erros e dificuldades na manutenção e colaboração. Enquanto isso, nomeação descritiva torna o código auto-explicativo e mais fácil de navegar, melhorando a qualidade do código e a produtividade do desenvolvedor.
```tsx
// ❌ Bad, uses a generic name that doesn't communicate its
@@ -178,13 +178,13 @@ const [value, setValue] = useState('');
const [email, setEmail] = useState('');
```
-#### Some words to avoid in variable names
+#### Algumas palavras a evitar em nomes de variáveis
* dummy
-### Event handlers
+### Manipuladores de Eventos
-Event handler names should start with `handle`, while `on` is a prefix used to name events in components props.
+Os nomes dos manipuladores de eventos devem começar com `handle`, enquanto `on` é um prefixo usado para nomear eventos em props de componentes.
```tsx
// ❌ Bad
@@ -200,13 +200,13 @@ const handleEmailChange = (val: string) => {
};
```
-## Optional Props
+## Props Opcionais
-Avoid passing the default value for an optional prop.
+Evite passar o valor padrão para um prop opcional.
-**EXAMPLE**
+**EXEMPLO**
-Take the`EmailField` component defined below:
+Observe o componente `EmailField` definido abaixo:
```tsx
type EmailFieldProps = {
@@ -219,7 +219,7 @@ const EmailField = ({ value, disabled = false }: EmailFieldProps) => (
);
```
-**Usage**
+**Uso**
```tsx
// ❌ Bad, passing in the same value as the default value adds no value
@@ -231,11 +231,11 @@ const Form = () => ;
const Form = () => ;
```
-## Component as props
+## Componente como props
-Try as much as possible to pass uninstantiated components as props, so children can decide on their own of what props they need to pass.
+Tente tanto quanto possível passar componentes não instanciados como props, para que os filhos possam decidir por si mesmos quais props precisam passar.
-The most common example for that is icon components:
+O exemplo mais comum é de componentes de ícone:
```tsx
const SomeParentComponent = () => ;
@@ -252,25 +252,25 @@ const MyComponent = ({ MyIcon }: { MyIcon: IconComponent }) => {
};
```
-For React to understand that the component is a component, you need to use PascalCase, to later instantiate it with ``
+Para que o React entenda que o componente é um componente, você precisa usar PascalCase, para depois instanciá-lo com ``
-## Prop Drilling: Keep It Minimal
+## Perfuração de Props: Mantenha-a Mínima
-Prop drilling, in the React context, refers to the practice of passing state variables and their setters through many component layers, even if intermediary components don't use them. While sometimes necessary, excessive prop drilling can lead to:
+Perfuração de props, no contexto do React, refere-se à prática de passar variáveis de estado e seus setters por muitas camadas de componentes, mesmo que componentes intermediários não os usem. Embora às vezes seja necessário, perfuração excessiva de props pode levar a:
-1. **Decreased Readability**: Tracing where a prop originates or where it's utilized can become convoluted in a deeply nested component structure.
+1. **Legibilidade Reduzida**: Rastreamento de onde um prop se origina ou onde é utilizado pode se tornar confuso em uma estrutura de componentes profundamente aninhada.
-2. **Maintenance Challenges**: Changes in one component's prop structure might require adjustments in several components, even if they don't directly use the prop.
+2. **Desafios de Manutenção**: Mudanças na estrutura de props de um componente podem exigir ajustes em vários componentes, mesmo que eles não usem diretamente o prop.
-3. **Reduced Component Reusability**: A component receiving a lot of props solely for passing them down becomes less general-purpose and harder to reuse in different contexts.
+3. **Redução da Reutilização de Componentes**: Um componente que recebe muitos props apenas para passá-los adiante torna-se menos de propósito geral e mais difícil de reutilizar em diferentes contextos.
-If you feel that you are using excessive prop drilling, see [state management best practices](#state-management).
+Se você sentir que está usando perfuração excessiva de props, veja [melhores práticas de gerenciamento de estado](#state-management).
-## Imports
+## Importações
-When importing, opt for the designated aliases rather than specifying complete or relative paths.
+Ao importar, opte pelos apelidos designados em vez de especificar caminhos completos ou relativos.
-**The Aliases**
+**Os Pseudónimos**
```js
{
@@ -282,7 +282,7 @@ When importing, opt for the designated aliases rather than specifying complete o
}
```
-**Usage**
+**Uso**
```tsx
// ❌ Bad, specifies the entire relative path
@@ -300,9 +300,9 @@ import { CatalogDecorator } from '~/testing/decorators/CatalogDecorator';
import { ComponentDecorator } from 'twenty-ui/testing';
```
-## Schema Validation
+## Validação de Esquema
-[Zod](https://github.com/colinhacks/zod) is the schema validator for untyped objects:
+[Zod](https://github.com/colinhacks/zod) é o validador de esquema para objetos não tipados:
```js
const validationSchema = z
@@ -320,6 +320,6 @@ const validationSchema = z
type Form = z.infer;
```
-## Breaking Changes
+## Alterações Incompatíveis
-Always perform thorough manual testing before proceeding to guarantee that modifications haven’t caused disruptions elsewhere, given that tests have not yet been extensively integrated.
+Sempre execute testes manuais completos antes de prosseguir para garantir que as modificações não tenham causado interrupções em outros lugares, dado que os testes ainda não foram extensivamente integrados.
diff --git a/packages/twenty-docs/l/pt/developers/contribute/capabilities/frontend-development/folder-architecture-front.mdx b/packages/twenty-docs/l/pt/developers/contribute/capabilities/frontend-development/folder-architecture-front.mdx
index 064ac5c256..5f292abe03 100644
--- a/packages/twenty-docs/l/pt/developers/contribute/capabilities/frontend-development/folder-architecture-front.mdx
+++ b/packages/twenty-docs/l/pt/developers/contribute/capabilities/frontend-development/folder-architecture-front.mdx
@@ -1,11 +1,11 @@
---
-title: Folder Architecture
-info: A detailed look into our folder architecture
+title: Arquitetura de Pastas
+info: Um olhar detalhado sobre nossa arquitetura de pastas
---
-In this guide, you will explore the details of the project directory structure and how it contributes to the organization and maintainability of Twenty.
+Neste guia, você explorará os detalhes da estrutura de diretórios do projeto e como isso contribui para a organização e manutenção do Twenty.
-By following this folder architecture convention, it's easier to find the files related to specific features and ensure that the application is scalable and maintainable.
+Seguindo esta convenção de arquitetura de pastas, é mais fácil encontrar os arquivos relacionados a funcionalidades específicas e garantir que a aplicação seja escalável e manutenível.
```
front
@@ -22,14 +22,14 @@ front
└───...
```
-## Pages
+## Páginas
-Includes the top-level components defined by the application routes. They import more low-level components from the modules folder (more details below).
+Inclui os componentes de nível superior definidos pelas rotas da aplicação. Elas importam componentes de nível mais baixo da pasta `modules` (mais detalhes abaixo).
-## Modules
+## Módulos
-Each module represents a feature or a group of feature, comprising its specific components, states, and operational logic.
-They should all follow the structure below. You can nest modules within modules (referred to as submodules) and the same rules will apply.
+Cada módulo representa uma funcionalidade ou um grupo de funcionalidades, compreendendo seus componentes específicos, estados e lógica operacional.
+Todos devem seguir a estrutura abaixo. Você pode aninhar módulos dentro de módulos (referidos como submódulos) e as mesmas regras se aplicarão.
```
module1
@@ -50,60 +50,60 @@ module1
└───utils
```
-### Contexts
+### Contextos
-A context is a way to pass data through the component tree without having to pass props down manually at every level.
+Um contexto é uma maneira de passar dados através da árvore de componentes sem ter que passar propriedades manualmente em cada nível.
-See [React Context](https://react.dev/reference/react#context-hooks) for more details.
+Veja [React Context](https://react.dev/reference/react#context-hooks) para mais detalhes.
### GraphQL
-Includes fragments, queries, and mutations.
+Inclui fragmentos, consultas e mutações.
-See [GraphQL](https://graphql.org/learn/) for more details.
+Veja [GraphQL](https://graphql.org/learn/) para mais detalhes.
-* Fragments
+* Fragmentos
-A fragment is a reusable piece of a query, which you can use in different places. By using fragments, it's easier to avoid duplicating code.
+Um fragmento é uma parte reutilizável de uma consulta, que você pode usar em diferentes lugares. Usando fragmentos, é mais fácil evitar duplicar código.
-See [GraphQL Fragments](https://graphql.org/learn/queries/#fragments) for more details.
+Veja [GraphQL Fragments](https://graphql.org/learn/queries/#fragments) para mais detalhes.
-* Queries
+* Consultas
-See [GraphQL Queries](https://graphql.org/learn/queries/) for more details.
+Veja [GraphQL Queries](https://graphql.org/learn/queries/) para mais detalhes.
-* Mutations
+* Mutações
-See [GraphQL Mutations](https://graphql.org/learn/queries/#mutations) for more details.
+Veja [GraphQL Mutations](https://graphql.org/learn/queries/#mutations) para mais detalhes.
### Hooks
-See [Hooks](https://react.dev/learn/reusing-logic-with-custom-hooks) for more details.
+Veja [Hooks](https://react.dev/learn/reusing-logic-with-custom-hooks) para mais detalhes.
-### States
+### Estados
-Contains the state management logic. [RecoilJS](https://recoiljs.org) handles this.
+Contém a lógica de gerenciamento de estado. [RecoilJS](https://recoiljs.org) lida com isso.
-* Selectors: See [RecoilJS Selectors](https://recoiljs.org/docs/basic-tutorial/selectors) for more details.
+* Seletores: Veja [RecoilJS Selectors](https://recoiljs.org/docs/basic-tutorial/selectors) para mais detalhes.
-React's built-in state management still handles state within a component.
+O gerenciamento de estado embutido do React ainda lida com o estado dentro de um componente.
-### Utils
+### Utilitários
-Should just contain reusable pure functions. Otherwise, create custom hooks in the `hooks` folder.
+Deve conter apenas funções puras reutilizáveis. Caso contrário, crie hooks personalizados na pasta `hooks`.
## UI
-Contains all the reusable UI components used in the application.
+Contém todos os componentes reutilizáveis de UI usados na aplicação.
-This folder can contain sub-folders, like `data`, `display`, `feedback`, and `input` for specific types of components. Each component should be self-contained and reusable, so that you can use it in different parts of the application.
+Esta pasta pode conter subpastas, como `data`, `display`, `feedback` e `input` para tipos específicos de componentes. Cada componente deve ser autocontido e reutilizável, de modo que você possa usá-lo em diferentes partes da aplicação.
-By separating the UI components from the other components in the `modules` folder, it's easier to maintain a consistent design and to make changes to the UI without affecting other parts (business logic) of the codebase.
+Ao separar os componentes de UI dos outros componentes na pasta `modules`, é mais fácil manter um design consistente e fazer alterações na UI sem afetar outras partes (lógica de negócios) do código.
-## Interface and dependencies
+## Interface e dependências
-You can import other module code from any module except for the `ui` folder. This will keep its code easy to test.
+Você pode importar código de outros módulos, exceto da pasta `ui`. Isso manterá seu código fácil de testar.
-### Internal
+### Interno
-Each part (hooks, states, ...) of a module can have an `internal` folder, which contains parts that are just used within the module.
+Cada parte (hooks, estados, ...) de um módulo pode ter uma pasta `internal`, que contém partes que são usadas apenas dentro do módulo.
diff --git a/packages/twenty-docs/l/pt/developers/contribute/capabilities/frontend-development/frontend-commands.mdx b/packages/twenty-docs/l/pt/developers/contribute/capabilities/frontend-development/frontend-commands.mdx
index c584aafded..06abfd367a 100644
--- a/packages/twenty-docs/l/pt/developers/contribute/capabilities/frontend-development/frontend-commands.mdx
+++ b/packages/twenty-docs/l/pt/developers/contribute/capabilities/frontend-development/frontend-commands.mdx
@@ -1,22 +1,22 @@
---
-title: Frontend Commands
+title: Comandos do Frontend
---
-## Useful commands
+## Comandos Úteis
-### Starting the app
+### Iniciando o aplicativo
```bash
npx nx start twenty-front
```
-### Regenerate graphql schema based on API graphql schema
+### Regenerar esquema GraphQL baseado no esquema de API GraphQL
```bash
npx nx run twenty-front:graphql:generate --configuration=metadata
```
-OR
+OU
```bash
npx nx run twenty-front:graphql:generate
@@ -28,14 +28,14 @@ npx nx run twenty-front:graphql:generate
npx nx run twenty-front:lint # pass --fix to fix lint errors
```
-## Translations
+## Traduções
```bash
npx nx run twenty-front:lingui:extract
npx nx run twenty-front:lingui:compile
```
-### Test
+### Teste
```bash
npx nx run twenty-front:test # run jest tests
@@ -44,11 +44,11 @@ npx nx run twenty-front:storybook:test # run tests # (needs yarn storybook:serve
npx nx run twenty-front:storybook:coverage # (needs yarn storybook:serve:dev to be running)
```
-## Tech Stack
+## Pilha de Tecnologias
-The project has a clean and simple stack, with minimal boilerplate code.
+O projeto possui uma pilha limpa e simples, com pouco código boilerplate.
-**App**
+**Aplicativo**
* [React](https://react.dev/)
* [Apollo](https://www.apollographql.com/docs/)
@@ -56,35 +56,35 @@ The project has a clean and simple stack, with minimal boilerplate code.
* [Recoil](https://recoiljs.org/docs/introduction/core-concepts)
* [TypeScript](https://www.typescriptlang.org/)
-**Testing**
+**Testes**
* [Jest](https://jestjs.io/)
* [Storybook](https://storybook.js.org/)
-**Tooling**
+**Ferramentas**
* [Yarn](https://yarnpkg.com/)
* [Craco](https://craco.js.org/docs/)
* [ESLint](https://eslint.org/)
-## Architecture
+## Arquitetura
-### Routing
+### Roteamento
-[React Router](https://reactrouter.com/) handles the routing.
+[React Router](https://reactrouter.com/) gerencia o roteamento.
To avoid unnecessary [re-renders](/l/pt/developers/contribute/capabilities/frontend-development/best-practices-front#managing-re-renders) all the routing logic is in a `useEffect` in `PageChangeEffect`.
-### State Management
+### Gerenciamento de Estado
-[Recoil](https://recoiljs.org/docs/introduction/core-concepts) handles state management.
+[Recoil](https://recoiljs.org/docs/introduction/core-concepts) gerencia o estado.
-See [best practices](/l/pt/developers/contribute/capabilities/frontend-development/best-practices-front#state-management) for more information on state management.
+Veja [melhores práticas](/l/pt/developers/contribute/capabilities/frontend-development/best-practices-front#state-management) para mais informações sobre gerenciamento de estado.
-## Testing
+## Testes
-[Jest](https://jestjs.io/) serves as the tool for unit testing while [Storybook](https://storybook.js.org/) is for component testing.
+[Jest](https://jestjs.io/) serve como ferramenta para testes unitários enquanto [Storybook](https://storybook.js.org/) para teste de componentes.
-Jest is mainly for testing utility functions, and not components themselves.
+Jest é principalmente para testar funções utilitárias, e não os componentes em si.
-Storybook is for testing the behavior of isolated components, as well as displaying the design system.
+Storybook é para testar o comportamento de componentes isolados, bem como exibir o sistema de design.
diff --git a/packages/twenty-docs/l/pt/developers/contribute/capabilities/frontend-development/hotkeys.mdx b/packages/twenty-docs/l/pt/developers/contribute/capabilities/frontend-development/hotkeys.mdx
index 43cde50e63..95d1678da6 100644
--- a/packages/twenty-docs/l/pt/developers/contribute/capabilities/frontend-development/hotkeys.mdx
+++ b/packages/twenty-docs/l/pt/developers/contribute/capabilities/frontend-development/hotkeys.mdx
@@ -1,42 +1,42 @@
---
-title: Hotkeys
+title: Teclas de atalho
---
-## Introduction
+## Introdução
-When you need to listen to a hotkey, you would normally use the `onKeyDown` event listener.
+Quando você precisa ouvir uma tecla de atalho, normalmente usaria o listener de evento `onKeyDown`.
-In `twenty-front` however, you might have conflicts between same hotkeys that are used in different components, mounted at the same time.
+No entanto, em `twenty-front`, você pode ter conflitos entre as mesmas teclas de atalho que são usadas em diferentes componentes, montados ao mesmo tempo.
-For example, if you have a page that listens for the Enter key, and a modal that listens for the Enter key, with a Select component inside that modal that listens for the Enter key, you might have a conflict when all are mounted at the same time.
+Por exemplo, se você tem uma página que escuta a tecla Enter, e um modal que escuta a tecla Enter, com um componente Select dentro desse modal que escuta a tecla Enter, você pode ter um conflito quando todos são montados ao mesmo tempo.
-## The `useScopedHotkeys` hook
+## O hook `useScopedHotkeys`
-To handle this problem, we have a custom hook that makes it possible to listen to hotkeys without any conflict.
+Para lidar com esse problema, temos um hook personalizado que permite ouvir as teclas de atalho sem qualquer conflito.
-You place it in a component, and it will listen to the hotkeys only when the component is mounted AND when the specified **hotkey scope** is active.
+Você o coloca em um componente, e ele ouvirá as teclas de atalho somente quando o componente estiver montado E quando o **escopo da tecla de atalho** especificado estiver ativo.
-## How to listen for hotkeys in practice?
+## Como ouvir teclas de atalho na prática?
-There are two steps involved in setting up hotkey listening :
+Há dois passos envolvidos na configuração da escuta de teclas de atalho :
-1. Set the [hotkey scope](#what-is-a-hotkey-scope-) that will listen to hotkeys
-2. Use the `useScopedHotkeys` hook to listen to hotkeys
+1. Defina o [escopo da tecla de atalho](#what-is-a-hotkey-scope-) que ouvirá as teclas de atalho
+2. Use o hook `useScopedHotkeys` para ouvir as teclas de atalho
-Setting up hotkey scopes is required even in simple pages, because other UI elements like left menu or command menu might also listen to hotkeys.
+Configurar escopos de teclas de atalho é necessário mesmo em páginas simples, porque outros elementos de UI como o menu à esquerda ou o menu de comando também podem ouvir teclas de atalho.
-## Use cases for hotkeys
+## Casos de uso para teclas de atalho
-In general, you'll have two use cases that require hotkeys :
+Em geral, você terá dois casos de uso que requerem teclas de atalho :
-1. In a page or a component mounted in a page
-2. In a modal-type component that takes the focus due to a user action
+1. Em uma página ou um componente montado em uma página
+2. Em um componente do tipo modal que assume o foco devido a uma ação do usuário
-The second use case can happen recursively : a dropdown in a modal for example.
+O segundo caso de uso pode ocorrer de forma recursiva : um dropdown em um modal, por exemplo.
-### Listening to hotkeys in a page
+### Ouvindo teclas de atalho em uma página
-Example :
+Exemplo :
```tsx
const PageListeningEnter = () => {
@@ -71,11 +71,11 @@ const PageListeningEnter = () => {
};
```
-### Listening to hotkeys in a modal-type component
+### Ouvindo teclas de atalho em um componente do tipo modal
-For this example we'll use a modal component that listens for the Escape key to tell its parent to close it.
+Neste exemplo, usaremos um componente modal que ouve a tecla Escape para informar ao pai que feche.
-Here the user interaction is changing the scope.
+Aqui, a interação do usuário está mudando o escopo.
```tsx
const ExamplePageWithModal = () => {
@@ -108,7 +108,7 @@ const ExamplePageWithModal = () => {
};
```
-Then in the modal component :
+Então no componente modal :
```tsx
const MyDropdownComponent = ({ onClose }: { onClose: () => void }) => {
@@ -131,15 +131,15 @@ It's important to use this pattern when you're not sure that just using a useEff
Those conflicts can be hard to debug, and it might happen more often than not with useEffects.
-## What is a hotkey scope?
+## O que é um escopo de tecla de atalho?
-A hotkey scope is a string that represents a context in which the hotkeys are active. It is generally encoded as an enum.
+Um escopo de tecla de atalho é uma string que representa um contexto no qual as teclas de atalho estão ativas. Geralmente é codificado como um enum.
-When you change the hotkey scope, the hotkeys that are listening to this scope will be enabled and the hotkeys that are listening to other scopes will be disabled.
+Quando você altera o escopo da tecla de atalho, as teclas associadas a esse escopo serão ativadas e as teclas associadas a outros escopos serão desativadas.
-You can set only one scope at a time.
+Você pode definir apenas um escopo por vez.
-As an example, the hotkey scopes for each page are defined in the `PageHotkeyScope` enum:
+Como exemplo, os escopos de tecla de atalho para cada página são definidos no enum `PageHotkeyScope`:
```tsx
export enum PageHotkeyScope {
@@ -160,7 +160,7 @@ export enum PageHotkeyScope {
}
```
-Internally, the currently selected scope is stored in a Recoil state that is shared across the application :
+Internamente, o escopo atualmente selecionado é armazenado em um estado Recoil que é compartilhado por toda a aplicação :
```tsx
export const currentHotkeyScopeState = createState({
@@ -169,10 +169,10 @@ export const currentHotkeyScopeState = createState({
});
```
-But this Recoil state should never be handled manually ! We'll see how to use it in the next section.
+Mas esse estado Recoil nunca deve ser manipulado manualmente! Veremos como usá-lo na próxima seção.
-## How is it working internally?
+## Como funciona internamente?
-We made a thin wrapper on top of [react-hotkeys-hook](https://react-hotkeys-hook.vercel.app/docs/intro) that makes it more performant and avoids unnecessary re-renders.
+Criamos um wrapper leve em cima de [react-hotkeys-hook](https://react-hotkeys-hook.vercel.app/docs/intro) que o torna mais eficiente e evita renderizações desnecessárias.
-We also create a Recoil state to handle the hotkey scope state and make it available everywhere in the application.
+Também criamos um estado Recoil para gerenciar o estado do escopo da tecla de atalho e torná-lo disponível em toda a aplicação.
diff --git a/packages/twenty-docs/l/pt/developers/contribute/capabilities/frontend-development/storybook.mdx b/packages/twenty-docs/l/pt/developers/contribute/capabilities/frontend-development/storybook.mdx
index 5c7f5fa52a..62e7a9ebf2 100644
--- a/packages/twenty-docs/l/pt/developers/contribute/capabilities/frontend-development/storybook.mdx
+++ b/packages/twenty-docs/l/pt/developers/contribute/capabilities/frontend-development/storybook.mdx
@@ -1,8 +1,8 @@
---
title: Storybook
-description: Browse Twenty's UI component library
+description: Navegue pela biblioteca de componentes UI do Twenty
---
-View our complete component library and documentation in Storybook.
+Veja toda a nossa biblioteca de componentes e documentação no Storybook.
-[Open Storybook →](https://storybook.twenty.com)
+[Abra o Storybook →](https://storybook.twenty.com)
diff --git a/packages/twenty-docs/l/pt/developers/contribute/capabilities/frontend-development/style-guide.mdx b/packages/twenty-docs/l/pt/developers/contribute/capabilities/frontend-development/style-guide.mdx
index e3ba4a44f0..48d4c509eb 100644
--- a/packages/twenty-docs/l/pt/developers/contribute/capabilities/frontend-development/style-guide.mdx
+++ b/packages/twenty-docs/l/pt/developers/contribute/capabilities/frontend-development/style-guide.mdx
@@ -1,24 +1,24 @@
---
-title: Style Guide
+title: Guia de Estilo
---
-This document includes the rules to follow when writing code.
+Este documento inclui as regras a seguir ao escrever código.
-The goal here is to have a consistent codebase, which is easy to read and easy to maintain.
+O objetivo aqui é ter uma base de código consistente, fácil de ler e fácil de manter.
-For this, it's better to be a bit more verbose than to be too concise.
+Para isso, é melhor ser um pouco mais detalhado do que ser muito conciso.
-Always keep in mind that people read code more often than they write it, specially on an open source project, where anyone can contribute.
+Sempre tenha em mente que as pessoas leem código mais frequentemente do que o escrevem, especialmente em um projeto de código aberto, onde qualquer um pode contribuir.
-There are a lot of rules that are not defined here, but that are automatically checked by linters.
+Há muitas regras que não estão definidas aqui, mas que são verificadas automaticamente por linters.
## React
-### Use functional components
+### Use componentes funcionais
-Always use TSX functional components.
+Use sempre componentes funcionais TSX.
-Do not use default `import` with `const`, because it's harder to read and harder to import with code completion.
+Não use `import` padrão com `const`, pois é mais difícil de ler e mais difícil de importar com autocomplete.
```tsx
// ❌ Bad, harder to read, harder to import with code completion
@@ -34,11 +34,11 @@ export function MyComponent() {
};
```
-### Props
+### Propriedades
-Create the type of the props and call it `(ComponentName)Props` if there's no need to export it.
+Crie o tipo das propriedades e chame-o de `(NomeDoComponente)Props` se não houver necessidade de exportá-lo.
-Use props destructuring.
+Use destructuring de props.
```tsx
// ❌ Bad, no type
@@ -52,7 +52,7 @@ type MyComponentProps = {
export const MyComponent = ({ name }: MyComponentProps) => Hello {name}
;
```
-#### Refrain from using `React.FC` or `React.FunctionComponent` to define prop types
+#### Evite usar `React.FC` ou `React.FunctionComponent` para definir tipos de props
```tsx
/* ❌ - Bad, defines the component type annotations with `FC`
@@ -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.
+/* ✅ - Bom, um tipo separado (OwnProps) é explicitamente definido para as
+ * props do componente
+ * - Este método não inclui automaticamente a prop children. Se
+ * quiser incluí-la, deve especificá-la em OwnProps.
*/
type EmailFieldProps = {
value: string;
@@ -81,9 +81,9 @@ const EmailField = ({ value }: EmailFieldProps) => (
);
```
-#### No Single Variable Prop Spreading in JSX Elements
+#### Proibição de Prop Spreading de Variável Única em Elementos JSX
-Avoid using single variable prop spreading in JSX elements, like `{...props}`. This practice often results in code that is less readable and harder to maintain because it's unclear which props the component is receiving.
+Evite usar o espalhamento de props de variável única em elementos JSX, como `{...props}`. Essa prática muitas vezes resulta em código menos legível e mais difícil de manter, pois não está claro quais props o componente está recebendo.
```tsx
/* ❌ - Bad, spreads a single variable prop into the underlying component
@@ -94,23 +94,23 @@ const MyComponent = (props: OwnProps) => {
```
```tsx
-/* ✅ - Good, Explicitly lists all props
- * - Enhances readability and maintainability
+/* ✅ - Bom, lista explicitamente todas as props
+ * - Aumenta a legibilidade e a manutenibilidade
*/
const MyComponent = ({ prop1, prop2, prop3 }: MyComponentProps) => {
return ;
};
```
-Rationale:
+Justificativa:
-* At a glance, it's clearer which props the code passes down, making it easier to understand and maintain.
-* It helps to prevent tight coupling between components via their props.
-* Linting tools make it easier to identify misspelled or unused props when you list props explicitly.
+* À primeira vista, é mais claro quais props o código passa, tornando mais fácil de entender e manter.
+* Ajuda a evitar o acoplamento forte entre componentes via suas props.
+* Ferramentas de linting tornam mais fácil identificar props mal digitadas ou não utilizadas quando você lista props explicitamente.
## JavaScript
-### Use nullish-coalescing operator `??`
+### Use o operador de coalescência nula `??`
```tsx
// ❌ Bad, can return 'default' even if value is 0 or ''
@@ -120,21 +120,21 @@ const value = process.env.MY_VALUE || 'default';
const value = process.env.MY_VALUE ?? 'default';
```
-### Use optional chaining `?.`
+### Use encadeamento opcional `?.`
```tsx
-// ❌ Bad
+// ❌ Ruim
onClick && onClick();
-// ✅ Good
+// ✅ Bom
onClick?.();
```
## TypeScript
-### Use `type` instead of `interface`
+### Use `type` em vez de `interface`
-Always use `type` instead of `interface`, because they almost always overlap, and `type` is more flexible.
+Sempre use `type` em vez de `interface`, porque elas quase sempre se sobrepõem e `type` é mais flexível.
```tsx
// ❌ Bad
@@ -148,11 +148,11 @@ type MyType = {
};
```
-### Use string literals instead of enums
+### Use literais de string em vez de enums
-[String literals](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#literal-types) are the go-to way to handle enum-like values in TypeScript. They are easier to extend with Pick and Omit, and offer a better developer experience, specially with code completion.
+[Literals de string](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#literal-types) são o caminho a seguir para lidar com valores tipo enum no TypeScript. Eles são mais fáceis de estender com Pick e Omit, e oferecem uma melhor experiência de desenvolvedor, especialmente com autocomplete.
-You can see why TypeScript recommends avoiding enums [here](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#enums).
+Você pode ver porque o TypeScript recomenda evitar enums [aqui](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#enums).
```tsx
// ❌ Bad, utilizes an enum
@@ -171,13 +171,13 @@ let color = Color.Red;
let color: "red" | "green" | "blue" = "red";
```
-#### GraphQL and internal libraries
+#### GraphQL e bibliotecas internas
-You should use enums that GraphQL codegen generates.
+Você deve usar enums que o GraphQL codegen gera.
-It's also better to use an enum when using an internal library, so the internal library doesn't have to expose a string literal type that is not related to the internal API.
+É melhor usar um enum ao usar uma biblioteca interna, para que a biblioteca interna não precise expor um tipo literal de string que não está relacionado à API interna.
-Example:
+Exemplo:
```TSX
const {
@@ -190,11 +190,11 @@ setHotkeyScopeAndMemorizePreviousScope(
);
```
-## Styling
+## Estilização
### Use StyledComponents
-Style the components with [styled-components](https://emotion.sh/docs/styled).
+Estilize os componentes com [styled-components](https://emotion.sh/docs/styled).
```tsx
// ❌ Bad
@@ -208,7 +208,7 @@ const StyledTitle = styled.div`
`;
```
-Prefix styled components with "Styled" to differentiate them from "real" components.
+Prefixe componentes estilizados com "Styled" para diferenciá-los de componentes "reais".
```tsx
// ❌ Bad
@@ -224,17 +224,17 @@ const StyledTitle = styled.div`
`;
```
-### Theming
+### Tematização
-Utilizing the theme for the majority of component styling is the preferred approach.
+Utilizar o tema para a maioria da estilização dos componentes é a abordagem preferida.
-#### Units of measurement
+#### Unidades de medida
-Avoid using `px` or `rem` values directly within the styled components. The necessary values are generally already defined in the theme, so it’s recommended to make use of the theme for these purposes.
+Evite usar valores `px` ou `rem` diretamente dentro dos componentes estilizados. Os valores necessários geralmente já estão definidos no tema, por isso é recomendável fazer uso do tema para esses fins.
-#### Colors
+#### Cores
-Refrain from introducing new colors; instead, use the existing palette from the theme. Should there be a situation where the palette does not align, please leave a comment so that the team can rectify it.
+Evite introduzir novas cores; em vez disso, use a paleta existente do tema. Se houver uma situação em que a paleta não se alinhe, por favor, deixe um comentário para que a equipe possa corrigi-la.
```tsx
// ❌ Bad, directly specifies style values without utilizing the theme
@@ -258,9 +258,9 @@ const StyledButton = styled.button`
`;
```
-## Enforcing No-Type Imports
+## Impor Importações Sem Tipo
-Avoid type imports. To enforce this standard, an ESLint rule checks for and reports any type imports. This helps maintain consistency and readability in the TypeScript code.
+Evite importações de tipo. Para impor esse padrão, uma regra do ESLint verifica e relata qualquer violação de importação de tipos. Isso ajuda a manter a consistência e a legibilidade no código TypeScript.
```tsx
// ❌ Bad
@@ -273,18 +273,18 @@ import type { Meta, StoryObj } from '@storybook/react';
import { Meta, StoryObj } from '@storybook/react';
```
-### Why No-Type Imports
+### Por Que Não Usar Importações de Tipo
-* **Consistency**: By avoiding type imports and using a single approach for both type and value imports, the codebase remains consistent in its module import style.
+* **Consistência**: Ao evitar importações de tipo e usar uma única abordagem para importações de tipo e valor, a base de código permanece consistente em seu estilo de importação de módulo.
-* **Readability**: No-type imports improve code readability by making it clear when you're importing values or types. This reduces ambiguity and makes it easier to understand the purpose of imported symbols.
+* **Legibilidade**: Importações sem tipo melhoram a legibilidade do código, tornando claro quando você está importando valores ou tipos. Isso reduz a ambiguidade e facilita a compreensão do propósito dos símbolos importados.
-* **Maintainability**: It enhances codebase maintainability because developers can identify and locate type-only imports when reviewing or modifying code.
+* **Manutenção**: Melhora a manutenibilidade da base de código porque os desenvolvedores podem identificar e localizar importações somente de tipo ao revisar ou modificar o código.
-### ESLint Rule
+### Regra ESLint
-An ESLint rule, `@typescript-eslint/consistent-type-imports`, enforces the no-type import standard. This rule will generate errors or warnings for any type import violations.
+Uma regra do ESLint, `@typescript-eslint/consistent-type-imports`, aplica o padrão de importação sem tipo. Esta regra gerará erros ou avisos para qualquer violação de importação de tipo.
-Please note that this rule specifically addresses rare edge cases where unintentional type imports occur. 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). In most situations, you should not need to use type-only imports.
+Observe que esta regra trata especificamente de casos isolados onde importações de tipos não intencionais ocorrem. O próprio TypeScript desencoraja essa prática, conforme mencionado nas [notas de lançamento do TypeScript 3.8](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-8.html). Na maioria das situações, não é necessário usar importações somente de tipo.
-To ensure your code complies with this rule, make sure to run ESLint as part of your development workflow.
+Para garantir que seu código esteja em conformidade com essa regra, certifique-se de executar o ESLint como parte do seu fluxo de trabalho de desenvolvimento.
diff --git a/packages/twenty-docs/l/pt/developers/contribute/capabilities/frontend-development/work-with-figma.mdx b/packages/twenty-docs/l/pt/developers/contribute/capabilities/frontend-development/work-with-figma.mdx
index 6cffcc405e..03534752aa 100644
--- a/packages/twenty-docs/l/pt/developers/contribute/capabilities/frontend-development/work-with-figma.mdx
+++ b/packages/twenty-docs/l/pt/developers/contribute/capabilities/frontend-development/work-with-figma.mdx
@@ -1,59 +1,59 @@
---
-title: Work with Figma
-info: Learn how you can collaborate with Twenty's Figma
+title: Trabalhar com Figma
+info: Saiba como você pode colaborar com o Figma da Twenty
---
-Figma is a collaborative interface design tool that aids in bridging the communication barrier between designers and developers.
-This guide explains how you can collaborate with Figma.
+Figma é uma ferramenta de design de interface colaborativa que ajuda a superar a barreira de comunicação entre designers e desenvolvedores.
+Este guia explica como você pode colaborar com o Figma.
-## Access
+## Acesso
-1. **Access the shared link:** You can access the project's Figma file [here](https://www.figma.com/file/xt8O9mFeLl46C5InWwoMrN/Twenty).
-2. **Sign in:** If you're not already signed in, Figma will prompt you to do so.
- Key features are only available to logged-in users, such as the developer mode and the ability to select a dedicated frame.
+1. **Acesse o link compartilhado:** Você pode acessar o arquivo do projeto no Figma [aqui](https://www.figma.com/file/xt8O9mFeLl46C5InWwoMrN/Twenty).
+2. **Entrar:** Se você ainda não estiver conectado, o Figma solicitará que o faça.
+ Recursos principais estão disponíveis apenas para usuários conectados, como o modo desenvolvedor e a capacidade de selecionar uma moldura dedicada.
- You will not be able to collaborate effectively without an account.
+ Você não será capaz de colaborar efetivamente sem uma conta.
-## Figma structure
+## Estrutura do Figma
-On the left sidebar, you can access the different pages of Twenty's Figma. This is how they're organized:
+Na barra lateral esquerda, você pode acessar as diferentes páginas do Figma da Twenty. É assim que elas estão organizadas:
-* **Components page:** This is the first page. The designer uses it to create and organize the reusable design elements used throughout the design file. For example, buttons, icons, symbols, or any other reusable components. It serves to maintain consistency across the design.
-* **Main page:** The second page is the main page, which shows the complete user interface of the project. You can press ***Play*** to use the full app prototype.
-* **Features pages:** The other pages are typically dedicated to features in progress. They contain the design of specific features or modules of the application or website. They are typically still in progress.
+* **Página de componentes:** Esta é a primeira página. O designer a utiliza para criar e organizar os elementos de design reutilizáveis utilizados em todo o arquivo de design. Por exemplo, botões, ícones, símbolos, ou qualquer outro componente reutilizável. Serve para manter a consistência em todo o design.
+* **Página principal:** A segunda página é a página principal, que mostra a interface completa do usuário do projeto. Você pode pressionar ***Play*** para usar o protótipo completo do aplicativo.
+* **Páginas de recursos:** As outras páginas são tipicamente dedicadas a recursos em andamento. Elas contêm o design de recursos ou módulos específicos do aplicativo ou website. Elas geralmente ainda estão em progresso.
-## Useful Tips
+## Dicas Úteis
-With read-only access, you can't edit the design, but you can access all features that will be useful to convert the designs into code.
+Com acesso somente leitura, você não pode editar o design, mas pode acessar todos os recursos que serão úteis para converter os designs em código.
-### Use the Dev mode
+### Use o modo Dev
-Figma's Dev Mode enhances developers' productivity by providing easy design navigation, effective asset management, efficient communication tools, toolbox integrations, quick code snippets, and key layer information, bridging the gap between design and development. You can learn more about Dev Mode [here](https://www.figma.com/dev-mode/).
+O Modo Dev do Figma aumenta a produtividade dos desenvolvedores ao oferecer navegação fácil no design, gerenciamento eficaz de ativos, ferramentas de comunicação eficientes, integrações de caixa de ferramentas, trechos de código rápidos, e informações importantes de camadas, unindo design e desenvolvimento. Você pode aprender mais sobre o Modo Dev [aqui](https://www.figma.com/dev-mode/).
-Switch to the "Developer" mode in the right part of the toolbar to see design specs, copy CSS, and access assets.
+Mude para o modo "Desenvolvedor" na parte direita da barra de ferramentas para ver especificações de design, copiar CSS, e acessar ativos.
-### Use the Prototype
+### Use o Protótipo
-Click on any element on the canvas and press the “Play” button at the top right edge of the interface to access the prototype view. Prototype mode allows you to interact with the design as if it were the final product. It demonstrates the flow between screens and how interface elements like buttons, links, or menus behave when interacted with.
+Clique em qualquer elemento na tela e pressione o botão “Play” na borda superior direita da interface para acessar a visualização do protótipo. O modo Protótipo permite que você interaja com o design como se fosse o produto final. Demonstra o fluxo entre telas e como elementos da interface como botões, links, ou menus se comportam quando interagidos.
-1. **Understanding transitions and animations:** In the Prototype mode, you can view any transitions or animations added by a designer between screens or UI elements, providing clear visual instructions to developers on the intended behavior and style.
-2. **Implementation clarification:** A prototype can also help reduce ambiguities. Developers can interact with it to gain a better understanding of the functionality or appearance of particular elements.
+1. **Entendendo transições e animações:** No modo Protótipo, é possível visualizar quaisquer transições ou animações adicionadas por um designer entre telas ou elementos da UI, proporcionando instruções visuais claras aos desenvolvedores sobre o comportamento e estilo pretendidos.
+2. **Esclarecimento de implementação:** Um protótipo também pode ajudar a reduzir ambiguidades. Os desenvolvedores podem interagir com ele para obter uma melhor compreensão da funcionalidade ou aparência de elementos específicos.
-For more comprehensive details and guidance on learning the Figma platform, you can visit the official [Figma Documentation](https://help.figma.com/hc/en-us).
+Para obter informações mais abrangentes e orientações sobre como aprender a plataforma Figma, você pode visitar a [Documentação Oficial do Figma](https://help.figma.com/hc/en-us).
-### Measure distances
+### Medir distâncias
-Select an element, hold `Option` key (Mac) or `Alt` key (Windows), then hover over another element to see the distance between them.
+Selecione um elemento, mantenha a tecla `Option` (Mac) ou `Alt` (Windows) pressionada e passe o mouse sobre outro elemento para ver a distância entre eles.
-### Figma extension for VSCode (Recommended)
+### Extensão Figma para VSCode (Recomendado)
-[Figma for VS Code](https://marketplace.visualstudio.com/items?itemName=figma.figma-vscode-extension)
-lets you navigate and inspect design files, collaborate with designers, track changes, and speed up implementation - all without leaving your text editor.
-It's part of our recommended extensions.
+[Figma para VS Code](https://marketplace.visualstudio.com/items?itemName=figma.figma-vscode-extension)
+permite que você navegue e inspecione arquivos de design, colabore com designers, acompanhe alterações e acelere a implementação - tudo sem sair do seu editor de texto.
+Faz parte das extensões recomendadas por nós.
-## Collaboration
+## Colaboração
-1. **Using Comments:** You are welcome to use the comment feature by clicking on the bubble icon in the left part of the toolbar.
-2. **Cursor chat:** A nice feature of Figma is the Cursor chat. Just press `;` on Mac and `/` on Windows to send a message if you see someone else using Figma as the same time as you.
+1. **Usando Comentários:** Você é bem-vindo para usar a ferramenta de comentários clicando no ícone de bolha na parte esquerda da barra de ferramentas.
+2. **Chat do Cursor:** Uma característica interessante do Figma é o Chat do Cursor. Apenas pressione `;` no Mac e `/` no Windows para enviar uma mensagem se você vir outra pessoa usando Figma ao mesmo tempo que você.
diff --git a/packages/twenty-docs/l/pt/developers/contribute/capabilities/local-setup.mdx b/packages/twenty-docs/l/pt/developers/contribute/capabilities/local-setup.mdx
index 37d368d35e..98d49e3f7b 100644
--- a/packages/twenty-docs/l/pt/developers/contribute/capabilities/local-setup.mdx
+++ b/packages/twenty-docs/l/pt/developers/contribute/capabilities/local-setup.mdx
@@ -1,13 +1,13 @@
---
-title: Local Setup
-description: The guide for contributors (or curious developers) who want to run Twenty locally.
+title: Configuração Local
+description: O guia para contribuidores (ou desenvolvedores curiosos) que desejam executar o Twenty localmente.
---
-## Prerequisites
+## Pré-requisitos
-
- Before you can install and use Twenty, make sure you install the following on your computer:
+
+ Antes de instalar e usar o Twenty, certifique-se de instalar o seguinte em seu computador:
* [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)
* [Node v24.5.0](https://nodejs.org/en/download)
@@ -15,25 +15,25 @@ description: The guide for contributors (or curious developers) who want to run
* [nvm](https://github.com/nvm-sh/nvm/blob/master/README.md)
- `npm` won't work, you should use `yarn` instead. Yarn is now shipped with Node.js, so you don't need to install it separately.
- You only have to run `corepack enable` to enable Yarn if you haven't done it yet.
+ `npm` não funcionará, você deve usar `yarn` em vez disso. O Yarn agora vem com o Node.js, então você não precisa instalá-lo separadamente.
+ Você só precisa executar `corepack enable` para habilitar o Yarn, se ainda não o fez.
- 1. Install WSL
- Open PowerShell as Administrator and run:
+ 1. Instale o WSL
+ Abra o PowerShell como Administrador e execute:
```powershell
wsl --install
```
- You should now see a prompt to restart your computer. If not, restart it manually.
+ Você deve agora ver um aviso para reiniciar o computador. Caso contrário, reinicie-o manualmente.
- Upon restart, a powershell window will open and install Ubuntu. This may take up some time.
- You'll see a prompt to create a username and password for your Ubuntu installation.
+ Ao reiniciar, uma janela do powershell será aberta e instalará o Ubuntu. Isso pode levar algum tempo.
+ Você verá uma solicitação para criar um nome de usuário e senha para sua instalação do Ubuntu.
- 2. Install and configure git
+ 2. Instalar e configurar o git
```bash
sudo apt-get install git
@@ -43,10 +43,10 @@ description: The guide for contributors (or curious developers) who want to run
git config --global user.email "youremail@domain.com"
```
- 3. Install nvm, node.js and yarn
+ 3. Instale nvm, node.js e yarn
- Use `nvm` to install the correct `node` version. The `.nvmrc` ensures all contributors use the same version.
+ Use `nvm` para instalar a versão correta do `node`. O `.nvmrc` garante que todos os contribuidores usem a mesma versão.
```bash
@@ -55,7 +55,7 @@ description: The guide for contributors (or curious developers) who want to run
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | bash
```
- Close and reopen your terminal to use nvm. Then run the following commands.
+ Feche e reabra o seu terminal para usar o nvm. Em seguida, execute os seguintes comandos.
```bash
@@ -70,13 +70,13 @@ description: The guide for contributors (or curious developers) who want to run
---
-## Step 1: Git Clone
+## Passo 1: Clonar com Git
-In your terminal, run the following command.
+No seu terminal, execute o seguinte comando.
-
- If you haven't already set up SSH keys, you can learn how to do so [here](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/about-ssh).
+
+ Se ainda não configurou as chaves SSH, você pode aprender como fazê-lo [aqui](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/about-ssh).
```bash
git clone git@github.com:twentyhq/twenty.git
@@ -90,36 +90,36 @@ In your terminal, run the following command.
-## Step 2: Position yourself at the root
+## Passo 2: Posicione-se na raiz
```bash
cd twenty
```
-You should run all commands in the following steps from the root of the project.
+Você deve executar todos os comandos nas etapas seguintes a partir da raiz do projeto.
-## Step 3: Set up a PostgreSQL Database
+## Passo 3: Configurar um Banco de Dados PostgreSQL
- **Option 1 (preferred):** To provision your database locally:
- Use the following link to install Postgresql on your Linux machine: [Postgresql Installation](https://www.postgresql.org/download/linux/)
+ **Opção 1 (preferencial):** Para prover seu banco de dados localmente:
+ Use o seguinte link para instalar o Postgresql na sua máquina Linux: [Instalação do Postgresql](https://www.postgresql.org/download/linux/)
```bash
psql postgres -c "CREATE DATABASE \"default\";" -c "CREATE DATABASE test;"
```
- Note: You might need to add `sudo -u postgres` to the command before `psql` to avoid permission errors.
+ Nota: Pode ser necessário adicionar `sudo -u postgres` ao comando antes de `psql` para evitar erros de permissão.
- **Option 2:** If you have docker installed:
+ **Opção 2:** Se você tem o docker instalado:
```bash
- make postgres-on-docker
+ make -C packages/twenty-docker postgres-on-docker
```
- **Option 1 (preferred):** To provision your database locally with `brew`:
+ **Opção 1 (preferencial):** Para prover seu banco de dados localmente com `brew`:
```bash
brew install postgresql@16
@@ -128,16 +128,16 @@ You should run all commands in the following steps from the root of the project.
psql postgres -c "CREATE DATABASE \"default\";" -c "CREATE DATABASE test;"
```
- You can verify if the PostgreSQL server is running by executing:
+ Você pode verificar se o servidor PostgreSQL está em execução, executando:
```bash
brew services list
```
- The installer might not create the `postgres` user by default when installing
- via Homebrew on MacOS. Instead, it creates a PostgreSQL role that matches your macOS
- username (e.g., "john").
- To check and create the `postgres` user if necessary, follow these steps:
+ O instalador pode não criar o usuário `postgres` por padrão ao instalar
+ via Homebrew no MacOS. Em vez disso, ele cria uma função PostgreSQL que corresponde ao seu nome de usuário do macOS
+ (por exemplo, "john").
+ Para verificar e criar o usuário `postgres`, se necessário, siga estas etapas:
```bash
# Connect to PostgreSQL
@@ -146,14 +146,14 @@ You should run all commands in the following steps from the root of the project.
psql -U $(whoami) -d postgres
```
- Once at the psql prompt (postgres=#), run:
+ Uma vez no prompt do psql (postgres=#), execute:
```bash
# List existing PostgreSQL roles
\du
```
- You'll see output similar to:
+ Você verá uma saída semelhante a:
```bash
Role name | Attributes | Member of
@@ -161,98 +161,98 @@ You should run all commands in the following steps from the root of the project.
john | Superuser | {}
```
- If you do not see a `postgres` role listed, proceed to the next step.
- Create the `postgres` role manually:
+ Se você não vir um papel `postgres` listado, prossiga para a próxima etapa.
+ Crie o papel `postgres` manualmente:
```bash
CREATE ROLE postgres WITH SUPERUSER LOGIN;
```
- This creates a superuser role named `postgres` with login access.
+ Isso cria um papel de superusuário chamado `postgres` com acesso de login.
- **Option 2:** If you have docker installed:
+ **Opção 2:** Se você tem o docker instalado:
```bash
- make postgres-on-docker
+ make -C packages/twenty-docker postgres-on-docker
```
- All the following steps are to be run in the WSL terminal (within your virtual machine)
+ Todos os passos a seguir devem ser executados no terminal WSL (dentro da sua máquina virtual)
- **Option 1:** To provision your Postgresql locally:
- Use the following link to install Postgresql on your Linux virtual machine: [Postgresql Installation](https://www.postgresql.org/download/linux/)
+ **Opção 1:** Para provisionar seu Postgresql localmente:
+ Use o seguinte link para instalar o Postgresql em sua máquina virtual Linux: [Instalação do Postgresql](https://www.postgresql.org/download/linux/)
```bash
psql postgres -c "CREATE DATABASE \"default\";" -c "CREATE DATABASE test;"
```
- Note: You might need to add `sudo -u postgres` to the command before `psql` to avoid permission errors.
+ Nota: Pode ser necessário adicionar `sudo -u postgres` ao comando antes de `psql` para evitar erros de permissão.
- **Option 2:** If you have docker installed:
- Running Docker on WSL adds an extra layer of complexity.
- Only use this option if you are comfortable with the extra steps involved, including turning on [Docker Desktop WSL2](https://docs.docker.com/desktop/wsl).
+ **Opção 2:** Se você tem o docker instalado:
+ Executar o Docker no WSL adiciona uma camada extra de complexidade.
+ Use esta opção apenas se estiver confortável com as etapas adicionais envolvidas, incluindo a ativação do [Docker Desktop WSL2](https://docs.docker.com/desktop/wsl).
```bash
- make postgres-on-docker
+ make -C packages/twenty-docker postgres-on-docker
```
-You can now access the database at [localhost:5432](localhost:5432), with user `postgres` and password `postgres` .
+Você pode agora acessar o banco de dados em [localhost:5432](localhost:5432), com o usuário `postgres` e senha `postgres`.
-## Step 4: Set up a Redis Database (cache)
+## Passo 4: Configurar um Banco de Dados Redis (cache)
-Twenty requires a redis cache to provide the best performance
+O Twenty requer um cache redis para oferecer o melhor desempenho
- **Option 1:** To provision your Redis locally:
- Use the following link to install Redis on your Linux machine: [Redis Installation](https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/install-redis-on-linux/)
+ **Opção 1:** Para prover seu Redis localmente:
+ Use o seguinte link para instalar o Redis na sua máquina Linux: [Instalação do Redis](https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/install-redis-on-linux/)
- **Option 2:** If you have docker installed:
+ **Opção 2:** Se você tem o docker instalado:
```bash
- make redis-on-docker
+ make -C packages/twenty-docker redis-on-docker
```
- **Option 1 (preferred):** To provision your Redis locally with `brew`:
+ **Opção 1 (preferencial):** Para prover seu Redis localmente com `brew`:
```bash
brew install redis
```
- Start your redis server:
+ Inicie seu servidor redis:
`brew services start redis`
- **Option 2:** If you have docker installed:
+ **Opção 2:** Se você tem o docker instalado:
```bash
- make redis-on-docker
+ make -C packages/twenty-docker redis-on-docker
```
- **Option 1:** To provision your Redis locally:
- Use the following link to install Redis on your Linux virtual machine: [Redis Installation](https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/install-redis-on-linux/)
+ **Opção 1:** Para prover seu Redis localmente:
+ Use o seguinte link para instalar o Redis na sua máquina virtual Linux: [Instalação do Redis](https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/install-redis-on-linux/)
- **Option 2:** If you have docker installed:
+ **Opção 2:** Se você tem o docker instalado:
```bash
- make redis-on-docker
+ make -C packages/twenty-docker redis-on-docker
```
-If you need a Client GUI, we recommend [redis insight](https://redis.io/insight/) (free version available)
+Se precisar de uma GUI de Cliente, recomendamos o [redis insight](https://redis.io/insight/) (versão gratuita disponível)
-## Step 5: Setup environment variables
+## Passo 5: Configurar variáveis de ambiente
-Use environment variables or `.env` files to configure your project. More info [here](/l/pt/developers/self-host/capabilities/setup)
+Use variáveis de ambiente ou arquivos `.env` para configurar seu projeto. Mais informações [aqui](/l/pt/developers/self-host/capabilities/setup)
-Copy the `.env.example` files in `/front` and `/server`:
+Copie os arquivos `.env.example` em `/front` e `/server`:
```bash
cp ./packages/twenty-front/.env.example ./packages/twenty-front/.env
@@ -260,29 +260,29 @@ 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/pt/developers/self-host/capabilities/setup#multi-workspace-mode) for details.
+ **Modo Multiworkspace:** Por padrão, o Twenty é executado no modo de workspace único, em que apenas um workspace pode ser criado. Para ativar o suporte a multiworkspace (útil para testar recursos baseados em subdomínio), defina `IS_MULTIWORKSPACE_ENABLED=true` no arquivo `.env` do seu servidor. Veja [Modo Multiworkspace](/l/pt/developers/self-host/capabilities/setup#multi-workspace-mode) para obter detalhes.
-## Step 6: Installing dependencies
+## Passo 6: Instalando dependências
-To build Twenty server and seed some data into your database, run the following command:
+Para compilar o servidor Twenty e popular seu banco de dados com alguns dados, execute o seguinte comando:
```bash
yarn
```
-Note that `npm` or `pnpm` won't work
+Note que `npm` ou `pnpm` não funcionarão
-## Step 7: Running the project
+## Passo 7: Executando o projeto
- Depending on your Linux distribution, Redis server might be started automatically.
- If not, check the [Redis installation guide](https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/) for your distro.
+ Dependendo da sua distribuição Linux, o servidor Redis pode ser iniciado automaticamente.
+ Se não, verifique o [guia de instalação do Redis](https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/) para sua distro.
- Redis should already be running. If not, run:
+ Redis já deve estar em execução. Se não, execute:
```bash
brew services start redis
@@ -290,18 +290,18 @@ Note that `npm` or `pnpm` won't work
- Depending on your Linux distribution, Redis server might be started automatically.
- If not, check the [Redis installation guide](https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/) for your distro.
+ Dependendo da sua distribuição Linux, o servidor Redis pode ser iniciado automaticamente.
+ Se não, verifique o [guia de instalação do Redis](https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/) para sua distro.
-Set up your database with the following command:
+Configure seu banco de dados com o seguinte comando:
```bash
npx nx database:reset twenty-server
```
-Start the server, the worker and the frontend services:
+Inicie o servidor, o worker e os serviços de frontend:
```bash
npx nx start twenty-server
@@ -309,25 +309,25 @@ npx nx worker twenty-server
npx nx start twenty-front
```
-Alternatively, you can start all services at once:
+Alternativamente, você pode iniciar todos os serviços de uma vez:
```bash
npx nx start
```
-## Step 8: Use Twenty
+## Passo 8: Use Twenty
**Frontend**
-Twenty's frontend will be running at [http://localhost:3001](http://localhost:3001).
-You can log in using the default demo account: `tim@apple.dev` (password: `tim@apple.dev`)
+O frontend do Twenty estará em execução em [http://localhost:3001](http://localhost:3001).
+Você pode fazer login usando a conta demo padrão: `tim@apple.dev` (senha: `tim@apple.dev`)
**Backend**
-* Twenty's server will be up and running at [http://localhost:3000](http://localhost:3000)
-* The GraphQL API can be accessed at [http://localhost:3000/graphql](http://localhost:3000/graphql)
-* The REST API can be reached at [http://localhost:3000/rest](http://localhost:3000/rest)
+* O servidor do Twenty estará ativo em [http://localhost:3000](http://localhost:3000)
+* A API GraphQL pode ser acessada em [http://localhost:3000/graphql](http://localhost:3000/graphql)
+* A API REST pode ser acessada em [http://localhost:3000/rest](http://localhost:3000/rest)
-## Troubleshooting
+## Resolução de Problemas
-If you encounter any problem, check [Troubleshooting](/l/pt/developers/self-host/capabilities/troubleshooting) for solutions.
+Se encontrar algum problema, verifique [Resolução de Problemas](/l/pt/developers/self-host/capabilities/troubleshooting) para soluções.
diff --git a/packages/twenty-docs/l/pt/developers/contribute/contribute.mdx b/packages/twenty-docs/l/pt/developers/contribute/contribute.mdx
index 7dfe7a4325..372f04607a 100644
--- a/packages/twenty-docs/l/pt/developers/contribute/contribute.mdx
+++ b/packages/twenty-docs/l/pt/developers/contribute/contribute.mdx
@@ -1,32 +1,32 @@
---
-title: Contribute
-description: Contribute to Twenty's open-source development.
+title: Contribuir
+description: Contribua para o desenvolvimento de código aberto do Twenty.
---
-
+
-## Overview
+## Visão geral
-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.
+O Twenty é de código aberto e recebe contribuições da comunidade. Seja corrigindo bugs, adicionando funcionalidades ou aprimorando a documentação, suas contribuições ajudam a tornar o Twenty melhor para todos.
-## Ways to Contribute
+## Formas de contribuir
-* **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
+* **Relate bugs**: Ajude a identificar e documentar problemas
+* **Envie funcionalidades**: Proponha e implemente novas funcionalidades
+* **Aprimore a documentação**: Torne nossa documentação mais clara e útil
+* **Desenvolvimento de front-end**: Trabalhe na UI baseada em React
+* **Desenvolvimento de back-end**: Contribua para o servidor NestJS
-## Getting Started
+## Primeiros passos
-
- Report issues or request features
+
+ Relate problemas ou solicite funcionalidades
-
- Contribute to the UI
+
+ Contribua para a UI
diff --git a/packages/twenty-docs/l/pt/developers/extend/capabilities/apis.mdx b/packages/twenty-docs/l/pt/developers/extend/capabilities/apis.mdx
index 4358033f9d..137598eb7c 100644
--- a/packages/twenty-docs/l/pt/developers/extend/capabilities/apis.mdx
+++ b/packages/twenty-docs/l/pt/developers/extend/capabilities/apis.mdx
@@ -1,147 +1,147 @@
---
title: APIs
-description: Query and modify your CRM data programmatically using REST or GraphQL.
+description: Consulte e modifique seus dados de CRM programaticamente usando REST ou GraphQL.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-Twenty was built to be developer-friendly, offering powerful APIs that adapt to your custom data model. We provide four distinct API types to meet different integration needs.
+O Twenty foi desenvolvido para ser amigável ao desenvolvedor, oferecendo APIs poderosas que se adaptam ao seu modelo de dados personalizado. Oferecemos quatro tipos distintos de API para atender diferentes necessidades de integração.
-## Developer-First Approach
+## Abordagem Focada no Desenvolvedor
-Twenty generates APIs specifically for your data model:
+Twenty gera APIs especificamente para o seu modelo de dados:
-* **No long IDs required**: Use your object and field names directly in endpoints
-* **Standard and custom objects treated equally**: Your custom objects get the same API treatment as built-in ones
-* **Dedicated endpoints**: Each object and field gets its own API endpoint
-* **Custom documentation**: Generated specifically for your workspace's data model
+* **Nenhum ID longo necessário**: Use os nomes dos seus objetos e campos diretamente nas endpoints
+* **Objetos padrão e personalizados tratados igualmente**: Seus objetos personalizados recebem o mesmo tratamento de API que os incorporados
+* **Endpoints dedicados**: Cada objeto e campo tem seu próprio endpoint de API
+* **Documentação personalizada**: Gerada especificamente para o modelo de dados do seu workspace
- 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.
+ Sua documentação de API personalizada fica disponível em **Configurações → API & Webhooks** após criar uma chave de API. Como o Twenty gera APIs que correspondem ao seu modelo de dados personalizado, a documentação é exclusiva do seu workspace.
-## The Two API Types
+## Os dois tipos de API
### Core API
-Accessed on `/rest/` or `/graphql/`
+Acessada em `/rest/` ou `/graphql/`
-Work with your actual **records** (the data):
+Trabalhe com seus **registros** (os dados):
-* Create, read, update, delete People, Companies, Opportunities, etc.
-* Query and filter data
-* Manage record relationships
+* Criar, ler, atualizar e excluir Pessoas, Empresas, Oportunidades, etc.
+* Consultar e filtrar dados
+* Gerenciar relações de registros
### Metadata API
-Accessed on `/rest/metadata/` or `/metadata/`
+Acessada em `/rest/metadata/` ou `/metadata/`
-Manage your **workspace and data model**:
+Gerencie seu **workspace e modelo de dados**:
-* Create, modify, or delete objects and fields
-* Configure workspace settings
-* Define relationships between objects
+* Criar, modificar ou excluir objetos e campos
+* Configurar as configurações do workspace
+* Defina relacionamentos entre objetos
## REST vs GraphQL
-Both Core and Metadata APIs are available in REST and GraphQL formats:
+As APIs Core e Metadata estão disponíveis nos formatos REST e GraphQL:
-| Format | Available Operations |
-| ----------- | ---------------------------------------------------------- |
-| **REST** | CRUD, batch operations, upserts |
-| **GraphQL** | Same + **batch upserts**, relationship queries in one call |
+| Formato | Operações disponíveis |
+| ----------- | --------------------------------------------------------------------------------- |
+| **REST** | CRUD, operações em lote, upserts |
+| **GraphQL** | Os mesmos + **upserts em lote**, consultas de relacionamento em uma única chamada |
-Choose based on your needs — both formats access the same data.
+Escolha com base nas suas necessidades — ambos os formatos acessam os mesmos dados.
-## API Endpoints
+## Endpoints de API
-| Environment | Base URL |
-| --------------- | ------------------------- |
-| **Cloud** | `https://api.twenty.com/` |
-| **Self-Hosted** | `https://{your-domain}/` |
+| Ambiente | URL base |
+| ------------------ | ------------------------- |
+| **Nuvem** | `https://api.twenty.com/` |
+| **Auto-hospedado** | `https://{your-domain}/` |
-## Authentication
+## Autenticação
-Every API request requires an API key in the header:
+Toda solicitação de API requer uma chave de API no cabeçalho:
```
Authorization: Bearer YOUR_API_KEY
```
-### Create an API Key
+### Criar uma Chave de API
-1. Go to **Settings → APIs & Webhooks**
-2. Click **+ Create key**
-3. Configure:
- * **Name**: Descriptive name for the key
- * **Expiration Date**: When the key expires
-4. Click **Save**
-5. **Copy immediately** — the key is only shown once
+1. Vá para **Configurações → APIs & Webhooks**
+2. Clique em **+ Criar chave**
+3. Configurar:
+ * **Nome**: Nome descritivo para a chave
+ * **Data de expiração**: Quando a chave expira
+4. Clique em **Salvar**
+5. **Copie imediatamente** — a chave é exibida apenas uma vez
-
+
- 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.
+ Sua chave de API concede acesso a dados confidenciais. Não a compartilhe com serviços não confiáveis. Se for comprometida, desative-a imediatamente e gere uma nova.
-### Assign a Role to an API Key
+### Atribuir uma função a uma chave de API
-For better security, assign a specific role to limit access:
+Para maior segurança, atribua uma função específica para limitar o acesso:
-1. Go to **Settings → Roles**
-2. Click on the role to assign
-3. Open the **Assignment** tab
-4. Under **API Keys**, click **+ Assign to API key**
-5. Select the API key
+1. Vá para **Configurações → Funções**
+2. Clique na função que deseja atribuir
+3. Abra a aba de **Atribuição**
+4. Em **Chaves de API**, clique em **+ Atribuir à chave de API**
+5. Selecione a chave de API
-The key will inherit that role's permissions. See [Permissions](/l/pt/user-guide/permissions-access/capabilities/permissions) for details.
+A chave herdará as permissões dessa função. Veja [Permissões](/l/pt/user-guide/permissions-access/capabilities/permissions) para obter detalhes.
-### Manage API Keys
+### Gerenciar Chaves de API
-**Regenerate**: Settings → APIs & Webhooks → Click key → **Regenerate**
+**Regenerar**: Configurações → APIs & Webhooks → Clique na chave → **Regenerar**
-**Delete**: Settings → APIs & Webhooks → Click key → **Delete**
+**Excluir**: Configurações → APIs & Webhooks → Clique na chave → **Excluir**
-## API Playground
+## Playground de API
-Test your APIs directly in the browser with our built-in playground — available for both **REST** and **GraphQL**.
+Teste suas APIs diretamente no navegador com nosso playground integrado — disponível tanto para **REST** quanto para **GraphQL**.
-### Access the Playground
+### Acesse o Playground
-1. Go to **Settings → APIs & Webhooks**
-2. Create an API key (required)
-3. Click on **REST API** or **GraphQL API** to open the playground
+1. Vá para **Configurações → APIs & Webhooks**
+2. Crie uma chave de API (obrigatório)
+3. Clique em **REST API** ou **GraphQL API** para abrir o playground
-### What You Get
+### O que você obtém
-* **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
+* **Documentação interativa**: Gerada para o seu modelo de dados específico
+* **Testes ao vivo**: Execute chamadas de API reais no seu workspace
+* **Explorador de esquema**: Navegue pelos objetos, campos e relacionamentos disponíveis
+* **Construtor de solicitações**: Construa consultas com preenchimento automático
-The playground reflects your custom objects and fields, so documentation is always accurate for your workspace.
+O playground reflete seus objetos e campos personalizados, portanto, a documentação está sempre precisa para o seu workspace.
-## Batch Operations
+## Operações em Lote
-Both REST and GraphQL support batch operations:
+Tanto REST quanto GraphQL suportam operações em lote:
-* **Batch size**: Up to 60 records per request
-* **Operations**: Create, update, delete multiple records
+* **Tamanho do lote**: Até 60 registros por requisição
+* **Operações**: Criar, atualizar e excluir vários registros
-**GraphQL-only features:**
+**Recursos exclusivos do GraphQL:**
-* **Batch Upsert**: Create or update in one call
-* Use plural object names (e.g., `CreateCompanies` instead of `CreateCompany`)
+* **Upsert em lote**: Criar ou atualizar em uma única chamada
+* Use nomes de objetos no plural (por exemplo, `CreateCompanies` em vez de `CreateCompany`)
-## Rate Limits
+## Limites de taxa
-API requests are throttled to ensure platform stability:
+As solicitações de API são limitadas para garantir a estabilidade da plataforma:
-| Limit | Value |
-| -------------- | -------------------- |
-| **Requests** | 100 calls per minute |
-| **Batch size** | 60 records per call |
+| Limite | Valor |
+| ------------------- | ------------------------ |
+| **Solicitações** | 100 chamadas por minuto |
+| **Tamanho do lote** | 60 registros por chamada |
- Use batch operations to maximize throughput — process up to 60 records in a single API call instead of making individual requests.
+ Use operações em lote para maximizar a taxa de transferência — processe até 60 registros em uma única chamada de API em vez de fazer solicitações individuais.
diff --git a/packages/twenty-docs/l/pt/developers/extend/capabilities/apps.mdx b/packages/twenty-docs/l/pt/developers/extend/capabilities/apps.mdx
index dc528fa780..d611997e88 100644
--- a/packages/twenty-docs/l/pt/developers/extend/capabilities/apps.mdx
+++ b/packages/twenty-docs/l/pt/developers/extend/capabilities/apps.mdx
@@ -1,81 +1,88 @@
---
-title: Twenty Apps
-description: Build and manage Twenty customizations as code.
+title: Aplicativos Twenty
+description: Crie e gerencie personalizações do Twenty como código.
---
- Apps are currently in alpha testing. The feature is functional but still evolving.
+ Os aplicativos estão atualmente em testes alfa. O recurso é funcional, mas ainda está evoluindo.
-## What Are Apps?
+## O que são aplicativos?
-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.
+Os aplicativos permitem criar e gerenciar personalizações do Twenty **como código**. Em vez de configurar tudo pela UI, você define seu modelo de dados e funções serverless em código — tornando mais rápido criar, manter e distribuir para vários espaços de trabalho.
-**What you can do today:**
+**O que você pode fazer hoje:**
-* Define custom objects and fields as code (managed data model)
-* Build serverless functions with custom triggers
-* Deploy the same app across multiple workspaces
+* Defina objetos e campos personalizados como código (modelo de dados gerenciado)
+* Crie funções serverless com gatilhos personalizados
+* Implemente o mesmo aplicativo em vários espaços de trabalho
-**Coming soon:**
+**Em breve:**
-* Custom UI layouts and components
+* Layouts e componentes de UI personalizados
-## Prerequisites
+## Pré-requisitos
-* 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+ e Yarn 4
+* Um espaço de trabalho do Twenty e uma chave de API (crie uma em https://app.twenty.com/settings/api-webhooks)
-## Getting Started
+## Primeiros passos
-Create a new app using the official scaffolder, then authenticate and start developing:
+Crie um novo aplicativo usando o gerador oficial, depois autentique-se e comece a desenvolver:
```bash filename="Terminal"
-# Scaffold a new app
+# Criar a estrutura de um novo app
npx create-twenty-app@latest my-twenty-app
cd my-twenty-app
-# Authenticate using your API key (you'll be prompted)
-yarn auth
+# Se você não usa yarn@4
+corepack enable
+yarn install
-# Start dev mode: automatically syncs local changes to your workspace
-yarn dev
+# Autentique-se usando sua chave de API (você será solicitado)
+yarn auth:login
+
+# Iniciar modo de desenvolvimento: sincroniza automaticamente as alterações locais com seu workspace
+yarn app:dev
```
-From here you can:
+A partir daqui você pode:
```bash filename="Terminal"
-# Add a new entity to your application (guided)
-yarn create-entity
+# Adicionar uma nova entidade à sua aplicação (assistido)
+yarn app:create-entity
-# Generate a typed Twenty client and workspace entity types
-yarn generate
+# Gerar um cliente Twenty tipado e tipos de entidades do espaço de trabalho
+yarn app:generate
-# Run a one‑time sync (instead of watch mode)
-yarn sync
+# Executar uma sincronização única (em vez do modo de monitoramento)
+yarn app:sync
-# Watch your application's functions logs
-yarn logs
+# Acompanhar os logs das funções da sua aplicação
+yarn function:logs
-# Uninstall the application from the current workspace
-yarn uninstall
+# Executar uma função pelo nome
+yarn function:execute -n my-function -p '{"name": "test"}'
-# Display commands' help
-yarn help
+# Desinstalar a aplicação do espaço de trabalho atual
+yarn app:uninstall
+
+# Exibir a ajuda dos comandos
+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).
+Veja também: as páginas de referência da CLI para [create-twenty-app](https://www.npmjs.com/package/create-twenty-app) e [twenty-sdk CLI](https://www.npmjs.com/package/twenty-sdk).
-## Project structure (scaffolded)
+## Estrutura do projeto (com scaffold)
-When you run `npx create-twenty-app@latest my-twenty-app`, the scaffolder:
+Ao executar `npx create-twenty-app@latest my-twenty-app`, o gerador:
-* 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
+* Copia um aplicativo base mínimo para `my-twenty-app/`
+* Adiciona uma dependência local `twenty-sdk` e a configuração do Yarn 4
+* Cria arquivos de configuração e scripts conectados à CLI `twenty`
+* Gera uma configuração de aplicativo padrão e um papel padrão para as funções
-A freshly scaffolded app looks like this:
+Um aplicativo recém-criado pelo scaffold fica assim:
```text filename="my-twenty-app/"
my-twenty-app/
@@ -85,79 +92,144 @@ my-twenty-app/
.nvmrc
.yarnrc.yml
.yarn/
- releases/
- yarn-4.9.2.cjs
install-state.gz
eslint.config.mjs
tsconfig.json
README.md
src/
- application.config.ts
- role.config.ts
- // your entities, actions, and other app files
+ app/
+ application.config.ts # Required - main application configuration
+ default-function.role.ts # Default role for serverless functions
+ // your entities (*.object.ts, *.function.ts, *.role.ts)
+ utils/ # Optional - handler implementations & utilities
```
-At a high level:
+### Convenção sobre configuração
-* **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/**: 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.config.ts`: Default function role used by your serverless functions. See “Default function role” below.
- * Future entities, actions/functions, and any supporting code you add.
+Os aplicativos usam uma abordagem de **convenção sobre configuração** em que as entidades são detectadas pelo sufixo do arquivo. Isso permite organização flexível dentro da pasta `src/app/`:
-Later commands will add more files and folders:
+| Sufixo de arquivo | Tipo de entidade |
+| ----------------- | ------------------------------------ |
+| `*.object.ts` | Definições de objetos personalizados |
+| `*.function.ts` | Definições de funções serverless |
+| `*.role.ts` | Definições de papéis |
-* `yarn generate` will create a `generated/` folder (typed Twenty client + workspace types).
-* `yarn create-entity` will add entity definition files under `src/` for your custom objects.
+### Organizações de pastas suportadas
-## Authentication
+Você pode organizar suas entidades em qualquer um destes padrões:
-The first time you run `yarn auth`, you'll be prompted for:
+**Tradicional (por tipo):**
-* API URL (defaults to http://localhost:3000 or your current workspace profile)
-* API key
+```text
+src/app/
+├── application.config.ts
+├── objects/
+│ └── postCard.object.ts
+├── functions/
+│ └── createPostCard.function.ts
+└── roles/
+ └── admin.role.ts
+```
-Your credentials are stored per-user in `~/.twenty/config.json`. You can maintain multiple profiles and switch using `--workspace `.
+**Baseada em funcionalidades:**
-Examples:
+```text
+src/app/
+├── application.config.ts
+└── post-card/
+ ├── postCard.object.ts
+ ├── createPostCard.function.ts
+ └── postCardAdmin.role.ts
+```
+
+**Plana:**
+
+```text
+src/app/
+├── application.config.ts
+├── postCard.object.ts
+├── createPostCard.function.ts
+└── admin.role.ts
+```
+
+Em alto nível:
+
+* **package.json**: Declara o nome do app, versão, engines (Node 24+, Yarn 4), e adiciona `twenty-sdk` além de scripts como `dev`, `sync`, `generate`, `create-entity`, `logs`, `uninstall` e `auth` que delegam para a CLI `twenty` local.
+* **.gitignore**: Ignora artefatos comuns como `node_modules`, `.yarn`, `generated/` (cliente tipado), `dist/`, `build/`, pastas de cobertura, arquivos de log e arquivos `.env*`.
+* **yarn.lock**, **.yarnrc.yml**, **.yarn/**: Bloqueiam e configuram a ferramenta Yarn 4 usada pelo projeto.
+* **.nvmrc**: Fixa a versão do Node.js esperada pelo projeto.
+* **eslint.config.mjs** e **tsconfig.json**: Fornecem lint e configuração do TypeScript para os fontes TypeScript do seu aplicativo.
+* **README.md**: Um README curto na raiz do aplicativo com instruções básicas.
+* **src/app/**: O local principal onde você define seu aplicativo como código:
+ * `application.config.ts`: Configuração global do seu aplicativo (metadados e conexões de execução). Veja "Configuração do aplicativo" abaixo.
+ * `*.role.ts`: Definições de papéis usados pelas suas funções serverless. Veja "Papel de função padrão" abaixo.
+ * `*.object.ts`: Definições de objetos personalizados.
+ * `*.function.ts`: Definições de funções serverless.
+* **src/utils/**: Pasta opcional para implementações de handlers e utilitários.
+
+Comandos posteriores adicionarão mais arquivos e pastas:
+
+* `yarn app:generate` criará uma pasta `generated/` (cliente tipado do Twenty + tipos do workspace).
+* `yarn app:create-entity` adicionará arquivos de definição de entidades em `src/app/` para seus objetos, funções ou papéis personalizados.
+ l
+
+## Autenticação
+
+Na primeira vez que você executar `yarn auth:login`, será solicitado o seguinte:
+
+* URL da API (padrão: http://localhost:3000 ou o perfil do seu espaço de trabalho atual)
+* Chave de API
+
+Suas credenciais são armazenadas por usuário em `~/.twenty/config.json`. Você pode manter vários perfis e alternar entre eles.
+
+### Gerenciando espaços de trabalho
```bash filename="Terminal"
-# Login interactively (recommended)
-yarn auth
+# Fazer login interativamente (recomendado)
+yarn auth:login
-# Use a specific workspace profile
-yarn auth --workspace my-custom-workspace
+# Fazer login em um perfil de espaço de trabalho específico
+yarn auth:login --workspace my-custom-workspace
+
+# Listar todos os espaços de trabalho configurados
+yarn auth:list
+
+# Alterar o espaço de trabalho padrão (interativo)
+yarn auth:switch
+
+# Alternar para um espaço de trabalho específico
+yarn auth:switch production
+
+# Verificar o status atual da autenticação
+yarn auth:status
```
-## Use the SDK resources (types & config)
+Depois que você alternar os espaços de trabalho com `auth:switch`, todos os comandos subsequentes usarão esse espaço de trabalho por padrão. Você ainda pode substituí-lo temporariamente com `--workspace `.
-The twenty-sdk provides typed building blocks you use inside your app. Below are the key pieces you'll touch most often.
+## Use os recursos do SDK (tipos e configuração)
-### Defining objects
+O twenty-sdk fornece blocos de construção tipados e funções utilitárias que você usa dentro do seu aplicativo. A seguir estão as partes principais que você usará com mais frequência.
-Custom objects are regular TypeScript classes annotated with decorators from `twenty-sdk`. They live under `src/objects/` in your app and describe both schema and behavior for records in your workspace.
+### Funções utilitárias
-Here is an example `postCard` object from the Hello World app:
+O SDK fornece quatro funções utilitárias com validação integrada para definir as entidades do seu aplicativo:
+
+| Função | Finalidade |
+| ------------------ | ------------------------------------------------- |
+| `defineApp()` | Configura os metadados do aplicativo |
+| `defineObject()` | Define objetos personalizados com campos |
+| `defineFunction()` | Define funções serverless com handlers |
+| `defineRole()` | Configura permissões de papéis e acesso a objetos |
+
+Essas funções validam sua configuração em tempo de execução e oferecem melhor autocompletar na IDE e segurança de tipos.
+
+### Definindo objetos
+
+Objetos personalizados descrevem tanto o esquema quanto o comportamento de registros no seu espaço de trabalho. Use `defineObject()` para definir objetos com validação integrada:
```typescript
-import { type Note } from '../../generated';
-
-import {
- type AddressField,
- Field,
- FieldType,
- type FullNameField,
- Object,
- OnDeleteAction,
- Relation,
- RelationType,
- STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS,
-} from 'twenty-sdk';
+// src/app/postCard.object.ts
+import { defineObject, FieldType } from 'twenty-sdk';
enum PostCardStatus {
DRAFT = 'DRAFT',
@@ -166,176 +238,186 @@ enum PostCardStatus {
RETURNED = 'RETURNED',
}
-@Object({
+export default defineObject({
universalIdentifier: '54b589ca-eeed-4950-a176-358418b85c05',
nameSingular: 'postCard',
namePlural: 'postCards',
- labelSingular: 'Post card',
- labelPlural: 'Post cards',
- description: ' A post card object',
+ labelSingular: 'Post Card',
+ labelPlural: 'Post Cards',
+ description: 'A post card object',
icon: 'IconMail',
-})
-export class PostCard {
- @Field({
- universalIdentifier: '58a0a314-d7ea-4865-9850-7fb84e72f30b',
- type: FieldType.TEXT,
- label: 'Content',
- description: "Postcard's content",
- icon: 'IconAbc',
- })
- content: string;
-
- @Field({
- universalIdentifier: 'c6aa31f3-da76-4ac6-889f-475e226009ac',
- type: FieldType.FULL_NAME,
- label: 'Recipient name',
- icon: 'IconUser',
- })
- recipientName: FullNameField;
-
- @Field({
- universalIdentifier: '95045777-a0ad-49ec-98f9-22f9fc0c8266',
- type: FieldType.ADDRESS,
- label: 'Recipient address',
- icon: 'IconHome',
- })
- recipientAddress: AddressField;
-
- @Field({
- universalIdentifier: '87b675b8-dd8c-4448-b4ca-20e5a2234a1e',
- type: FieldType.SELECT,
- label: 'Status',
- icon: 'IconSend',
- defaultValue: `'${PostCardStatus.DRAFT}'`,
- options: [
- { value: PostCardStatus.DRAFT, label: 'Draft', position: 0, color: 'gray' },
- { value: PostCardStatus.SENT, label: 'Sent', position: 1, color: 'orange' },
- { value: PostCardStatus.DELIVERED, label: 'Delivered', position: 2, color: 'green' },
- { value: PostCardStatus.RETURNED, label: 'Returned', position: 3, color: 'orange' },
- ],
- })
- status: PostCardStatus;
-
- @Relation({
- universalIdentifier: 'c9e2b4f4-b9ad-4427-9b42-9971b785edfe',
- type: RelationType.ONE_TO_MANY,
- label: 'Notes',
- icon: 'IconComment',
- inverseSideTargetUniversalIdentifier: STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS.note,
- onDelete: OnDeleteAction.CASCADE,
- })
- notes: Note[];
-
- @Field({
- universalIdentifier: 'e06abe72-5b44-4e7f-93be-afc185a3c433',
- type: FieldType.DATE_TIME,
- label: 'Delivered at',
- icon: 'IconCheck',
- isNullable: true,
- defaultValue: null,
- })
- deliveredAt?: Date;
-}
+ fields: [
+ {
+ universalIdentifier: '58a0a314-d7ea-4865-9850-7fb84e72f30b',
+ name: 'content',
+ type: FieldType.TEXT,
+ label: 'Content',
+ description: "Postcard's content",
+ icon: 'IconAbc',
+ },
+ {
+ universalIdentifier: 'c6aa31f3-da76-4ac6-889f-475e226009ac',
+ name: 'recipientName',
+ type: FieldType.FULL_NAME,
+ label: 'Recipient name',
+ icon: 'IconUser',
+ },
+ {
+ universalIdentifier: '95045777-a0ad-49ec-98f9-22f9fc0c8266',
+ name: 'recipientAddress',
+ type: FieldType.ADDRESS,
+ label: 'Recipient address',
+ icon: 'IconHome',
+ },
+ {
+ universalIdentifier: '87b675b8-dd8c-4448-b4ca-20e5a2234a1e',
+ name: 'status',
+ type: FieldType.SELECT,
+ label: 'Status',
+ icon: 'IconSend',
+ defaultValue: `'${PostCardStatus.DRAFT}'`,
+ options: [
+ { value: PostCardStatus.DRAFT, label: 'Draft', position: 0, color: 'gray' },
+ { value: PostCardStatus.SENT, label: 'Sent', position: 1, color: 'orange' },
+ { value: PostCardStatus.DELIVERED, label: 'Delivered', position: 2, color: 'green' },
+ { value: PostCardStatus.RETURNED, label: 'Returned', position: 3, color: 'orange' },
+ ],
+ },
+ {
+ universalIdentifier: 'e06abe72-5b44-4e7f-93be-afc185a3c433',
+ name: 'deliveredAt',
+ type: FieldType.DATE_TIME,
+ label: 'Delivered at',
+ icon: 'IconCheck',
+ isNullable: true,
+ defaultValue: null,
+ },
+ ],
+});
```
-Key points:
+Pontos-chave:
-* The `@Object` decorator defines the object identity and labels used across the workspace; its `universalIdentifier` must be unique and stable across deployments.
-* Each `@Field` decorator defines a field on the object with a type, label, and its own stable `universalIdentifier`.
-* `@Relation` wires this object to other objects (standard or custom) and controls cascade behavior with `onDelete`.
-* You can scaffold new objects using `yarn create-entity`, which guides you through naming, fields, and relationships, then generates object files similar to the `postCard` example.
+* Use `defineObject()` para validação integrada e melhor suporte na IDE.
+* O `universalIdentifier` deve ser exclusivo e estável entre implantações.
+* Cada campo requer `name`, `type`, `label` e seu próprio `universalIdentifier` estável.
+* O array `fields` é opcional — você pode definir objetos sem campos personalizados.
+* Você pode criar novos objetos usando `yarn app:create-entity`, que orienta você sobre nomeação, campos e relacionamentos.
-### Application config (application.config.ts)
+
+ **Os campos base são criados automaticamente.** Quando você define um objeto personalizado, o Twenty adiciona automaticamente campos padrão como `name`, `createdAt`, `updatedAt`, `createdBy`, `position` e `deletedAt`. Você não precisa definir esses no seu array `fields` — adicione apenas seus campos personalizados.
+
-Every app has a single `application.config.ts` file that describes:
+
+ Você também pode definir objetos usando decoradores do TypeScript. Essa abordagem usa sintaxe baseada em classe com os decoradores `@Object`, `@Field` e `@Relation`:
-* **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.
+ ```typescript
+ import {
+ type AddressField,
+ Field,
+ FieldType,
+ type FullNameField,
+ Object,
+ OnDeleteAction,
+ Relation,
+ RelationType,
+ STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS,
+ } from 'twenty-sdk';
+ import { type Note } from '../../generated';
-When you scaffold a new app, you start with a minimal config:
+ @Object({
+ universalIdentifier: '54b589ca-eeed-4950-a176-358418b85c05',
+ nameSingular: 'postCard',
+ namePlural: 'postCards',
+ labelSingular: 'Post card',
+ labelPlural: 'Post cards',
+ description: 'A post card object',
+ icon: 'IconMail',
+ })
+ export class PostCard {
+ @Field({
+ universalIdentifier: '58a0a314-d7ea-4865-9850-7fb84e72f30b',
+ type: FieldType.TEXT,
+ label: 'Content',
+ description: "Postcard's content",
+ icon: 'IconAbc',
+ })
+ content: string;
+
+ @Relation({
+ universalIdentifier: 'c9e2b4f4-b9ad-4427-9b42-9971b785edfe',
+ type: RelationType.ONE_TO_MANY,
+ label: 'Notes',
+ icon: 'IconComment',
+ inverseSideTargetUniversalIdentifier: STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS.note,
+ onDelete: OnDeleteAction.CASCADE,
+ })
+ notes: Note[];
+ }
+ ```
+
+ Observação: A abordagem com decoradores requer `experimentalDecorators` na sua configuração do TypeScript.
+
+
+### Configuração do aplicativo (application.config.ts)
+
+Todo aplicativo tem um único arquivo `application.config.ts` que descreve:
+
+* **O que é o aplicativo**: identificadores, nome de exibição e descrição.
+* **Como suas funções são executadas**: qual papel usam para permissões.
+* **Variáveis (opcional)**: pares chave–valor expostos às suas funções como variáveis de ambiente.
+
+Use `defineApp()` para definir a configuração do seu aplicativo:
```typescript
-import { type ApplicationConfig } from 'twenty-sdk';
+// src/app/application.config.ts
+import { defineApp } from 'twenty-sdk';
+import { DEFAULT_FUNCTION_ROLE_UNIVERSAL_IDENTIFIER } from './default-function.role';
-const config: ApplicationConfig = {
- universalIdentifier: '',
+export default defineApp({
+ universalIdentifier: '4ec0391d-18d5-411c-b2f3-266ddc1c3ef7',
displayName: 'My Twenty App',
description: 'My first Twenty app',
- functionRoleUniversalIdentifier: '',
-};
-
-export default config;
-```
-
-You can gradually extend this file as your app grows. For example, you can add an icon and application-scoped variables:
-
-```typescript
-import { type ApplicationConfig } from 'twenty-sdk';
-
-const config: ApplicationConfig = {
- universalIdentifier: '',
- displayName: 'My App',
- description: 'What your app does',
- icon: 'IconWorld', // Choose an icon by name
+ icon: 'IconWorld',
applicationVariables: {
DEFAULT_RECIPIENT_NAME: {
- universalIdentifier: '',
- description: 'Default recipient used by functions',
+ universalIdentifier: '19e94e59-d4fe-4251-8981-b96d0a9f74de',
+ description: 'Default recipient name for postcards',
value: 'Jane Doe',
isSecret: false,
},
},
- functionRoleUniversalIdentifier: '',
-};
-
-export default config;
+ functionRoleUniversalIdentifier: DEFAULT_FUNCTION_ROLE_UNIVERSAL_IDENTIFIER,
+});
```
-Notes:
+Notas:
-* `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 `role.config.ts` (see below).
+* `universalIdentifier` são IDs determinísticos que você controla; gere-os uma vez e mantenha-os estáveis entre sincronizações.
+* `applicationVariables` tornam-se variáveis de ambiente para suas funções (por exemplo, `DEFAULT_RECIPIENT_NAME` fica disponível como `process.env.DEFAULT_RECIPIENT_NAME`).
+* `functionRoleUniversalIdentifier` deve corresponder ao papel que você define no seu arquivo `*.role.ts` (veja abaixo).
-#### Roles and permissions
+#### Papéis e permissões
-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.
+Os aplicativos podem definir papéis que encapsulam permissões sobre os objetos e ações do seu espaço de trabalho. O campo `functionRoleUniversalIdentifier` em `application.config.ts` designa o papel padrão usado pelas funções serverless do seu aplicativo.
-* 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.
+* A chave de API em tempo de execução, injetada como `TWENTY_API_KEY`, é derivada desse papel padrão de função.
+* O cliente tipado ficará restrito às permissões concedidas a esse papel.
+* Siga o princípio do menor privilégio: crie um papel dedicado com apenas as permissões de que suas funções precisam e, em seguida, faça referência ao seu identificador universal.
-##### Default function role (role.config.ts)
+##### Papel de função padrão (\*.role.ts)
-When you scaffold a new app, the CLI also creates `src/role.config.ts`. This file exports the default role your serverless functions will use at runtime:
+Ao criar um novo aplicativo com o scaffold, a CLI também cria um arquivo de papel padrão. Use `defineRole()` para definir papéis com validação integrada:
```typescript
-import { PermissionFlag, type RoleConfig } from 'twenty-sdk';
+// src/app/default-function.role.ts
+import { defineRole, PermissionFlag } from 'twenty-sdk';
-export const functionRole: RoleConfig = {
- universalIdentifier: '',
- label: 'My Twenty App default function role',
- description: 'My Twenty App default function role',
- canReadAllObjectRecords: true,
- canUpdateAllObjectRecords: true,
- canSoftDeleteAllObjectRecords: true,
- canDestroyAllObjectRecords: false,
-};
-```
+export const DEFAULT_FUNCTION_ROLE_UNIVERSAL_IDENTIFIER =
+ 'b648f87b-1d26-4961-b974-0908fd991061';
-The `universalIdentifier` of this role is automatically wired into `application.config.ts` as `functionRoleUniversalIdentifier`. In other words:
-
-* **role.config.ts** defines what the default function role can do.
-* **application.config.ts** points to that role so your functions inherit its permissions.
-
-As you move beyond the initial scaffold, you should tighten this role and make it explicit about what it can access. A more production-ready role might look closer to:
-
-```typescript
-import { PermissionFlag, type RoleConfig } from 'twenty-sdk';
-
-export const functionRole: RoleConfig = {
- universalIdentifier: '',
+export default defineRole({
+ universalIdentifier: DEFAULT_FUNCTION_ROLE_UNIVERSAL_IDENTIFIER,
label: 'Default function role',
description: 'Default role for function Twenty client',
canReadAllObjectRecords: false,
@@ -363,41 +445,41 @@ export const functionRole: RoleConfig = {
canUpdateFieldValue: false,
},
],
- permissionFlags: ['APPLICATIONS'],
-};
+ permissionFlags: [PermissionFlag.APPLICATIONS],
+});
```
-Notes:
+O `universalIdentifier` desse papel é então referenciado em `application.config.ts` como `functionRoleUniversalIdentifier`. Em outras palavras:
-* 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).
+* **\*.role.ts** define o que o papel de função padrão pode fazer.
+* **application.config.ts** aponta para esse papel para que suas funções herdem suas permissões.
-### Serverless function config and entrypoint
+Notas:
-Each function exports a main handler and a config describing its triggers. You can mix multiple trigger types.
+* Comece pelo papel gerado pelo scaffold e depois restrinja-o progressivamente seguindo o princípio do menor privilégio.
+* Substitua `objectPermissions` e `fieldPermissions` pelos objetos/campos de que suas funções precisam.
+* `permissionFlags` controlam o acesso a recursos em nível de plataforma. Mantenha-os mínimos; adicione apenas o que for necessário.
+* Veja um exemplo funcional no app 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).
+
+### Configuração de função serverless e ponto de entrada
+
+Cada arquivo de função usa `defineFunction()` para exportar uma configuração com um handler e gatilhos opcionais. Use o sufixo de arquivo `*.function.ts` para detecção automática.
```typescript
-// src/actions/create-new-post-card.ts
-import type {
- FunctionConfig,
- DatabaseEventPayload,
- ObjectRecordCreateEvent,
- CronPayload,
-} from 'twenty-sdk';
-import Twenty, { type Person } from '../generated';
+// src/app/createPostCard.function.ts
+import { defineFunction } from 'twenty-sdk';
+import type { DatabaseEventPayload, ObjectRecordCreateEvent, CronPayload, RoutePayload } from 'twenty-sdk';
+import Twenty, { type Person } from '../../generated';
-// main handler can accept parameters from route, cron, or database events
-export const main = async (
+const handler = async (
params:
- | { name?: string }
+ | RoutePayload
| DatabaseEventPayload>
| CronPayload,
) => {
const client = new Twenty(); // generated typed client
- const name = 'name' in params
- ? params.name ?? process.env.DEFAULT_RECIPIENT_NAME ?? 'Hello world'
+ const name = 'name' in params.queryStringParameters
+ ? params.queryStringParameters.name ?? process.env.DEFAULT_RECIPIENT_NAME ?? 'Hello world'
: 'Hello world';
const result = await client.mutation({
@@ -410,14 +492,15 @@ export const main = async (
return result;
};
-export const config: FunctionConfig = {
- universalIdentifier: '',
+export default defineFunction({
+ universalIdentifier: 'e56d363b-0bdc-4d8a-a393-6f0d1c75bdcf',
name: 'create-new-post-card',
timeoutSeconds: 2,
+ handler,
triggers: [
// Public HTTP route trigger '/s/post-card/create'
{
- universalIdentifier: '',
+ universalIdentifier: 'c9f84c8d-b26d-40d1-95dd-4f834ae5a2c6',
type: 'route',
path: '/post-card/create',
httpMethod: 'GET',
@@ -425,39 +508,137 @@ export const config: FunctionConfig = {
},
// Cron trigger (CRON pattern)
{
- universalIdentifier: '',
+ universalIdentifier: 'dd802808-0695-49e1-98c9-d5c9e2704ce2',
type: 'cron',
pattern: '0 0 1 1 *',
},
// Database event trigger
{
- universalIdentifier: '',
+ universalIdentifier: '203f1df3-4a82-4d06-a001-b8cf22a31156',
type: 'databaseEvent',
- eventName: 'person.created',
+ eventName: 'person.updated',
+ updatedFields: ['name'],
},
],
+});
+```
+
+Tipos de gatilho comuns:
+
+* **route**: Expõe sua função em um caminho e método HTTP **no endpoint `/s/`**:
+
+> por exemplo, `path: '/post-card/create',` -> chamar em `/s/post-card/create`
+
+* **cron**: Executa sua função em um agendamento usando uma expressão CRON.
+* **databaseEvent**: Executa em eventos do ciclo de vida de objetos do espaço de trabalho. Quando a operação do evento é `updated`, campos específicos a serem observados podem ser especificados no array `updatedFields`. Se deixar indefinido ou vazio, qualquer atualização acionará a função.
+
+> por exemplo, `person.updated`
+
+Notas:
+
+* O array `triggers` é opcional. Funções sem gatilhos podem ser usadas como funções utilitárias chamadas por outras funções.
+* Você pode misturar vários tipos de gatilho em uma única função.
+
+### Payload de gatilho de rota
+
+
+ **Alteração incompatível (v1.16, janeiro de 2026):** O formato do payload de gatilho de rota mudou. Antes da v1.16, os parâmetros de consulta, parâmetros de caminho e corpo eram enviados diretamente como o payload. A partir da v1.16, eles ficam aninhados dentro de um objeto estruturado `RoutePayload`.
+
+ **Antes da v1.16:**
+
+ ```typescript
+ const handler = async (params) => {
+ const { param1, param2 } = params; // Direct access
+ };
+ ```
+
+ **Depois da v1.16:**
+
+ ```typescript
+ const handler = async (event: RoutePayload) => {
+ const { param1, param2 } = event.body; // Access via .body
+ const { queryParam } = event.queryStringParameters;
+ const { id } = event.pathParameters;
+ };
+ ```
+
+ **Para migrar funções existentes:** Atualize seu handler para desestruturar de `event.body`, `event.queryStringParameters` ou `event.pathParameters` em vez de diretamente do objeto de parâmetros.
+
+
+Quando um gatilho de rota invoca sua função, ela recebe um objeto `RoutePayload` que segue o formato do AWS HTTP API v2. Importe o tipo de `twenty-sdk`:
+
+```typescript
+import { defineFunction, type RoutePayload } from 'twenty-sdk';
+
+const handler = async (event: RoutePayload) => {
+ // Access request data
+ const { headers, queryStringParameters, pathParameters, body } = event;
+
+ // HTTP method and path are available in requestContext
+ const { method, path } = event.requestContext.http;
+
+ return { message: 'Success' };
};
```
-Common trigger types:
+O tipo `RoutePayload` tem a seguinte estrutura:
-* route: Exposes your function on an HTTP path and method **under the `/s/` endpoint**:
+| Propriedade | Tipo | Descrição |
+| ---------------------------- | ------------------------------------- | ----------------------------------------------------------------------------------------------- |
+| `headers` | `Record` | Cabeçalhos HTTP (apenas aqueles listados em `forwardedRequestHeaders`) |
+| `queryStringParameters` | `Record` | Parâmetros de query string (valores múltiplos unidos por vírgulas) |
+| `pathParameters` | `Record` | Parâmetros de caminho extraídos do padrão de rota (por exemplo, `/users/:id` → `{ id: '123' }`) |
+| `corpo` | `object \| null` | Corpo da requisição analisado (JSON) |
+| `isBase64Encoded` | `booleano` | Se o corpo está codificado em base64 |
+| `requestContext.http.method` | `string` | Método HTTP (GET, POST, PUT, PATCH, DELETE) |
+| `requestContext.http.path` | `string` | Caminho bruto da requisição |
-> e.g. `path: '/post-card/create',` -> call on `/s/post-card/create`
+### Encaminhamento de cabeçalhos HTTP
-* cron: Runs your function on a schedule using a CRON expression.
-* databaseEvent: Runs on workspace object lifecycle events
+Por padrão, os cabeçalhos HTTP das requisições recebidas **não** são repassados para sua função serverless por motivos de segurança. Para acessar cabeçalhos específicos, liste-os explicitamente no array `forwardedRequestHeaders`:
-> e.g. `person.created`
+```typescript
+export default defineFunction({
+ universalIdentifier: 'e56d363b-0bdc-4d8a-a393-6f0d1c75bdcf',
+ name: 'webhook-handler',
+ handler,
+ triggers: [
+ {
+ universalIdentifier: 'c9f84c8d-b26d-40d1-95dd-4f834ae5a2c6',
+ type: 'route',
+ path: '/webhook',
+ httpMethod: 'POST',
+ isAuthRequired: false,
+ forwardedRequestHeaders: ['x-webhook-signature', 'content-type'],
+ },
+ ],
+});
+```
-You can create new functions in two ways:
+No seu handler, você pode então acessar esses cabeçalhos:
-* **Scaffolded**: Run `yarn create-entity --path ` and choose the option to add a new function. This generates a starter file under `` with a `main` handler and a `config` block similar to the example above.
-* **Manual**: Create a new file and export `main` and `config` yourself, following the same pattern.
+```typescript
+const handler = async (event: RoutePayload) => {
+ const signature = event.headers['x-webhook-signature'];
+ const contentType = event.headers['content-type'];
-### Generated typed client
+ // Validate webhook signature...
+ return { received: true };
+};
+```
-Run yarn generate to create a local typed client in generated/ based on your workspace schema. Use it in your functions:
+
+ Os nomes dos cabeçalhos são normalizados para minúsculas. Acesse-os usando chaves em minúsculas (por exemplo, `event.headers['content-type']`).
+
+
+Você pode criar novas funções de duas formas:
+
+* **Gerado automaticamente**: Execute `yarn app:create-entity` e escolha a opção para adicionar uma nova função. Isso gera um arquivo inicial com um handler e configuração.
+* **Manual**: Crie um novo arquivo `*.function.ts` e use `defineFunction()`, seguindo o mesmo padrão.
+
+### Cliente tipado gerado
+
+Execute yarn app:generate para criar um cliente tipado local em generated/ com base no esquema do seu workspace. Use-o em suas funções:
```typescript
import Twenty from './generated';
@@ -466,34 +647,34 @@ const client = new Twenty();
const { me } = await client.query({ me: { id: true, displayName: true } });
```
-The client is re-generated by `yarn generate`. Re-run after changing your objects and `yarn sync` or when onboarding to a new workspace.
+O cliente é regenerado pelo `yarn app:generate`. Execute novamente após alterar seus objetos e executar `yarn app:sync`, ou ao ingressar em um novo workspace.
-#### Runtime credentials in serverless functions
+#### Credenciais em tempo de execução em funções serverless
-When your function runs on Twenty, the platform injects credentials as environment variables before your code executes:
+Quando sua função é executada no Twenty, a plataforma injeta credenciais como variáveis de ambiente antes da execução do seu código:
-* `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 base da API do Twenty que seu aplicativo usa como alvo.
+* `TWENTY_API_KEY`: Chave de curta duração com escopo para o papel de função padrão do seu aplicativo.
-Notes:
+Notas:
-* 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.
+* Você não precisa passar a URL ou a chave de API para o cliente gerado. Ele lê `TWENTY_API_URL` e `TWENTY_API_KEY` de process.env em tempo de execução.
+* As permissões da chave de API são determinadas pelo papel referenciado no seu `application.config.ts` via `functionRoleUniversalIdentifier`. Este é o papel padrão usado pelas funções serverless do seu aplicativo.
+* Os aplicativos podem definir papéis para seguir o princípio do menor privilégio. Conceda apenas as permissões de que suas funções precisam e, em seguida, aponte `functionRoleUniversalIdentifier` para o identificador universal desse papel.
-### Hello World example
+### Exemplo 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):
+Explore um exemplo mínimo de ponta a ponta que demonstra objetos, funções e vários gatilhos [aqui](https://github.com/twentyhq/twenty/tree/main/packages/twenty-apps/hello-world):
-## Manual setup (without the scaffolder)
+## Configuração manual (sem o gerador)
-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:
+Embora recomendemos usar `create-twenty-app` para a melhor experiência inicial, você também pode configurar um projeto manualmente. Não instale a CLI globalmente. Em vez disso, adicione `twenty-sdk` como uma dependência local e conecte scripts no seu package.json:
```bash filename="Terminal"
yarn add -D twenty-sdk
```
-Then add scripts like these:
+Em seguida, adicione scripts como estes:
```json filename="package.json"
{
@@ -510,13 +691,13 @@ Then add scripts like these:
}
```
-Now you can run the same commands via Yarn, e.g. `yarn dev`, `yarn sync`, etc.
+Agora você pode executar os mesmos comandos via Yarn, por exemplo, `yarn app:dev`, `yarn app:sync`, etc.
-## Troubleshooting
+## Resolução de Problemas
-* Authentication errors: run `yarn auth` 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 generate` and then `yarn dev`.
-* Dev mode not syncing: ensure `yarn dev` is running and that changes are not ignored by your environment.
+* Erros de autenticação: execute `yarn auth:login` e certifique-se de que sua chave de API tenha as permissões necessárias.
+* Não é possível conectar ao servidor: verifique a URL da API e se o servidor do Twenty está acessível.
+* Tipos ou cliente ausentes/desatualizados: execute `yarn app:generate` e depois `yarn app:dev`.
+* Modo de desenvolvimento não sincronizando: certifique-se de que `yarn app:dev` esteja em execução e de que as alterações não estejam sendo ignoradas pelo seu ambiente.
-Discord Help Channel: https://discord.com/channels/1130383047699738754/1130386664812982322
+Canal de ajuda no Discord: https://discord.com/channels/1130383047699738754/1130386664812982322
diff --git a/packages/twenty-docs/l/pt/developers/extend/capabilities/webhooks.mdx b/packages/twenty-docs/l/pt/developers/extend/capabilities/webhooks.mdx
index 34625d0080..2f1a4e4773 100644
--- a/packages/twenty-docs/l/pt/developers/extend/capabilities/webhooks.mdx
+++ b/packages/twenty-docs/l/pt/developers/extend/capabilities/webhooks.mdx
@@ -1,44 +1,44 @@
---
title: Webhooks
-description: Receive real-time notifications when events occur in your CRM.
+description: Receba notificações em tempo real quando eventos ocorrerem no seu CRM.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-Webhooks push data to your systems in real-time when events occur in Twenty — no polling required. Use them to keep external systems in sync, trigger automations, or send alerts.
+Os webhooks enviam dados para seus sistemas em tempo real quando eventos ocorrem no Twenty — sem necessidade de polling. Use-os para manter sistemas externos em sincronia, acionar automações ou enviar alertas.
-## Create a Webhook
+## Criar Webhook
-1. Go to **Settings → APIs & Webhooks → Webhooks**
-2. Click **+ Create webhook**
-3. Enter your webhook URL (must be publicly accessible)
-4. Click **Save**
+1. Vá para **Configurações → APIs & Webhooks → Webhooks**
+2. Clique em **+ Criar webhook**
+3. Insira a URL do seu webhook (deve ser publicamente acessível)
+4. Clique em **Salvar**
-The webhook activates immediately and starts sending notifications.
+O webhook é ativado imediatamente e começa a enviar notificações.
-
+
-### Manage Webhooks
+### Gerenciar Webhooks
-**Edit**: Click the webhook → Update URL → **Save**
+**Editar**: Clique no webhook → Atualizar URL → **Salvar**
-**Delete**: Click the webhook → **Delete** → Confirm
+**Excluir**: Clique no webhook → **Excluir** → Confirmar
-## Events
+## Eventos
-Twenty sends webhooks for these event types:
+O Twenty envia webhooks para estes tipos de eventos:
-| Event | Example |
-| ------------------ | ---------------------------------------------------------- |
-| **Record Created** | `person.created`, `company.created`, `note.created` |
-| **Record Updated** | `person.updated`, `company.updated`, `opportunity.updated` |
-| **Record Deleted** | `person.deleted`, `company.deleted` |
+| Evento | Exemplo |
+| ----------------------- | ---------------------------------------------------------- |
+| **Registro criado** | `person.created`, `company.created`, `note.created` |
+| **Registro atualizado** | `person.updated`, `company.updated`, `opportunity.updated` |
+| **Registro excluído** | `person.deleted`, `company.deleted` |
-All event types are sent to your webhook URL. Event filtering may be added in future releases.
+Todos os tipos de evento são enviados para a URL do seu webhook. A filtragem de eventos pode ser adicionada em versões futuras.
-## Payload Format
+## Formato do payload
-Each webhook sends an HTTP POST with a JSON body:
+Cada webhook envia um HTTP POST com um corpo JSON:
```json
{
@@ -55,35 +55,35 @@ Each webhook sends an HTTP POST with a JSON body:
}
```
-| Field | Description |
-| ----------- | ------------------------------------------------ |
-| `event` | What happened (e.g., `person.created`) |
-| `data` | The full record that was created/updated/deleted |
-| `timestamp` | When the event occurred (UTC) |
+| Campo | Descrição |
+| ------------------- | ------------------------------------------------------ |
+| `evento` | O que aconteceu (por exemplo, `person.created`) |
+| `data` | O registro completo que foi criado/atualizado/excluído |
+| `registro de Tempo` | Quando o evento ocorreu (UTC) |
- Respond with a **2xx HTTP status** (200-299) to acknowledge receipt. Non-2xx responses are logged as delivery failures.
+ Responda com um **status HTTP 2xx** (200-299) para confirmar o recebimento. Respostas não 2xx são registradas como falhas de entrega.
-## Webhook Validation
+## Validação de Webhook
-Twenty signs each webhook request for security. Validate signatures to ensure requests are authentic.
+O Twenty assina cada solicitação de webhook por segurança. Valide as assinaturas para garantir que as solicitações sejam autênticas.
### Headers
-| Header | Description |
-| ---------------------------- | --------------------- |
-| `X-Twenty-Webhook-Signature` | HMAC SHA256 signature |
-| `X-Twenty-Webhook-Timestamp` | Request timestamp |
+| Cabeçalho | Descrição |
+| ---------------------------- | ------------------------ |
+| `X-Twenty-Webhook-Signature` | Assinatura HMAC SHA256 |
+| `X-Twenty-Webhook-Timestamp` | Timestamp da solicitação |
-### Validation Steps
+### Etapas de validação
-1. Get the timestamp from `X-Twenty-Webhook-Timestamp`
-2. Create the string: `{timestamp}:{JSON payload}`
-3. Compute HMAC SHA256 using your webhook secret
-4. Compare with `X-Twenty-Webhook-Signature`
+1. Obtenha o timestamp de `X-Twenty-Webhook-Timestamp`
+2. Crie a string: `{timestamp}:{JSON payload}`
+3. Calcule o HMAC SHA256 usando o segredo do seu webhook
+4. Compare com `X-Twenty-Webhook-Signature`
-### Example (Node.js)
+### Exemplo (Node.js)
```javascript
const crypto = require("crypto");
@@ -101,12 +101,12 @@ const expectedSignature = crypto
const isValid = expectedSignature === req.headers["x-twenty-webhook-signature"];
```
-## Webhooks vs Workflows
+## Webhooks vs Fluxos de trabalho
-| Method | Direction | Use Case |
-| ---------------------------- | --------- | ---------------------------------------------------------- |
-| **Webhooks** | OUT | Automatically notify external systems of any record change |
-| **Workflow + HTTP Request** | OUT | Send data out with custom logic (filters, transformations) |
-| **Workflow Webhook Trigger** | IN | Receive data into Twenty from external systems |
+| Método | Direção | Caso de uso |
+| ------------------------------------------- | ------- | -------------------------------------------------------------------------------- |
+| **Webhooks** | SAÍDA | Notificar automaticamente sistemas externos sobre qualquer alteração de registro |
+| **Fluxo de trabalho + Solicitação HTTP** | SAÍDA | Enviar dados para fora com lógica personalizada (filtros, transformações) |
+| **Gatilho de webhook de fluxo de trabalho** | ENTRADA | Receber dados no Twenty a partir de sistemas externos |
-For receiving external data, see [Set Up a Webhook Trigger](/l/pt/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger).
+Para receber dados externos, consulte [Configurar um gatilho de Webhook](/l/pt/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger).
diff --git a/packages/twenty-docs/l/pt/developers/extend/extend.mdx b/packages/twenty-docs/l/pt/developers/extend/extend.mdx
index 2957b66534..26440eee5b 100644
--- a/packages/twenty-docs/l/pt/developers/extend/extend.mdx
+++ b/packages/twenty-docs/l/pt/developers/extend/extend.mdx
@@ -1,34 +1,34 @@
---
-title: Extend
-description: Extend Twenty's functionality with APIs, webhooks, and custom apps.
+title: Estender
+description: Amplie a funcionalidade do Twenty com APIs, webhooks e aplicativos personalizados.
---
-
+
-## Overview
+## Visão geral
-Twenty is designed to be extensible. Use our APIs, webhooks, and app framework to integrate with your existing tools and build custom functionality.
+O Twenty foi projetado para ser extensível. Use nossas APIs, webhooks e o framework de aplicativos para integrar-se às suas ferramentas existentes e criar funcionalidades personalizadas.
-## What You Can Do
+## O que você pode fazer
-* **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**: Consulte e modifique seus dados de CRM programaticamente usando REST ou GraphQL
+* **Webhooks**: Receba notificações em tempo real quando eventos ocorrerem no Twenty
+* **Apps**: Crie aplicativos personalizados que expandem as capacidades do Twenty - Em breve!
-## Getting Started
+## Primeiros passos
-
- Connect to Twenty programmatically
+
+ Conecte-se ao Twenty programaticamente
- Get notified of events in real-time
+ Receba notificações de eventos em tempo real
-
- Build customizations as code (Alpha)
+
+ Crie personalizações como código (Alpha)
diff --git a/packages/twenty-docs/l/pt/developers/introduction.mdx b/packages/twenty-docs/l/pt/developers/introduction.mdx
index ed4c61c373..03f4656190 100644
--- a/packages/twenty-docs/l/pt/developers/introduction.mdx
+++ b/packages/twenty-docs/l/pt/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: Primeiros passos
+description: Bem-vindo à Documentação para Desenvolvedores da Twenty, seus recursos para estender, auto-hospedar e contribuir para o Twenty.
---
import { CardTitle } from "/snippets/card-title.mdx"
- Extend
- Build integrations with APIs, webhooks, and custom apps.
+ Estender
+ Crie integrações com APIs, webhooks e aplicativos personalizados.
- Self-Host
- Deploy and manage Twenty on your own infrastructure.
+ Auto-hospedar
+ Implante e gerencie o Twenty na sua própria infraestrutura.
- Contribute
- Join our open-source community and contribute to Twenty.
+ Contribuir
+ Junte-se à nossa comunidade de código aberto e contribua para o Twenty.
diff --git a/packages/twenty-docs/l/pt/developers/self-host/capabilities/cloud-providers.mdx b/packages/twenty-docs/l/pt/developers/self-host/capabilities/cloud-providers.mdx
index 809388612a..8476254c26 100644
--- a/packages/twenty-docs/l/pt/developers/self-host/capabilities/cloud-providers.mdx
+++ b/packages/twenty-docs/l/pt/developers/self-host/capabilities/cloud-providers.mdx
@@ -1,45 +1,45 @@
---
-title: Other methods
+title: Outros métodos
---
- This document is maintained by the community. It might contain issues.
+ Este documento é mantido pela comunidade. Pode conter problemas.
-## Kubernetes via Terraform and Manifests
+## Kubernetes via Terraform e Manifests
-Community-led documentation for Kubernetes deployment is available [here](https://github.com/twentyhq/twenty/tree/main/packages/twenty-docker/k8s)
+A documentação liderada pela comunidade para a implantação do Kubernetes está disponível [aqui](https://github.com/twentyhq/twenty/tree/main/packages/twenty-docker/k8s)
### Coolify
-Deploy Twenty on servers using Coolify. (official image on Coolify will be available soon)
+Implante o Twenty em servidores usando o Coolify. (imagem oficial no Coolify estará disponível em breve)
-[Coolify documentation](https://coolify.io/docs/get-started/introduction)
+[Documentação Coolify](https://coolify.io/docs/get-started/introduction)
### EasyPanel
-Deploy Twenty on EasyPanel with the community maintained template below.
+Implante o Twenty no EasyPanel com o modelo mantido pela comunidade abaixo.
-[Deploy on EasyPanel](https://easypanel.io/docs/templates/twenty)
+[Implante no EasyPanel](https://easypanel.io/docs/templates/twenty)
### Elest.io
-Deploy Twenty on servers with Elest.io using link below.
+Implante o Twenty em servidores com Elest.io usando o link abaixo.
-[Deploy on Elest.io](https://elest.io/open-source/twenty)
+[Implante no Elest.io](https://elest.io/open-source/twenty)
-### Twenty on Railway
+### Twenty no Railway
-Deploy Twenty on Railway with the community maintained template below.
+Implante o Twenty no Railway com o modelo mantido pela comunidade abaixo.
-[](https://railway.com/deploy/nAL3hA)
+[](https://railway.com/deploy/nAL3hA)
-### Twenty on Sealos
+### Twenty no Sealos
-Deploy Twenty on Sealos with the community maintained template below.
+Implante o Twenty no Sealos com o modelo mantido pela comunidade abaixo.
-[](https://sealos.io/products/app-store/twenty)
+[](https://sealos.io/products/app-store/twenty)
-## Others
+## Outros
-Please feel free to Open a PR to add more Cloud Provider options.
+Sinta-se à vontade para abrir um PR para adicionar mais opções de Provedor de Nuvem.
diff --git a/packages/twenty-docs/l/pt/developers/self-host/capabilities/docker-compose.mdx b/packages/twenty-docs/l/pt/developers/self-host/capabilities/docker-compose.mdx
index 0159c1c4e0..7acc790318 100644
--- a/packages/twenty-docs/l/pt/developers/self-host/capabilities/docker-compose.mdx
+++ b/packages/twenty-docs/l/pt/developers/self-host/capabilities/docker-compose.mdx
@@ -1,253 +1,253 @@
---
-title: 1-Click w/ Docker Compose
+title: 1-Clique c/ Docker Compose
---
- Docker containers are for production hosting or self-hosting, for the contribution please check the [Local Setup](/l/pt/developers/contribute/capabilities/local-setup).
+ Contêineres Docker são para hospedagem de produção ou auto-hospedagem, para contribuições, por favor, verifique o [Setup Local](/l/pt/developers/contribute/capabilities/local-setup).
-## Overview
+## Visão geral
-This guide provides step-by-step instructions to install and configure the Twenty application using Docker Compose. The aim is to make the process straightforward and prevent common pitfalls that could break your setup.
+Este guia fornece instruções passo a passo para instalar e configurar o aplicativo Twenty usando Docker Compose. O objetivo é tornar o processo simples e evitar armadilhas comuns que possam quebrar sua configuração.
-**Important:** Only modify settings explicitly mentioned in this guide. Altering other configurations may lead to issues.
+**Importante:** Modifique apenas as configurações explicitamente mencionadas neste guia. Alterar outras configurações pode levar a problemas.
-See docs [Setup Environment Variables](/l/pt/developers/self-host/capabilities/setup) for advanced configuration. All environment variables must be declared in the docker-compose.yml file at the server and / or worker level depending on the variable.
+Veja a documentação [Configurar Variáveis de Ambiente](/l/pt/developers/self-host/capabilities/setup) para configuração avançada. Todas as variáveis de ambiente devem ser declaradas no arquivo docker-compose.yml no nível do servidor e/ou trabalhador, dependendo da variável.
-## System Requirements
+## Requisitos do Sistema
-* RAM: Ensure your environment has at least 2GB of RAM. Insufficient memory can cause processes to crash.
-* Docker & Docker Compose: Make sure both are installed and up-to-date.
+* RAM: Certifique-se de que seu ambiente tenha pelo menos 2GB de RAM. Memória insuficiente pode causar falhas nos processos.
+* Docker & Docker Compose: Certifique-se de que ambos estão instalados e atualizados.
-## Option 1: One-line script
+## Opção 1: Script de uma linha
-Install the latest stable version of Twenty with a single command:
+Instale a versão estável mais recente do Twenty com um único comando:
```bash
bash <(curl -sL https://raw.githubusercontent.com/twentyhq/twenty/main/packages/twenty-docker/scripts/install.sh)
```
-To install a specific version or branch:
+Para instalar uma versão ou branch específica:
```bash
VERSION=vx.y.z BRANCH=branch-name bash <(curl -sL https://raw.githubusercontent.com/twentyhq/twenty/main/packages/twenty-docker/scripts/install.sh)
```
-* Replace x.y.z with the desired version number.
-* Replace branch-name with the name of the branch you want to install.
+* Substitua x.y.z pelo número da versão desejada.
+* Substitua branch-name pelo nome da branch que você deseja instalar.
-## Option 2: Manual steps
+## Opção 2: Etapas manuais
-Follow these steps for a manual setup.
+Siga estas etapas para uma configuração manual.
-### Step 1: Set Up the Environment File
+### Etapa 1: Configure o arquivo de ambiente
-1. **Create the .env File**
+1. **Crie o arquivo .env**
- Copy the example environment file to a new .env file in your working directory:
+ Copie o exemplo de arquivo de ambiente para um novo arquivo .env no seu diretório de trabalho:
```bash
curl -o .env https://raw.githubusercontent.com/twentyhq/twenty/refs/heads/main/packages/twenty-docker/.env.example
```
-2. **Generate Secret Tokens**
+2. **Gere Tokens Secretos**
- Run the following command to generate a unique random string:
+ Execute o seguinte comando para gerar uma string aleatória única:
```bash
openssl rand -base64 32
```
- **Important:** Keep this value secret / do not share it.
+ **Importante:** Mantenha este valor em segredo / não o compartilhe.
-3. **Update the `.env`**
+3. **Atualize o `.env`**
- Replace the placeholder value in your .env file with the generated token:
+ Substitua o valor do espaço reservado no seu arquivo .env pelo token gerado:
```ini
APP_SECRET=first_random_string
```
-4. **Set the Postgres Password**
+4. **Defina a Senha do Postgres**
- Update the `PG_DATABASE_PASSWORD` value in the .env file with a strong password without special characters.
+ Atualize o valor `PG_DATABASE_PASSWORD` no arquivo .env com uma senha forte sem caracteres especiais.
```ini
PG_DATABASE_PASSWORD=my_strong_password
```
-### Step 2: Obtain the Docker Compose File
+### Etapa 2: Obtenha o arquivo Docker Compose
-Download the `docker-compose.yml` file to your working directory:
+Baixe o arquivo `docker-compose.yml` para o seu diretório de trabalho:
```bash
curl -o docker-compose.yml https://raw.githubusercontent.com/twentyhq/twenty/refs/heads/main/packages/twenty-docker/docker-compose.yml
```
-### Step 3: Launch the Application
+### Etapa 3: Inicie o Aplicativo
-Start the Docker containers:
+Inicie os contêineres Docker:
```bash
docker compose up -d
```
-### Step 4: Access the Application
+### Etapa 4: Acesse o Aplicativo
-If you host twentyCRM on your own computer, open your browser and navigate to [http://localhost:3000](http://localhost:3000).
+Se você hospedar o twentyCRM no seu próprio computador, abra o navegador e acesse [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
+Se você hospedar em um servidor, verifique se o servidor está em execução e se está tudo ok com
```bash
curl http://localhost:3000
```
-## Configuration
+## Configuração
-### Expose Twenty to External Access
+### Expor o Twenty para Acesso Externo
-By default, Twenty runs on `localhost` at port `3000`. To access it via an external domain or IP address, you need to configure the `SERVER_URL` in your `.env` file.
+Por padrão, o Twenty é executado em `localhost` na porta `3000`. Para acessá-lo via um domínio externo ou endereço IP, você precisa configurar o `SERVER_URL` no seu arquivo `.env`.
-#### Understanding `SERVER_URL`
+#### Compreendendo `SERVER_URL`
-* **Protocol:** Use `http` or `https` depending on your setup.
- * Use `http` if you haven't set up SSL.
- * Use `https` if you have SSL configured.
-* **Domain/IP:** This is the domain name or IP address where your application is accessible.
-* **Port:** Include the port number if you're not using the default ports (`80` for `http`, `443` for `https`).
+* **Protocolo:** Use `http` ou `https` dependendo da sua configuração.
+ * Use `http` se você não configurou SSL.
+ * Use `https` se você tiver SSL configurado.
+* **Domínio/IP:** Este é o nome de domínio ou endereço IP onde seu aplicativo está acessível.
+* **Porta:** Inclua o número da porta se você não estiver usando as portas padrão (`80` para `http`, `443` para `https`).
-### SSL Requirements
+### Requisitos de SSL
-SSL (HTTPS) is required for certain browser features to work properly. While these features might work during local development (as browsers treat localhost differently), a proper SSL setup is needed when hosting Twenty on a regular domain.
+SSL (HTTPS) é necessário para que certos recursos do navegador funcionem corretamente. Embora esses recursos possam funcionar durante o desenvolvimento local (já que os navegadores tratam o localhost de modo diferente), é necessária uma configuração adequada de SSL ao hospedar o Twenty em um domínio normal.
-For example, the clipboard API might require a secure context - some features like copy buttons throughout the application might not work without HTTPS enabled.
+Por exemplo, a API da área de transferência pode exigir um contexto seguro - alguns recursos, como botões de cópia através do aplicativo, podem não funcionar sem HTTPS ativado.
-We strongly recommend setting up Twenty behind a reverse proxy with SSL termination for optimal security and functionality.
+Recomendamos fortemente configurar o Twenty atrás de um proxy reverso com terminação SSL para segurança e funcionalidade ótimas.
-#### Configuring `SERVER_URL`
+#### Configurando `SERVER_URL`
-1. **Determine Your Access URL**
- * **Without Reverse Proxy (Direct Access):**
+1. **Determine sua URL de Acesso**
+ * **Sem Proxy Reverso (Acesso Direto):**
- If you're accessing the application directly without a reverse proxy:
+ Se você estiver acessando o aplicativo diretamente sem um proxy reverso:
```ini
SERVER_URL=http://your-domain-or-ip:3000
```
- * **With Reverse Proxy (Standard Ports):**
+ * **Com Proxy Reverso (Portas Padrão):**
- If you're using a reverse proxy like Nginx or Traefik and have SSL configured:
+ Se você estiver usando um proxy reverso como Nginx ou Traefik e tiver SSL configurado:
```ini
SERVER_URL=https://your-domain-or-ip
```
- * **With Reverse Proxy (Custom Ports):**
+ * **Com Proxy Reverso (Portas Customizadas):**
- If you're using non-standard ports:
+ Se você estiver usando portas não-padrão:
```ini
SERVER_URL=https://your-domain-or-ip:custom-port
```
-2. **Update the `.env` File**
+2. **Atualize o arquivo `.env`**
- Open your `.env` file and update the `SERVER_URL`:
+ Abra seu arquivo `.env` e atualize o `SERVER_URL`:
```ini
SERVER_URL=http(s)://your-domain-or-ip:your-port
```
- **Examples:**
+ **Exemplos:**
- * Direct access without SSL:
+ * Acesso direto sem SSL:
```ini
SERVER_URL=http://123.45.67.89:3000
```
- * Access via domain with SSL:
+ * Acesso via domínio com SSL:
```ini
SERVER_URL=https://mytwentyapp.com
```
-3. **Restart the Application**
+3. **Reinicie o Aplicativo**
- For changes to take effect, restart the Docker containers:
+ Para que as alterações entrem em vigor, reinicie os contêineres Docker:
```bash
docker compose down
docker compose up -d
```
-#### Considerations
+#### Considerações
-* **Reverse Proxy Configuration:**
+* **Configuração de Proxy Reverso:**
- Ensure your reverse proxy forwards requests to the correct internal port (`3000` by default). Configure SSL termination and any necessary headers.
+ Certifique-se de que seu proxy reverso encaminha as solicitações para a porta interna correta (`3000` por padrão). Configure a terminação SSL e quaisquer cabeçalhos necessários.
-* **Firewall Settings:**
+* **Configurações de Firewall:**
- Open necessary ports in your firewall to allow external access.
+ Abra as portas necessárias no seu firewall para permitir acesso externo.
-* **Consistency:**
+* **Consistência:**
- The `SERVER_URL` must match how users access your application in their browsers.
+ A `SERVER_URL` deve corresponder à forma como os usuários acessam seu aplicativo nos navegadores.
-#### Persistence
+#### Persistência
-* **Data Volumes:**
+* **Volumes de Dados:**
- The Docker Compose configuration uses volumes to persist data for the database and server storage.
+ A configuração do Docker Compose usa volumes para persistir dados para o banco de dados e armazenamento do servidor.
-* **Stateless Environments:**
+* **Ambientes Sem Estado:**
- If deploying to a stateless environment (e.g., certain cloud services), configure external storage to persist data.
+ Se estiver implantando em um ambiente sem estado (por exemplo, certos serviços de nuvem), configure armazenamento externo para persistir dados.
-## Backup and Restore
+## Backup e restauração
-Regular backups protect your CRM data from loss.
+Backups regulares protegem os dados do seu CRM contra perda.
-### Create a Database Backup
+### Crie um backup do banco de dados
```bash
docker exec twenty-postgres pg_dump -U postgres twenty > backup_$(date +%Y%m%d).sql
```
-### Automate Daily Backups
+### Automatize backups diários
-Add to your crontab (`crontab -e`):
+Adicione ao seu 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
+### Restaurar a partir de um backup
-1. Stop the application:
+1. Pare o aplicativo:
```bash
docker compose stop twenty-server twenty-front
```
-2. Restore the database:
+2. Restaure o banco de dados:
```bash
docker exec -i twenty-postgres psql -U postgres twenty < backup_20240115.sql
```
-3. Restart services:
+3. Reinicie os serviços:
```bash
docker compose up -d
```
-### Backup Best Practices
+### Melhores práticas de backup
-* **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
+* **Teste as restaurações regularmente** — verifique se os backups realmente funcionam
+* **Armazene os backups fora das instalações** — use armazenamento em nuvem (S3, GCS, etc.)
+* **Criptografe dados confidenciais** — proteja os backups com criptografia
+* **Mantenha várias cópias** — guarde backups diários, semanais e mensais
-## Troubleshooting
+## Resolução de Problemas
-If you encounter any problem, check [Troubleshooting](/l/pt/developers/self-host/capabilities/troubleshooting) for solutions.
+Se encontrar algum problema, verifique [Resolução de Problemas](/l/pt/developers/self-host/capabilities/troubleshooting) para soluções.
diff --git a/packages/twenty-docs/l/pt/developers/self-host/capabilities/setup.mdx b/packages/twenty-docs/l/pt/developers/self-host/capabilities/setup.mdx
index d6dcc3c122..582ca2af92 100644
--- a/packages/twenty-docs/l/pt/developers/self-host/capabilities/setup.mdx
+++ b/packages/twenty-docs/l/pt/developers/self-host/capabilities/setup.mdx
@@ -1,146 +1,146 @@
---
-title: Setup
+title: Configuração
---
-# Configuration Management
+# Gestão de Configuração
- **First time installing?** Follow the [Docker Compose installation guide](/l/pt/developers/self-host/capabilities/docker-compose) to get Twenty running, then return here for configuration.
+ **Primeira vez instalando?** Siga o [guia de instalação do Docker Compose](/l/pt/developers/self-host/capabilities/docker-compose) para iniciar o Twenty, depois retorne aqui para configurar.
-Twenty offers **two configuration modes** to suit different deployment needs:
+Twenty oferece **dois modos de configuração** para atender diferentes necessidades de implantação:
-**Admin panel access:** Only users with admin privileges (`canAccessFullAdminPanel: true`) can access the configuration interface.
+**Acesso ao painel de administração:** Apenas usuários com privilégios de administrador (`canAccessFullAdminPanel: true`) podem acessar a interface de configuração.
-## 1. Admin Panel Configuration (Default)
+## 1. Configuração do Painel Administrativo (Padrão)
```bash
IS_CONFIG_VARIABLES_IN_DB_ENABLED=true # default
```
-**Most configuration happens through the UI** after installation:
+**A maior parte da configuração acontece através da interface do usuário** após a instalação:
-1. Access your Twenty instance (usually `http://localhost:3000`)
-2. Go to **Settings / Admin Panel / Configuration Variables**
-3. Configure integrations, email, storage, and more
-4. Changes take effect immediately (within 15 seconds for multi-container deployments)
+1. Acesse sua instância do Twenty (geralmente `http://localhost:3000`)
+2. Vá para **Configurações / Painel de Administração / Variáveis de Configuração**
+3. Configure integrações, email, armazenamento e mais
+4. As alterações entram em vigor imediatamente (em até 15 segundos para implantações em múltiplos containers)
- **Multi-Container Deployments:** When using database configuration (`IS_CONFIG_VARIABLES_IN_DB_ENABLED=true`), both server and worker containers read from the same database. Admin panel changes affect both automatically, eliminating the need to duplicate environment variables between containers (except for infrastructure variables).
+ **Implantações em Múltiplos Containers:** Ao usar a configuração do banco de dados (`IS_CONFIG_VARIABLES_IN_DB_ENABLED=true`), tanto servidores quanto containers de trabalho leem do mesmo banco de dados. Alterações no painel de administração afetam ambos automaticamente, eliminando a necessidade de duplicar variáveis de ambiente entre os containers (exceto para variáveis de infraestrutura).
-**What you can configure through the admin panel:**
+**O que você pode configurar através do painel de administração:**
-* **Authentication** - Google/Microsoft OAuth, password settings
-* **Email** - SMTP settings, templates, verification
-* **Storage** - S3 configuration, local storage paths
-* **Integrations** - Gmail, Google Calendar, Microsoft services
-* **Workflow & Rate Limiting** - Execution limits, API throttling
-* **And much more...**
+* **Autenticação** - OAuth do Google/Microsoft, configurações de senha
+* **Email** - configurações SMTP, modelos, verificação
+* **Armazenamento** - configuração S3, caminhos de armazenamento local
+* **Integrações** - Gmail, Google Calendar, serviços Microsoft
+* **Fluxo de trabalho e limitação de taxa** - limites de execução, limitação de taxa da API
+* **E muito mais...**
-
+
- Each variable is documented with descriptions in your admin panel at **Settings → Admin Panel → Configuration Variables**.
- Some infrastructure settings like database connections (`PG_DATABASE_URL`), server URLs (`SERVER_URL`), and app secrets (`APP_SECRET`) can only be configured via `.env` file.
+ Cada variável é documentada com descrições no seu painel de administração em **Configurações → Painel de Administração → Variáveis de Configuração**.
+ Algumas configurações de infraestrutura como conexões de banco de dados (`PG_DATABASE_URL`), URLs de servidor (`SERVER_URL`) e segredos do app (`APP_SECRET`) só podem ser configuradas via arquivo `.env`.
- [Complete technical reference →](https://github.com/twentyhq/twenty/blob/main/packages/twenty-server/src/engine/core-modules/twenty-config/config-variables.ts)
+ [Referência técnica completa →](https://github.com/twentyhq/twenty/blob/main/packages/twenty-server/src/engine/core-modules/twenty-config/config-variables.ts)
-## 2. Environment-Only Configuration
+## 2. Configuração Somente por Ambiente
```bash
IS_CONFIG_VARIABLES_IN_DB_ENABLED=false
```
-**All configuration managed through `.env` files:**
+**Toda a configuração gerenciada através de arquivos `.env`:**
-1. Set `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false` in your `.env` file
-2. Add all configuration variables to your `.env` file
-3. Restart containers for changes to take effect
-4. Admin panel will show current values but cannot modify them
+1. Defina `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false` no seu arquivo `.env`
+2. Adicione todas as variáveis de configuração ao seu arquivo `.env`
+3. Reinicie os containers para que as alterações entrem em vigor
+4. O painel de administração mostrará valores atuais, mas não poderá modificá-los
-## Multi-Workspace Mode
+## Modo de vários espaços de trabalho
-By default, Twenty runs in **single-workspace mode** — ideal for most self-hosted deployments where you need one CRM instance for your organization.
+Por padrão, o Twenty é executado no **modo de espaço de trabalho único** — ideal para a maioria das implantações auto-hospedadas em que você precisa de uma instância de CRM para sua organização.
-### Single-Workspace Mode (Default)
+### Modo de espaço de trabalho único (padrão)
```bash
IS_MULTIWORKSPACE_ENABLED=false # default
```
-* One workspace per Twenty instance
-* First user automatically becomes admin with full privileges (`canImpersonate` and `canAccessFullAdminPanel`)
-* New signups are disabled after the first workspace is created
-* Simple URL structure: `https://your-domain.com`
+* Um espaço de trabalho por instância do Twenty
+* O primeiro usuário torna-se automaticamente administrador com privilégios completos (`canImpersonate` e `canAccessFullAdminPanel`)
+* Novos cadastros são desativados após a criação do primeiro espaço de trabalho
+* Estrutura de URL simples: `https://your-domain.com`
-### Enabling Multi-Workspace Mode
+### Ativando o modo de vários espaços de trabalho
```bash
IS_MULTIWORKSPACE_ENABLED=true
DEFAULT_SUBDOMAIN=app # default value
```
-Enable multi-workspace mode for SaaS-like deployments where multiple independent teams need their own workspaces on the same Twenty instance.
+Ative o modo de vários espaços de trabalho para implantações ao estilo SaaS em que várias equipes independentes precisam de seus próprios espaços de trabalho na mesma instância do Twenty.
-**Key differences from single-workspace mode:**
+**Principais diferenças em relação ao modo de espaço de trabalho único:**
-* Multiple workspaces can be created on the same instance
-* Each workspace gets its own subdomain (e.g., `sales.your-domain.com`, `marketing.your-domain.com`)
-* Users sign up and log in at `{DEFAULT_SUBDOMAIN}.your-domain.com` (e.g., `app.your-domain.com`)
-* No automatic admin privileges — first user in each workspace is a regular user
-* Workspace-specific settings like subdomain and custom domain become available in workspace settings
+* Vários espaços de trabalho podem ser criados na mesma instância
+* Cada espaço de trabalho recebe seu próprio subdomínio (por exemplo, `sales.your-domain.com`, `marketing.your-domain.com`)
+* Os usuários se cadastram e fazem login em `{DEFAULT_SUBDOMAIN}.your-domain.com` (por exemplo, `app.your-domain.com`)
+* Sem privilégios administrativos automáticos — o primeiro usuário de cada espaço de trabalho é um usuário comum
+* Configurações específicas do espaço de trabalho, como subdomínio e domínio personalizado, ficam disponíveis nas configurações do espaço de trabalho
- **Environment-only setting:** `IS_MULTIWORKSPACE_ENABLED` can only be configured via `.env` file and requires a restart. It cannot be changed through the admin panel.
+ **Configuração apenas por ambiente:** `IS_MULTIWORKSPACE_ENABLED` só pode ser configurado via arquivo `.env` e requer reinicialização. Isso não pode ser alterado pelo painel de administração.
-### DNS Configuration for Multi-Workspace
+### Configuração de DNS para vários espaços de trabalho
-When using multi-workspace mode, configure your DNS with a wildcard record to allow dynamic subdomain creation:
+Ao usar o modo de vários espaços de trabalho, configure seu DNS com um registro curinga para permitir a criação dinâmica de subdomínios:
```
*.your-domain.com -> your-server-ip
```
-This enables automatic subdomain routing for new workspaces without manual DNS configuration.
+Isso permite o roteamento automático de subdomínios para novos espaços de trabalho sem configuração manual de DNS.
-### Restricting Workspace Creation
+### Restringindo a criação de espaços de trabalho
-In multi-workspace mode, you may want to limit who can create new workspaces:
+No modo de vários espaços de trabalho, você pode querer limitar quem pode criar novos espaços de trabalho:
```bash
IS_WORKSPACE_CREATION_LIMITED_TO_SERVER_ADMINS=true
```
-When enabled, only users with `canAccessFullAdminPanel` can create additional workspaces. Users can still create their first workspace during initial signup.
+Quando ativado, apenas usuários com `canAccessFullAdminPanel` podem criar espaços de trabalho adicionais. Os usuários ainda podem criar seu primeiro espaço de trabalho durante o cadastro inicial.
-## Gmail & Google Calendar Integration
+## Integração com Gmail e Google Calendar
-### Create Google Cloud Project
+### Criar Projeto no Google Cloud
-1. Go to [Google Cloud Console](https://console.cloud.google.com/)
-2. Create a new project or select existing one
-3. Enable these APIs:
+1. Vá para [Google Cloud Console](https://console.cloud.google.com/)
+2. Crie um novo projeto ou selecione um já existente
+3. Ative essas APIs:
-* [Gmail API](https://console.cloud.google.com/apis/library/gmail.googleapis.com)
-* [Google Calendar API](https://console.cloud.google.com/apis/library/calendar-json.googleapis.com)
-* [People API](https://console.cloud.google.com/apis/library/people.googleapis.com)
+* [API do Gmail](https://console.cloud.google.com/apis/library/gmail.googleapis.com)
+* [API do Google Calendar](https://console.cloud.google.com/apis/library/calendar-json.googleapis.com)
+* [API de Pessoas](https://console.cloud.google.com/apis/library/people.googleapis.com)
### Configure OAuth
-1. Go to [Credentials](https://console.cloud.google.com/apis/credentials)
-2. Create OAuth 2.0 Client ID
-3. Add these redirect URIs:
- * `https://{your-domain}/auth/google/redirect` (for SSO)
- * `https://{your-domain}/auth/google-apis/get-access-token` (for integrations)
+1. Vá para [Credenciais](https://console.cloud.google.com/apis/credentials)
+2. Crie um ID do Cliente OAuth 2.0
+3. Adicione estes URIs de redirecionamento:
+ * `https://{your-domain}/auth/google/redirect` (para SSO)
+ * `https://{your-domain}/auth/google-apis/get-access-token` (para integrações)
-### Configure in Twenty
+### Configurar no Twenty
-1. Go to **Settings → Admin Panel → Configuration Variables**
-2. Find the **Google Auth** section
-3. Set these variables:
+1. Vá para **Configurações → Painel de Administração → Variáveis de Configuração**
+2. Encontre a seção **Google Auth**
+3. Defina estas variáveis:
* `MESSAGING_PROVIDER_GMAIL_ENABLED=true`
* `CALENDAR_PROVIDER_GOOGLE_ENABLED=true`
* `AUTH_GOOGLE_CLIENT_ID={client-id}`
@@ -149,35 +149,35 @@ When enabled, only users with `canAccessFullAdminPanel` can create additional wo
* `AUTH_GOOGLE_APIS_CALLBACK_URL=https://{your-domain}/auth/google-apis/get-access-token`
- **Environment-only mode:** If you set `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false`, add these variables to your `.env` file instead.
+ **Modo somente ambiente:** Se você definir `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false`, adicione estas variáveis ao seu arquivo `.env`.
-**Required scopes** (automatically configured):
-[See relevant source code](https://github.com/twentyhq/twenty/blob/main/packages/twenty-server/src/engine/core-modules/auth/utils/get-google-apis-oauth-scopes.ts#L4-L10)
+**Escopos necessários** (configurados automaticamente):
+[Veja o código relevante](https://github.com/twentyhq/twenty/blob/main/packages/twenty-server/src/engine/core-modules/auth/utils/get-google-apis-oauth-scopes.ts#L4-L10)
* `https://www.googleapis.com/auth/calendar.events`
* `https://www.googleapis.com/auth/gmail.readonly`
* `https://www.googleapis.com/auth/profile.emails.read`
-### If your app is in test mode
+### Se seu aplicativo estiver em modo de teste
-If your app is in test mode, you will need to add test users to your project.
+Se seu aplicativo estiver em modo de teste, será necessário adicionar usuários de teste ao seu projeto.
-Under [OAuth consent screen](https://console.cloud.google.com/apis/credentials/consent), add your test users to the "Test users" section.
+Na [tela de consentimento OAuth](https://console.cloud.google.com/apis/credentials/consent), adicione seus usuários de teste à seção "Usuários de teste".
-## Microsoft 365 Integration
+## Integração com Microsoft 365
- Users must have a [Microsoft 365 Licence](https://admin.microsoft.com/Adminportal/Home) to be able to use the Calendar and Messaging API. They will not be able to sync their account on Twenty without one.
+ Os usuários devem ter uma [Licença do Microsoft 365](https://admin.microsoft.com/Adminportal/Home) para poder usar as APIs de Calendário e Mensagem. Eles não poderão sincronizar sua conta no Twenty sem uma.
-### Create a project in Microsoft Azure
+### Criar um projeto no Microsoft Azure
-You will need to create a project in [Microsoft Azure](https://portal.azure.com/#view/Microsoft_AAD_IAM/AppGalleryBladeV2) and get the credentials.
+Você precisará criar um projeto no [Microsoft Azure](https://portal.azure.com/#view/Microsoft_AAD_IAM/AppGalleryBladeV2) e obter as credenciais.
-### Enable APIs
+### Habilitar APIs
-On Microsoft Azure Console enable the following APIs in "Permissions":
+No Console do Microsoft Azure habilite as seguintes APIs em "Permissões":
* Microsoft Graph: Mail.ReadWrite
* Microsoft Graph: Mail.Send
@@ -188,20 +188,20 @@ On Microsoft Azure Console enable the following APIs in "Permissions":
* Microsoft Graph: profile
* Microsoft Graph: offline_access
-Note: "Mail.ReadWrite" and "Mail.Send" are only mandatory if you want to send emails using our workflow actions. You can use "Mail.Read" instead if you only want to receive emails.
+Nota: "Mail.ReadWrite" e "Mail.Send" são apenas obrigatórios se você quiser enviar emails usando nossas ações de fluxo de trabalho. Você pode usar "Mail.Read" em vez disso se quiser apenas receber emails.
-### Authorized redirect URIs
+### URIs de redirecionamento autorizados
-You need to add the following redirect URIs to your project:
+Você precisa adicionar os seguintes URIs de redirecionamento ao seu projeto:
-* `https://{your-domain}/auth/microsoft/redirect` if you want to use Microsoft SSO
+* `https://{your-domain}/auth/microsoft/redirect` se você quiser usar SSO da Microsoft
* `https://{your-domain}/auth/microsoft-apis/get-access-token`
-### Configure in Twenty
+### Configurar no Twenty
-1. Go to **Settings → Admin Panel → Configuration Variables**
-2. Find the **Microsoft Auth** section
-3. Set these variables:
+1. Vá para **Configurações → Painel de Administração → Variáveis de Configuração**
+2. Encontre a seção **Microsoft Auth**
+3. Defina estas variáveis:
* `MESSAGING_PROVIDER_MICROSOFT_ENABLED=true`
* `CALENDAR_PROVIDER_MICROSOFT_ENABLED=true`
* `AUTH_MICROSOFT_ENABLED=true`
@@ -211,32 +211,32 @@ You need to add the following redirect URIs to your project:
* `AUTH_MICROSOFT_APIS_CALLBACK_URL=https://{your-domain}/auth/microsoft-apis/get-access-token`
- **Environment-only mode:** If you set `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false`, add these variables to your `.env` file instead.
+ **Modo somente ambiente:** Se você definir `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false`, adicione estas variáveis ao seu arquivo `.env`.
-### Configure scopes
+### Configurar escopos
-[See relevant source code](https://github.com/twentyhq/twenty/blob/main/packages/twenty-server/src/engine/core-modules/auth/utils/get-microsoft-apis-oauth-scopes.ts#L2-L9)
+[Veja o código relevante](https://github.com/twentyhq/twenty/blob/main/packages/twenty-server/src/engine/core-modules/auth/utils/get-microsoft-apis-oauth-scopes.ts#L2-L9)
* 'openid'
* 'email'
-* 'profile'
+* 'perfil'
* 'offline_access'
* 'Mail.ReadWrite'
* 'Mail.Send'
* 'Calendars.Read'
-### If your app is in test mode
+### Se seu aplicativo estiver em modo de teste
-If your app is in test mode, you will need to add test users to your project.
+Se seu aplicativo estiver em modo de teste, será necessário adicionar usuários de teste ao seu projeto.
-Add your test users to the "Users and groups" section.
+Adicione seus usuários de teste à seção "Usuários e grupos".
-## Background Jobs for Calendar & Messaging
+## Trabalhos em Segundo Plano para Calendário e Mensagens
-After configuring Gmail, Google Calendar, or Microsoft 365 integrations, you need to start the background jobs that sync data.
+Após configurar integrações com Gmail, Google Calendar ou Microsoft 365, é necessário iniciar os trabalhos em segundo plano que sincronizam dados.
-Register the following recurring jobs in your worker container:
+Registre os seguintes trabalhos recorrentes em seu container de trabalho:
```bash
# from your worker container
@@ -249,15 +249,15 @@ yarn command:prod cron:calendar:ongoing-stale
yarn command:prod cron:workflow:automated-cron-trigger
```
-## Email Configuration
+## Configuração de Email
-1. Go to **Settings → Admin Panel → Configuration Variables**
-2. Find the **Email** section
-3. Configure your SMTP settings:
+1. Vá para **Configurações → Painel de Administração → Variáveis de Configuração**
+2. Encontre a seção **Email**
+3. Configure suas configurações SMTP:
- You will need to provision an [App Password](https://support.google.com/accounts/answer/185833).
+ Você precisará provisionar uma [Senha de App](https://support.google.com/accounts/answer/185833).
* EMAIL_DRIVER=smtp
* EMAIL_SMTP_HOST=smtp.gmail.com
@@ -267,7 +267,7 @@ yarn command:prod cron:workflow:automated-cron-trigger
- Keep in mind that if you have 2FA enabled, you will need to provision an [App Password](https://support.microsoft.com/en-us/account-billing/manage-app-passwords-for-two-step-verification-d6dc8c6d-4bf7-4851-ad95-6d07799387e9).
+ Lembre-se de que, se você tiver 2FA ativado, precisará providenciar uma [Senha de App](https://support.microsoft.com/en-us/account-billing/manage-app-passwords-for-two-step-verification-d6dc8c6d-4bf7-4851-ad95-6d07799387e9).
* EMAIL_DRIVER=smtp
* EMAIL_SMTP_HOST=smtp.office365.com
@@ -277,11 +277,11 @@ yarn command:prod cron:workflow:automated-cron-trigger
- **smtp4dev** is a fake SMTP email server for development and testing.
+ **smtp4dev** é um servidor SMTP falso para desenvolvimento e teste.
- * Run the smtp4dev image: `docker run --rm -it -p 8090:80 -p 2525:25 rnwood/smtp4dev`
- * Access the smtp4dev ui here: [http://localhost:8090](http://localhost:8090)
- * Set the following variables:
+ * Execute a imagem smtp4dev: `docker run --rm -it -p 8090:80 -p 2525:25 rnwood/smtp4dev`
+ * Acesse a interface smtp4dev aqui: [http://localhost:8090](http://localhost:8090)
+ * Defina as seguintes variáveis:
* EMAIL_DRIVER=smtp
* EMAIL_SMTP_HOST=localhost
* EMAIL_SMTP_PORT=2525
@@ -289,5 +289,49 @@ yarn command:prod cron:workflow:automated-cron-trigger
- **Environment-only mode:** If you set `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false`, add these variables to your `.env` file instead.
+ **Modo somente ambiente:** Se você definir `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false`, adicione estas variáveis ao seu arquivo `.env`.
+
+## Funções serverless
+
+O Twenty oferece suporte a funções serverless para fluxos de trabalho e lógica personalizada. O ambiente de execução é configurado por meio da variável de ambiente `SERVERLESS_TYPE`.
+
+
+ **Aviso de segurança:** O driver serverless local (`SERVERLESS_TYPE=LOCAL`) executa código diretamente no host em um processo Node.js sem sandbox. Deve ser usado apenas para código confiável em desenvolvimento. Para implantações de produção que lidam com código não confiável, recomendamos fortemente usar `SERVERLESS_TYPE=LAMBDA` ou `SERVERLESS_TYPE=DISABLED`.
+
+
+### Drivers disponíveis
+
+| Driver | Variável de ambiente | Caso de uso | Nível de segurança |
+| ---------- | -------------------------- | --------------------------------------------- | -------------------------------------- |
+| Desativado | `SERVERLESS_TYPE=DISABLED` | Desativar completamente as funções serverless | N/A |
+| Local | `SERVERLESS_TYPE=LOCAL` | Desenvolvimento e ambientes confiáveis | Baixo (sem sandbox) |
+| Lambda | `SERVERLESS_TYPE=LAMBDA` | Produção com código não confiável | Alto (isolamento em nível de hardware) |
+
+### Configuração recomendada
+
+**Para desenvolvimento:**
+
+```bash
+SERVERLESS_TYPE=LOCAL # default
+```
+
+**Para produção (AWS):**
+
+```bash
+SERVERLESS_TYPE=LAMBDA
+SERVERLESS_LAMBDA_REGION=us-east-1
+SERVERLESS_LAMBDA_ROLE=arn:aws:iam::123456789:role/your-lambda-role
+SERVERLESS_LAMBDA_ACCESS_KEY_ID=your-access-key
+SERVERLESS_LAMBDA_SECRET_ACCESS_KEY=your-secret-key
+```
+
+**Para desativar as funções serverless:**
+
+```bash
+SERVERLESS_TYPE=DISABLED
+```
+
+
+ Ao usar `SERVERLESS_TYPE=DISABLED`, qualquer tentativa de executar uma função serverless retornará um erro. Isso é útil se você quiser executar o Twenty sem recursos de funções serverless.
+
diff --git a/packages/twenty-docs/l/pt/developers/self-host/capabilities/troubleshooting.mdx b/packages/twenty-docs/l/pt/developers/self-host/capabilities/troubleshooting.mdx
index d2187aedac..7ad56863ad 100644
--- a/packages/twenty-docs/l/pt/developers/self-host/capabilities/troubleshooting.mdx
+++ b/packages/twenty-docs/l/pt/developers/self-host/capabilities/troubleshooting.mdx
@@ -1,26 +1,25 @@
---
-title: Troubleshooting
+title: Resolução de Problemas
---
-## Troubleshooting
+## Resolução de Problemas
-If you encounter any problem while setting up environment for development, upgrading your instance or self-hosting,
-here are some solutions for common problems.
+Se encontrar algum problema ao configurar o ambiente para desenvolvimento, atualizar sua instância ou auto-hospedagem, aqui estão algumas soluções para problemas comuns.
-### Self-hosting
+### Auto-hospedagem
-#### First install results in `password authentication failed for user "postgres"`
+#### Primeira instalação resulta em `falha na autenticação de senha para o usuário "postgres"`
-🚨 **IMPORTANT: This solution is ONLY for fresh installations** 🚨
-If you have an existing Twenty instance with production data, **DO NOT** follow these steps as they will permanently delete your database!
+🚨 **IMPORTANTE: Esta solução é APENAS para instalações novas** 🚨
+Se você tiver uma instância existente do Twenty com dados em produção, **NÃO** siga estes passos, pois eles excluirão permanentemente seu banco de dados!
-While installing Twenty for the first time, you might want to change the default database password.
-The password you set during the first installation becomes permanently stored in the database volume. If you later try to change this password in your configuration without removing the old volume, you'll get authentication errors because the database is still using the original password.
+Ao instalar o Twenty pela primeira vez, você pode querer alterar a senha padrão do banco de dados.
+A senha definida durante a primeira instalação é armazenada permanentemente no volume do banco de dados. Se posteriormente tentar alterar esta senha na sua configuração sem remover o volume antigo, receberá erros de autenticação porque o banco de dados ainda está usando a senha original.
-⚠️ WARNING: Following steps will PERMANENTLY DELETE all database data! ⚠️
-Only proceed if this is a fresh installation with no important data.
+⚠️ AVISO: Seguir os próximos passos irá EXCLUIR PERMANENTEMENTE todos os dados do banco de dados! ⚠️
+Prossiga apenas se esta for uma instalação nova, sem dados importantes.
-In order to update the `PG_DATABASE_PASSWORD` you need to:
+Para atualizar o `PG_DATABASE_PASSWORD` você precisa:
```sh
# Update the PG_DATABASE_PASSWORD in .env
@@ -28,33 +27,33 @@ docker compose down --volumes
docker compose up -d
```
-#### CR line breaks found [Windows]
+#### Quebras de linha CR encontradas [Windows]
-This is due to the line break characters of Windows and the git configuration. Try running:
+Isso se deve aos caracteres de quebra de linha do Windows e à configuração do git. Tente executar:
```
git config --global core.autocrlf false
```
-Then delete the repository and clone it again.
+Depois exclua o repositório e clone novamente.
-#### Missing metadata schema
+#### Esquema de metadados ausente
-During Twenty installation, you need to provision your postgres database with the right schemas, extensions, and users.
-If you're successful in running this provisioning, you should have `default` and `metadata` schemas in your database.
-If you don't, make sure you don't have more than one postgres instance running on your computer.
+Durante a instalação do Twenty, é necessário configurar seu banco de dados postgres com os esquemas, extensões e usuários corretos.
+Se conseguir executar esta configuração, você deve ter os esquemas `default` e `metadata` no seu banco de dados.
+Se não, certifique-se de que não possui mais de uma instância do postgres em execução no seu computador.
-#### Cannot find module 'twenty-emails' or its corresponding type declarations.
+#### Não é possível encontrar o módulo 'twenty-emails' ou suas declarações de tipo correspondentes.
-You have to build the package `twenty-emails` before running the initialization of the database with `npx nx run twenty-emails:build`
+É preciso compilar o pacote `twenty-emails` antes de iniciar a inicialização do banco de dados com `npx nx run twenty-emails:build`
-#### Missing twenty-x package
+#### Pacote twenty-x ausente
-Make sure to run yarn in the root directory and then run `npx nx server:dev twenty-server`. If this still doesn't work try building the missing package manually.
+Certifique-se de executar o yarn no diretório raiz e depois executar `npx nx server:dev twenty-server`. Se isso ainda não funcionar, tente compilar manualmente o pacote ausente.
-#### Lint on Save not working
+#### Lint no Save não funcionando
-This should work out of the box with the eslint extension installed. If this doesn't work try adding this to your vscode setting (on the dev container scope):
+Isso deve funcionar automaticamente com a extensão eslint instalada. Se isso não funcionar, tente adicionar este trecho às suas configurações do vscode (no escopo do contêiner de desenvolvimento):
```
"editor.codeActionsOnSave": {
@@ -64,85 +63,85 @@ This should work out of the box with the eslint extension installed. If this doe
}
```
-#### While running `npx nx start` or `npx nx start twenty-front`, Out of memory error is thrown
+#### Ao executar `npx nx start` ou `npx nx start twenty-front`, é lançada uma mensagem de erro de falta de memória
-In `packages/twenty-front/.env` uncomment `VITE_DISABLE_TYPESCRIPT_CHECKER=true` to disable background checks thus reducing amount of needed RAM.
+No `packages/twenty-front/.env` descomente `VITE_DISABLE_TYPESCRIPT_CHECKER=true` para desativar verificações em segundo plano, reduzindo assim a quantidade de RAM necessária.
-**If it does not work:**
-Run only the services you need, instead of `npx nx start`. For instance, if you work on the server, run only `npx nx worker twenty-server`
+**Se não funcionar:**
+Execute apenas os serviços que precisar, em vez de `npx nx start`. Por exemplo, se estiver trabalhando no servidor, execute apenas `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:
+**Se não funcionar:**
+Se você tentou executar apenas `npx nx run twenty-server:start` no WSL e está falhando com o erro de memória abaixo:
-`FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory`
+`ERRO FATAL: Marcação ineficaz perto do limite de heap Alocação falhou - heap do JavaScript sem memória`
-Workaround is to execute below command in terminal or add it in .bashrc profile to get setup automatically:
+A solução alternativa é executar o comando abaixo no terminal ou adicioná-lo no perfil .bashrc para ser configurado automaticamente:
`export NODE_OPTIONS="--max-old-space-size=8192"`
-The --max-old-space-size=8192 flag sets an upper limit of 8GB for the Node.js heap; usage scales with application demand.
-Reference: https://stackoverflow.com/questions/56982005/where-do-i-set-node-options-max-old-space-size-2048
+O parâmetro --max-old-space-size=8192 define um limite superior de 8GB para o heap do Node.js; o uso escala conforme as demandas da aplicação.
+Referência: 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. At Twenty, we noticed that some VScode extensions were taking a lot of RAM so we temporarily disable them.
+**Se não funcionar:**
+Investigue quais processos estão consumindo a maior parte da RAM do seu computador. No Twenty, percebemos que algumas extensões do VScode estavam consumindo muita RAM, então as desativamos temporariamente.
-**If it does not work:**
-Restart your machine helps to clean up ghost processes.
+**Se não funcionar:**
+Reiniciar sua máquina ajuda a limpar processos fantasmas.
-#### While running `npx nx start` there are weird [0] and [1] in logs
+#### Ao executar `npx nx start`, há logs estranhos [0] e [1]
-That's expected as command `npx nx start` is running more commands under the hood
+Isso é esperado, pois o comando `npx nx start` está executando mais comandos por trás dos bastidores
-#### No emails are sent
+#### Nenhum email é enviado
-Most of the time, it's because the `worker` is not running in the background. Try to run
+Na maioria das vezes, isso ocorre porque o `worker` não está sendo executado em segundo plano. Tente executar
```
npx nx worker twenty-server
```
-#### Cannot connect my Microsoft 365 account
+#### Não consigo conectar minha conta Microsoft 365
-Most of the time, it's because your admin has not enabled the Microsoft 365 Licence for your account. Check [https://admin.microsoft.com/](https://admin.microsoft.com/Adminportal/Home).
+Na maioria das vezes, é porque seu administrador não ativou a Licença Microsoft 365 para sua conta. Verifique [https://admin.microsoft.com/](https://admin.microsoft.com/Adminportal/Home).
-If you have an error code `AADSTS50020`, it probably means that you are using a personal Microsoft account. This is not supported yet. More info [here](https://learn.microsoft.com/fr-fr/troubleshoot/entra/entra-id/app-integration/error-code-aadsts50020-user-account-identity-provider-does-not-exist)
+Se você tem um código de erro `AADSTS50020`, provavelmente significa que você está usando uma conta pessoal da Microsoft. Isso ainda não é suportado. Mais informações [aqui](https://learn.microsoft.com/fr-fr/troubleshoot/entra/entra-id/app-integration/error-code-aadsts50020-user-account-identity-provider-does-not-exist)
-#### While running `yarn` warnings appear in console
+#### Ao executar `yarn` avisos aparecem no console
-Warnings are informing about pulling additional dependencies which aren't explicitly stated in `package.json`, so as long as no breaking error appears, everything should work as expected.
+Os avisos informam sobre a obtenção de dependências adicionais que não estão explicitamente declaradas em `package.json`, portanto, desde que não apareça nenhum erro crítico, tudo deve funcionar como esperado.
-#### When user accesses login page, error about unauthorized user trying to access workspace appears in logs
+#### Quando o usuário acessa a página de login, aparece nos logs um erro sobre o usuário não autorizado tentando acessar o espaço de trabalho
-That's expected as user is unauthorized when logged out since its identity is not verified.
+Isso é esperado, pois o usuário fica sem autorização quando está desconectado, já que sua identidade não está verificada.
-#### How to check if your worker is running?
+#### Como verificar se seu worker está em execução?
-* Go to [webhook-test.com](https://webhook-test.com/) and copy **Your Unique Webhook URL**.
+* Vá para [webhook-test.com](https://webhook-test.com/) e copie **Sua URL de Webhook exclusiva**.
-
+
-* Open your Twenty app, navigate to `/settings`, and enable the **Advanced** toggle at the bottom left of the screen.
-* Create a new webhook.
-* Paste **Your Unique Webhook URL** in the **Endpoint Url** field in Twenty. Set the **Filters** to `Companies` and `Created`.
+* Abra seu aplicativo Twenty, navegue até `/settings`, e ative a alternância **Avançado** na parte inferior esquerda da tela.
+* Crie um novo webhook.
+* Cole **Sua URL Webhook Única** no campo **Endpoint Url** no Twenty. Defina os **Filtros** para `Companies` e `Created`.
-
+
-* Go to `/objects/companies` and create a new company record.
-* Return to [webhook-test.com](https://webhook-test.com/) and check if a new **POST request** has been received.
+* Vá para `/objects/companies` e crie um novo registro de empresa.
+* Retorne para [webhook-test.com](https://webhook-test.com/) e verifique se uma nova **solicitação POST** foi recebida.
-
+
-* If a **POST request** is received, your worker is running successfully. Otherwise, you need to troubleshoot your worker.
+* Se uma **solicitação POST** for recebida, seu worker está funcionando com sucesso. Caso contrário, você precisa solucionar problemas no seu worker.
-#### Front-end fails to start and returns error TS5042: Option 'project' cannot be mixed with source files on a command line
+#### Front-end não inicia e retorna erro TS5042: A opção 'project' não pode ser misturada com arquivos de origem na linha de comando
-Comment out checker plugin in `packages/twenty-ui/vite-config.ts` like in example below
+Comente o plugin checker em `packages/twenty-ui/vite-config.ts` como no exemplo abaixo
```
plugins: [
@@ -166,62 +165,62 @@ plugins: [
],
```
-#### Admin panel not accessible
+#### Painel administrativo não acessível
-Run `UPDATE core."user" SET "canAccessFullAdminPanel" = TRUE WHERE email = 'you@yourdomain.com';` in database container to get access to admin panel.
+Execute `UPDATE core."user" SET "canAccessFullAdminPanel" = TRUE WHERE email = 'você@seudominio.com';` no contêiner de banco de dados para obter acesso ao painel administrativo.
-### 1-click Docker compose
+### Docker compose com um clique
-#### Unable to Log In
+#### Impossível efetuar login
-If you can't log in after setup:
+Se você não consegue efetuar login após a configuração:
-1. Run the following commands:
+1. Execute os seguintes comandos:
```bash
docker exec -it twenty-server-1 yarn
docker exec -it twenty-server-1 npx nx database:reset --configuration=no-seed
```
-2. Restart the Docker containers:
+2. Reinicie os contêineres Docker:
```bash
docker compose down
docker compose up -d
```
-Note the database:reset command will completely erase your database and recreate it from scratch.
+Observe que o comando database:reset irá apagar completamente seu banco de dados e recriá-lo do zero.
-#### Connection Issues Behind a Reverse Proxy
+#### Problemas de conexão por trás de um proxy reverso
-If you're running Twenty behind a reverse proxy and experiencing connection issues:
+Se você está executando o Twenty por trás de um proxy reverso e está enfrentando problemas de conexão:
-1. **Verify SERVER_URL:**
+1. **Verifique o SERVER_URL:**
- Ensure `SERVER_URL` in your `.env` file matches your external access URL, including `https` if SSL is enabled.
+ Certifique-se de que o `SERVER_URL` no seu arquivo `.env` corresponda à sua URL de acesso externo, incluindo `https` se o SSL estiver habilitado.
-2. **Check Reverse Proxy Settings:**
+2. **Verifique as configurações do Proxy Reverso:**
- * Confirm that your reverse proxy is correctly forwarding requests to the Twenty server.
- * Ensure headers like `X-Forwarded-For` and `X-Forwarded-Proto` are properly set.
+ * Confirme que seu proxy reverso está encaminhando corretamente as solicitações para o servidor Twenty.
+ * Certifique-se de que cabeçalhos como `X-Forwarded-For` e `X-Forwarded-Proto` estão configurados corretamente.
-3. **Restart Services:**
+3. **Reinicie os Serviços:**
- After making changes, restart both the reverse proxy and Twenty containers.
+ Após fazer as alterações, reinicie tanto o proxy reverso quanto os contêineres do Twenty.
-#### Error when uploading an image - permission denied
+#### Erro ao carregar uma imagem - permissão negada
-Switching the data folder ownership on the host from root to another user and group resolves this problem.
+Alterar a propriedade do diretório de dados no host de root para outro usuário e grupo resolve esse problema.
-## Getting Help
+## Obtendo Ajuda
-If you encounter issues not covered in this guide:
+Se encontrar problemas não abordados neste guia:
-* Check Logs:
+* Verifique os Logs:
- View container logs for error messages:
+ Veja os logs dos contêineres para mensagens de erro:
```bash
docker compose logs
```
-* Community Support:
+* Suporte Comunitário:
- Reach out to the [Twenty community](https://github.com/twentyhq/twenty/issues) or [support channels](https://discord.gg/cx5n4Jzs57) for assistance.
+ Entre em contato com a [comunidade Twenty](https://github.com/twentyhq/twenty/issues) ou [canais de suporte](https://discord.gg/cx5n4Jzs57) para obter assistência.
diff --git a/packages/twenty-docs/l/pt/developers/self-host/capabilities/upgrade-guide.mdx b/packages/twenty-docs/l/pt/developers/self-host/capabilities/upgrade-guide.mdx
index 03a53f5685..026d552be4 100644
--- a/packages/twenty-docs/l/pt/developers/self-host/capabilities/upgrade-guide.mdx
+++ b/packages/twenty-docs/l/pt/developers/self-host/capabilities/upgrade-guide.mdx
@@ -1,40 +1,40 @@
---
-title: Upgrade guide
+title: Guia de atualização
---
-## General guidelines
+## Diretrizes gerais
-**Always make sure to back up your database before starting the upgrade process** by running `docker exec -it {db_container_name_or_id} pg_dumpall -U {postgres_user} > databases_backup.sql`.
+**Certifique-se sempre de fazer backup do banco de dados antes de iniciar o processo de atualização** executando `docker exec -it {db_container_name_or_id} pg_dumpall -U {postgres_user} > databases_backup.sql`.
-To restore backup, run `cat databases_backup.sql | docker exec -i {db_container_name_or_id} psql -U {postgres_user}`.
+Para restaurar o backup, execute `cat databases_backup.sql | docker exec -i {db_container_name_or_id} psql -U {postgres_user}`.
-If you used Docker Compose, follow these steps:
+Se você usou o Docker Compose, siga estas etapas:
-1. In a terminal, on the host where Twenty is running, turn off Twenty: `docker compose down`
+1. No terminal, no host onde o Twenty está em execução, desligue o Twenty: `docker compose down`
-2. Upgrade the version by changing the `TAG` value in the .env file near your docker-compose. ( We recommend consuming `major.minor` version such as `v0.53` )
+2. Atualize a versão alterando o valor `TAG` no arquivo .env próximo ao seu docker-compose. (Recomendamos consumir a versão `major.minor` como `v0.53`)
-3. Bring Twenty back online with `docker compose up -d`
+3. Traga o Twenty de volta ao ar com `docker compose up -d`
-If you want to upgrade your instance by few versions, e.g. from v0.33.0 to v0.35.0, you have to upgrade your instance sequentially, in this example from v0.33.0 to v0.34.0, then from v0.34.0 to v0.35.0.
+Se você quiser atualizar sua instância em algumas versões, por exemplo, de v0.33.0 para v0.35.0, você deve atualizar sua instância sequencialmente, neste exemplo de v0.33.0 para v0.34.0, depois de v0.34.0 para v0.35.0.
-**Make sure that after each upgraded version you have non-corrupted backup.**
+**Certifique-se de que após cada versão atualizada você tenha um backup não corrompido.**
-## Version-specific upgrade steps
+## Etapas de atualização específicas da versão
## v1.0
-Hello Twenty v1.0! 🎉
+Olá Twenty v1.0! 🎉
## v0.60
-### Performance Enhancements
+### Melhorias de Performance
-All interactions with the metadata API have been optimized for better performance, particularly for object metadata manipulation and workspace creation operations.
+Todas as interações com a API de metadados foram otimizadas para um melhor desempenho, particularmente para manipulação de metadados de objetos e operações de criação de espaço de trabalho.
-We've refactored our caching strategy to prioritize cache hits over database queries when possible, significantly improving the performance of metadata API operations.
+Reformulamos nossa estratégia de cache para priorizar acertos de cache em detrimento de consultas ao banco de dados sempre que possível, melhorando significativamente o desempenho das operações da API de metadados.
-If you encounter any runtime issues after upgrading, you may need to flush your cache to ensure it's synchronized with the latest changes. Run this command in your twenty-server container:
+Se você encontrar problemas de execução após a atualização, pode ser necessário limpar seu cache para garantir que esteja sincronizado com as alterações mais recentes. Execute este comando em seu contêiner do twenty-server:
```bash
yarn command:prod cache:flush
@@ -42,113 +42,113 @@ yarn command:prod cache:flush
### v0.55
-Upgrade your Twenty instance to use v0.55 image
+Atualize sua instância do Twenty para usar a imagem v0.55
-You don't need to run any command anymore, the new image will automatically care about running all required migrations.
+Você não precisa mais executar nenhum comando, a nova imagem cuidará automaticamente de executar todas as migrações necessárias.
-### `User does not have permission` error
+### Erro `User does not have permission`
-If you encounter authorization errors on most requests after upgrading, you may need to flush your cache to recompute the latest permissions.
+Se você encontrar erros de autorização na maioria das solicitações após a atualização, pode ser necessário limpar seu cache para recálculo das permissões mais recentes.
-In your `twenty-server` container, run:
+Em seu contêiner `twenty-server`, execute:
```bash
yarn command:prod cache:flush
```
-This issue is specific to this Twenty version and should not be required for future upgrades.
+Este problema é específico para esta versão do Twenty e não deverá ser necessário em futuras atualizações.
### v0.54
-Since version `0.53`, no manual actions needed.
+Desde a versão `0.53`, nenhuma ação manual é necessária.
-#### Metadata schema deprecation
+#### Desativação do esquema de metadados
-We've merged the `metadata` schema into the `core` one to simplify data retrieval from `TypeORM`.
-We have merged the `migrate` command step within the `upgrade` command. We do not recommend running `migrate` manually within any of your server/worker containers.
+Mesclamos o esquema `metadata` no `core` para simplificar a recuperação de dados do `TypeORM`.
+Mesclamos o passo do comando `migrate` dentro do comando `upgrade`. Não recomendamos a execução manual do `migrate` em nenhum de seus servidores/conteineres de trabalho.
-### Since v0.53
+### Desde v0.53
-Starting from `0.53`, upgrade is programmatically done within the `DockerFile`, this means from now on, you shouldn't have to run any command manually anymore.
+A partir de `0.53`, a atualização é feita programaticamente dentro do `DockerFile`, o que significa que, a partir de agora, você não precisará mais executar nenhum comando manualmente.
-Make sure to keep upgrading your instance sequentially, without skipping any major version (e.g. `0.43.3` to `0.44.0` is allowed, but `0.43.1` to `0.45.0` isn't), else could lead to workspace version desynchronization that could result in runtime error and missing functionality.
+Certifique-se de manter atualizando sua instância sequencialmente, sem pular qualquer versão principal (por exemplo, `0.43.3` para `0.44.0` é permitido, mas `0.43.1` para `0.45.0` não é), caso contrário, pode levar a uma desincronização na versão do espaço de trabalho que pode resultar em erro de tempo de execução e funcionalidade ausente.
-To check if a workspace has been correctly migrated you can review its version in database in `core.workspace` table.
+Para verificar se um espaço de trabalho foi migrado corretamente, você pode revisar sua versão no banco de dados na tabela `core.workspace`.
-It should always be in the range of your current Twenty's instance `major.minor` version, you can view your instance version in the admin panel (at `/settings/admin-panel`, accessible if your user has `canAccessFullAdminPanel` property set to true in the database) or by running `echo $APP_VERSION` in your `twenty-server` container.
+Deve estar sempre na faixa da versão `major.minor` atual da instância do Twenty, você pode ver a versão de sua instância no painel de administração (em `/settings/admin-panel`, acessível se seu usuário tiver a propriedade `canAccessFullAdminPanel` definida como verdadeira no banco de dados) ou executando `echo $APP_VERSION` em seu contêiner `twenty-server`.
-To fix a desynchronized workspace version, you will have to upgrade from the corresponding twenty's version following related upgrade guide sequentially and so on until it reaches desired version.
+Para corrigir uma versão de workspace dessincronizada, você terá que atualizar da versão correspondente do twenty seguindo o guia de atualização relacionado sequencialmente e assim por diante até alcançar a versão desejada.
-#### `auditLog` removal
+#### Remoção do `auditLog`
-We've removed the auditLog standard object, which means your backup size might be significantly reduced after this migration.
+Removemos o objeto padrão auditLog, o que significa que o tamanho do backup pode ser significativamente reduzido após esta migração.
-### v0.51 to v0.52
+### v0.51 para v0.52
-Upgrade your Twenty instance to use v0.52 image
+Atualize sua instância do Twenty para usar a imagem v0.52
```
yarn database:migrate:prod
yarn command:prod upgrade
```
-#### I have a workspace blocked in version between `0.52.0` and `0.52.6`
+#### Tenho um espaço de trabalho bloqueado na versão entre `0.52.0` e `0.52.6`
-Unfortunately `0.52.0` and `0.52.6` have been completely removed from dockerHub.
-You will have to manually update your workspace version to `0.51.0` in database and upgrade using twenty version `0.52.11` following its just above upgrade guide.
+Infelizmente, `0.52.0` e `0.52.6` foram completamente removidos do dockerHub.
+Você terá que atualizar manualmente a versão do espaço de trabalho para `0.51.0` no banco de dados e atualizar usando a versão twenty `0.52.11` seguindo o guia de atualização logo acima.
-### v0.50 to v0.51
+### v0.50 para v0.51
-Upgrade your Twenty instance to use v0.51 image
+Atualize sua instância do Twenty para usar a imagem v0.51
```
yarn database:migrate:prod
yarn command:prod upgrade
```
-### v0.44.0 to v0.50.0
+### v0.44.0 para v0.50.0
-Upgrade your Twenty instance to use v0.50.0 image
+Atualize sua instância do Twenty para usar a imagem v0.50.0
```
yarn database:migrate:prod
yarn command:prod upgrade
```
-#### Docker-compose.yml mutation
+#### Mutação docker-compose.yml
-This version includes a `docker-compose.yml` mutation to give `worker` service access to the `server-local-data` volume.
-Please update your local `docker-compose.yml` with [v0.50.0 docker-compose.yml](https://github.com/twentyhq/twenty/blob/v0.50.0/packages/twenty-docker/docker-compose.yml)
+Esta versão inclui uma mutação `docker-compose.yml` para dar ao serviço `worker` acesso ao volume `server-local-data`.
+Por favor, atualize seu `docker-compose.yml` local com [v0.50.0 docker-compose.yml](https://github.com/twentyhq/twenty/blob/v0.50.0/packages/twenty-docker/docker-compose.yml)
-### v0.43.0 to v0.44.0
+### v0.43.0 para v0.44.0
-Upgrade your Twenty instance to use v0.44.0 image
+Atualize sua instância do Twenty para usar a imagem v0.44.0
```
yarn database:migrate:prod
yarn command:prod upgrade
```
-### v0.42.0 to v0.43.0
+### v0.42.0 para v0.43.0
-Upgrade your Twenty instance to use v0.43.0 image
+Atualize sua instância do Twenty para usar a imagem v0.43.0
```
yarn database:migrate:prod
yarn command:prod upgrade
```
-In this version, we have also switched to postgres:16 image in docker-compose.yml.
+Nesta versão, também trocamos para a imagem postgres:16 no docker-compose.yml.
-#### (Option 1) Database migration
+#### (Opção 1) Migração do banco de dados
-Keeping the existing postgres-spilo image is fine, but you will have to freeze the version in your docker-compose.yml to be 0.43.0.
+Manter a imagem postgres-spilo existente está ok, mas você terá que congelar a versão no seu docker-compose.yml para ser 0.43.0.
-#### (Option 2) Database migration
+#### (Opção 2) Migração do banco de dados
-If you want to migrate your database to the new postgres:16 image, please follow these steps:
+Se você quiser migrar seu banco de dados para a nova imagem postgres:16, siga estas etapas:
-1. Dump your database from the old postgres-spilo container
+1. Faça dump do seu banco de dados do contêiner antigo postgres-spilo
```
docker exec -it twenty-db-1 sh
@@ -157,11 +157,11 @@ exit
docker cp twenty-db-1:/home/postgres/databases_backup.sql .
```
-Make sure your dump file is not empty.
+Certifique-se de que seu arquivo de dump não está vazio.
-2. Upgrade your docker-compose.yml to use postgres:16 image as in the [docker-compose.yml](https://raw.githubusercontent.com/twentyhq/twenty/main/packages/twenty-docker/docker-compose.yml) file.
+2. Atualize seu docker-compose.yml para usar a imagem postgres:16 como no arquivo [docker-compose.yml](https://raw.githubusercontent.com/twentyhq/twenty/main/packages/twenty-docker/docker-compose.yml).
-3. Restore the database to the new postgres:16 container
+3. Restaure o banco de dados para o novo contêiner postgres:16
```
docker cp databases_backup.sql twenty-db-1:/databases_backup.sql
@@ -170,86 +170,86 @@ psql -U {YOUR_POSTGRES_USER} -d {YOUR_POSTGRES_DB} -f databases_backup.sql
exit
```
-### v0.41.0 to v0.42.0
+### v0.41.0 para v0.42.0
-Upgrade your Twenty instance to use v0.42.0 image
+Atualize sua instância do Twenty para usar a imagem v0.42.0
```
yarn database:migrate:prod
yarn command:prod upgrade-0.42
```
-**Environment Variables**
+**Variáveis de Ambiente**
-* Removed: `FRONT_PORT`, `FRONT_PROTOCOL`, `FRONT_DOMAIN`, `PORT`
-* Added: `FRONTEND_URL`, `NODE_PORT`, `MAX_NUMBER_OF_WORKSPACES_DELETED_PER_EXECUTION`, `MESSAGING_PROVIDER_MICROSOFT_ENABLED`, `CALENDAR_PROVIDER_MICROSOFT_ENABLED`, `IS_MICROSOFT_SYNC_ENABLED`
+* Removido: `FRONT_PORT`, `FRONT_PROTOCOL`, `FRONT_DOMAIN`, `PORT`
+* Adicionado: `FRONTEND_URL`, `NODE_PORT`, `MAX_NUMBER_OF_WORKSPACES_DELETED_PER_EXECUTION`, `MESSAGING_PROVIDER_MICROSOFT_ENABLED`, `CALENDAR_PROVIDER_MICROSOFT_ENABLED`, `IS_MICROSOFT_SYNC_ENABLED`
-### v0.40.0 to v0.41.0
+### v0.40.0 para v0.41.0
-Upgrade your Twenty instance to use v0.41.0 image
+Atualize sua instância do Twenty para usar a imagem v0.41.0
```
yarn database:migrate:prod
yarn command:prod upgrade-0.41
```
-**Environment Variables**
+**Variáveis de Ambiente**
-* Removed: `AUTH_MICROSOFT_TENANT_ID`
+* Removido: `AUTH_MICROSOFT_TENANT_ID`
-### v0.35.0 to v0.40.0
+### v0.35.0 para v0.40.0
-Upgrade your Twenty instance to use v0.40.0 image
+Atualize sua instância do Twenty para usar a imagem v0.40.0
```
yarn database:migrate:prod
yarn command:prod upgrade-0.40
```
-**Environment Variables**
+**Variáveis de Ambiente**
-* Added: `IS_EMAIL_VERIFICATION_REQUIRED`, `EMAIL_VERIFICATION_TOKEN_EXPIRES_IN`, `WORKFLOW_EXEC_THROTTLE_LIMIT`, `WORKFLOW_EXEC_THROTTLE_TTL`
+* Adicionado: `IS_EMAIL_VERIFICATION_REQUIRED`, `EMAIL_VERIFICATION_TOKEN_EXPIRES_IN`, `WORKFLOW_EXEC_THROTTLE_LIMIT`, `WORKFLOW_EXEC_THROTTLE_TTL`
-### v0.34.0 to v0.35.0
+### v0.34.0 para v0.35.0
-Upgrade your Twenty instance to use v0.35.0 image
+Atualize sua instância do Twenty para usar a imagem v0.35.0
```
yarn database:migrate:prod
yarn command:prod upgrade-0.35
```
-The `yarn database:migrate:prod` command will apply the migrations to the database structure (core and metadata schemas)
-The `yarn command:prod upgrade-0.35` takes care of the data migration of all workspaces.
+O comando `yarn database:migrate:prod` aplicará as migrações à estrutura do banco de dados (esquemas core e metadata)
+O `yarn command:prod upgrade-0.35` cuida da migração de dados de todos os espaços de trabalho.
-**Environment Variables**
+**Variáveis de Ambiente**
-* We replaced `ENABLE_DB_MIGRATIONS` with `DISABLE_DB_MIGRATIONS` (default value is now `false`, you probably don't have to set anything)
+* Substituímos `ENABLE_DB_MIGRATIONS` por `DISABLE_DB_MIGRATIONS` (o valor padrão agora é `false`, você provavelmente não precisará definir nada)
-### v0.33.0 to v0.34.0
+### v0.33.0 para v0.34.0
-Upgrade your Twenty instance to use v0.34.0 image
+Atualize sua instância do Twenty para usar a imagem v0.34.0
```
yarn database:migrate:prod
yarn command:prod upgrade-0.34
```
-The `yarn database:migrate:prod` command will apply the migrations to the database structure (core and metadata schemas)
-The `yarn command:prod upgrade-0.34` takes care of the data migration of all workspaces.
+O comando `yarn database:migrate:prod` aplicará as migrações à estrutura do banco de dados (esquemas core e metadata)
+O `yarn command:prod upgrade-0.34` cuida da migração de dados de todos os espaços de trabalho.
-**Environment Variables**
+**Variáveis de Ambiente**
-* Removed: `FRONT_BASE_URL`
-* Added: `FRONT_DOMAIN`, `FRONT_PROTOCOL`, `FRONT_PORT`
+* Removido: `FRONT_BASE_URL`
+* Adicionado: `FRONT_DOMAIN`, `FRONT_PROTOCOL`, `FRONT_PORT`
-We have updated the way we handle the frontend URL.
-You can now set the frontend URL using the `FRONT_DOMAIN`, `FRONT_PROTOCOL` and `FRONT_PORT` variables.
-If FRONT_DOMAIN is not set, the frontend URL will fall back to `SERVER_URL`.
+Atualizamos a forma como lidamos com a URL do frontend.
+Agora você pode definir a URL do frontend usando as variáveis `FRONT_DOMAIN`, `FRONT_PROTOCOL` e `FRONT_PORT`.
+Se FRONT_DOMAIN não estiver definido, a URL do frontend voltará para `SERVER_URL`.
-### v0.32.0 to v0.33.0
+### v0.32.0 para v0.33.0
-Upgrade your Twenty instance to use v0.33.0 image
+Atualize sua instância do Twenty para usar a imagem v0.33.0
```
yarn command:prod cache:flush
@@ -257,68 +257,68 @@ yarn database:migrate:prod
yarn command:prod upgrade-0.33
```
-The `yarn command:prod cache:flush` command will flush the Redis cache.
-The `yarn database:migrate:prod` command will apply the migrations to the database structure (core and metadata schemas)
-The `yarn command:prod upgrade-0.33` takes care of the data migration of all workspaces.
+O comando `yarn command:prod cache:flush` limpará o cache do Redis.
+O comando `yarn database:migrate:prod` aplicará as migrações à estrutura do banco de dados (esquemas core e metadata)
+O `yarn command:prod upgrade-0.33` cuida da migração de dados de todos os espaços de trabalho.
-Starting from this version, twenty-postgres image for DB became deprecated and twenty-postgres-spilo is used instead.
-If you want to keep using twenty-postgres image, simply replace `twentycrm/twenty-postgres:${TAG}` with `twentycrm/twenty-postgres` in docker-compose.yml.
+A partir desta versão, a imagem twenty-postgres para DB tornou-se obsoleta e o twenty-postgres-spilo é usado em vez disso.
+Se você quiser continuar usando a imagem twenty-postgres, basta substituir `twentycrm/twenty-postgres:${TAG}` por `twentycrm/twenty-postgres` em docker-compose.yml.
-### v0.31.0 to v0.32.0
+### v0.31.0 para v0.32.0
-Upgrade your Twenty instance to use v0.32.0 image
+Atualize sua instância do Twenty para usar a imagem v0.32.0
-**Schema and data migration**
+**Migração de esquema e dados**
```
yarn database:migrate:prod
yarn command:prod upgrade-0.32
```
-The `yarn database:migrate:prod` command will apply the migrations to the database structure (core and metadata schemas)
-The `yarn command:prod upgrade-0.32` takes care of the data migration of all workspaces.
+O comando `yarn database:migrate:prod` aplicará as migrações à estrutura do banco de dados (esquemas core e metadata)
+O `yarn command:prod upgrade-0.32` cuida da migração de dados de todos os espaços de trabalho.
-**Environment Variables**
+**Variáveis de Ambiente**
-We have updated the way we handle the Redis connection.
+Atualizamos a forma como lidamos com a conexão Redis.
-* Removed: `REDIS_HOST`, `REDIS_PORT`, `REDIS_USERNAME`, `REDIS_PASSWORD`
-* Added: `REDIS_URL`
+* Removido: `REDIS_HOST`, `REDIS_PORT`, `REDIS_USERNAME`, `REDIS_PASSWORD`
+* Adicionado: `REDIS_URL`
-Update your `.env` file to use the new `REDIS_URL` variable instead of the individual Redis connection parameters.
+Atualize seu arquivo `.env` para usar a nova variável `REDIS_URL` em vez dos parâmetros de conexão Redis individuais.
-We have also simplified the way we handle the JWT tokens.
+Também simplificamos a forma como lidamos com os tokens JWT.
-* Removed: `ACCESS_TOKEN_SECRET`, `LOGIN_TOKEN_SECRET`, `REFRESH_TOKEN_SECRET`, `FILE_TOKEN_SECRET`
-* Added: `APP_SECRET`
+* Removido: `ACCESS_TOKEN_SECRET`, `LOGIN_TOKEN_SECRET`, `REFRESH_TOKEN_SECRET`, `FILE_TOKEN_SECRET`
+* Adicionado: `APP_SECRET`
-Update your `.env` file to use the new `APP_SECRET` variable instead of the individual tokens secrets (you can use the same secret as before or generate a new random string)
+Atualize seu arquivo `.env` para usar a nova variável `APP_SECRET` em vez dos segredos dos tokens individuais (você pode usar o mesmo segredo de antes ou gerar uma nova string aleatória)
-**Connected Account**
+**Conta Ligada**
-If you are using connected account to synchronize your Google emails and calendars, you will need to activate the [People API](https://developers.google.com/people) on your Google Admin console.
+Se você estiver usando uma conta conectada para sincronizar seus e-mails e calendários do Google, precisará ativar a [API People](https://developers.google.com/people) no console de administração do Google.
-### v0.30.0 to v0.31.0
+### v0.30.0 para v0.31.0
-Upgrade your Twenty instance to use v0.31.0 image
+Atualize sua instância do Twenty para usar a imagem v0.31.0
-**Schema and data migration**:
+**Migração de esquema e dados**:
```
yarn database:migrate:prod
yarn command:prod upgrade-0.31
```
-The `yarn database:migrate:prod` command will apply the migrations to the database structure (core and metadata schemas)
-The `yarn command:prod upgrade-0.31` takes care of the data migration of all workspaces.
+O comando `yarn database:migrate:prod` aplicará as migrações à estrutura do banco de dados (esquemas core e metadata)
+O `yarn command:prod upgrade-0.31` cuida da migração de dados de todos os espaços de trabalho.
-### v0.24.0 to v0.30.0
+### v0.24.0 para v0.30.0
-Upgrade your Twenty instance to use v0.30.0 image
+Atualize sua instância do Twenty para usar a imagem v0.30.0
-**Breaking change**:
-To enhance performances, Twenty now requires redis cache to be configured. We have updated our [docker-compose.yml](https://raw.githubusercontent.com/twentyhq/twenty/main/packages/twenty-docker/docker-compose.yml) to reflect this.
-Make sure to update your configuration and to update your environment variables accordingly:
+**Mudança radical**:
+Para melhorar o desempenho, o Twenty agora requer que o cache redis seja configurado. Atualizamos nosso [docker-compose.yml](https://raw.githubusercontent.com/twentyhq/twenty/main/packages/twenty-docker/docker-compose.yml) para refletir isso.
+Certifique-se de atualizar sua configuração e suas variáveis de ambiente adequadamente:
```
REDIS_HOST={your-redis-host}
@@ -326,49 +326,49 @@ REDIS_PORT={your-redis-port}
CACHE_STORAGE_TYPE=redis
```
-**Schema and data migration**:
+**Migração de esquema e dados**:
```
yarn database:migrate:prod
yarn command:prod upgrade-0.30
```
-The `yarn database:migrate:prod` command will apply the migrations to the database structure (core and metadata schemas)
-The `yarn command:prod upgrade-0.30` takes care of the data migration of all workspaces.
+O comando `yarn database:migrate:prod` aplicará as migrações à estrutura do banco de dados (esquemas core e metadata)
+O `yarn command:prod upgrade-0.30` cuida da migração de dados de todos os espaços de trabalho.
-### v0.23.0 to v0.24.0
+### v0.23.0 para v0.24.0
-Upgrade your Twenty instance to use v0.24.0 image
+Atualize sua instância do Twenty para usar a imagem v0.24.0
-Run the following commands:
+Execute os seguintes comandos:
```
yarn database:migrate:prod
yarn command:prod upgrade-0.24
```
-The `yarn database:migrate:prod` command will apply the migrations to the database structure (core and metadata schemas)
-The `yarn command:prod upgrade-0.24` takes care of the data migration of all workspaces.
+O comando `yarn database:migrate:prod` aplicará as migrações à estrutura do banco de dados (esquemas core e metadata)
+O `yarn command:prod upgrade-0.24` cuida da migração de dados de todos os espaços de trabalho.
-### v0.22.0 to v0.23.0
+### v0.22.0 para v0.23.0
-Upgrade your Twenty instance to use v0.23.0 image
+Atualize sua instância do Twenty para usar a imagem v0.23.0
-Run the following commands:
+Execute os seguintes comandos:
```
yarn database:migrate:prod
yarn command:prod upgrade-0.23
```
-The `yarn database:migrate:prod` command will apply the migrations to the Database.
-The `yarn command:prod upgrade-0.23` takes care of the data migration, including transferring activities to tasks/notes.
+O comando `yarn database:migrate:prod` aplicará as migrações ao Banco de Dados.
+O `yarn command:prod upgrade-0.23` cuida da migração de dados, incluindo a transferência de atividades para tarefas/notas.
-### v0.21.0 to v0.22.0
+### v0.21.0 para v0.22.0
-Upgrade your Twenty instance to use v0.22.0 image
+Atualize sua instância do Twenty para usar a imagem v0.22.0
-Run the following commands:
+Execute os seguintes comandos:
```
yarn database:migrate:prod
@@ -376,6 +376,6 @@ yarn command:prod workspace:sync-metadata -f
yarn command:prod upgrade-0.22
```
-The `yarn database:migrate:prod` command will apply the migrations to the Database.
-The `yarn command:prod workspace:sync-metadata -f` command will sync the definition of standard objects to the metadata tables and apply to required migrations to existing workspaces.
-The `yarn command:prod upgrade-0.22` command will apply specific data transformations to adapt to the new object defaultRequestInstrumentationOptions.
+O comando `yarn database:migrate:prod` aplicará as migrações ao Banco de Dados.
+O comando `yarn command:prod workspace:sync-metadata -f` sincronizará a definição de objetos padrão com as tabelas de metadados e aplicará as migrações necessárias aos espaços de trabalho existentes.
+O comando `yarn command:prod upgrade-0.22` aplicará transformações de dados específicas para se adaptar às novas opções padrão de requestInstrumentationOptions do objeto.
diff --git a/packages/twenty-docs/l/pt/developers/self-host/self-host.mdx b/packages/twenty-docs/l/pt/developers/self-host/self-host.mdx
index c54e695c6f..88cb531b15 100644
--- a/packages/twenty-docs/l/pt/developers/self-host/self-host.mdx
+++ b/packages/twenty-docs/l/pt/developers/self-host/self-host.mdx
@@ -1,30 +1,30 @@
---
-title: Self-Host
-description: Deploy and manage Twenty on your own infrastructure.
+title: Auto-hospedagem
+description: Implante e gerencie o Twenty na sua própria infraestrutura.
---
-
+
-## Overview
+## Visão geral
-Twenty can be self-hosted on your own infrastructure, giving you full control over your data and deployment.
+O Twenty pode ser auto-hospedado na sua própria infraestrutura, oferecendo controle total sobre seus dados e a implantação.
-## Why Self-Host?
+## Por que auto-hospedar?
-* **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
+* **Propriedade dos dados**: Mantenha todos os dados de CRM nos seus próprios servidores
+* **Conformidade**: Atenda aos requisitos regulatórios de residência de dados
+* **Personalização**: Acesso total para modificar e estender a plataforma
-## Getting Started
+## Primeiros passos
- Quick setup with Docker
+ Configuração rápida com Docker
-
- Deploy on AWS, GCP, or Azure
+
+ Implante na AWS, GCP ou Azure
diff --git a/packages/twenty-docs/l/pt/navigation.json b/packages/twenty-docs/l/pt/navigation.json
index 8096fbf4ac..4cbd9ed774 100644
--- a/packages/twenty-docs/l/pt/navigation.json
+++ b/packages/twenty-docs/l/pt/navigation.json
@@ -15,7 +15,7 @@
}
},
"dataModel": {
- "label": "Data Model",
+ "label": "Modelo de dados",
"groups": {
"dataModelCapabilities": {
"label": "Capabilities"
@@ -48,7 +48,7 @@
}
},
"workflows": {
- "label": "Workflows",
+ "label": "Fluxos de trabalho",
"groups": {
"workflowsCapabilities": {
"label": "Capabilities"
@@ -66,14 +66,14 @@
"label": "Advanced Configurations"
},
"needMoreHelp": {
- "label": "Need More Help"
+ "label": "Precisa de mais ajuda"
}
}
}
}
},
"ai": {
- "label": "AI",
+ "label": "IA",
"groups": {
"aiCapabilities": {
"label": "Capabilities"
@@ -84,7 +84,7 @@
}
},
"viewsPipelines": {
- "label": "Views & Pipelines",
+ "label": "Visualizações e pipelines",
"groups": {
"viewsPipelinesCapabilities": {
"label": "Capabilities"
@@ -95,7 +95,7 @@
}
},
"dashboards": {
- "label": "Dashboards",
+ "label": "Painéis",
"groups": {
"dashboardsCapabilities": {
"label": "Capabilities"
@@ -117,7 +117,7 @@
}
},
"billing": {
- "label": "Billing",
+ "label": "Faturação",
"groups": {
"billingCapabilities": {
"label": "Capabilities"
@@ -128,7 +128,7 @@
}
},
"settings": {
- "label": "Settings",
+ "label": "Configurações",
"groups": {
"settingsCapabilities": {
"label": "Capabilities"
@@ -141,10 +141,10 @@
}
},
"developers": {
- "label": "Developers",
+ "label": "Programadores",
"groups": {
"developersGroup": {
- "label": "Developers"
+ "label": "Programadores"
},
"extend": {
"label": "Extend",
@@ -169,29 +169,29 @@
"label": "Capabilities",
"groups": {
"frontendDevelopment": {
- "label": "Frontend Development",
+ "label": "Desenvolvimento Frontend",
"groups": {
"twentyUi": {
"label": "Twenty UI",
"groups": {
"display": {
- "label": "Display"
+ "label": "Exibir"
},
"feedback": {
"label": "Feedback"
},
"input": {
- "label": "Input"
+ "label": "Entrada"
},
"navigation": {
- "label": "Navigation"
+ "label": "Navegação"
}
}
}
}
},
"backendDevelopment": {
- "label": "Backend Development"
+ "label": "Desenvolvimento Backend"
}
}
}
diff --git a/packages/twenty-docs/l/pt/twenty-ui/display/app-tooltip.mdx b/packages/twenty-docs/l/pt/twenty-ui/display/app-tooltip.mdx
index 4e620eedc7..19a758d688 100644
--- a/packages/twenty-docs/l/pt/twenty-ui/display/app-tooltip.mdx
+++ b/packages/twenty-docs/l/pt/twenty-ui/display/app-tooltip.mdx
@@ -1,16 +1,16 @@
---
-title: App Tooltip
+title: Dica do Aplicativo
image: /images/user-guide/tips/light-bulb.png
---
-
+
-A brief message that displays additional information when a user interacts with an element.
+Uma mensagem breve que exibe informações adicionais quando um usuário interage com um elemento.
-
+
```jsx
import { AppTooltip } from "@/ui/display/tooltip/AppTooltip";
@@ -37,27 +37,27 @@ A brief message that displays additional information when a user interacts with
```
-
- | Props | Type | Description |
- | ---------------- | ---------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
- | className | string | Optional CSS class for additional styling |
- | anchorSelect | CSS selector | Selector for the tooltip anchor (the element that triggers the tooltip) |
- | content | string | The content you want to display within the tooltip |
- | delayHide | number | The delay in seconds before hiding the tooltip after the cursor leaves the anchor |
- | offset | number | The offset in pixels for positioning the tooltip |
- | noArrow | boolean | If `true`, hides the arrow on the tooltip |
- | isOpen | boolean | If `true`, the tooltip is open by default |
- | place | `PlacesType` string from `react-tooltip` | Specifies the placement of the tooltip. Values include `bottom`, `left`, `right`, `top`, `top-start`, `top-end`, `right-start`, `right-end`, `bottom-start`, `bottom-end`, `left-start`, and `left-end` |
- | positionStrategy | `PositionStrategy` string from `react-tooltip` | Position strategy for the tooltip. Has two values: `absolute` and `fixed` |
+
+ | Propriedades | Tipo | Descrição |
+ | ---------------- | -------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+ | className | string | Classe CSS opcional para estilização adicional. |
+ | anchorSelect | Seleção CSS | Seletor para o âncora da dica (o elemento que aciona a dica) |
+ | conteúdo | string | O conteúdo que deseja exibir na dica |
+ | delayHide | número | O atraso em segundos antes de ocultar a dica após o cursor deixar a âncora. |
+ | offset | número | O deslocamento em pixels para posicionar a dica. |
+ | noArrow | booleano | Se `true`, oculta a seta na dica. |
+ | isOpen | booleano | Se `true`, a dica está aberta por padrão. |
+ | local | string `PlacesType` de `react-tooltip` | Especifica o posicionamento da dica. Os valores incluem `bottom`, `left`, `right`, `top`, `top-start`, `top-end`, `right-start`, `right-end`, `bottom-start`, `bottom-end`, `left-start`, e `left-end`. |
+ | positionStrategy | string `PositionStrategy` de `react-tooltip` | Estratégia de posição para a dica. Possui dois valores: `absolute` e `fixed`. |
-## Overflowing Text with Tooltip
+## Texto Overflow com Dica
-Handles overflowing text and displays a tooltip when the text overflows.
+Lida com texto em excesso e exibe uma dica quando o texto transborda.
-
+
```jsx
import { OverflowingTextWithTooltip } from 'twenty-ui/display';
@@ -70,9 +70,9 @@ Handles overflowing text and displays a tooltip when the text overflows.
```
-
- | Props | Type | Description |
- | ----- | ------ | ------------------------------------------------------------ |
- | text | string | The content you want to display in the overflowing text area |
+
+ | Propriedades | Tipo | Descrição |
+ | ------------ | ------ | ------------------------------------------------------------- |
+ | texto | string | O conteúdo que você deseja exibir na área de texto excessivo. |
diff --git a/packages/twenty-docs/l/pt/twenty-ui/display/checkmark.mdx b/packages/twenty-docs/l/pt/twenty-ui/display/checkmark.mdx
index ef84d5c2d5..ba86290197 100644
--- a/packages/twenty-docs/l/pt/twenty-ui/display/checkmark.mdx
+++ b/packages/twenty-docs/l/pt/twenty-ui/display/checkmark.mdx
@@ -1,16 +1,16 @@
---
-title: Checkmark
+title: Marca de seleção
image: /images/user-guide/tasks/tasks_header.png
---
-
+
-Represents a successful or completed action.
+Representa uma ação bem-sucedida ou concluída.
-
+
```jsx
import { Checkmark } from 'twenty-ui/display';
@@ -20,17 +20,17 @@ Represents a successful or completed action.
```
-
- Extends `React.ComponentPropsWithoutRef<'div'>` and accepts all the props of a regular `div` element.
+
+ Estende `React.ComponentPropsWithoutRef<'div'>` e aceita todas as propriedades de um elemento `div` regular.
-## Animated Checkmark
+## Marca de Seleção Animada
-Represents a checkmark icon with the added feature of animation.
+Representa um ícone de marca de seleção com o recurso adicional de animação.
-
+
```jsx
import { AnimatedCheckmark } from 'twenty-ui/display';
@@ -47,12 +47,12 @@ Represents a checkmark icon with the added feature of animation.
```
-
- | Props | Type | Description | Default |
- | ----------- | ------- | ------------------------------------------- | ----------- |
- | isAnimating | boolean | Controls whether the checkmark is animating | false |
- | color | string | Color of the checkmark | |
- | duration | number | The duration of the animation in seconds | 0.5 seconds |
- | size | number | The size of the checkmark | 28 pixels |
+
+ | Propriedades | Tipo | Descrição | Padrão |
+ | ------------ | -------- | -------------------------------------------- | ------------ |
+ | isAnimating | booleano | Controla se a marca de seleção está animando | falso |
+ | cor | string | Cor da marca de seleção | |
+ | duração | número | A duração da animação em segundos | 0,5 segundos |
+ | tamanho | número | O tamanho da marca de seleção | 28 pixels |
diff --git a/packages/twenty-docs/l/pt/twenty-ui/display/chip.mdx b/packages/twenty-docs/l/pt/twenty-ui/display/chip.mdx
index ded2fd1c77..373584acf1 100644
--- a/packages/twenty-docs/l/pt/twenty-ui/display/chip.mdx
+++ b/packages/twenty-docs/l/pt/twenty-ui/display/chip.mdx
@@ -4,13 +4,13 @@ image: /images/user-guide/github/github-header.png
---
-
+
-A visual element that you can use as a clickable or non-clickable container with a label, optional left and right components, and various styling options to display labels and tags.
+Um elemento visual que você pode usar como um contêiner clicável ou não clicável com um rótulo, componentes opcionais à esquerda e à direita e várias opções de estilo para exibir rótulos e tags.
-
+
```jsx
import { Chip } from 'twenty-ui/components';
@@ -18,7 +18,7 @@ A visual element that you can use as a clickable or non-clickable container with
return (
-
- | Props | Type | Description |
- | ------------ | ------------------------ | -------------------------------------------------------------------------------------------- |
- | linkToEntity | string | The link to the entity |
- | entityId | string | The unique identifier for the entity |
- | name | string | The name of the entity |
- | pictureUrl | string | s picture", |
- | avatarType | Avatar Type | The type of avatar you want to display. Has two options: `rounded` and `squared` |
- | variant | `EntityChipVariant` enum | Variant of the entity chip you want to display. Has two options: `regular` and `transparent` |
- | LeftIcon | IconComponent | A React component representing an icon. Displayed on the left side of the chip |
+
+ | Propriedades | Tipo | Descrição |
+ | ------------ | ------------------------ | ------------------------------------------------------------------------------------------------ |
+ | linkToEntity | string | O link para a entidade |
+ | entityId | string | O identificador único para a entidade |
+ | nome | string | O nome da entidade |
+ | pictureUrl | string | s imagem", |
+ | avatarType | Tipo de Avatar | O tipo de avatar que você deseja exibir. Tem duas opções: `arredondado` e `quadrado` |
+ | variant | Enum `EntityChipVariant` | Variante do chip de entidade que você deseja exibir. Tem duas opções: `regular` e `transparente` |
+ | LeftIcon | IconComponent | Um componente React representando um ícone. Exibido no lado esquerdo do chip |
-## Examples
+## Exemplos
-### Transparent Disabled Chip
+### Chip Transparente Desativado
```jsx
import { Chip } from 'twenty-ui/components';
@@ -57,7 +57,7 @@ export const MyComponent = () => {
return (
{
-### Disabled Chip with Tooltip
+### Chip Desativado com Tooltip
```jsx
import { Chip } from "twenty-ui/components";
@@ -82,7 +82,7 @@ export const MyComponent = () => {
return (
{
};
```
-## Entity Chip
+## Chip de Entidade
-A Chip-like element to display information about an entity.
+Um elemento semelhante a um chip para exibir informações sobre uma entidade.
-
+
```jsx
import { BrowserRouter as Router } from 'react-router-dom';
import { IconTwentyStar } from 'twenty-ui/display';
@@ -112,7 +112,7 @@ A Chip-like element to display information about an entity.
-
- | Props | Type | Description |
- | ------------ | ------------------------ | -------------------------------------------------------------------------------------------- |
- | linkToEntity | string | The link to the entity |
- | entityId | string | The unique identifier for the entity |
- | name | string | The name of the entity |
- | pictureUrl | string | s picture", |
- | avatarType | Avatar Type | The type of avatar you want to display. Has two options: `rounded` and `squared` |
- | variant | `EntityChipVariant` enum | Variant of the entity chip you want to display. Has two options: `regular` and `transparent` |
- | LeftIcon | IconComponent | A React component representing an icon. Displayed on the left side of the chip |
+
+ | Propriedades | Tipo | Descrição |
+ | ------------ | ------------------------ | ------------------------------------------------------------------------------------------------ |
+ | linkToEntity | string | O link para a entidade |
+ | entityId | string | O identificador único para a entidade |
+ | nome | string | O nome da entidade |
+ | pictureUrl | string | s imagem", |
+ | avatarType | Tipo de Avatar | O tipo de avatar que você deseja exibir. Tem duas opções: `arredondado` e `quadrado` |
+ | variant | Enum `EntityChipVariant` | Variante do chip de entidade que você deseja exibir. Tem duas opções: `regular` e `transparente` |
+ | LeftIcon | IconComponent | Um componente React representando um ícone. Exibido no lado esquerdo do chip |
diff --git a/packages/twenty-docs/l/pt/twenty-ui/display/icons.mdx b/packages/twenty-docs/l/pt/twenty-ui/display/icons.mdx
index 2d73154c8d..1386a5ea39 100644
--- a/packages/twenty-docs/l/pt/twenty-ui/display/icons.mdx
+++ b/packages/twenty-docs/l/pt/twenty-ui/display/icons.mdx
@@ -1,20 +1,20 @@
---
-title: Icons
+title: Ícones
image: /images/user-guide/objects/objects.png
---
-
+
-A list of icons used throughout our app.
+Uma lista de ícones usados em todo o nosso aplicativo.
-## Tabler Icons
+## Ícones Tabler
-We use Tabler icons for React throughout the app.
+Usamos ícones Tabler para React em todo o aplicativo.
-
+
```
@@ -22,8 +22,8 @@ We use Tabler icons for React throughout the app.
```
-
- You can import each icon as a component. Here's an example:
+
+ Você pode importar cada ícone como um componente. Aqui está um exemplo:
@@ -36,25 +36,25 @@ We use Tabler icons for React throughout the app.
```
-
- | Props | Type | Description | Default |
- | ------ | ------ | ------------------------------------------ | ------------ |
- | size | number | The height and width of the icon in pixels | 24 |
- | color | string | The color of the icons | currentColor |
- | stroke | number | The stroke width of the icon in pixels | 2 |
+
+ | Propriedades | Tipo | Descrição | Padrão |
+ | ------------ | ------ | --------------------------------------- | -------- |
+ | tamanho | número | A altura e a largura do ícone em pixels | 24 |
+ | cor | string | A cor dos ícones | corAtual |
+ | traço | número | A largura do traço do ícone em pixels | 2 |
-## Custom Icons
+## Ícones Personalizados
-In addition to Tabler icons, the app also uses some custom icons.
+Além dos ícones Tabler, o aplicativo também usa alguns ícones personalizados.
-### Icon Address Book
+### Ícone Livro de Endereços
-Displays an address book icon.
+Exibe um ícone de livro de endereços.
-
+
```jsx
import { IconAddressBook } from 'twenty-ui/display';
@@ -64,10 +64,10 @@ Displays an address book icon.
```
-
- | Props | Type | Description | Default |
- | ------ | ------ | ------------------------------------------ | ------- |
- | size | number | The height and width of the icon in pixels | 24 |
- | stroke | number | The stroke width of the icon in pixels | 2 |
+
+ | Propriedades | Tipo | Descrição | Padrão |
+ | ------------ | ------ | --------------------------------------- | ------ |
+ | tamanho | número | A altura e a largura do ícone em pixels | 24 |
+ | traço | número | A largura do traço do ícone em pixels | 2 |
diff --git a/packages/twenty-docs/l/pt/twenty-ui/display/soon-pill.mdx b/packages/twenty-docs/l/pt/twenty-ui/display/soon-pill.mdx
index 56ace0bae7..982e36ac47 100644
--- a/packages/twenty-docs/l/pt/twenty-ui/display/soon-pill.mdx
+++ b/packages/twenty-docs/l/pt/twenty-ui/display/soon-pill.mdx
@@ -1,13 +1,13 @@
---
-title: Soon Pill
+title: Selo Em breve
image: /images/user-guide/kanban-views/kanban.png
---
-
+
-A small badge or "pill" to indicate something is coming soon.
+Uma pequena insígnia ou "pílula" para indicar que algo está chegando em breve.
```jsx
import { SoonPill } from "@/ui/display/pill/components/SoonPill";
diff --git a/packages/twenty-docs/l/pt/twenty-ui/display/tag.mdx b/packages/twenty-docs/l/pt/twenty-ui/display/tag.mdx
index a2226c88d4..5bc5e54521 100644
--- a/packages/twenty-docs/l/pt/twenty-ui/display/tag.mdx
+++ b/packages/twenty-docs/l/pt/twenty-ui/display/tag.mdx
@@ -1,16 +1,16 @@
---
-title: Tag
+title: Etiqueta
image: /images/user-guide/table-views/table.png
---
-
+
-Component to visually categorize or label content.
+Componente para categorizar visualmente ou rotular conteúdo.
-
+
```jsx
import { Tag } from "@/ui/display/tag/components/Tag";
@@ -27,12 +27,12 @@ Component to visually categorize or label content.
```
-
- | Props | Type | Description |
- | --------- | -------- | --------------------------------------------------------------------------------------------------------------------------- |
- | className | string | Optional name for additional styling |
- | color | string | Color of the tag. Options include: `green`, `turquoise`, `sky`, `blue`, `purple`, `pink`, `red`, `orange`, `yellow`, `gray` |
- | text | string | The content of the tag |
- | onClick | function | Optional function called when a user clicks on the tag |
+
+ | Propriedades | Tipo | Descrição |
+ | ------------ | ------ | --------------------------------------------------------------------------------------------------------------------------------- |
+ | className | string | Nome opcional para estilização adicional |
+ | cor | string | Cor da etiqueta. As opções incluem: `verde`, `turquesa`, `céu`, `azul`, `roxo`, `rosa`, `vermelho`, `laranja`, `amarelo`, `cinza` |
+ | texto | string | O conteúdo da tag |
+ | aoClicar | função | Função opcional chamada quando um usuário clica na etiqueta |
diff --git a/packages/twenty-docs/l/pt/twenty-ui/input.mdx b/packages/twenty-docs/l/pt/twenty-ui/input.mdx
index 2da701caf5..70eff960cc 100644
--- a/packages/twenty-docs/l/pt/twenty-ui/input.mdx
+++ b/packages/twenty-docs/l/pt/twenty-ui/input.mdx
@@ -1,8 +1,8 @@
---
-title: Input
+title: Entrada
image: /images/user-guide/tips/light-bulb.png
---
-
+
diff --git a/packages/twenty-docs/l/pt/twenty-ui/input/block-editor.mdx b/packages/twenty-docs/l/pt/twenty-ui/input/block-editor.mdx
index 9943fa5f5d..6dfad08218 100644
--- a/packages/twenty-docs/l/pt/twenty-ui/input/block-editor.mdx
+++ b/packages/twenty-docs/l/pt/twenty-ui/input/block-editor.mdx
@@ -1,16 +1,16 @@
---
-title: Block Editor
+title: Editor de Blocos
image: /images/user-guide/api/api.png
---
-
+
-Uses a block-based rich text editor from [BlockNote](https://www.blocknotejs.org/) to allow users to edit and view blocks of content.
+Usa um editor de texto rico baseado em blocos do [BlockNote](https://www.blocknotejs.org/) para permitir que os usuários editem e vejam blocos de conteúdo.
-
+
```jsx
import { useBlockNote } from "@blocknote/react";
import { BlockEditor } from "@/ui/input/editor/components/BlockEditor";
@@ -23,9 +23,9 @@ Uses a block-based rich text editor from [BlockNote](https://www.blocknotejs.org
```
-
- | Props | Type | Description |
- | ------ | ----------------- | ------------------------------------------ |
- | editor | `BlockNoteEditor` | The block editor instance or configuration |
+
+ | Propriedades | Tipo | Descrição |
+ | ------------ | ----------------- | ----------------------------------------------- |
+ | editor | `BlockNoteEditor` | A instância ou configuração do editor de blocos |
diff --git a/packages/twenty-docs/l/pt/twenty-ui/input/buttons.mdx b/packages/twenty-docs/l/pt/twenty-ui/input/buttons.mdx
index 1c53eb1816..a7fd0ed75a 100644
--- a/packages/twenty-docs/l/pt/twenty-ui/input/buttons.mdx
+++ b/packages/twenty-docs/l/pt/twenty-ui/input/buttons.mdx
@@ -1,18 +1,18 @@
---
-title: Buttons
+title: Botões
image: /images/user-guide/views/filter.png
---
-
+
-A list of buttons and button groups used throughout the app.
+Uma lista de botões e grupos de botões usados em todo o aplicativo.
-## Button
+## Botão
-
+
```jsx
import { Button } from "@/ui/input/button/components/Button";
@@ -37,28 +37,28 @@ A list of buttons and button groups used throughout the app.
```
-
- | Props | Type | Description |
- | --------- | --------------------- | -------------------------------------------------------------------------------------------------------------------- |
- | className | string | Optional class name for additional styling |
- | Icon | `React.ComponentType` | An optional icon component that's displayed within the button |
- | title | string | The text content of the button |
- | fullWidth | boolean | Defines whether the button should span the whole width of its container |
- | variant | string | The visual style variant of the button. Options include `primary`, `secondary`, and `tertiary` |
- | size | string | The size of the button. Has two options: `small` and `medium` |
- | position | string | The position of the button in relation to its siblings. Options include: `standalone`, `left`, `right`, and `middle` |
- | accent | string | The accent color of the button. Options include: `default`, `blue`, and `danger` |
- | soon | boolean | Indicates if the button is marked as "soon" (such as for upcoming features) |
- | disabled | boolean | Specifies whether the button is disabled or not |
- | focus | boolean | Determines if the button has focus |
- | onClick | function | A callback function that triggers when the user clicks on the button |
+
+ | Propriedades | Tipo | Descrição |
+ | --------------- | --------------------- | ---------------------------------------------------------------------------------------------------------------- |
+ | className | string | Nome de classe opcional para estilo adicional |
+ | Ícone | `React.ComponentType` | Um componente de ícone opcional que é exibido dentro do botão |
+ | título | string | O conteúdo de texto do botão |
+ | larguraCompleta | booleano | Define se o botão deve ocupar toda a largura do seu container |
+ | variante | string | A variante de estilo visual do botão. As opções incluem `primary`, `secondary` e `tertiary` |
+ | tamanho | string | O tamanho do botão. Tem duas opções: `pequeno` e `médio` |
+ | posição | string | A posição do botão em relação aos seus irmãos. As opções incluem: `independente`, `esquerda`, `direita` e `meio` |
+ | destaque | string | A cor de destaque do botão. As opções incluem: `padrão`, `azul` e `perigo` |
+ | em breve | booleano | Indica se o botão está marcado como "em breve" (como para recursos futuros) |
+ | desativado | booleano | Especifica se o botão está desativado ou não |
+ | foco | booleano | Determina se o botão está em foco |
+ | aoClicar | função | Uma função de callback que é acionada quando o usuário clica no botão |
-## Button Group
+## Grupo de Botões
-
+
```jsx
import { Button } from "@/ui/input/button/components/Button";
import { ButtonGroup } from "@/ui/input/button/components/ButtonGroup";
@@ -115,21 +115,21 @@ A list of buttons and button groups used throughout the app.
```
-
- | Props | Type | Description |
- | --------- | --------- | ---------------------------------------------------------------------------------------------------------------- |
- | variant | string | The visual style variant of the buttons within the group. Options include `primary`, `secondary`, and `tertiary` |
- | size | string | The size of the buttons within the group. Has two options: `medium` and `small` |
- | accent | string | The accent color of the buttons within the group. Options include `default`, `blue` and `danger` |
- | className | string | Optional class name for additional styling |
- | children | ReactNode | An array of React elements representing the individual buttons within the group |
+
+ | Propriedades | Tipo | Descrição |
+ | ------------ | --------- | ------------------------------------------------------------------------------------------------------------- |
+ | variante | string | A variante de estilo visual dos botões dentro do grupo. As opções incluem `primary`, `secondary` e `tertiary` |
+ | tamanho | string | O tamanho dos botões dentro do grupo. Tem duas opções: `médio` e `pequeno` |
+ | destaque | string | A cor de destaque dos botões dentro do grupo. As opções incluem `padrão`, `azul` e `perigo` |
+ | className | string | Nome de classe opcional para estilo adicional |
+ | filhos | ReactNode | Um array de elementos React que representam os botões individuais no grupo |
-## Floating Button
+## Botão Flutuante
-
+
```jsx
import { FloatingButton } from "@/ui/input/button/components/FloatingButton";
import { IconSearch } from "@tabler/icons-react";
@@ -152,25 +152,25 @@ A list of buttons and button groups used throughout the app.
```
-
- | Props | Type | Description |
- | ----------- | --------------------- | ---------------------------------------------------------------------------------------------------------------- |
- | className | string | Optional name for additional styling |
- | Icon | `React.ComponentType` | An optional icon component that's displayed within the button |
- | title | string | The text content of the button |
- | size | string | The size of the button. Has two options: `small` and `medium` |
- | position | string | The position of the button in relation to its siblings. Options include: `standalone`, `left`, `middle`, `right` |
- | applyShadow | boolean | Determines whether to apply shadow to a button |
- | applyBlur | boolean | Determines whether to apply a blur effect to the button |
- | disabled | boolean | Determines whether the button is disabled |
- | focus | boolean | Indicates if the button has focus |
+
+ | Propriedades | Tipo | Descrição |
+ | --------------- | --------------------- | --------------------------------------------------------------------------------------------------------------- |
+ | className | string | Nome opcional para estilo adicional |
+ | Ícone | `React.ComponentType` | Um componente de ícone opcional que é exibido dentro do botão |
+ | título | string | O conteúdo de texto do botão |
+ | tamanho | string | O tamanho do botão. Tem duas opções: `pequeno` e `médio` |
+ | posição | string | A posição do botão em relação aos seus irmãos. As opções incluem: `independente`, `esquerda`, `meio`, `direita` |
+ | aplicarSombra | booleano | Determina se deve aplicar sombra a um botão |
+ | aplicarDesfoque | booleano | Determina se deve aplicar um efeito de desfoque ao botão |
+ | desativado | booleano | Determina se o botão está desativado |
+ | foco | booleano | Indica se o botão está em foco |
-## Floating Button Group
+## Grupo de Botões Flutuantes
-
+
```jsx
import { FloatingButton } from "@/ui/input/button/components/FloatingButton";
import { FloatingButtonGroup } from "@/ui/input/button/components/FloatingButtonGroup";
@@ -206,18 +206,18 @@ A list of buttons and button groups used throughout the app.
```
-
- | Props | Type | Description | Default |
- | -------- | --------- | ------------------------------------------------------------------------------- | ------- |
- | size | string | The size of the button. Has two options: `small` and `medium` | small |
- | children | ReactNode | An array of React elements representing the individual buttons within the group | |
+
+ | Propriedades | Tipo | Descrição | Padrão |
+ | ------------ | --------- | -------------------------------------------------------------------------- | ------- |
+ | tamanho | string | O tamanho do botão. Tem duas opções: `pequeno` e `médio` | pequeno |
+ | filhos | ReactNode | Um array de elementos React que representam os botões individuais no grupo | |
-## Floating Icon Button
+## Botão de Ícone Flutuante
-
+
```jsx
import { FloatingIconButton } from "@/ui/input/button/components/FloatingIconButton";
import { IconSearch } from "@tabler/icons-react";
@@ -241,26 +241,26 @@ A list of buttons and button groups used throughout the app.
```
-
- | Props | Type | Description |
- | ----------- | --------------------- | -------------------------------------------------------------------------------------------------------------------- |
- | className | string | Optional name for additional styling |
- | Icon | `React.ComponentType` | An optional icon component that's displayed within the button |
- | size | string | The size of the button. Has two options: `small` and `medium` |
- | position | string | The position of the button in relation to its siblings. Options include: `standalone`, `left`, `right`, and `middle` |
- | applyShadow | boolean | Determines whether to apply shadow to a button |
- | applyBlur | boolean | Determines whether to apply a blur effect to the button |
- | disabled | boolean | Determines whether the button is disabled |
- | focus | boolean | Indicates if the button has focus |
- | onClick | function | A callback function that triggers when the user clicks on the button |
- | isActive | boolean | Determines if the button is in an active state |
+
+ | Propriedades | Tipo | Descrição |
+ | --------------- | --------------------- | ---------------------------------------------------------------------------------------------------------------- |
+ | className | string | Nome opcional para estilo adicional |
+ | Ícone | `React.ComponentType` | Um componente de ícone opcional que é exibido dentro do botão |
+ | tamanho | string | O tamanho do botão. Tem duas opções: `pequeno` e `médio` |
+ | posição | string | A posição do botão em relação aos seus irmãos. As opções incluem: `independente`, `esquerda`, `direita` e `meio` |
+ | aplicarSombra | booleano | Determina se deve aplicar sombra a um botão |
+ | aplicarDesfoque | booleano | Determina se deve aplicar um efeito de desfoque ao botão |
+ | desativado | booleano | Determina se o botão está desativado |
+ | foco | booleano | Indica se o botão está em foco |
+ | aoClicar | função | Uma função de callback que é acionada quando o usuário clica no botão |
+ | estáAtivo | booleano | Determina se o botão está em um estado ativo |
-## Floating Icon Button Group
+## Grupo de Botões de Ícone Flutuantes
-
+
```jsx
import { FloatingIconButtonGroup } from "@/ui/input/button/components/FloatingIconButtonGroup";
import { IconClipboardText, IconCheckbox } from "@tabler/icons-react";
@@ -290,19 +290,19 @@ A list of buttons and button groups used throughout the app.
```
-
- | Props | Type | Description |
- | ----------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
- | className | string | Optional name for additional styling |
- | size | string | The size of the button. Has two options: `small` and `medium` |
- | iconButtons | array | An array of objects, each representing an icon button in the group. Each object should include the icon component you want to display in the button, the function you want to call when a user clicks on the button, and whether the button should be active or not. |
+
+ | Propriedades | Tipo | Descrição |
+ | ------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+ | className | string | Nome opcional para estilo adicional |
+ | tamanho | string | O tamanho do botão. Tem duas opções: `pequeno` e `médio` |
+ | botõesDeÍcone | array | Um array de objetos, cada um representando um botão de ícone no grupo. Cada objeto deve incluir o componente de ícone que você deseja exibir no botão, a função a ser chamada quando um usuário clica no botão, e se o botão deve estar ativo ou não. |
-## Light Button
+## Botão Claro
-
+
```jsx
import { LightButton } from "@/ui/input/button/components/LightButton";
@@ -321,24 +321,24 @@ A list of buttons and button groups used throughout the app.
```
-
- | Props | Type | Description |
- | --------- | ----------------- | --------------------------------------------------------------------------- |
- | className | string | Optional name for additional styling |
- | icon | `React.ReactNode` | The icon you want to display in the button |
- | title | string | The text content of the button |
- | accent | string | The accent color of the button. Options include: `secondary` and `tertiary` |
- | active | boolean | Determines if the button is in an active state |
- | disabled | boolean | Determines whether the button is disabled |
- | focus | boolean | Indicates if the button has focus |
- | onClick | function | A callback function that triggers when the user clicks on the button |
+
+ | Propriedades | Tipo | Descrição |
+ | ------------ | ----------------- | ---------------------------------------------------------------------- |
+ | className | string | Nome opcional para estilização adicional. |
+ | ícone | `React.ReactNode` | O ícone que você deseja exibir no botão |
+ | título | string | O conteúdo de texto do botão |
+ | destaque | string | A cor de destaque do botão. Opções incluem: `secundário` e `terciário` |
+ | ativo | booleano | Determina se o botão está em um estado ativo |
+ | desativado | booleano | Determina se o botão está desativado |
+ | foco | booleano | Indica se o botão está em foco |
+ | onClick | função | Uma função de callback que é acionada quando o usuário clica no botão |
-## Light Icon Button
+## Botão de Ícone Claro
-
+
```jsx
import { LightIconButton } from "@/ui/input/button/components/LightIconButton";
import { IconSearch } from "@tabler/icons-react";
@@ -362,26 +362,26 @@ A list of buttons and button groups used throughout the app.
```
-
- | Props | Type | Description |
- | --------- | --------------------- | --------------------------------------------------------------------------- |
- | className | string | Optional name for additional styling |
- | testId | string | Test identifier for the button |
- | Icon | `React.ComponentType` | An optional icon component that's displayed within the button |
- | title | string | The text content of the button |
- | size | string | The size of the button. Has two options: `small` and `medium` |
- | accent | string | The accent color of the button. Options include: `secondary` and `tertiary` |
- | active | boolean | Determines if the button is in an active state |
- | disabled | boolean | Determines whether the button is disabled |
- | focus | boolean | Indicates if the button has focus |
- | onClick | function | A callback function that triggers when the user clicks on the button |
+
+ | Propriedades | Tipo | Descrição |
+ | ------------ | --------------------- | ---------------------------------------------------------------------- |
+ | className | string | Nome opcional para estilização adicional. |
+ | testeId | string | Identificador de teste para o botão |
+ | Ícone | `React.ComponentType` | Um componente de ícone opcional que é exibido dentro do botão |
+ | título | string | O conteúdo de texto do botão |
+ | tamanho | string | O tamanho do botão. Possui duas opções: `pequeno` e `médio` |
+ | destaque | string | A cor de destaque do botão. Opções incluem: `secundário` e `terciário` |
+ | ativo | booleano | Determina se o botão está em um estado ativo |
+ | desativado | booleano | Determina se o botão está desativado |
+ | foco | booleano | Indica se o botão está em foco |
+ | aoClicar | função | Uma função de callback que é acionada quando o usuário clica no botão |
-## Main Button
+## Botão Principal
-
+
```jsx
import { MainButton } from "@/ui/input/button/components/MainButton";
import { IconCheckbox } from "@tabler/icons-react";
@@ -400,22 +400,22 @@ A list of buttons and button groups used throughout the app.
```
-
- | Props | Type | Description |
- | -------------------- | -------------------------------- | --------------------------------------------------------------------------------- |
- | title | string | The text content of the button |
- | fullWidth | boolean | Defines whether the button should span the whole width of its container |
- | variant | string | The visual style variant of the button. Options include `primary` and `secondary` |
- | soon | boolean | Indicates if the button is marked as "soon" (such as for upcoming features) |
- | Icon | `React.ComponentType` | An optional icon component that's displayed within the button |
- | React `button` props | `React.ComponentProps<'button'>` | All standard HTML button props are supported |
+
+ | Propriedades | Tipo | Descrição |
+ | -------------------- | -------------------------------- | ------------------------------------------------------------------------------- |
+ | título | string | O conteúdo de texto do botão |
+ | larguraCompleta | booleano | Define se o botão deve ocupar toda a largura do seu container |
+ | variante | string | A variante de estilo visual do botão. As opções incluem `primary` e `secondary` |
+ | em breve | booleano | Indica se o botão está marcado como "em breve" (como para recursos futuros) |
+ | Ícone | `React.ComponentType` | Um componente de ícone opcional que é exibido dentro do botão |
+ | React `button` props | `React.ComponentProps<'button'>` | Todos os props padrão de botão HTML são suportados |
-## Rounded Icon Button
+## Botão de Ícone Arredondado
-
+
```jsx
import { RoundedIconButton } from "@/ui/input/button/components/RoundedIconButton";
import { IconSearch } from "@tabler/icons-react";
@@ -430,10 +430,10 @@ A list of buttons and button groups used throughout the app.
```
-
- | Props | Type | Description |
- | -------------------- | ----------------------------------------------- | ----------- |
- | Icon | `React.ComponentType` | |
- | React `button` props | `React.ButtonHTMLAttributes` | |
+
+ | Propriedades | Tipo | Descrição |
+ | -------------------- | ----------------------------------------------- | --------- |
+ | Ícone | `React.ComponentType` | |
+ | React `button` props | `React.ButtonHTMLAttributes` | |
diff --git a/packages/twenty-docs/l/pt/twenty-ui/input/checkbox.mdx b/packages/twenty-docs/l/pt/twenty-ui/input/checkbox.mdx
index b25eeba052..09c583a9fb 100644
--- a/packages/twenty-docs/l/pt/twenty-ui/input/checkbox.mdx
+++ b/packages/twenty-docs/l/pt/twenty-ui/input/checkbox.mdx
@@ -1,16 +1,16 @@
---
-title: Checkbox
+title: Caixa de Seleção
image: /images/user-guide/tasks/tasks_header.png
---
-
+
-Used when a user needs to select multiple values from several options.
+Usado quando um usuário precisa selecionar vários valores entre várias opções.
-
+
```jsx
import { Checkbox } from "twenty-ui/display";
@@ -30,15 +30,15 @@ Used when a user needs to select multiple values from several options.
```
-
- | Props | Type | Description |
- | --------------- | -------- | -------------------------------------------------------------------------------------------- |
- | checked | boolean | Indicates whether the checkbox is checked |
- | indeterminate | boolean | Indicates whether the checkbox is in an indeterminate state (neither checked nor unchecked) |
- | onChange | function | The callback function you want to trigger when the checkbox state changes |
- | onCheckedChange | function | The callback function you want to trigger when the `checked` state changes |
- | variant | string | The visual style variant of the box. Options include: `primary`, `secondary`, and `tertiary` |
- | size | string | The size of the checkbox. Has two options: `small` and `large` |
- | shape | string | The shape of the checkbox. Has two options: `squared` and `rounded` |
+
+ | Propriedades | Tipo | Descrição |
+ | --------------- | -------- | ------------------------------------------------------------------------------------------------ |
+ | marcado | booleano | Indica se a caixa de seleção está selecionada |
+ | indeterminado | booleano | Indica se a caixa de seleção está em um estado indeterminado (nem selecionada nem desmarcada) |
+ | onChange | função | A função de retorno de chamada que você deseja acionar quando o estado da caixa de seleção mudar |
+ | onCheckedChange | função | A função de retorno de chamada que você deseja acionar quando o estado `selecionado` mudar |
+ | variante | string | A variante do estilo visual da caixa. As opções incluem: `primária`, `secundária` e `terciária` |
+ | tamanho | string | O tamanho da caixa de seleção. Tem duas opções: `pequena` e `grande` |
+ | forma | string | A forma da caixa de seleção. Tem duas opções: `quadrada` e `arredondada` |
diff --git a/packages/twenty-docs/l/pt/twenty-ui/input/color-scheme.mdx b/packages/twenty-docs/l/pt/twenty-ui/input/color-scheme.mdx
index 1b1505d481..7c8261ebce 100644
--- a/packages/twenty-docs/l/pt/twenty-ui/input/color-scheme.mdx
+++ b/packages/twenty-docs/l/pt/twenty-ui/input/color-scheme.mdx
@@ -1,18 +1,18 @@
---
-title: Color Scheme
+title: Esquema de Cores
image: /images/user-guide/fields/field.png
---
-
+
-## Color Scheme Card
+## Cartão de Esquema de Cores
-Represents different color schemes and is specially tailored for light and dark themes.
+Representa diferentes esquemas de cores e é especialmente adaptado para temas claros e escuros.
-
+
```jsx
import { ColorSchemeCard } from "twenty-ui/display";
@@ -27,21 +27,21 @@ Represents different color schemes and is specially tailored for light and dark
```
-
- | Props | Type | Description | Default |
- | ---------------- | --------------------------------------- | ----------------------------------------------------------------------- | ------- |
- | variant | string | The color scheme variant. Options include `Dark`, `Light`, and `System` | light |
- | selected | boolean | If `true`, displays a checkmark to indicate the selected color scheme | |
- | additional props | `React.ComponentPropsWithoutRef<'div'>` | Standard HTML `div` element props | |
+
+ | Propriedades | Tipo | Descrição | Padrão |
+ | ----------------------- | --------------------------------------- | ------------------------------------------------------------------------------- | ------ |
+ | variante | string | A variante do esquema de cores. As opções incluem `Escuro`, `Claro` e `Sistema` | claro |
+ | selecionado | booleano | If `true`, displays a checkmark to indicate the selected color scheme | |
+ | propriedades adicionais | `React.ComponentPropsWithoutRef<'div'>` | Propriedades padrão do elemento HTML `div` | |
-## Color Scheme Picker
+## Seletor de Esquema de Cores
-Allows users to choose between different color schemes.
+Permite que os usuários escolham entre diferentes esquemas de cores.
-
+
```jsx
import { ColorSchemePicker } from "twenty-ui/display";
@@ -54,10 +54,10 @@ Allows users to choose between different color schemes.
```
-
- | Props | Type | Description |
- | -------- | -------------- | ---------------------------------------------------------------------------- |
- | value | `Color Scheme` | The currently selected color scheme |
- | onChange | function | The callback function you want to trigger when a user selects a color scheme |
+
+ | Propriedades | Tipo | Descrição |
+ | ------------ | ------------------ | ---------------------------------------------------------------------------- |
+ | valor | `Esquema de Cores` | O esquema de cores atualmente selecionado |
+ | onChange | função | The callback function you want to trigger when a user selects a color scheme |
diff --git a/packages/twenty-docs/l/pt/twenty-ui/input/icon-picker.mdx b/packages/twenty-docs/l/pt/twenty-ui/input/icon-picker.mdx
index 59d269242e..a14bd8908e 100644
--- a/packages/twenty-docs/l/pt/twenty-ui/input/icon-picker.mdx
+++ b/packages/twenty-docs/l/pt/twenty-ui/input/icon-picker.mdx
@@ -1,16 +1,16 @@
---
-title: Icon Picker
+title: Seletor de Ícone
image: /images/user-guide/github/github-header.png
---
-
+
-A dropdown-based icon picker that allows users to select an icon from a list.
+Um seletor de ícones baseado em lista suspensa que permite aos usuários selecionar um ícone de uma lista.
-
+
```jsx
import { RecoilRoot } from "recoil";
import React, { useState } from "react";
@@ -38,15 +38,15 @@ A dropdown-based icon picker that allows users to select an icon from a list.
```
-
- | Props | Type | Description |
- | --------------- | -------- | ------------------------------------------------------------------------------------------------------------------------- |
- | disabled | boolean | Disables the icon picker if set to `true` |
- | onChange | function | The callback function triggered when the user selects an icon. It receives an object with `iconKey` and `Icon` properties |
- | selectedIconKey | string | The key of the initially selected icon |
- | onClickOutside | function | Callback function triggered when the user clicks outside the dropdown |
- | onClose | function | Callback function triggered when the dropdown is closed |
- | onOpen | function | Callback function triggered when the dropdown is opened |
- | variant | string | The visual style variant of the clickable icon. Options include: `primary`, `secondary`, and `tertiary` |
+
+ | Propriedades | Tipo | Descrição |
+ | --------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
+ | desativado | booleano | Desativa o seletor de ícones se definido como `true` |
+ | onChange | função | A função de retorno de chamada acionada quando o usuário seleciona um ícone. Ele recebe um objeto com as propriedades `iconKey` e `Icon` |
+ | selectedIconKey | string | A chave do ícone selecionado inicialmente |
+ | onClickOutside | função | Função de retorno de chamada acionada quando o usuário clica fora da lista suspensa |
+ | onClose | função | Função de retorno de chamada acionada quando a lista suspensa é fechada |
+ | onOpen | função | Função de retorno de chamada acionada quando a lista suspensa é aberta |
+ | variante | string | A variante de estilo visual do ícone clicável. As opções incluem: `primária`, `secundária` e `terciária` |
diff --git a/packages/twenty-docs/l/pt/twenty-ui/input/image-input.mdx b/packages/twenty-docs/l/pt/twenty-ui/input/image-input.mdx
index 0d563d7c37..c7f7c89b98 100644
--- a/packages/twenty-docs/l/pt/twenty-ui/input/image-input.mdx
+++ b/packages/twenty-docs/l/pt/twenty-ui/input/image-input.mdx
@@ -1,16 +1,16 @@
---
-title: Image Input
+title: Entrada de Imagem
image: /images/user-guide/objects/objects.png
---
-
+
-Allows users to upload and remove an image.
+Permite que os usuários façam upload e removam uma imagem.
-
+
```jsx
import { ImageInput } from "@/ui/input/components/ImageInput";
@@ -20,15 +20,15 @@ Allows users to upload and remove an image.
```
-
- | Props | Type | Description |
- | ------------ | -------- | ------------------------------------------------------------------------------------------------- |
- | picture | string | The image source URL |
- | onUpload | function | The function called when a user uploads a new image. It receives the `File` object as a parameter |
- | onRemove | function | The function called when the user clicks on the remove button |
- | onAbort | function | The function called when a user clicks on the abort button during image upload |
- | isUploading | boolean | Indicates whether an image is currently being uploaded |
- | errorMessage | string | An optional error message to display below the image input |
- | disabled | boolean | If `true`, the entire input is disabled, and the buttons are not clickable |
+
+ | Propriedades | Tipo | Descrição |
+ | ------------ | -------- | ----------------------------------------------------------------------------------------------------------- |
+ | imagem | string | A URL de origem da imagem |
+ | onUpload | função | A função chamada quando um usuário faz upload de uma nova imagem. Ela recebe o objeto `File` como parâmetro |
+ | onRemove | função | A função chamada quando o usuário clica no botão de remoção |
+ | onAbort | função | A função chamada quando o usuário clica no botão de cancelamento durante o upload da imagem |
+ | isUploading | booleano | Indica se uma imagem está sendo enviada no momento |
+ | errorMessage | string | An optional error message to display below the image input |
+ | desativado | booleano | Se `true`, a entrada inteira está desativada e os botões não são clicáveis |
diff --git a/packages/twenty-docs/l/pt/twenty-ui/input/radio.mdx b/packages/twenty-docs/l/pt/twenty-ui/input/radio.mdx
index e6246e631f..347ace5477 100644
--- a/packages/twenty-docs/l/pt/twenty-ui/input/radio.mdx
+++ b/packages/twenty-docs/l/pt/twenty-ui/input/radio.mdx
@@ -1,16 +1,16 @@
---
-title: Radio
+title: Rádio
image: /images/user-guide/create-workspace/workspace-cover.png
---
-
+
-Used when users may only choose one option from a series of options.
+Usado quando os usuários podem escolher apenas uma opção de uma série de opções.
-
+
```jsx
import { Radio } from "twenty-ui/display";
@@ -41,27 +41,27 @@ Used when users may only choose one option from a series of options.
```
-
- | Props | Type | Description |
- | --------------- | ---------------------- | ------------------------------------------------------------------------------------------------ |
- | style | `React.CSS` properties | Additional inline styles for the component |
- | className | string | Optional CSS class for additional styling |
- | checked | boolean | Indicates whether the radio button is checked |
- | value | string | The label or text associated with the radio button |
- | onChange | function | The function called when the selected radio button is changed |
- | onCheckedChange | function | The function called when the `checked` state of the radio button changes |
- | size | string | The size of the radio button. Options include: `large` and `small` |
- | disabled | boolean | If `true`, the radio button is disabled and not clickable |
- | labelPosition | string | The position of the label text relative to the radio button. Has two options: `left` and `right` |
+
+ | Propriedades | Tipo | Descrição |
+ | ----------------- | ------------------------ | -------------------------------------------------------------------------------------------------- |
+ | estilo | propriedades `React.CSS` | Estilos extras em linha para o componente |
+ | className | string | Classe CSS opcional para estilização adicional |
+ | marcado | booleano | Indica se o botão de rádio está marcado |
+ | valor | string | O rótulo ou texto associado ao botão de rádio |
+ | onChange | função | A função chamada quando o botão de rádio selecionado é alterado |
+ | onCheckedChange | função | A função chamada quando o estado `marcado` do botão de rádio muda |
+ | tamanho | string | O tamanho do botão de rádio. As opções incluem: `grande` e `pequeno` |
+ | desativado | booleano | Se `verdadeiro`, o botão de rádio está desativado e não clicável |
+ | posição do rótulo | string | A posição do texto do rótulo em relação ao botão de rádio. Tem duas opções: `esquerda` e `direita` |
-## Radio Group
+## Grupo de Rádio
-Groups together related radio buttons.
+Agrupa juntos botões de rádio relacionados.
-
+
```jsx
import React, { useState } from "react";
import { Radio, RadioGroup } from "twenty-ui/display";
@@ -86,12 +86,12 @@ Groups together related radio buttons.
```
-
- | Props | Type | Description |
- | ------------- | ----------------- | ---------------------------------------------------------------------------------- |
- | value | string | The value of the currently selected radio button |
- | onChange | function | The callback function triggered when the radio button is changed |
- | onValueChange | function | The callback function triggered when the selected value in the group changes. |
- | children | `React.ReactNode` | Allows you to pass React components (such as Radio) as children to the Radio Group |
+
+ | Propriedades | Tipo | Descrição |
+ | ------------- | ----------------- | --------------------------------------------------------------------------------------- |
+ | valor | string | O valor do botão de rádio atualmente selecionado |
+ | onChange | função | A função de retorno de chamada disparada quando o botão de rádio é alterado |
+ | onValueChange | função | A função de retorno de chamada disparada quando o valor selecionado no grupo muda. |
+ | filhos | `React.ReactNode` | Permite que você passe componentes React (como Rádio) como filhos para o Grupo de Rádio |
diff --git a/packages/twenty-docs/l/pt/twenty-ui/input/select.mdx b/packages/twenty-docs/l/pt/twenty-ui/input/select.mdx
index d685bf4012..24453e53f4 100644
--- a/packages/twenty-docs/l/pt/twenty-ui/input/select.mdx
+++ b/packages/twenty-docs/l/pt/twenty-ui/input/select.mdx
@@ -1,16 +1,16 @@
---
-title: Select
+title: Selecionar
image: /images/user-guide/what-is-twenty/20.png
---
-
+
-Allows users to pick a value from a list of predefined options.
+Permite aos utilizadores escolher um valor a partir de uma lista de opções pré-definidas.
-
+
```jsx
import { RecoilRoot } from 'recoil';
import { IconTwentyStar } from 'twenty-ui/display';
@@ -24,28 +24,27 @@ Allows users to pick a value from a list of predefined options.
);
};
-
```
-
- | Props | Type | Description |
- | --------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
- | className | string | Optional CSS class for additional styling |
- | disabled | boolean | When set to `true`, disables user interaction with the component |
- | label | string | The label to describe the purpose of the `Select` component |
- | onChange | function | The function called when the selected values change |
- | options | array | Represents the options available for the `Selected` component. It's an array of objects where each object has a `value` (the unique identifier), `label` (the unique identifier), and an optional `Icon` |
- | value | string | Represents the currently selected value. It should match one of the `value` properties in the `options` array |
+
+ | Propriedades | Tipo | Descrição |
+ | ------------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+ | className | string | Classe CSS opcional para estilização adicional. |
+ | desativado | booleano | Quando definido como `true`, desativa a interação do utilizador com o componente |
+ | etiqueta | string | A etiqueta para descrever o propósito do componente `Selecionar` |
+ | aoAlterar | função | A função chamada quando os valores selecionados são alterados |
+ | opções | array | Representa as opções disponíveis para o componente `Selected`. É uma matriz de objetos onde cada objeto tem um `valor` (o identificador único), `etiqueta` (o identificador único) e um `Ícone` opcional |
+ | valor | string | Representa o valor atualmente selecionado. Deverá corresponder a uma das propriedades `valor` na matriz `opções` |
diff --git a/packages/twenty-docs/l/pt/twenty-ui/input/text.mdx b/packages/twenty-docs/l/pt/twenty-ui/input/text.mdx
index 8cad1352ae..d86b33effc 100644
--- a/packages/twenty-docs/l/pt/twenty-ui/input/text.mdx
+++ b/packages/twenty-docs/l/pt/twenty-ui/input/text.mdx
@@ -1,18 +1,18 @@
---
-title: Text
+title: Texto
image: /images/user-guide/notes/notes_header.png
---
-
+
-## Text Input
+## Entrada de Texto
-Allows users to enter and edit text.
+Permite aos usuários inserir e editar texto.
-
+
```jsx
import { RecoilRoot } from "recoil";
import { TextInput } from "@/ui/input/components/TextInput";
@@ -45,28 +45,28 @@ Allows users to enter and edit text.
```
-
- | Props | Type | Description |
- | -------------- | ------------- | ---------------------------------------------------------------------------------------------------------------------- |
- | className | string | Optional name for additional styling |
- | label | string | Represents the label for the input |
- | onChange | function | The function called when the input value changes |
- | fullWidth | boolean | Indicates whether the input should take up 100% of the width |
- | disableHotkeys | boolean | Indicates whether hotkeys are enabled for the input |
- | error | string | Represents the error message to be displayed. When provided, it also adds an icon error on the right side of the input |
- | onKeyDown | function | Called when a key is pressed down while the input field is focused. Receives a `React.KeyboardEvent` as an argument |
- | RightIcon | IconComponent | An optional icon component displayed on the right side of the input |
+
+ | Propriedades | Tipo | Descrição |
+ | ----------------------- | --------------- | ------------------------------------------------------------------------------------------------------------------------------ |
+ | className | string | Nome opcional para estilização adicional |
+ | etiqueta | string | Representa o rótulo do campo de entrada |
+ | onChange | função | A função chamada quando o valor do campo de entrada é alterado |
+ | larguraCompleta | booleano | Indica se a entrada deve ocupar 100% da largura |
+ | desativarTeclasDeAtalho | booleano | Indica se as teclas de atalho estão habilitadas para a entrada |
+ | erro | string | Representa a mensagem de erro a ser exibida. Quando fornecido, também adiciona um ícone de erro no lado direito da entrada |
+ | aoPressionarTecla | função | Chamado quando uma tecla é pressionada enquanto o campo de entrada está focado. Recebe um `React.KeyboardEvent` como argumento |
+ | ÍconeDireito | ComponenteÍcone | Um componente de ícone opcional exibido no lado direito da entrada |
- The component also accepts other HTML input element props.
+ O componente também aceita outras propriedades de elemento de entrada HTML.
-## Autosize Text Input
+## Entrada de Texto com Tamanho Automático
-Text input component that automatically adjusts its height based on the content.
+Componente de entrada de texto que ajusta automaticamente sua altura com base no conteúdo.
-
+
```jsx
import { RecoilRoot } from "recoil";
import { AutosizeTextInput } from "@/ui/input/components/AutosizeTextInput";
@@ -89,25 +89,25 @@ Text input component that automatically adjusts its height based on the content.
```
-
- | Props | Type | Description |
- | ----------- | -------- | --------------------------------------------------------------------------- |
- | onValidate | function | The callback function you want to trigger when the user validates the input |
- | minRows | number | The minimum number of rows for the text area |
- | placeholder | string | The placeholder text you want to display when the text area is empty |
- | onFocus | function | The callback function you want to trigger when the text area gains focus |
- | variant | string | The variant of the input. Options include: `default`, `icon`, and `button` |
- | buttonTitle | string | The title for the button (only applicable for the button variant) |
- | value | string | The initial value for the text area |
+
+ | Propriedades | Tipo | Descrição |
+ | --------------- | ------ | ---------------------------------------------------------------------------------------- |
+ | aoValidar | função | A função de retorno de chamada que você deseja acionar quando o usuário valida a entrada |
+ | linhasMínimas | número | O número mínimo de linhas para a área de texto |
+ | espaçoReservado | string | O texto do espaço reservado que você deseja exibir quando a área de texto estiver vazia |
+ | aoFocar | função | A função de retorno de chamada que você deseja acionar quando a área de texto ganha foco |
+ | variante | string | A variante da entrada. As opções incluem: `default`, `icon` e `button` |
+ | títuloDoBotão | string | O título para o botão (aplicável apenas para a variante botão) |
+ | valor | string | O valor inicial para a área de texto |
-## Text Area
+## Área de Texto
-Allows you to create multi-line text inputs.
+Permite criar entradas de texto de várias linhas.
-
+
```jsx
import { TextArea } from "@/ui/input/components/TextArea";
@@ -125,13 +125,13 @@ Allows you to create multi-line text inputs.
```
-
- | Props | Type | Description |
- | ----------- | -------- | -------------------------------------------------------------- |
- | disabled | boolean | Indicates whether the text area is disabled |
- | minRows | number | Minimum number of visible rows for the text area. |
- | onChange | function | Callback function triggered when the text area content changes |
- | placeholder | string | Placeholder text displayed when the text area is empty |
- | value | string | The current value of the text area |
+
+ | Propriedades | Tipo | Descrição |
+ | ---------------------- | -------- | ----------------------------------------------------------------------------- |
+ | desativado | booleano | Indica se a área de texto está desativada |
+ | linhasMínimas | número | Número mínimo de linhas visíveis para a área de texto. |
+ | aoAlterar | função | Função de retorno de chamada acionada quando o conteúdo da área de texto muda |
+ | texto de preenchimento | string | Texto de preenchimento exibido quando a área de texto está vazia |
+ | valor | string | O valor atual da área de texto |
diff --git a/packages/twenty-docs/l/pt/twenty-ui/input/toggle.mdx b/packages/twenty-docs/l/pt/twenty-ui/input/toggle.mdx
index 39f1645abd..4b1226fd7f 100644
--- a/packages/twenty-docs/l/pt/twenty-ui/input/toggle.mdx
+++ b/packages/twenty-docs/l/pt/twenty-ui/input/toggle.mdx
@@ -1,14 +1,14 @@
---
-title: Toggle
+title: Alternar
image: /images/user-guide/table-views/table.png
---
-
+
-
+
```jsx
import { Toggle } from "twenty-ui/input";
@@ -25,12 +25,12 @@ image: /images/user-guide/table-views/table.png
```
-
- | Props | Type | Description | Default |
- | ---------- | -------- | ------------------------------------------------------------------------------------------- | ------------ |
- | value | boolean | The current state of the toggle | `false` |
- | onChange | function | Callback function triggered when the toggle state changes | |
- | color | string | Color of the toggle when it\ | s blue color |
- | toggleSize | string | Size of the toggle, affecting both height and weight. Has two options: `small` and `medium` | medium |
+
+ | Propriedades | Tipo | Descrição | Padrão |
+ | --------------- | -------- | --------------------------------------------------------------------------------------------- | -------- |
+ | valor | booleano | O estado atual da alternância | `falso` |
+ | onChange | função | Função de retorno de chamada acionada quando o estado da alternância muda | |
+ | cor | string | Color of the toggle when it\ | cor azul |
+ | tamanhoAlternar | string | Size of the toggle, affecting both height and weight. Possui duas opções: `pequeno` e `médio` | médio |
diff --git a/packages/twenty-docs/l/pt/twenty-ui/introduction.mdx b/packages/twenty-docs/l/pt/twenty-ui/introduction.mdx
index e6510a7458..35fd111c0b 100644
--- a/packages/twenty-docs/l/pt/twenty-ui/introduction.mdx
+++ b/packages/twenty-docs/l/pt/twenty-ui/introduction.mdx
@@ -1,30 +1,30 @@
---
-title: Overview
-description: Component library for Twenty CRM
+title: Visão Geral
+description: Biblioteca de componentes para Twenty CRM
---
import { CardTitle } from "/snippets/card-title.mdx"
-## Components
+## Componentes
- Display
- Display components for showing information visually
+ Exibição
+ Componentes de exibição para mostrar informações visualmente
Feedback
- Feedback components for user notifications
+ Componentes de feedback para notificações do usuário
- Input
- Input components for user interaction
+ Entrada
+ Componentes de entrada para interação do usuário
- Navigation
- Navigation components for user interface
+ Navegação
+ Componentes de navegação para interface do usuário
diff --git a/packages/twenty-docs/l/pt/twenty-ui/navigation.mdx b/packages/twenty-docs/l/pt/twenty-ui/navigation.mdx
index b17dad4220..5c3636d8cc 100644
--- a/packages/twenty-docs/l/pt/twenty-ui/navigation.mdx
+++ b/packages/twenty-docs/l/pt/twenty-ui/navigation.mdx
@@ -1,8 +1,8 @@
---
-title: Navigation
+title: Navegação
image: /images/user-guide/tasks/tasks_header.png
---
-
+
diff --git a/packages/twenty-docs/l/pt/twenty-ui/navigation/breadcrumb.mdx b/packages/twenty-docs/l/pt/twenty-ui/navigation/breadcrumb.mdx
index aadbee8ee4..b825bfca65 100644
--- a/packages/twenty-docs/l/pt/twenty-ui/navigation/breadcrumb.mdx
+++ b/packages/twenty-docs/l/pt/twenty-ui/navigation/breadcrumb.mdx
@@ -1,16 +1,16 @@
---
-title: Breadcrumb
+title: Trilha de navegação
image: /images/user-guide/fields/field.png
---
-
+
-Renders a breadcrumb navigation bar.
+Renderiza uma barra de trilha de navegação.
-
+
```jsx
import { BrowserRouter } from "react-router-dom";
import { Breadcrumb } from "@/ui/navigation/bread-crumb/components/Breadcrumb";
@@ -32,10 +32,10 @@ Renders a breadcrumb navigation bar.
```
-
- | Props | Type | Description |
- | --------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
- | className | string | Optional class name for additional styling |
- | links | array | An array of objects, each representing a breadcrumb link. Each object has a `children` property (the text content of the link) and an optional `href` property (the URL to navigate to when the link is clicked) |
+
+ | Propriedades | Tipo | Descrição |
+ | ------------ | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+ | className | string | Nome de classe opcional para estilo adicional |
+ | links | array | Um array de objetos, cada um representando um link da trilha de navegação. Cada objeto tem uma propriedade `children` (o conteúdo textual do link) e uma propriedade opcional `href` (a URL para navegar quando se clica no link) |
diff --git a/packages/twenty-docs/l/pt/twenty-ui/navigation/links.mdx b/packages/twenty-docs/l/pt/twenty-ui/navigation/links.mdx
index e9f7e3d80f..70cc6fbbfb 100644
--- a/packages/twenty-docs/l/pt/twenty-ui/navigation/links.mdx
+++ b/packages/twenty-docs/l/pt/twenty-ui/navigation/links.mdx
@@ -4,15 +4,15 @@ image: /images/user-guide/what-is-twenty/20.png
---
-
+
-## Contact Link
+## Link de Contato
-A stylized link component for displaying contact information.
+Um componente de link estilizado para exibir informações de contato.
-
+
```jsx
import { BrowserRouter as Router } from 'react-router-dom';
@@ -38,22 +38,22 @@ A stylized link component for displaying contact information.
```
-
- | Props | Type | Description |
- | --------- | ----------------- | ---------------------------------------------------------- |
- | className | string | Optional name for additional styling |
- | href | string | The target URL or path for the link |
- | onClick | function | Callback function to be triggered when the link is clicked |
- | children | `React.ReactNode` | The content to be displayed inside the link |
+
+ | Propriedades | Tipo | Descrição |
+ | ------------ | ----------------- | ----------------------------------------------------------------------- |
+ | className | string | Nome opcional para estilização adicional |
+ | href | string | A URL ou caminho de destino para o link |
+ | onClick | função | Função de retorno de chamada para ser disparada quando o link é clicado |
+ | filhos | `React.ReactNode` | O conteúdo a ser exibido dentro do link |
-## Raw Link
+## Link Puro
-A stylized link component for displaying links.
+Um componente de link estilizado para exibir links.
-
+
```jsx
import { RawLink } from "/navigation";
import { BrowserRouter as Router } from "react-router-dom";
@@ -75,22 +75,22 @@ A stylized link component for displaying links.
```
-
- | Props | Type | Description |
- | --------- | ----------------- | ---------------------------------------------------------- |
- | className | string | Optional name for additional styling |
- | href | string | The target URL or path for the link |
- | onClick | function | Callback function to be triggered when the link is clicked |
- | children | `React.ReactNode` | The content to be displayed inside the link |
+
+ | Propriedades | Tipo | Descrição |
+ | ------------ | ----------------- | ----------------------------------------------------------------------- |
+ | className | string | Nome opcional para estilização adicional. |
+ | href | string | A URL ou caminho de destino para o link |
+ | onClick | função | Função de retorno de chamada para ser disparada quando o link é clicado |
+ | filhos | `React.ReactNode` | O conteúdo a ser exibido dentro do link |
-## Rounded Link
+## Link Arredondado
-A rounded-styled link with a Chip component for links.
+Um link estilizado de forma arredondada com um componente Chip para links.
-
+
```jsx
import { RoundedLink } from "/navigation";
import { BrowserRouter as Router } from "react-router-dom";
@@ -111,21 +111,21 @@ A rounded-styled link with a Chip component for links.
```
-
- | Props | Type | Description |
- | -------- | ----------------- | ---------------------------------------------------------- |
- | href | string | The target URL or path for the link |
- | children | `React.ReactNode` | The content to be displayed inside the link |
- | onClick | function | Callback function to be triggered when the link is clicked |
+
+ | Propriedades | Tipo | Descrição |
+ | ------------ | ----------------- | ----------------------------------------------------------------------- |
+ | href | string | A URL ou caminho de destino para o link |
+ | filhos | `React.ReactNode` | O conteúdo a ser exibido dentro do link |
+ | onClick | função | Função de retorno de chamada para ser disparada quando o link é clicado |
-## Social Link
+## Link Social
-Stylized social links, with support for various social link types, such as URLs, LinkedIn, and X (or Twitter).
+Links sociais estilizados, com suporte para vários tipos de links sociais, como URLs, LinkedIn e X (ou Twitter).
-
+
```jsx
import { SocialLink } from "twenty-ui/navigation";
import { BrowserRouter as Router } from "react-router-dom";
@@ -143,12 +143,12 @@ Stylized social links, with support for various social link types, such as URLs,
```
-
- | Props | Type | Description |
- | -------- | ----------------- | --------------------------------------------------------------------------- |
- | href | string | The target URL or path for the link |
- | children | `React.ReactNode` | The content to be displayed inside the link |
- | type | string | The type of social links. Options include: `url`, `LinkedIn`, and `Twitter` |
- | onClick | function | Callback function to be triggered when the link is clicked |
+
+ | Propriedades | Tipo | Descrição |
+ | ------------ | ----------------- | ----------------------------------------------------------------------- |
+ | href | string | A URL ou caminho de destino para o link |
+ | filhos | `React.ReactNode` | O conteúdo a ser exibido dentro do link |
+ | tipo | string | O tipo de links sociais. Opções incluem: `url`, `LinkedIn` e `Twitter` |
+ | onClick | função | Função de retorno de chamada para ser disparada quando o link é clicado |
diff --git a/packages/twenty-docs/l/pt/twenty-ui/navigation/menu-item.mdx b/packages/twenty-docs/l/pt/twenty-ui/navigation/menu-item.mdx
index 209c6270ea..42f0232bb0 100644
--- a/packages/twenty-docs/l/pt/twenty-ui/navigation/menu-item.mdx
+++ b/packages/twenty-docs/l/pt/twenty-ui/navigation/menu-item.mdx
@@ -1,16 +1,16 @@
---
-title: Menu Item
+title: Entrada de menu
image: /images/user-guide/kanban-views/kanban.png
---
-
+
-A versatile menu item designed to be used in a menu or navigation list.
+Um item de menu versátil projetado para ser usado em uma lista de menu ou navegação.
-
+
```jsx
import { IconBell } from "@tabler/icons-react";
import { IconAlertCircle } from "@tabler/icons-react";
@@ -18,18 +18,18 @@ A versatile menu item designed to be used in a menu or navigation list.
export const MyComponent = () => {
const handleMenuItemClick = (event) => {
- console.log("Menu item clicked!", event);
+ console.log("Item de menu clicado!", event);
};
const handleButtonClick = (event) => {
- console.log("Icon button clicked!", event);
+ console.log("Botão de ícone clicado!", event);
};
return (
-
- | Props | Type | Description |
- | ------------- | ------------- | ---------------------------------------------------------------------------------------------------- |
- | LeftIcon | IconComponent | An optional left icon displayed before the text in the menu item |
- | accent | string | Specifies the accent color of the menu item. Options include: `default`, `danger`, and `placeholder` |
- | text | string | The text content of the menu item |
- | iconButtons | array | An array of objects representing additional icon buttons associated with the menu item |
- | isTooltipOpen | boolean | Controls the visibility of the tooltip associated with the menu item |
- | testId | string | The data-testid attribute for testing purposes |
- | onClick | function | Callback function triggered when the menu item is clicked |
- | className | string | Optional name for additional styling |
+
+ | Propriedades | Tipo | Descrição |
+ | ------------- | --------------- | ----------------------------------------------------------------------------------------------------- |
+ | LeftIcon | ComponenteÍcone | Um ícone opcional à esquerda exibido antes do texto no item de menu |
+ | destaque | string | Especifica a cor de destaque do item de menu. As opções incluem: `default`, `danger`, e `placeholder` |
+ | texto | string | O conteúdo de texto do item de menu |
+ | botõesDeÍcone | matriz | Uma matriz de objetos representando botões de ícones adicionais associados ao item de menu |
+ | isTooltipOpen | booleano | Controla a visibilidade da dica de ferramenta associada ao item de menu |
+ | testeId | string | O atributo data-testid para fins de teste |
+ | onClick | função | Função de retorno de chamada disparada quando o item de menu é clicado |
+ | className | string | Nome opcional para estilização adicional |
-## Variants
+## Variantes
-The different variants of the menu item component include the following:
+As diferentes variantes do componente de item de menu incluem o seguinte:
-### Command
+### Comando
-A command-style menu item within a menu to indicate keyboard shortcuts.
+Um item de menu no estilo de comando dentro de um menu para indicar atalhos de teclado.
-
+
```jsx
import { IconBell } from "@tabler/icons-react";
import { MenuItemCommand } from "twenty-ui/display";
@@ -89,25 +89,25 @@ A command-style menu item within a menu to indicate keyboard shortcuts.
```
-
- | Props | Type | Description |
- | ------------ | ------------- | ---------------------------------------------------------------- |
- | LeftIcon | IconComponent | An optional left icon displayed before the text in the menu item |
- | text | string | The text content of the menu item |
- | firstHotKey | string | The first keyboard shortcut associated with the command |
- | secondHotKey | string | The second keyboard shortcut associated with the command |
- | isSelected | boolean | Indicates whether the menu item is selected or highlighted |
- | onClick | function | Callback function triggered when the menu item is clicked |
- | className | string | Optional name for additional styling |
+
+ | Propriedades | Tipo | Descrição |
+ | --------------------- | --------------- | ---------------------------------------------------------------------- |
+ | ÍconeEsquerda | ComponenteÍcone | Um ícone opcional à esquerda exibido antes do texto no item de menu |
+ | texto | string | O conteúdo de texto do item de menu |
+ | primeiraTeclaDeAtalho | string | A primeira tecla de atalho associada ao comando |
+ | segundaTeclaDeAtalho | string | A segunda tecla de atalho associada ao comando |
+ | éSelecionado | booleano | Indica se o item de menu está selecionado ou destacado |
+ | onClick | função | Função de retorno de chamada disparada quando o item de menu é clicado |
+ | className | string | Nome opcional para estilização adicional |
-### Draggable
+### Arrastável
-A draggable menu item component designed to be used in a menu or list where items can be dragged, and additional actions can be performed through icon buttons.
+Um componente de item de menu arrastável projetado para ser usado em um menu ou lista onde os itens podem ser arrastados e ações adicionais podem ser realizadas através de botões de ícone.
-
+
```jsx
import { IconBell } from "@tabler/icons-react";
import { IconAlertCircle } from "@tabler/icons-react";
@@ -134,26 +134,26 @@ A draggable menu item component designed to be used in a menu or list where item
```
-
- | Props | Type | Description |
- | -------------- | ------------- | ------------------------------------------------------------------------------------------ |
- | LeftIcon | IconComponent | An optional left icon displayed before the text in the menu item |
- | accent | string | The accent color of the menu item. It can either be `default`, `placeholder`, and `danger` |
- | iconButtons | array | An array of objects representing additional icon buttons associated with the menu item |
- | isTooltipOpen | boolean | Controls the visibility of the tooltip associated with the menu item |
- | onClick | function | Callback function to be triggered when the link is clicked |
- | text | string | The text content of the menu item |
- | isDragDisabled | boolean | Indicates whether dragging is disabled |
- | className | string | Optional name for additional styling |
+
+ | Propriedades | Tipo | Descrição |
+ | -------------- | --------------- | ------------------------------------------------------------------------------------------ |
+ | ÍconeEsquerda | ComponenteÍcone | Um ícone opcional à esquerda exibido antes do texto no item de menu |
+ | destaque | string | A cor de destaque do item de menu. Pode ser `default`, `placeholder`, e `danger` |
+ | botõesDeÍcone | matriz | Uma matriz de objetos representando botões de ícones adicionais associados ao item de menu |
+ | isTooltipOpen | booleano | Controla a visibilidade da dica de ferramenta associada ao item de menu |
+ | onClick | função | Função de retorno de chamada para ser disparada quando o link é clicado |
+ | texto | string | O conteúdo de texto do item de menu |
+ | isDragDisabled | booleano | Indica se o arrasto está desativado |
+ | className | string | Nome opcional para estilização adicional |
-### Multi Select
+### Seleção Múltipla
-Provides a way to implement multi-select functionality with an associated checkbox.
+Proporciona uma maneira de implementar a funcionalidade de seleção múltipla com uma caixa de seleção associada.
-
+
```jsx
import { IconBell } from "@tabler/icons-react";
import { MenuItemMultiSelect } from "twenty-ui/display";
@@ -172,23 +172,23 @@ Provides a way to implement multi-select functionality with an associated checkb
```
-
- | Props | Type | Description |
- | -------------- | ------------- | ---------------------------------------------------------------- |
- | LeftIcon | IconComponent | An optional left icon displayed before the text in the menu item |
- | text | string | The text content of the menu item |
- | selected | boolean | Indicates whether the menu item is selected (checked) |
- | onSelectChange | function | Callback function triggered when the checkbox state changes |
- | className | string | Optional name for additional styling |
+
+ | Propriedades | Tipo | Descrição |
+ | -------------- | --------------- | ------------------------------------------------------------------------------- |
+ | ÍconeEsquerda | ComponenteÍcone | Um ícone opcional à esquerda exibido antes do texto no item de menu |
+ | texto | string | O conteúdo de texto do item de menu |
+ | selecionado | booleano | Indica se o item de menu está selecionado (marcado) |
+ | aoMudarSeleção | função | Função de retorno de chamada disparada quando o estado da caixa de seleção muda |
+ | className | string | Nome opcional para estilização adicional |
-### Multi Select Avatar
+### Seleção Múltipla Avatar
-A multi-select menu item with an avatar, a checkbox for selection, and textual content.
+Um item de menu de seleção múltipla com um avatar, uma caixa de seleção para seleção e conteúdo textual.
-
+
```jsx
import { MenuItemMultiSelectAvatar } from "twenty-ui/display";
@@ -208,23 +208,23 @@ A multi-select menu item with an avatar, a checkbox for selection, and textual c
```
-
- | Props | Type | Description |
- | -------------- | ----------- | -------------------------------------------------------------------- |
- | avatar | `ReactNode` | The avatar or icon to be displayed on the left side of the menu item |
- | text | string | The text content of the menu item |
- | selected | boolean | Indicates whether the menu item is selected (checked) |
- | onSelectChange | function | Callback function triggered when the checkbox state changes |
- | className | string | Optional name for additional styling |
+
+ | Propriedades | Tipo | Descrição |
+ | -------------- | ----------- | ------------------------------------------------------------------------------- |
+ | avatar | `ReactNode` | O avatar ou ícone a ser exibido no lado esquerdo do item de menu |
+ | texto | string | O conteúdo de texto do item de menu |
+ | selecionado | booleano | Indica se o item de menu está selecionado (marcado) |
+ | aoMudarSeleção | função | Função de retorno de chamada disparada quando o estado da caixa de seleção muda |
+ | className | string | Nome opcional para estilização adicional |
-### Navigate
+### Navegar
-A menu item featuring an optional left icon, textual content, and a right-chevron icon.
+Um item de menu com um ícone opcional à esquerda, conteúdo textual e um ícone de seta à direita.
-
+
```jsx
import { IconBell } from "@tabler/icons-react";
import { MenuItemNavigate } from "twenty-ui/display";
@@ -246,22 +246,22 @@ A menu item featuring an optional left icon, textual content, and a right-chevro
```
-
- | Props | Type | Description |
- | --------- | ------------- | ---------------------------------------------------------------- |
- | LeftIcon | IconComponent | An optional left icon displayed before the text in the menu item |
- | text | string | The text content of the menu item |
- | onClick | function | Callback function to be triggered when the menu item is clicked |
- | className | string | Optional name for additional styling |
+
+ | Propriedades | Tipo | Descrição |
+ | ------------- | --------------- | ------------------------------------------------------------------------------- |
+ | ÍconeEsquerda | ComponenteÍcone | Um ícone opcional à esquerda exibido antes do texto no item de menu |
+ | texto | string | O conteúdo de texto do item de menu |
+ | onClick | função | Função de retorno de chamada para ser disparada quando o item de menu é clicado |
+ | className | string | Nome opcional para estilização adicional |
-### Select
+### Selecionar
-A selectable menu item, featuring optional left content (icon and text) and an indicator (check icon) for the selected state.
+Um item de menu selecionável, com conteúdo esquerdo opcional (ícone e texto) e um indicador (ícone de seleção) para o estado selecionado.
-
+
```jsx
import { IconBell } from "@tabler/icons-react";
import { MenuItemSelect } from "twenty-ui/display";
@@ -286,25 +286,25 @@ A selectable menu item, featuring optional left content (icon and text) and an i
```
-
- | Props | Type | Description |
- | --------- | ------------- | ---------------------------------------------------------------- |
- | LeftIcon | IconComponent | An optional left icon displayed before the text in the menu item |
- | text | string | The text content of the menu item |
- | selected | boolean | Indicates whether the menu item is selected (checked) |
- | disabled | boolean | Indicates whether the menu item is disabled |
- | hovered | boolean | Indicates whether the menu item is currently being hovered over |
- | onClick | function | Callback function to be triggered when the menu item is clicked |
- | className | string | Optional name for additional styling |
+
+ | Propriedades | Tipo | Descrição |
+ | ------------- | --------------- | ------------------------------------------------------------------------------- |
+ | ÍconeEsquerda | ComponenteÍcone | Um ícone opcional à esquerda exibido antes do texto no item de menu |
+ | texto | string | O conteúdo de texto do item de menu |
+ | selecionado | booleano | Indica se o item de menu está selecionado (marcado) |
+ | desativado | booleano | Indica se o item de menu está desativado |
+ | pairado | booleano | Indica se o item de menu está com o cursor sobre ele no momento |
+ | onClick | função | Função de retorno de chamada para ser disparada quando o item de menu é clicado |
+ | className | string | Nome opcional para estilização adicional |
-### Select Avatar
+### Selecionar Avatar
-A selectable menu item with an avatar, featuring optional left content (avatar and text) and an indicator (check icon) for the selected state.
+Um item de menu selecionável com um avatar, com conteúdo esquerdo opcional (avatar e texto) e um indicador (ícone de seleção) para o estado selecionado.
-
+
```jsx
import { MenuItemSelectAvatar } from "twenty-ui/display";
@@ -333,26 +333,26 @@ A selectable menu item with an avatar, featuring optional left content (avatar a
```
-
- | Props | Type | Description |
- | --------- | ----------- | -------------------------------------------------------------------- |
- | avatar | `ReactNode` | The avatar or icon to be displayed on the left side of the menu item |
- | text | string | The text content of the menu item |
- | selected | boolean | Indicates whether the menu item is selected (checked) |
- | disabled | boolean | Indicates whether the menu item is disabled |
- | hovered | boolean | Indicates whether the menu item is currently being hovered over |
- | testId | string | The data-testid attribute for testing purposes |
- | onClick | function | Callback function to be triggered when the menu item is clicked |
- | className | string | Optional name for additional styling |
+
+ | Propriedades | Tipo | Descrição |
+ | ------------ | ----------- | ------------------------------------------------------------------------------- |
+ | avatar | `ReactNode` | O avatar ou ícone a ser exibido no lado esquerdo do item de menu |
+ | texto | string | O conteúdo de texto do item de menu |
+ | selecionado | booleano | Indica se o item de menu está selecionado (marcado) |
+ | desativado | booleano | Indica se o item de menu está desativado |
+ | pairado | booleano | Indica se o item de menu está com o cursor sobre ele no momento |
+ | testeId | string | O atributo data-testid para fins de teste |
+ | onClick | função | Função de retorno de chamada para ser disparada quando o item de menu é clicado |
+ | className | string | Nome opcional para estilização adicional |
-### Select Color
+### Selecionar Cor
-A selectable menu item with a color sample for scenarios where you want users to choose a color from a menu.
+Um item de menu selecionável com uma amostra de cor para cenários onde você deseja que os usuários escolham uma cor em um menu.
-
+
```jsx
import { MenuItemSelectColor } from "twenty-ui/display";
@@ -376,25 +376,25 @@ A selectable menu item with a color sample for scenarios where you want users to
```
-
- | Props | Type | Description |
- | --------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
- | color | string | The theme color to be displayed as a sample in the menu item. Options include: `green`, `turquoise`, `sky`, `blue`, `purple`, `pink`, `red`, `orange`, `yellow`, and `gray` |
- | selected | boolean | Indicates whether the menu item is selected (checked) |
- | disabled | boolean | Indicates whether the menu item is disabled |
- | hovered | boolean | Indicates whether the menu item is currently being hovered over |
- | variant | string | The variant of the color sample. It can either be `default` or `pipeline` |
- | onClick | function | Callback function to be triggered when the menu item is clicked |
- | className | string | Optional name for additional styling |
+
+ | Propriedades | Tipo | Descrição |
+ | ------------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+ | cor | string | A cor do tema a ser exibida como exemplo no item do menu. As opções incluem: `verde`, `turquesa`, `céu`, `azul`, `roxo`, `pink`, `vermelho`, `laranja`, `amarelo` e `cinza` |
+ | selecionado | booleano | Indica se o item de menu está selecionado (marcado) |
+ | desativado | booleano | Indica se o item de menu está desativado |
+ | pairado | booleano | Indica se o item de menu está com o cursor sobre ele no momento |
+ | variante | string | A variante da amostra de cor. Pode ser `default` ou `pipeline` |
+ | onClick | função | Função de retorno de chamada disparada quando o item de menu é clicado. |
+ | className | string | Nome opcional para estilização adicional. |
-### Toggle
+### Alternar
-A menu item with an associated toggle switch to allow users to enable or disable a specific feature
+Um item de menu com um interruptor associado para permitir que os usuários ativem ou desativem um recurso específico.
-
+
```jsx
import { IconBell } from '@tabler/icons-react';
@@ -415,14 +415,14 @@ A menu item with an associated toggle switch to allow users to enable or disable
```
-
- | Props | Type | Description |
- | -------------- | ------------- | ----------------------------------------------------------------- |
- | LeftIcon | IconComponent | An optional left icon displayed before the text in the menu item |
- | text | string | The text content of the menu item |
- | toggled | boolean | Indicates whether the toggle switch is in the "on" or "off" state |
- | onToggleChange | function | Callback function triggered when the toggle switch state changes |
- | toggleSize | string | The size of the toggle switch. It can be either \ |
- | className | string | Optional name for additional styling |
+
+ | Propriedades | Tipo | Descrição |
+ | --------------- | --------------- | ----------------------------------------------------------------------------------------- |
+ | LeftIcon | ComponenteÍcone | Um ícone opcional à esquerda exibido antes do texto no item de menu. |
+ | texto | string | O conteúdo de texto do item de menu. |
+ | alternado | booleano | Indica se o interruptor de alternância está no estado "on" ou "off". |
+ | onToggleChange | função | Função de retorno de chamada acionada quando o estado do interruptor de alternância muda. |
+ | tamanhoAlternar | string | O tamanho do interruptor de alternância. Pode ser \ |
+ | className | string | Nome opcional para estilização adicional |
diff --git a/packages/twenty-docs/l/pt/twenty-ui/navigation/navigation-bar.mdx b/packages/twenty-docs/l/pt/twenty-ui/navigation/navigation-bar.mdx
index a77e9f34e6..af1bef1074 100644
--- a/packages/twenty-docs/l/pt/twenty-ui/navigation/navigation-bar.mdx
+++ b/packages/twenty-docs/l/pt/twenty-ui/navigation/navigation-bar.mdx
@@ -1,16 +1,16 @@
---
-title: Navigation Bar
+title: Barra de Navegação
image: /images/user-guide/table-views/table.png
---
-
+
-Renders a navigation bar that contains multiple `NavigationBarItem` components.
+Renderiza uma barra de navegação que contém múltiplos componentes `NavigationBarItem`.
-
+
```jsx
import { IconHome, IconUser, IconSettings } from '@tabler/icons-react';
import { NavigationBar } from "@/ui/navigation/navigation-bar/components/NavigationBar";
@@ -40,10 +40,10 @@ Renders a navigation bar that contains multiple `NavigationBarItem` components.
```
-
- | Props | Type | Description |
- | -------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
- | activeItemName | string | The name of the currently active navigation item |
- | items | array | An array of objects representing each navigation item. Each object contains the `name` of the item, the `Icon` component to display, and an `onClick` function to be called when the item is clicked |
+
+ | Propriedades | Tipo | Descrição |
+ | ------------------ | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+ | Nome do item ativo | string | O nome do item de navegação atualmente ativo |
+ | itens | array | Um array de objetos representando cada item de navegação. Cada objeto contém o `nome` do item, o componente `Icon` para exibir, e uma função `onClick` que é chamada quando o item é clicado |
diff --git a/packages/twenty-docs/l/pt/twenty-ui/navigation/step-bar.mdx b/packages/twenty-docs/l/pt/twenty-ui/navigation/step-bar.mdx
index 66c420f561..ab8013ec2e 100644
--- a/packages/twenty-docs/l/pt/twenty-ui/navigation/step-bar.mdx
+++ b/packages/twenty-docs/l/pt/twenty-ui/navigation/step-bar.mdx
@@ -1,16 +1,16 @@
---
-title: Step Bar
+title: Barra de Passos
image: /images/user-guide/api/api.png
---
-
+
-Displays progress through a sequence of numbered steps by highlighting the active step. It renders a container with steps, each represented by the `Step` component.
+Exibe o progresso por meio de uma sequência de passos numerados destacando o passo ativo. Ele renderiza um contêiner com passos, cada um representado pelo componente `Step`.
-
+
```jsx
import { StepBar } from "@/ui/navigation/step-bar/components/StepBar";
@@ -26,9 +26,9 @@ Displays progress through a sequence of numbered steps by highlighting the activ
```
-
- | Props | Type | Description |
- | ---------- | ------ | ------------------------------------------------------------------------------------------------- |
- | activeStep | number | The index of the currently active step. This determines which step should be visually highlighted |
+
+ | Propriedades | Tipo | Descrição |
+ | ------------ | ------ | -------------------------------------------------------------------------------------------- |
+ | passoAtivo | número | O índice do passo atualmente ativo. Isso determina qual passo deve ser visualmente destacado |
diff --git a/packages/twenty-docs/l/pt/twenty-ui/progress-bar.mdx b/packages/twenty-docs/l/pt/twenty-ui/progress-bar.mdx
index 2e4735ab30..023d1ea9ba 100644
--- a/packages/twenty-docs/l/pt/twenty-ui/progress-bar.mdx
+++ b/packages/twenty-docs/l/pt/twenty-ui/progress-bar.mdx
@@ -4,13 +4,13 @@ image: /images/user-guide/emails/emails_header.png
---
-
+
-Indicates progress or countdown and moves from right to left.
+Indica progresso ou contagem regressiva e move-se da direita para a esquerda.
-
+
```jsx
import { ProgressBar } from "twenty-ui/feedback";
@@ -29,24 +29,24 @@ Indicates progress or countdown and moves from right to left.
```
-
- | Props | Type | Description | Default |
- | --------- | ------- | ------------------------------------------------------------------------------------ | --------- |
- | duration | number | The total duration of the progress bar animation in milliseconds | 3 |
- | delay | number | The delay in starting the progress bar animation in milliseconds | 0 |
- | easing | string | Easing function for the progress bar animation | easeInOut |
- | barHeight | number | The height of the bar in pixels | 24 |
- | barColor | string | The color of the bar | gray80 |
- | autoStart | boolean | If `true`, the progress bar animation starts automatically when the component mounts | `true` |
+
+ | Propriedades | Tipo | Descrição | Padrão |
+ | ------------ | -------- | ------------------------------------------------------------------------------------------------------ | ------------ |
+ | duração | número | A duração total da animação da barra de progresso em milissegundos | 3 |
+ | atraso | número | O atraso no início da animação da barra de progresso em milissegundos | 0 |
+ | easing | string | Função de facilitação para a animação da barra de progresso | easeInOut |
+ | barHeight | número | A altura da barra em pixels | 24 |
+ | barColor | string | A cor da barra | cinza80 |
+ | autoStart | booleano | Se `verdadeiro`, a animação da barra de progresso começa automaticamente quando o componente é montado | `verdadeiro` |
-## Circular Progress Bar
+## Barra de Progresso Circular
-Indicates the progress of a task, often used in loading screens or areas where you want to communicate ongoing processes to the user.
+Indica o progresso de uma tarefa, frequentemente usado em telas de carregamento ou áreas onde você deseja comunicar processos em andamento ao usuário.
-
+
```jsx
import { CircularProgressBar } from "@/ui/feedback/progress-bar/components/CircularProgressBar";
@@ -56,11 +56,11 @@ Indicates the progress of a task, often used in loading screens or areas where y
```
-
- | Props | Type | Description | Default |
- | -------- | ------ | ------------------------------------- | ------------ |
- | size | number | The size of the circular progress bar | 50 |
- | barWidth | number | The width of the progress bar line | 5 |
- | barColor | string | The color of the progress bar | currentColor |
+
+ | Propriedades | Tipo | Descrição | Padrão |
+ | ------------ | ------ | ---------------------------------------- | -------- |
+ | tamanho | número | O tamanho da barra de progresso circular | 50 |
+ | barWidth | número | A largura da linha de progresso | 5 |
+ | barColor | string | A cor da barra de progresso | corAtual |
diff --git a/packages/twenty-docs/l/pt/user-guide/ai/capabilities/ai-agents.mdx b/packages/twenty-docs/l/pt/user-guide/ai/capabilities/ai-agents.mdx
index 8d301b00d9..c92d33c62d 100644
--- a/packages/twenty-docs/l/pt/user-guide/ai/capabilities/ai-agents.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/ai/capabilities/ai-agents.mdx
@@ -1,34 +1,34 @@
---
-title: AI Agents
-description: Integrate AI capabilities directly into your automation workflows.
+title: Agentes de IA
+description: Integre recursos de IA diretamente aos seus fluxos de trabalho de automação.
---
- This feature is in development and will be available in beta soon.
+ Este recurso está em desenvolvimento e estará disponível em versão beta em breve.
-## Overview
+## Visão geral
-Integrate AI capabilities directly into your automation workflows for intelligent data processing and decision-making.
+Integre recursos de IA diretamente aos seus fluxos de trabalho de automação para processamento de dados inteligente e tomada de decisões.
-## Capabilities
+## Capacidades
-| Feature | Description |
-| ------------------- | ------------------------------------------------ |
-| **AI actions** | Add AI-powered steps to any workflow |
-| **Data enrichment** | Automatically enhance records with external data |
-| **Classification** | Categorize records based on content analysis |
-| **Summarization** | Generate summaries from text fields |
-| **Custom prompts** | Define exactly how AI processes your data |
+| Recurso | Descrição |
+| --------------------------- | ----------------------------------------------------- |
+| **Ações de IA** | Adicione etapas com IA a qualquer fluxo de trabalho |
+| **Enriquecimento de Dados** | Aprimore registros automaticamente com dados externos |
+| **Classificação** | Classifique registros com base na análise de conteúdo |
+| **Sumarização** | Gere resumos a partir de campos de texto |
+| **Prompts personalizados** | Defina exatamente como a IA processa seus dados |
-## Use Cases
+## Casos de uso
-* **Lead scoring**: Automatically score and prioritize inbound leads
-* **Data cleanup**: Standardize company names and contact information
-* **Email drafts**: Generate follow-up emails based on meeting notes
-* **Record routing**: Assign records to the right team member based on content
+* **Pontuação de leads**: Pontue e priorize automaticamente os leads recebidos
+* **Limpeza de dados**: Padronize nomes de empresas e informações de contato
+* **Rascunhos de e-mail**: Gere e-mails de acompanhamento com base em notas de reunião
+* **Roteamento de registros**: Atribua registros ao membro certo da equipe com base no conteúdo
-## Related
+## Relacionados
-* [Workflows Overview](/l/pt/user-guide/workflows/overview) — automation basics
-* [AI Permissions](/l/pt/user-guide/ai/capabilities/permissions-access-control) — access control for AI agents
+* [Visão geral de fluxos de trabalho](/l/pt/user-guide/workflows/overview) — noções básicas de automação
+* [Permissões de IA](/l/pt/user-guide/ai/capabilities/permissions-access-control) — controle de acesso para agentes de IA
diff --git a/packages/twenty-docs/l/pt/user-guide/ai/capabilities/ai-chatbot.mdx b/packages/twenty-docs/l/pt/user-guide/ai/capabilities/ai-chatbot.mdx
index d7cbbc04fc..a2e7cb9d33 100644
--- a/packages/twenty-docs/l/pt/user-guide/ai/capabilities/ai-chatbot.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/ai/capabilities/ai-chatbot.mdx
@@ -1,41 +1,41 @@
---
-title: AI Chatbot
-description: An intelligent assistant that helps you interact with your CRM data using natural language.
+title: Chatbot de IA
+description: Um assistente inteligente que ajuda você a interagir com seus dados de CRM usando linguagem natural.
---
- This feature is in development and will be available in beta soon.
+ Este recurso está em desenvolvimento e estará disponível em versão beta em breve.
-## Overview
+## Visão geral
-An intelligent assistant that helps you interact with your CRM data using natural language.
+Um assistente inteligente que ajuda você a interagir com seus dados de CRM usando linguagem natural.
-## Capabilities
+## Capacidades
-| Feature | Description |
-| ---------------------------- | ------------------------------------------------------------------------- |
-| **Natural language queries** | Ask questions in plain English instead of building filters |
-| **Full data access** | Query records, relationships, and metrics across your workspace |
-| **Page context** | Reference "this company" or "this opportunity" based on your current view |
-| **Conversational** | Follow-up questions maintain context from previous queries |
+| Recurso | Descrição |
+| ---------------------------------- | ------------------------------------------------------------------------------------------ |
+| **Consultas em linguagem natural** | Faça perguntas em inglês simples em vez de criar filtros |
+| **Acesso total aos dados** | Consulte registros, relacionamentos e métricas em todo o seu espaço de trabalho |
+| **Contexto da página** | Faça referência a "esta empresa" ou "esta oportunidade" com base na sua visualização atual |
+| **Conversacional** | Perguntas de acompanhamento mantêm o contexto das consultas anteriores |
-## Example Interactions
+## Exemplos de interações
-### Finding Records
+### Encontrar registros
-* "Show me all opportunities over $50,000"
-* "Find contacts I haven't emailed in 2 weeks"
-* "List companies in the healthcare industry"
+* "Mostre-me todas as oportunidades acima de US$ 50.000"
+* "Encontre contatos para os quais não enviei e-mail há 2 semanas"
+* "Liste empresas do setor de saúde"
-### Getting Insights
+### Obtendo insights
-* "What's my total pipeline value?"
-* "How many deals closed last month?"
-* "Which stage has the most stuck opportunities?"
+* "Qual é o valor total do meu pipeline?"
+* "Quantos negócios foram fechados no mês passado?"
+* "Em qual etapa há mais oportunidades estagnadas?"
-### Using Page Context
+### Usando o contexto da página
-* "Summarize my interactions with this person" (on a contact page)
-* "What opportunities are linked to this company?" (on a company page)
-* "When was this deal last updated?" (on an opportunity page)
+* "Resuma minhas interações com esta pessoa" (em uma página de contato)
+* "Quais oportunidades estão vinculadas a esta empresa?" (em uma página da empresa)
+* "Quando este negócio foi atualizado pela última vez?" (em uma página de oportunidade)
diff --git a/packages/twenty-docs/l/pt/user-guide/ai/capabilities/permissions-access-control.mdx b/packages/twenty-docs/l/pt/user-guide/ai/capabilities/permissions-access-control.mdx
index 4a53c9a7ac..570bd6c6dc 100644
--- a/packages/twenty-docs/l/pt/user-guide/ai/capabilities/permissions-access-control.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/ai/capabilities/permissions-access-control.mdx
@@ -1,35 +1,35 @@
---
-title: Permissions & Access Control
-description: Control what AI agents can access and modify in your workspace.
+title: Permissões e Controle de Acesso
+description: Controle o que os agentes de IA podem acessar e modificar no seu espaço de trabalho.
---
-## Overview
+## Visão Geral
-AI agents respect your existing permission structure. This is particularly important for teams who want to control exactly what automated AI processes can access or modify in their workspace.
+Os agentes de IA respeitam sua estrutura de permissões existente. Isso é particularmente importante para equipes que desejam controlar exatamente o que processos de IA automatizados podem acessar ou modificar em seu espaço de trabalho.
-## Assign a Role to an AI Agent
+## Atribuir uma Função a um Agente de IA
-1. Go to **Settings → Roles**
-2. Click on the role you want to assign
-3. Open the **Assignment** tab
-4. Under **AI Agents**, click **+ Assign to AI agent**
-5. Select the AI agent from the list
-6. Confirm the assignment
+1. Vá para **Configurações → Funções**
+2. Clique na função que deseja atribuir
+3. Abra a aba de **Atribuição**
+4. Em **Agentes de IA**, clique em **+ Atribuir ao agente de IA**
+5. Selecione o agente de IA da lista
+6. Confirme a atribuição
-## Why Assign Roles to AI Agents?
+## Por que Atribuir Funções a Agentes de IA?
-| Benefit | Description |
-| ---------------- | ------------------------------------------------- |
-| **Security** | Limit what data AI agents can access or modify |
-| **Compliance** | Ensure AI only processes the data it needs |
-| **Control** | Prevent unintended actions from AI automations |
-| **Auditability** | Track which actions were performed by which agent |
+| Benefício | Descrição |
+| ------------------ | -------------------------------------------------------------- |
+| **Segurança** | Limite quais dados os agentes de IA podem acessar ou modificar |
+| **Conformidade** | Garanta que a IA processe apenas os dados de que precisa |
+| **Controle** | Evite ações não intencionais de automações de IA |
+| **Auditabilidade** | Acompanhe quais ações foram realizadas por cada agente |
- For AI agents running within workflows, role assignment ensures the agent cannot access or modify data outside its intended scope—even if the workflow has broader permissions.
+ Para agentes de IA em execução em fluxos de trabalho, a atribuição de função garante que o agente não possa acessar ou modificar dados fora do seu escopo pretendido — mesmo que o fluxo de trabalho tenha permissões mais amplas.
-## Related
+## Relacionados
-* [Permissions](/l/pt/user-guide/permissions-access/capabilities/permissions) — detailed information on creating and managing roles
-* [AI Agents](/l/pt/user-guide/ai/capabilities/ai-agents) — AI capabilities in workflows
+* [Permissões](/l/pt/user-guide/permissions-access/capabilities/permissions) — informações detalhadas sobre como criar e gerenciar funções
+* [Agentes de IA](/l/pt/user-guide/ai/capabilities/ai-agents) — recursos de IA em fluxos de trabalho
diff --git a/packages/twenty-docs/l/pt/user-guide/ai/how-tos/ai-faq.mdx b/packages/twenty-docs/l/pt/user-guide/ai/how-tos/ai-faq.mdx
index 774eae15c4..0b40b80c76 100644
--- a/packages/twenty-docs/l/pt/user-guide/ai/how-tos/ai-faq.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/ai/how-tos/ai-faq.mdx
@@ -1,29 +1,29 @@
---
-title: AI FAQ
-description: Frequently asked questions about AI features in Twenty.
+title: FAQ de IA
+description: Perguntas frequentes sobre recursos de IA na Twenty.
---
-
- AI features are currently in development and will be released in beta soon. Stay tuned for updates!
+
+ Os recursos de IA estão em desenvolvimento no momento e serão lançados em versão beta em breve. Fique de olho nas atualizações!
-
- We're building two main AI capabilities:
+
+ Estamos desenvolvendo duas capacidades principais de IA:
- 1. **AI Chatbot**: A context-aware assistant that can access your Twenty data and help you with queries
- 2. **AI Agents in Workflows**: Intelligent automation that can process data, make decisions, and execute tasks within your workflows
+ 1. **Chatbot de IA**: um assistente sensível ao contexto que pode acessar seus dados na Twenty e ajudar você com perguntas
+ 2. **Agentes de IA em fluxos de trabalho**: automação inteligente que pode processar dados, tomar decisões e executar tarefas dentro dos seus fluxos de trabalho
-
- AI agents will operate under the permission system. You can assign specific roles to AI agents under **Settings → Roles**, giving you full control over what data they can access and what actions they can perform.
+
+ Os agentes de IA funcionarão de acordo com o sistema de permissões. Você pode atribuir funções específicas aos agentes de IA em **Configurações → Funções**, dando a você controle total sobre quais dados eles podem acessar e quais ações podem executar.
-
- AI actions will consume workflow credits based on the complexity of the task and the AI model used. More details will be available when the features launch.
+
+ As ações de IA consumirão créditos de fluxo de trabalho com base na complexidade da tarefa e no modelo de IA utilizado. Mais detalhes estarão disponíveis quando os recursos forem lançados.
-
- Initially, Twenty will use built-in AI models. Support for custom or external AI models may be added in future releases based on user feedback.
+
+ Inicialmente, a Twenty usará modelos de IA integrados. O suporte a modelos de IA personalizados ou externos pode ser adicionado em versões futuras com base no feedback dos usuários.
diff --git a/packages/twenty-docs/l/pt/user-guide/ai/overview.mdx b/packages/twenty-docs/l/pt/user-guide/ai/overview.mdx
index bd4ee68a79..fe7322317f 100644
--- a/packages/twenty-docs/l/pt/user-guide/ai/overview.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/ai/overview.mdx
@@ -1,62 +1,62 @@
---
-title: AI
-description: AI-powered features coming soon to Twenty.
+title: IA
+description: Funcionalidades com IA chegando em breve ao Twenty.
---
-
+
-## What's Coming
+## O Que Está Por Vir
-Twenty is building AI capabilities to help your team work smarter. We're focusing on two major areas:
+A Twenty está desenvolvendo capacidades de IA para ajudar sua equipe a trabalhar de forma mais inteligente. Estamos nos concentrando em duas áreas principais:
-### 1. AI Chatbot
+### 1. Chatbot de IA
-A conversational assistant that understands your context and has access to all your Twenty data.
+Um assistente conversacional que entende seu contexto e tem acesso a todos os seus dados do Twenty.
-**Key capabilities:**
+**Principais capacidades:**
-* **Full data access**: Query any record, relationship, or metric in your workspace
-* **Page context awareness**: Reference "this company" or "this opportunity" based on where you are in Twenty
-* **Natural language**: Ask questions and get answers without navigating menus
+* **Acesso completo aos dados**: Consulte qualquer registro, relacionamento ou métrica no seu espaço de trabalho
+* **Consciência do contexto da página**: Faça referência a "esta empresa" ou "esta oportunidade" com base em onde você está no Twenty
+* **Linguagem natural**: Faça perguntas e obtenha respostas sem navegar por menus
-**Example prompts:**
+**Exemplos de prompts:**
-* "What opportunities are closing this month?"
-* "Which deals have been in Negotiation for more than 30 days?"
-* "Summarize my interactions with this person"
+* "Quais oportunidades fecham neste mês?"
+* "Quais negócios estão em Negociação há mais de 30 dias?"
+* "Resuma minhas interações com esta pessoa"
-### 2. AI Agents in Workflows
+### 2. Agentes de IA em fluxos de trabalho
-Extend your workflows with AI-powered actions and autonomous agents.
+Amplie seus fluxos de trabalho com ações com IA e agentes autônomos.
-**Key capabilities:**
+**Principais capacidades:**
-* **AI actions**: Use AI to enrich data, classify records, generate summaries, and more
-* **Autonomous agents**: Let agents execute multi-step tasks within a workflow
-* **Custom prompts**: Define exactly how AI should process your data
+* **Ações de IA**: Use IA para enriquecer dados, classificar registros, gerar resumos e muito mais
+* **Agentes autônomos**: Permita que agentes executem tarefas de várias etapas dentro de um fluxo de trabalho
+* **Prompts personalizados**: Defina exatamente como a IA deve processar seus dados
-**Use cases:**
+**Casos de uso:**
-* Automatically categorize inbound leads
-* Enrich company data from public sources
-* Generate follow-up email drafts based on meeting notes
-* Score opportunities based on engagement patterns
+* Classifique automaticamente leads de entrada
+* Enriqueça dados de empresas a partir de fontes públicas
+* Gere rascunhos de e-mails de acompanhamento com base em notas de reunião
+* Pontue oportunidades com base em padrões de engajamento
-## Permissions and Access Control
+## Permissões e controle de acesso
-AI agents will be managed through the existing permissions system:
+Os agentes de IA serão gerenciados pelo sistema de permissões existente:
-1. Go to **Settings → Roles**
-2. Configure which data each AI agent can access
-3. Set read/write permissions per object
+1. Vá para **Configurações → Funções**
+2. Configure quais dados cada agente de IA pode acessar
+3. Defina permissões de leitura/gravação por objeto
-This ensures AI agents respect your data governance policies and only access what they need.
+Isso garante que os agentes de IA respeitem suas políticas de governança de dados e acessem somente o que precisam.
-## Stay Updated
+## Mantenha-se Atualizado
-We'll update this section as AI features become available. In the meantime:
+Atualizaremos esta seção à medida que os recursos de IA se tornarem disponíveis. Enquanto isso:
-* Follow our [GitHub](https://github.com/twentyhq/twenty) for development updates
-* Join our [Discord](https://discord.gg/twenty) to share feedback and feature requests
+* Siga nosso [GitHub](https://github.com/twentyhq/twenty) para atualizações de desenvolvimento
+* Entre no nosso [Discord](https://discord.gg/twenty) para compartilhar feedback e solicitações de recursos
diff --git a/packages/twenty-docs/l/pt/user-guide/billing/capabilities/pricing-plans.mdx b/packages/twenty-docs/l/pt/user-guide/billing/capabilities/pricing-plans.mdx
index 90bf7e7cbb..8cf07b63e9 100644
--- a/packages/twenty-docs/l/pt/user-guide/billing/capabilities/pricing-plans.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/billing/capabilities/pricing-plans.mdx
@@ -1,79 +1,79 @@
---
-title: Pricing Plans
-description: Learn about Twenty's pricing plans and how to switch between them.
+title: Planos de preços
+description: Saiba mais sobre os planos de preços do Twenty e como alternar entre eles.
---
-## Overview
+## Visão Geral
-Twenty offers flexible pricing to fit teams of all sizes, whether you prefer cloud hosting or self-hosting.
+O Twenty oferece preços flexíveis para atender equipes de todos os tamanhos, quer você prefira hospedagem em nuvem ou auto-hospedagem.
-## Cloud Plans
+## Planos na nuvem
-### Pro (Cloud)
+### Pro (Nuvem)
-For teams ready to scale:
+Para equipes prontas para escalar:
-* All core CRM features
-* Email and calendar sync
-* Workflows and automations
-* Standard support
+* Todos os recursos centrais do CRM
+* Sincronização de email e calendário
+* Fluxos de trabalho e automações
+* Suporte padrão
- Premium features (SSO and row-level permissions) are not included in the Pro plan.
+ Recursos premium (SSO e permissões em nível de linha) não estão incluídos no plano Pro.
-### Organization (Cloud)
+### Organização (Nuvem)
-For larger teams with advanced needs:
+Para equipes maiores com necessidades avançadas:
-* Everything in Pro
-* **Premium features**: SSO integration and row-level permissions
-* Priority support
+* Tudo do Pro
+* **Recursos premium**: integração SSO e permissões em nível de linha
+* Suporte prioritário
-## Self-Hosted Plans
+## Planos auto-hospedados
-### Free (Self-Hosted)
+### Gratuito (Auto-hospedado)
-Host Twenty on your own infrastructure at no cost:
+Hospede o Twenty na sua própria infraestrutura sem custo:
-* All Pro features included
-* Community support via Discord
-* Full control over your data
+* Todos os recursos do Pro incluídos
+* Suporte da comunidade via Discord
+* Controle total sobre seus dados
-### Organization (Self-Hosted)
+### Organização (Auto-hospedado)
-For teams who need premium features while self-hosting:
+Para equipes que precisam de recursos premium enquanto se auto-hospedam:
-* All Pro features
-* **Premium features**: SSO integration and row-level permissions
-* Twenty team support
-* No requirement to publish custom code as open-source before distributing
+* Todos os recursos do Pro
+* **Recursos premium**: integração SSO e permissões em nível de linha
+* Suporte da equipe Twenty
+* Sem necessidade de publicar código personalizado como código aberto antes de distribuir
-## Premium Features
+## Recursos premium
-Premium features are only available on the Organization plans (Cloud or Self-Hosted):
+Os recursos premium estão disponíveis apenas nos planos Organização (Nuvem ou Auto-hospedado):
-* **SSO integration**: Single Sign-On with your identity provider
-* **Row-level permissions**: Fine-grained access control at the record level
+* **Integração SSO**: Single Sign-On com seu provedor de identidade
+* **Permissões em nível de linha**: controle de acesso granular no nível de registro
-## Switching Plans
+## Mudança de planos
-### Upgrade to Organization
+### Atualizar para Organização
-1. Go to **Settings → Billing**
-2. Click **Switch to Organization**
-3. Confirm your upgrade
+1. Vá para **Configurações → Faturamento**
+2. Clique em **Mudar para Organização**
+3. Confirme o upgrade
-### Downgrade to Pro
+### Fazer downgrade para Pro
-Contact support to downgrade your plan.
+Entre em contato com o suporte para fazer downgrade do seu plano.
-### Switch to Yearly Billing
+### Mudar para faturamento anual
-1. Go to **Settings → Billing**
-2. Click **Switch to Yearly**
-3. Save with annual billing
+1. Vá para **Configurações → Faturamento**
+2. Clique em **Mudar para Anual**
+3. Economize com faturamento anual
-### Switch to Monthly Billing
+### Mudar para faturamento mensal
-Contact support to switch back to monthly billing.
+Entre em contato com o suporte para voltar ao faturamento mensal.
diff --git a/packages/twenty-docs/l/pt/user-guide/billing/capabilities/workflow-credits.mdx b/packages/twenty-docs/l/pt/user-guide/billing/capabilities/workflow-credits.mdx
index 0ce8e3be72..b7b59d0b4d 100644
--- a/packages/twenty-docs/l/pt/user-guide/billing/capabilities/workflow-credits.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/billing/capabilities/workflow-credits.mdx
@@ -1,49 +1,49 @@
---
-title: Workflow Credits
-description: Understanding workflow credits, consumption, and how to purchase more.
+title: Créditos de Fluxo de Trabalho
+description: Compreendendo créditos de fluxo de trabalho, consumo e como comprar mais.
---
-## Overview
+## Visão Geral
-Credits power your workflow automations in Twenty. Every workflow action consumes credits based on its complexity.
+Os créditos alimentam suas automações de fluxo de trabalho no Twenty. Cada ação de fluxo de trabalho consome créditos com base em sua complexidade.
-## Credit Allocation
+## Alocação de créditos
-Credits are based on your billing cycle, not your plan:
+Os créditos são baseados no seu ciclo de faturamento, não no seu plano:
-| Billing Cycle | Credits |
-| ------------- | --------------- |
-| Monthly | 5 million/month |
-| Yearly | 50 million/year |
+| Ciclo de faturamento | Créditos |
+| -------------------- | -------------- |
+| Mensal | 5 milhões/mês |
+| Anual | 50 milhões/ano |
- The 5 million monthly credits are designed to empower you to run automations without worrying about costs. For most workflows using standard actions, this is more than enough. You'll only need additional credits when running advanced code nodes or AI-powered features.
+ Os 5 milhões de créditos mensais foram projetados para permitir que você execute automações sem se preocupar com custos. Para a maioria dos fluxos de trabalho que usam ações padrão, isso é mais do que suficiente. Você só precisará de créditos adicionais ao executar nós de código avançados ou recursos com tecnologia de IA.
-## Credit Consumption
+## Consumo de créditos
-Different actions consume different amounts of credits:
+Ações diferentes consomem quantidades diferentes de créditos:
-| Action Type | Credit Usage |
-| ------------------------------------------------------- | ----------------------- |
-| **Basic operations** (search, update, create records) | Minimal |
-| **Complex operations** (code nodes, external API calls) | More credits |
-| **AI prompts** (coming soon) | Variable based on usage |
+| Tipo de ação | Uso de Créditos |
+| ----------------------------------------------------------------- | ------------------------ |
+| **Operações básicas** (pesquisar, atualizar, criar registros) | Mínimo |
+| **Operações complexas** (nós de código, chamadas de API externas) | Mais créditos |
+| **Prompts de IA** (em breve) | Variável com base no uso |
-Credits are deducted in real-time when workflows execute.
+Os créditos são deduzidos em tempo real à medida que os fluxos de trabalho são executados.
-## Monitoring Usage
+## Monitoramento do uso
-Track your credit consumption:
+Acompanhe seu consumo de créditos:
-1. Go to **Settings → Billing**
-2. View your current usage and remaining credits
-3. Monitor trends to plan for additional credits if needed
+1. Vá para **Configurações → Faturamento**
+2. Veja seu uso atual e os créditos restantes
+3. Monitore tendências para planejar créditos adicionais, se necessário
-## Purchasing Additional Credits
+## Compra de Créditos Adicionais
-Need more credits?
+Precisa de mais créditos?
-1. Go to **Settings → Billing**
-2. Click on the option to purchase additional credit packs
-3. Select the amount you need
+1. Vá para **Configurações → Faturamento**
+2. Clique na opção para comprar pacotes de créditos adicionais
+3. Selecione a quantidade de que você precisa
diff --git a/packages/twenty-docs/l/pt/user-guide/billing/how-tos/billing-faq.mdx b/packages/twenty-docs/l/pt/user-guide/billing/how-tos/billing-faq.mdx
index ee1d560cb1..9300dfcf41 100644
--- a/packages/twenty-docs/l/pt/user-guide/billing/how-tos/billing-faq.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/billing/how-tos/billing-faq.mdx
@@ -1,86 +1,86 @@
---
-title: Billing FAQ
-description: Frequently asked questions about Twenty pricing and billing.
+title: FAQ de Faturação
+description: Perguntas frequentes sobre preços e faturação da Twenty.
---
-## Pricing
+## Preços
-
- Yes, you can use Twenty for free while self-hosting. You will get access to everything included in the Pro (Cloud) plan, except the support from our core-team. Support is accessible via our Discord community.
+
+ Sim, você pode usar a Twenty gratuitamente enquanto hospeda por conta própria. Você terá acesso a tudo incluído no plano Pro (Cloud), exceto o suporte da nossa equipe central. O suporte está acessível por meio da nossa comunidade no Discord.
- If you want to self-host and need the Premium features (SSO and row-level permissions), you can choose the paid Organization (Self-Hosted) license. This also includes support from the Twenty team and removes the requirement to publish custom code as open-source before distributing.
+ Se você quiser hospedar por conta própria e precisar dos recursos Premium (SSO e permissões em nível de linha), pode escolher a licença paga Organization (Self-Hosted). Isso também inclui suporte da equipe da Twenty e remove a exigência de publicar código personalizado como código aberto antes de distribuir.
-
- Premium features are only available on the Organization plans (Cloud or Self-Hosted):
+
+ Os recursos Premium estão disponíveis apenas nos planos Organization (Cloud ou Self-Hosted):
- * **SSO integration**: Single Sign-On with your identity provider
- * **Row-level permissions**: Fine-grained access control at the record level
+ * **Integração de SSO**: Single Sign-On com seu provedor de identidade
+ * **Permissões em nível de linha**: Controle de acesso granular no nível de registro
-
- We do not offer free seats. Pricing is per user and each user needs a licence to access Twenty.
+
+ Não oferecemos assentos gratuitos. A precificação é por usuário e cada usuário precisa de uma licença para acessar a Twenty.
-
- You can do so under `Settings → Billing`. Then click on `Switch to Organization`.
+
+ Você pode fazer isso em `Configurações → Cobrança`. Depois, clique em `Alterar para Organização`.
-
- Please reach out to our team directly via the Support, there is no easy way to do this using the UI at the moment.
+
+ Por favor, entre em contato diretamente com nossa equipe através do Suporte, não há uma maneira fácil de fazer isso usando a interface no momento.
-
- You can do so under `Settings → Billing`. Then click on `Switch to Yearly`.
+
+ Você pode fazer isso em `Configurações → Cobrança`. Depois, clique em `Alterar para Anual`.
-
- Please reach out to our team directly via the Support, there is no easy way to do this using the UI at the moment.
+
+ Por favor, entre em contato diretamente com nossa equipe através do Suporte, não há uma maneira fácil de fazer isso usando a interface no momento.
-
- You will find this under `Settings → Billing`.
+
+ Você encontrará isso em `Configurações → Cobrança`.
-
- The number of credits depends on your billing cycle, not your plan:
+
+ A quantidade de créditos depende do seu ciclo de faturação, não do seu plano:
- * **Monthly subscriptions**: 5 million credits per month
- * **Yearly subscriptions**: 50 million credits per year
+ * **Assinaturas mensais**: 5 milhões de créditos por mês
+ * **Assinaturas anuais**: 50 milhões de créditos por ano
-
- Each workflow action consumes credits based on its complexity:
+
+ Cada ação de fluxo de trabalho consome créditos com base em sua complexidade:
- * **Basic internal operations** (such as search, update, create records) consume very few credits
- * **More complex operations** like code nodes and requests to external services consume more credits
- * **AI prompts** (coming soon!) will also consume more credits based on usage
+ * **Operações internas básicas** (como pesquisa, atualização, criação de registros) consomem muito poucos créditos
+ * **Operações mais complexas** como nós de código e solicitações a serviços externos consomem mais créditos
+ * **Prompts de IA** (em breve!) também consomem mais créditos com base no uso
- Credits are deducted in real-time when workflows execute. You can monitor your usage in **Settings → Billing** to track consumption and remaining credits.
+ Os créditos são deduzidos em tempo real à medida que os fluxos de trabalho são executados. Você pode monitorar seu uso em **Configurações → Cobrança** para acompanhar o consumo e os créditos restantes.
-
- You can buy additional credits under `Settings → Billing`.
+
+ Você pode comprar créditos adicionais em `Configurações → Cobrança`.
-## Billing
+## Faturação
-
- You can do so under `Settings → Billing`.
+
+ Você pode fazer isso em `Configurações → Cobrança`.
-
- You can do so under `Settings → Billing`. Then click on `View billing details`. You'll be able to add a new payment method there.
+
+ Você pode fazer isso em `Configurações → Cobrança`. Depois, clique em `Ver detalhes de cobrança`. Você poderá adicionar um novo método de pagamento lá.
-
- You can do so under `Settings → Billing`. Then click on `View billing details`. You'll be able to edit the billing information there.
+
+ Você pode fazer isso em `Configurações → Cobrança`. Depois, clique em `Ver detalhes de cobrança`. Você poderá editar as informações de faturamento lá.
-
- You can do so under `Settings → Billing`. Then click on `View billing details`. You'll see all your invoices at the bottom of the screen.
+
+ Você pode fazer isso em `Configurações → Cobrança`. Depois, clique em `Ver detalhes de cobrança`. Você verá todas as suas faturas na parte inferior da tela.
diff --git a/packages/twenty-docs/l/pt/user-guide/billing/overview.mdx b/packages/twenty-docs/l/pt/user-guide/billing/overview.mdx
index c58918e0a3..7c7f2e3a67 100644
--- a/packages/twenty-docs/l/pt/user-guide/billing/overview.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/billing/overview.mdx
@@ -1,45 +1,45 @@
---
-title: Billing
-description: Understand Twenty pricing and manage your subscription.
+title: Faturação
+description: Entenda os preços da Twenty e gerencie sua assinatura.
image: /images/user-guide/setup/pricing.png
---
-
+
-Twenty offers flexible pricing plans to fit your team's needs. Manage your subscription, track workflow credits, and access invoices all from **Settings → Billing**.
+A Twenty oferece planos de preços flexíveis para atender às necessidades da sua equipe. Gerencie sua assinatura, acompanhe créditos de fluxos de trabalho e acesse faturas, tudo em **Configurações → Cobrança**.
-## What's in this section
+## O que há nesta seção
-
- Learn about Twenty's pricing plans and what's included.
+
+ Saiba mais sobre os planos de preços da Twenty e o que está incluído.
-
- Frequently asked questions about pricing and billing.
+
+ Perguntas frequentes sobre preços e cobrança.
-## At a glance
+## Visão geral
-| Plan | Key Features |
-| ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
-| **Free (Self-Hosted)** | All Pro features, community support |
-| **Pro (Cloud)** | Everything apart from the Premium features (SSO and row-level permissions), standard support |
-| **Organization (Cloud)** | All from Pro + the Premium features (SSO and row-level permissions), priority support |
-| **Organization (Self-Hosted)** | All from Pro + the Premium features (SSO, row-level permissions), Twenty team support, not required to publish your custom code as open-source before distributing |
+| Plano | Principais funcionalidades |
+| --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| **Gratuito (hospedado por conta própria)** | Todas as funcionalidades do Pro, suporte da comunidade |
+| **Pro (Nuvem)** | Tudo, exceto as funcionalidades Premium (SSO e permissões em nível de linha), suporte padrão |
+| **Organização (Nuvem)** | Tudo do Pro + as funcionalidades Premium (SSO e permissões em nível de linha), suporte prioritário |
+| **Organização (hospedado por conta própria)** | Tudo do Pro + as funcionalidades Premium (SSO, permissões em nível de linha), suporte da equipe Twenty, não é necessário publicar seu código personalizado como código aberto antes de distribuir |
-## Quick answers
+## Respostas rápidas
-**Where do I manage billing?**
-Go to **Settings → Billing** to view your plan, update payment methods, and access invoices.
+**Onde gerencio a cobrança?**
+Vá para **Configurações → Cobrança** para ver seu plano, atualizar métodos de pagamento e acessar faturas.
-**Can I use Twenty for free?**
-Yes! Self-host Twenty and get all Pro features at no cost.
+**Posso usar a Twenty gratuitamente?**
+Sim! Hospede a Twenty por conta própria e obtenha todas as funcionalidades do Pro sem custo.
-**How do I upgrade?**
-Go to **Settings → Billing** and click **Switch to Organization** or **Switch to Yearly**.
+**Como faço para atualizar?**
+Vá para **Configurações → Cobrança** e clique em **Mudar para Organização** ou **Mudar para Anual**.
-For more questions, see the [Billing FAQ](/l/pt/user-guide/billing/how-tos/billing-faq).
+Para mais perguntas, consulte as [Perguntas frequentes sobre cobrança](/l/pt/user-guide/billing/how-tos/billing-faq).
diff --git a/packages/twenty-docs/l/pt/user-guide/calendar-emails/capabilities/calendar.mdx b/packages/twenty-docs/l/pt/user-guide/calendar-emails/capabilities/calendar.mdx
index 897b360565..cbedbcb0d5 100644
--- a/packages/twenty-docs/l/pt/user-guide/calendar-emails/capabilities/calendar.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/calendar-emails/capabilities/calendar.mdx
@@ -1,43 +1,43 @@
---
-title: Calendar
-description: Understanding calendar integration features in Twenty.
+title: Calendário
+description: Entendendo os recursos de integração do calendário no Twenty.
---
-**Note**: To connect your calendar and configure sync settings, visit [Email & Calendar Setup](/l/pt/user-guide/calendar-emails/overview).
+**Nota**: Para conectar seu calendário e configurar as configurações de sincronização, visite [Configuração de Email & Calendário](/l/pt/user-guide/calendar-emails/overview).
-## How Calendar Integration Works
+## Como Funciona a Integração de Calendário
-Twenty automatically syncs your calendar events and links them to the relevant CRM records, giving you a complete view of your meeting history with contacts and companies.
+O Twenty sincroniza automaticamente os eventos do seu calendário e os vincula aos registros relevantes do CRM, oferecendo uma visão completa do seu histórico de reuniões com contatos e empresas.
-## Calendar Tab
+## Aba de Calendário
-Next to the Emails tab on records, you'll find a `Calendar` tab that contains the history of meetings scheduled with the record.
+Ao lado da aba de Emails nos registros, você encontrará a aba `Calendário` que contém o histórico de reuniões agendadas com o registro.
-### Available For
+### Disponível para
-* **People**: View all meetings scheduled with a specific contact
-* **Companies**: See all meetings related to a company and its employees
-* **Opportunities**: Access meeting history related to the company linked to this opportunity
+* **Pessoas**: Visualize todas as reuniões agendadas com um contato específico
+* **Empresas**: Veja todas as reuniões relacionadas a uma empresa e seus funcionários
+* **Oportunidades**: Acesse o histórico de reuniões relacionadas à empresa vinculada a esta oportunidade
-### Viewing Meeting History
+### Visualizando o Histórico de Reuniões
-1. **Navigate to a Record**: Go to any Person, Company, or Opportunity record
-2. **Select the Calendar Tab**: Click on the `Calendar` tab next to the Emails tab
-3. **Browse Meeting History**: View all scheduled meetings and their details
-4. **Access Meeting Context**: See meeting participants, times, and related information
+1. **Navegue até um Registro**: Vá para qualquer registro de Pessoa, Empresa ou Oportunidade
+2. **Selecione a Aba de Calendário**: Clique na aba `Calendário` ao lado da aba de Emails
+3. **Navegue pelo Histórico de Reuniões**: Veja todas as reuniões agendadas e seus detalhes
+4. **Acesse o Contexto da Reunião**: Veja participantes, horários e informações relacionadas
-## Visibility Settings
+## Configurações de Visibilidade
-Calendar data follows the same visibility settings as emails, ensuring consistent privacy controls across both communication channels.
+Os dados do calendário seguem as mesmas configurações de visibilidade dos emails, garantindo controles de privacidade consistentes em ambos os canais de comunicação.
-## What Gets Synced
+## O Que É Sincronizado
-* **External Meetings**: All meetings with contacts outside your organization
-* **Automatic Linking**: Meetings connect to existing People and Company records based on attendee email addresses
-* **Meeting Details**: Subject, time, duration, and participants
-* **Updates**: New calendar events sync automatically
+* **Reuniões Externas**: Todas as reuniões com contatos fora da sua organização
+* **Vinculação Automática**: As reuniões conectam-se aos registros de Pessoas e Empresas existentes com base nos endereços de email dos participantes
+* **Detalhes da Reunião**: Assunto, horário, duração e participantes
+* **Atualizações**: Novos eventos do calendário são sincronizados automaticamente
-## What Doesn't Get Synced
+## O Que Não É Sincronizado
-* **Internal Meetings**: Meetings with only colleagues (same domain) remain private
-* **Private Events**: Events marked as private in your calendar
+* **Reuniões Internas**: Reuniões apenas com colegas (mesmo domínio) permanecem privadas
+* **Eventos Privados**: Eventos marcados como privados no seu calendário
diff --git a/packages/twenty-docs/l/pt/user-guide/calendar-emails/capabilities/mailbox.mdx b/packages/twenty-docs/l/pt/user-guide/calendar-emails/capabilities/mailbox.mdx
index 815391d03a..5ffd65b29c 100644
--- a/packages/twenty-docs/l/pt/user-guide/calendar-emails/capabilities/mailbox.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/calendar-emails/capabilities/mailbox.mdx
@@ -1,85 +1,95 @@
---
-title: Mailbox
-description: Understanding email integration features in Twenty.
+title: Caixa de entrada
+description: Entendendo os recursos de integração de e-mail no Twenty.
---
-**Note**: To connect your email accounts and configure sync settings, visit [Email & Calendar Setup](/l/pt/user-guide/calendar-emails/overview).
+**Nota**: Para conectar suas contas de email e configurar as configurações de sincronização, visite [Configuração de Email & Calendário](/l/pt/user-guide/calendar-emails/overview).
-## How Email Integration Works
+## Como Funciona a Integração de Email
-Twenty automatically links emails from your connected mailboxes to the relevant CRM records, keeping all communication history in one place.
+Twenty vincula automaticamente os emails de suas caixas de correio conectadas aos registros de CRM relevantes, mantendo todo o histórico de comunicação em um só lugar.
-### Objects Where Emails Can Be Found
+### Objetos onde os e-mails podem ser encontrados
-Email conversations appear in three main objects:
+As conversas de email aparecem em três objetos principais:
-* **People**: View all emails exchanged with a specific contact
-* **Companies**: See all emails related to a company and its employees
-* **Opportunities**: Access email threads related to the company linked to this opportunity. Email threads from individual people on the opportunity are not shown yet.
+* **Pessoas**: Visualize todos os emails trocados com um contato específico
+* **Empresas**: Veja todos os emails relacionados a uma empresa e seus funcionários
+* **Oportunidades**: Acesse as conversas de email relacionadas à empresa vinculada a esta oportunidade. As conversas de e-mail de pessoas específicas na oportunidade ainda não são exibidas.
-### Viewing Email Threads
+### Visualizando conversas de e-mail
-1. **Navigate to a Record**: Go to any Person, Company, or Opportunity record
-2. **Select the Emails Tab**: Click on the `Emails` tab to view synced emails
-3. **Open an Email Thread**: Click on any email to open and read the full conversation
-4. **Browse History**: Scroll through the complete email history with that contact
+1. **Navegue até um Registro**: Vá para qualquer registro de Pessoa, Empresa ou Oportunidade
+2. **Selecione a Aba de Emails**: Clique na aba `Emails` para visualizar os emails sincronizados
+3. **Abrir uma conversa de e-mail**: Clique em qualquer e-mail para abrir e ler a conversa completa
+4. **Navegue pelo Histórico**: Role pelo histórico completo de emails com aquele contato
-## What You'll See
+## O Que Você Verá
-### Email Thread View
+### Visualização do Fio de Email
-When you open an email thread, you can:
+Ao abrir um fio de email, você pode:
-* **Read Full Conversations**: See the complete email exchange
-* **View Participants**: See all people involved in the email thread
-* **Check Timestamps**: Know exactly when each email was sent
-* **Access Context**: Understand the full communication history
+* **Leia Conversas Completas**: Veja a troca completa de emails
+* **Visualize Participantes**: Veja todas as pessoas envolvidas no fio de email
+* **Verificar carimbos de data e hora**: Saiba exatamente quando cada e-mail foi enviado
+* **Acesse o Contexto**: Entenda o histórico completo de comunicação
-### Email Visibility
+### Visibilidade de Email
-Depending on your mailbox settings, you might see:
+Dependendo das suas configurações de caixa de correio, você pode ver:
-* **Full Content**: Complete email text and details
-* **Subject + Metadata**: Subject line, sender, recipient, and timestamp
-* **Metadata Only**: Basic information without email content
+* **Conteúdo Completo**: Texto e detalhes completos do email
+* **Assunto + Metadados**: Linha de assunto, remetente, destinatário e carimbo de data/hora
+* **Apenas Metadados**: Informações básicas sem conteúdo de email
-## Email Sync Behavior
+## Comportamento de Sincronização de Email
-### What Gets Synced
+### Taxa de sincronização
-* **External Emails**: All emails with contacts outside your organization
-* **Automatic Linking**: Emails connect to existing People and Company records
-* **Multiple Addresses**: Emails from any address link to the same contact record
-* **Updates**: New emails appear within 5 minutes
+Twenty importa emails a cerca de **400 mensagens por minuto**. Atualmente, essa taxa é limitada pela limitação de taxa da API do Gmail (e aplica-se de forma semelhante a outros provedores).
-### What Doesn't Get Synced
+Para referência:
-* **Internal Emails**: Emails between colleagues (same domain) remain private
-* **Group Emails**: Distribution lists and group emails are excluded
-* **Excluded Folders**: Folders you've chosen not to sync (configured under Settings → Accounts → Email)
+* 1.000 emails → ~2,5 minutos
+* 10.000 emails → ~25 minutos
+* 50.000 emails → ~2 horas
-### Selective Folder Sync (Lab Feature)
+### O Que É Sincronizado
-Control which email folders sync with Twenty:
+* **Emails Externos**: Todos os emails com contatos fora da sua organização
+* **Vinculação Automática**: Emails conectam-se aos registros de Pessoas e Empresas existentes
+* **Múltiplos Endereços**: Emails de qualquer endereço vinculam-se ao mesmo registro de contato
+* **Atualizações**: Novos emails aparecem em até 5 minutos
-1. Enable `Message Folder` in Settings → Releases → Lab
-2. Configure folders under Settings → Accounts → Email
-3. Choose specific folders to include or exclude (Inbox, Sent, Archive, custom folders)
+### O Que Não É Sincronizado
-## Troubleshooting Email Sync
+* **Emails Internos**: Emails entre colegas (mesmo domínio) permanecem privados
+* **Emails de Grupo**: Listas de distribuição e emails de grupo são excluídos
+* **Pastas Excluídas**: Pastas que você escolheu não sincronizar (configuradas em Configurações → Contas → Email)
-### Common Sync Issues
+### Sincronização seletiva de pastas
-* **Sync Delays**: Emails appear within 5 minutes, but initial imports take longer
-* **Missing Emails**: Check if:
- * Folders are excluded in Message Folder settings
- * Contact auto-creation is disabled (emails need existing Twenty records)
- * Email is from colleagues (same domain) or group lists
- * Mailbox is still completing initial sync
+Controle quais pastas de email sincronizam com o Twenty:
-### Email Limitations
+1. Vá para **Configurações → Contas** e selecione sua conta de email conectada
+2. Configure as pastas na seção Email
+3. Escolha pastas específicas para incluir ou excluir (Caixa de Entrada, Enviados, Arquivo, pastas personalizadas)
-* **System Folders**: Some email folders may not be available for sync
-* **Aliases**: Only true mailboxes can be connected (not email aliases)
+## Solução de Problemas de Sincronização de Email
+
+### Problemas Comuns de Sincronização
+
+* **Atrasos na Sincronização**: Emails aparecem em até 5 minutos, mas as importações iniciais levam mais tempo
+* **Emails Ausentes**: Verifique se:
+ * As pastas são excluídas nas configurações de Pasta de Mensagens
+ * A criação automática de contatos está desativada (os emails precisam de registros existentes no Twenty)
+ * O email é de colegas (mesmo domínio) ou listas de grupo
+ * A caixa de correio ainda está concluindo a sincronização inicial
+
+### Limitações de Email
+
+* **Pastas do Sistema**: Algumas pastas de email podem não estar disponíveis para sincronização
+* **Apelidos de Email**: Somente as caixas de correio verdadeiras podem ser conectadas (não alias de email)
diff --git a/packages/twenty-docs/l/pt/user-guide/calendar-emails/how-tos/can-i-book-meetings-from-twenty.mdx b/packages/twenty-docs/l/pt/user-guide/calendar-emails/how-tos/can-i-book-meetings-from-twenty.mdx
index edee83875d..bd245f5a3c 100644
--- a/packages/twenty-docs/l/pt/user-guide/calendar-emails/how-tos/can-i-book-meetings-from-twenty.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/calendar-emails/how-tos/can-i-book-meetings-from-twenty.mdx
@@ -1,28 +1,28 @@
---
-title: Can I Book Meetings from Twenty?
-description: Information about booking meetings directly from Twenty.
+title: Posso agendar reuniões a partir do Twenty?
+description: Informações sobre o agendamento de reuniões diretamente a partir do Twenty.
---
-## Current Status
+## Estado atual
-**No, Twenty does not currently support booking meetings directly from the platform.**
+**Não, o Twenty atualmente não suporta o agendamento de reuniões diretamente a partir da plataforma.**
-Twenty's calendar integration is designed to **sync and display** your existing calendar events, not to create new ones. All meeting scheduling should be done through your native calendar application (Google Calendar, Microsoft Outlook, etc.).
+A integração de calendário do Twenty foi concebida para **sincronizar e apresentar** os seus eventos de calendário existentes, e não para criar novos. Todo o agendamento de reuniões deve ser feito através da sua aplicação de calendário nativa (Google Calendar, Microsoft Outlook, etc.).
-## What You Can Do
+## O que pode fazer
-* **View meeting history** on People, Companies, and Opportunities records
-* **See upcoming meetings** with contacts in your CRM
-* **Track meeting context** alongside email communications
-* **Auto-create contacts** from meeting participants
+* **Ver o histórico de reuniões** nos registos de Pessoas, Empresas e Oportunidades
+* **Ver as próximas reuniões** com contactos no seu CRM
+* **Acompanhar o contexto das reuniões** juntamente com as comunicações por e-mail
+* **Criar contactos automaticamente** a partir dos participantes das reuniões
-## How to Schedule Meetings
+## Como agendar reuniões
-1. Use your native calendar app (Google Calendar, Outlook, etc.)
-2. Create the meeting as you normally would
-3. The meeting will automatically sync to Twenty within 5 minutes
-4. View the meeting on the relevant CRM records
+1. Use a sua aplicação de calendário nativa (Google Calendar, Outlook, etc.)
+2. Crie a reunião como normalmente faria
+3. A reunião será sincronizada automaticamente com o Twenty no prazo de 5 minutos
+4. Veja a reunião nos registos relevantes do CRM
-## Future Plans
+## Planos futuros
-Meeting creation from within Twenty is on our roadmap. Join our [GitHub discussions](https://github.com/twentyhq/twenty/discussions) to share your use case and help prioritize this feature.
+A criação de reuniões dentro do Twenty está no nosso roteiro. Junte-se às nossas [discussões no GitHub](https://github.com/twentyhq/twenty/discussions) para partilhar o seu caso de uso e ajudar a priorizar esta funcionalidade.
diff --git a/packages/twenty-docs/l/pt/user-guide/calendar-emails/how-tos/can-i-send-emails-from-twenty.mdx b/packages/twenty-docs/l/pt/user-guide/calendar-emails/how-tos/can-i-send-emails-from-twenty.mdx
index 28a0855ff7..8c40dfe17b 100644
--- a/packages/twenty-docs/l/pt/user-guide/calendar-emails/how-tos/can-i-send-emails-from-twenty.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/calendar-emails/how-tos/can-i-send-emails-from-twenty.mdx
@@ -1,44 +1,44 @@
---
-title: Can I Send Emails from Twenty?
-description: Information about sending emails directly from Twenty.
+title: Posso enviar e-mails a partir do Twenty?
+description: Informações sobre o envio de e-mails diretamente a partir do Twenty.
---
-## Current Status
+## Estado atual
-Twenty's email integration is designed to **sync and display** your email history. Emails cannot be composed or sent directly from Twenty's interface.
+A integração de e-mail do Twenty foi concebida para **sincronizar e apresentar** o seu histórico de e-mails. Não é possível redigir ou enviar e-mails diretamente a partir da interface do Twenty.
-When you view an email thread on a record page and click **Reply**, you'll be redirected to the original thread in your mailbox (Gmail, Outlook, etc.). This is where you compose and send your reply.
+Ao visualizar uma conversa de e-mails numa página de registo e clicar em **Responder**, será redirecionado para a conversa original na sua caixa de entrada (Gmail, Outlook, etc.). É lá que redige e envia a sua resposta.
-## What You Can Do Today
+## O que pode fazer hoje
-* **View email history** on People, Companies, and Opportunities records
-* **Read full email threads** with contacts in your CRM
-* **Track communication context** alongside calendar events
-* **Auto-create contacts** from email interactions
-* **Reply via redirect** — click Reply to jump to your mailbox
+* **Ver o histórico de e-mails** nos registos de Pessoas, Empresas e Oportunidades
+* **Ler conversas completas de e-mail** com contactos no seu CRM
+* **Acompanhar o contexto das comunicações** juntamente com os eventos do calendário
+* **Criar contactos automaticamente** a partir de interações por e-mail
+* **Responder por redirecionamento** — clique em Responder para ir para a sua caixa de entrada
-## Sending Emails via Workflows
+## Envio de e-mails através de Fluxos de Trabalho
-While you can't send emails manually from Twenty, you **can send emails automatically using Workflows**. This is useful for:
+Embora não seja possível enviar e-mails manualmente a partir do Twenty, **pode enviar e-mails automaticamente utilizando Fluxos de Trabalho**. Isto é útil para:
-* Automated follow-ups
-* Notifications to contacts
-* Triggered communications based on record changes
+* Acompanhamentos automáticos
+* Notificações para contactos
+* Comunicações acionadas com base em alterações de registos
-Emails sent via workflows go through your connected mailbox account.
+Os e-mails enviados através de Fluxos de Trabalho são processados pela sua conta de e-mail ligada.
-→ Learn about the [Send Email action](/l/pt/user-guide/workflows/capabilities/workflow-actions#send-email)
+→ Saiba mais sobre a [ação Enviar e-mail](/l/pt/user-guide/workflows/capabilities/workflow-actions#send-email)
-## Email Sequences and Newsletters
+## Sequências de e-mails e boletins informativos
-For email sequences and newsletters, we recommend using workflows to connect Twenty to a dedicated email marketing tool.
+Para sequências de e-mails e boletins informativos, recomendamos utilizar Fluxos de Trabalho para ligar o Twenty a uma ferramenta dedicada de marketing por e-mail.
- Mass emails should not be sent directly from your mailbox to protect your domain reputation. Use a dedicated tool for bulk communications.
+ E-mails em massa não devem ser enviados diretamente da sua caixa de entrada para proteger a reputação do seu domínio. Utilize uma ferramenta dedicada para comunicações em massa.
-→ See [How to send emails from workflows](/l/pt/user-guide/workflows/capabilities/send-emails-from-workflows) for setup instructions
+→ Consulte [Como enviar e-mails a partir de Fluxos de Trabalho](/l/pt/user-guide/workflows/capabilities/send-emails-from-workflows) para obter instruções de configuração
-## Future Plans
+## Planos futuros
-Native email composition from within Twenty is on our roadmap. Join our [GitHub discussions](https://github.com/twentyhq/twenty/discussions) to share your use case and help prioritize this feature.
+A redação nativa de e-mails dentro do Twenty está no nosso roteiro. Junte-se às nossas [discussões no GitHub](https://github.com/twentyhq/twenty/discussions) para partilhar o seu caso de uso e ajudar a priorizar esta funcionalidade.
diff --git a/packages/twenty-docs/l/pt/user-guide/calendar-emails/how-tos/can-i-track-email-activity-on-all-objects.mdx b/packages/twenty-docs/l/pt/user-guide/calendar-emails/how-tos/can-i-track-email-activity-on-all-objects.mdx
index de258baef3..0d0de00b34 100644
--- a/packages/twenty-docs/l/pt/user-guide/calendar-emails/how-tos/can-i-track-email-activity-on-all-objects.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/calendar-emails/how-tos/can-i-track-email-activity-on-all-objects.mdx
@@ -1,35 +1,35 @@
---
-title: Can I Track Email Activity on All Objects?
-description: Understanding email activity tracking across different objects.
+title: Posso acompanhar a atividade de email em todos os objetos?
+description: Compreender o acompanhamento da atividade de email em diferentes objetos.
---
-## Supported Objects
+## Objetos suportados
-Email activity is currently available on **three standard objects**:
+A atividade de email está atualmente disponível em **três objetos padrão**:
-| Object | What You See |
-| ----------------- | ---------------------------------------------------------------- |
-| **People** | All emails exchanged with that specific contact |
-| **Companies** | All emails with anyone from that company (based on email domain) |
-| **Opportunities** | Emails related to the company linked to the opportunity |
+| Objeto | O que vê |
+| ----------------- | -------------------------------------------------------------------------------- |
+| **Pessoas** | Todos os emails trocados com esse contacto específico |
+| **Empresas** | Todos os emails com qualquer pessoa dessa empresa (com base no domínio de email) |
+| **Oportunidades** | Emails relacionados com a empresa associada à oportunidade |
-## Why Only These Objects?
+## Porque é que apenas estes objetos?
-People, Companies, and Opportunities are the core relationship objects where email context adds the most value. Email threads are automatically linked based on:
+Pessoas, Empresas e Oportunidades são os objetos de relação principais onde o contexto de email acrescenta mais valor. As conversas de email são associadas automaticamente com base em:
-* **Email address** → matched to People records
-* **Email domain** → matched to Company records
-* **Company relation** → linked to Opportunities
+* **Endereço de email** → associado a registos de Pessoas
+* **Domínio de email** → associado a registos de Empresas
+* **Relação com a empresa** → ligada a Oportunidades
-## Custom Objects
+## Objetos personalizados
-**Email tracking is not available on custom objects** at this time.
+**O acompanhamento de email não está disponível em objetos personalizados** neste momento.
-If you need email context on a custom object, consider:
+Se precisar de contexto de email num objeto personalizado, considere:
-* Using a relation field to link your custom object to People or Companies
-* Viewing email history on the linked People/Company record
+* Usar um campo de relação para ligar o seu objeto personalizado a Pessoas ou Empresas
+* Ver o histórico de email no registo de Pessoa/Empresa ligado
-## Future Plans
+## Planos futuros
-Extending email visibility to custom objects is being considered. Share your use case on our [GitHub discussions](https://github.com/twentyhq/twenty/discussions) to help prioritize this feature.
+Está a ser considerada a extensão da visibilidade do email a objetos personalizados. Partilhe o seu caso de uso nas nossas [discussões no GitHub](https://github.com/twentyhq/twenty/discussions) para ajudar a priorizar esta funcionalidade.
diff --git a/packages/twenty-docs/l/pt/user-guide/calendar-emails/how-tos/connect-several-mailboxes-per-user.mdx b/packages/twenty-docs/l/pt/user-guide/calendar-emails/how-tos/connect-several-mailboxes-per-user.mdx
index 83da30bd83..c110d5af18 100644
--- a/packages/twenty-docs/l/pt/user-guide/calendar-emails/how-tos/connect-several-mailboxes-per-user.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/calendar-emails/how-tos/connect-several-mailboxes-per-user.mdx
@@ -1,42 +1,42 @@
---
-title: Connect Several Mailboxes per User
-description: Connect multiple email accounts for a single user.
+title: Conectar várias caixas de correio por usuário
+description: Conecte várias contas de e-mail para um único usuário.
---
-## Overview
+## Visão Geral
-Twenty supports **unlimited email accounts per user**. This is useful if you manage multiple inboxes, such as:
+O Twenty oferece suporte a **contas de e-mail ilimitadas por usuário**. Isso é útil se você gerencia várias caixas de entrada, como:
-* Personal work email + shared team inbox
-* Multiple client-facing email addresses
-* Different email accounts for different roles
+* E-mail de trabalho pessoal + caixa de entrada compartilhada da equipe
+* Vários endereços de e-mail voltados para clientes
+* Contas de e-mail diferentes para diferentes funções
-## How to Add Multiple Mailboxes
+## Como adicionar múltiplas caixas de correio
-1. Go to **Settings → Accounts**
-2. Click **Add account**
-3. Connect your additional Google or Microsoft account
-4. Configure sync settings for this mailbox
-5. Repeat for each mailbox you want to connect
+1. Vá para **Configurações → Contas**
+2. Clique em **Adicionar conta**
+3. Conecte sua conta adicional do Google ou da Microsoft
+4. Configure as configurações de sincronização para esta caixa de correio
+5. Repita para cada caixa de correio que você deseja conectar
-## Managing Multiple Accounts
+## Gerenciando várias contas
-Each connected mailbox has its own settings:
+Cada caixa de correio conectada tem suas próprias configurações:
-* **Email visibility**: Choose what teammates can see
-* **Contact auto-creation**: Enable/disable per mailbox
-* **Folder selection**: Choose which folders to sync (Lab feature)
+* **Visibilidade do e-mail**: Escolha o que os colegas de equipe podem ver
+* **Criação automática de contatos**: Ative/desative por caixa de correio
+* **Seleção de pastas**: Escolha quais pastas sincronizar
-## How Emails Appear
+## Como os e-mails aparecem
-Emails from all your connected mailboxes are synced to Twenty and appear on:
+Os e-mails de todas as suas caixas de correio conectadas são sincronizados com o Twenty e aparecem em:
-* **People records**: Based on the contact's email address
-* **Company records**: Based on the email domain
-* **Opportunities**: Based on the linked company
+* **Registros de pessoas**: Com base no endereço de e-mail do contato
+* **Registros de empresas**: Com base no domínio do e-mail
+* **Oportunidades**: Com base na empresa vinculada
-Each email shows which mailbox it was sent from/received to, so you can track which account was used for each communication.
+Cada e-mail mostra de qual caixa de correio foi enviado/para qual foi recebido, para que você possa acompanhar qual conta foi usada em cada comunicação.
-## Important Notes
+## Notas importantes
-Only true mailboxes can be connected. Email aliases that forward to another mailbox cannot be connected separately—they'll sync through the main mailbox.
+Somente caixas de correio reais podem ser conectadas. Aliases de e-mail que encaminham para outra caixa de correio não podem ser conectados separadamente — eles serão sincronizados pela caixa de correio principal.
diff --git a/packages/twenty-docs/l/pt/user-guide/calendar-emails/how-tos/i-dont-see-emails-on-records.mdx b/packages/twenty-docs/l/pt/user-guide/calendar-emails/how-tos/i-dont-see-emails-on-records.mdx
index c5db7745a0..fd8c734374 100644
--- a/packages/twenty-docs/l/pt/user-guide/calendar-emails/how-tos/i-dont-see-emails-on-records.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/calendar-emails/how-tos/i-dont-see-emails-on-records.mdx
@@ -1,53 +1,53 @@
---
-title: I Don't See Emails on Records
-description: Troubleshooting missing emails on records.
+title: Não vejo emails nos registos
+description: Resolução de problemas de emails em falta nos registos.
---
-## Common Reasons
+## Causas comuns
-### 1. Initial Sync Still in Progress
+### 1. A sincronização inicial ainda está em curso
-Email sync takes time, especially for large mailboxes.
+A sincronização de emails leva tempo, especialmente para caixas de correio grandes. Twenty importa emails a uma taxa de aproximadamente **400 mensagens por minuto** (limitado pela restrição de taxa da API do Gmail).
-* **Calendar sync**: Completes in minutes
-* **Email sync**: Can take several hours for large mailboxes
+* **Sincronização do calendário**: Conclui em minutos
+* **Sincronização de email**: Depende do tamanho da caixa de correio (por exemplo, 10.000 emails ≈ 25 minutos, 50.000 emails ≈ 2 horas)
-**Solution**: Wait up to a few hours for the initial import to complete.
+**Solução**: Aguarde a conclusão da importação inicial. Você pode estimar o tempo com base no tamanho da sua caixa de correio.
-### 2. Contact Doesn't Exist in Twenty
+### 2. O contacto não existe no Twenty
-Emails only appear on existing People records. If the contact wasn't created yet:
+Os emails só aparecem em registos de Pessoas existentes. Se o contacto ainda não foi criado:
-* Enable **Contact Auto-Creation** in your mailbox settings
-* Or manually create the Person record first
+* Ative a **Criação automática de contactos** nas definições da sua caixa de correio
+* Ou crie manualmente o registo da Pessoa primeiro
-**Solution**: Go to **Settings → Accounts**, select your mailbox, and enable contact auto-creation.
+**Solução**: Vá a **Settings → Accounts**, selecione a sua caixa de correio e ative a criação automática de contactos.
-### 3. Internal Emails Are Excluded
+### 3. Os emails internos são excluídos
-Emails between colleagues (same email domain) are never synced to maintain privacy.
+Emails entre colegas (mesmo domínio de email) nunca são sincronizados para manter a privacidade.
-**Solution**: This is expected behavior. Only external emails are synced.
+**Solução**: Este é o comportamento esperado. Apenas emails externos são sincronizados.
-### 4. Email Is from a Group or Distribution List
+### 4. O email é de um grupo ou lista de distribuição
-Group emails and distribution lists are excluded from sync.
+Emails de grupo e listas de distribuição são excluídos da sincronização.
-**Solution**: This is expected behavior.
+**Solução**: Este é o comportamento esperado.
-### 5. Folder Not Selected for Sync
+### 5. Pasta não selecionada para sincronização
-If you're using the Message Folder feature, some folders might be excluded.
+Se estiver a usar a funcionalidade Message Folder, algumas pastas podem estar excluídas.
-**Solution**: Go to **Settings → Accounts**, select your mailbox, and check folder sync settings.
+**Solução**: Vá a **Settings → Accounts**, selecione a sua caixa de correio e verifique as definições de sincronização de pastas.
-### 6. Wrong Email Address on Record
+### 6. Endereço de email incorreto no registo
-The Person record might have a different email address than the one used in the email.
+O registo da Pessoa pode ter um endereço de email diferente do utilizado no email.
-**Solution**: Add the correct email address to the Person record.
+**Solução**: Adicione o endereço de email correto ao registo da Pessoa.
-## Still Not Working?
+## Ainda não está a funcionar?
-1. Try disconnecting and reconnecting your mailbox
-2. Contact support if issues persist
+1. Tente desligar e voltar a ligar a sua caixa de correio
+2. Contacte o suporte se os problemas persistirem
diff --git a/packages/twenty-docs/l/pt/user-guide/calendar-emails/how-tos/limit-emails-imported.mdx b/packages/twenty-docs/l/pt/user-guide/calendar-emails/how-tos/limit-emails-imported.mdx
index 9569d2651a..37813a3a76 100644
--- a/packages/twenty-docs/l/pt/user-guide/calendar-emails/how-tos/limit-emails-imported.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/calendar-emails/how-tos/limit-emails-imported.mdx
@@ -1,52 +1,50 @@
---
-title: Limit Emails Imported
-description: Control which emails are imported into Twenty.
+title: Limitar emails importados
+description: Controle quais emails são importados para o Twenty.
---
-## Overview
+## Visão Geral
-By default, Twenty syncs all external emails from your connected mailbox. You can limit what gets imported using **folder selection** and **visibility settings**.
+Por padrão, o Twenty sincroniza todos os emails externos da sua caixa de correio conectada. Você pode limitar o que é importado usando **seleção de pastas** e **configurações de visibilidade**.
-## Method 1: Folder Selection (Recommended)
+## Método 1: Seleção de Pastas (Recomendado)
-Control which email folders sync with Twenty:
+Controle quais pastas de email sincronizam com o Twenty:
-1. Go to **Settings → Releases → Lab**
-2. Enable **Message Folder**
-3. Return to **Settings → Accounts**
-4. Select your connected email account
-5. Choose which folders to sync:
+1. Vá para **Configurações → Contas**
+2. Selecione sua conta de email conectada
+3. Escolha quais pastas sincronizar:
-| Folder | Description |
-| ------------------ | ----------------------------- |
-| **Inbox** | Primary incoming emails |
-| **Sent** | Outgoing emails you've sent |
-| **Archive** | Archived messages |
-| **Custom Folders** | Any specific folders you want |
+| Pasta | Descrição |
+| ------------------------- | --------------------------------------------- |
+| **Caixa de entrada** | Principais emails recebidos |
+| **Enviado** | Emails de saída que você enviou |
+| **Arquivo** | Mensagens arquivadas |
+| **Pastas personalizadas** | Quaisquer pastas específicas que você desejar |
-6. Exclude folders you don't want synced (Spam, Trash, personal folders)
+6. Exclua pastas que você não quer sincronizadas (Spam, Lixo, pastas pessoais)
-This gives you precise control over which emails appear in your CRM without syncing everything.
+Isso lhe dá controle preciso sobre quais emails aparecem no seu CRM sem sincronizar tudo.
-## Method 2: Contact Auto-Creation Settings
+## Método 2: Configurações de Criação Automática de Contatos
-Control when contacts are created from emails:
+Controle quando os contatos são criados a partir de emails:
-1. Go to **Settings → Accounts**
-2. Select your connected mailbox
-3. Choose an option:
- * **Deactivated**: No contacts created, but emails still sync to existing contacts
- * **Sent & Received**: Create contacts from all external emails
- * **Sent Only**: Only create contacts from emails you send
+1. Vá para **Configurações → Contas**
+2. Selecione sua caixa de correio conectada
+3. Escolha uma opção:
+ * **Desativado**: Não cria contatos, mas os emails ainda são sincronizados com contatos existentes
+ * **Enviados e recebidos**: Criar contatos a partir de todos os emails externos
+ * **Somente enviados**: Criar contatos apenas a partir de emails que você envia
-## What's Always Excluded
+## O que é sempre excluído
-These emails are never synced, regardless of settings:
+Esses emails nunca são sincronizados, independentemente das configurações:
-* **Internal emails**: Messages between colleagues (same domain)
-* **Group emails**: Distribution lists and group messages
-* **Spam/Trash**: System folders are typically excluded
+* **Emails internos**: Mensagens entre colegas (mesmo domínio)
+* **Emails de grupo**: Listas de distribuição e mensagens de grupo
+* **Spam/Lixo**: Pastas do sistema normalmente são excluídas
-## Important Note
+## Nota importante
-We don't provide a CC email address for selective syncing. Use the folder selection feature above to achieve the same level of control.
+Não fornecemos um endereço de email CC para sincronização seletiva. Use o recurso de seleção de pastas acima para obter o mesmo nível de controle.
diff --git a/packages/twenty-docs/l/pt/user-guide/calendar-emails/overview.mdx b/packages/twenty-docs/l/pt/user-guide/calendar-emails/overview.mdx
index 21530530b7..b1137c5997 100644
--- a/packages/twenty-docs/l/pt/user-guide/calendar-emails/overview.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/calendar-emails/overview.mdx
@@ -1,132 +1,130 @@
---
-title: Calendar & Emails
-description: Connect your email and calendar accounts to Twenty.
+title: Calendário e emails
+description: Conecte as suas contas de email e calendário ao Twenty.
image: /images/user-guide/emails/emails_header.png
---
-
+
-## Connection Options
+## Opções de Conexão
-### Google Account (Gmail & Google Calendar)
+### Conta do Google (Gmail & Google Calendar)
-1. Go to **Settings → Accounts**
-2. Click **Add account**
-3. Select **Continue with Google**
-4. Authorize Twenty to access your Gmail and Google Calendar
-5. Configure email sync settings (visibility, auto-creation) → click **Next**
-6. Configure calendar sync settings (visibility, auto-creation) → click **Add Account**
-7. Your emails and calendar events will start syncing automatically
+1. Vá para **Configurações → Contas**
+2. Clique em **Adicionar conta**
+3. Selecione **Continuar com o Google**
+4. Autorize o Twenty a aceder ao seu Gmail e Google Calendar
+5. Configure as definições de sincronização de email (visibilidade, criação automática) → clique em **Seguinte**
+6. Configure as definições de sincronização do calendário (visibilidade, criação automática) → clique em **Adicionar conta**
+7. Seus emails e eventos de calendário começarão a sincronizar automaticamente
-### Microsoft Account (Outlook & Microsoft Calendar)
+### Conta Microsoft (Outlook & Microsoft Calendar)
-1. Go to **Settings → Accounts**
-2. Click **Add account**
-3. Select **Continue with Microsoft**
-4. Authorize Twenty to access your Outlook and Microsoft Calendar
-5. Configure email sync settings (visibility, auto-creation) → click **Next**
-6. Configure calendar sync settings (visibility, auto-creation) → click **Add Account**
-7. Your emails and calendar events will start syncing automatically
+1. Vá para **Configurações → Contas**
+2. Clique em **Adicionar conta**
+3. Selecione **Continuar com Microsoft**
+4. Autorize o Twenty a acessar seu Outlook e Microsoft Calendar
+5. Configure as definições de sincronização de email (visibilidade, criação automática) → clique em **Seguinte**
+6. Configure as definições de sincronização do calendário (visibilidade, criação automática) → clique em **Adicionar conta**
+7. Seus emails e eventos de calendário começarão a sincronizar automaticamente
-### SMTP/CalDAV Setup (Other Providers)
+### Configuração SMTP/CalDAV (Outros Provedores)
-For other email and calendar providers:
+Para outros provedores de email e calendário:
-1. Go to **Settings → Releases → Lab** to enable the feature
-2. Return to **Settings → Accounts**
-3. Configure SMTP settings for email
-4. Configure CalDAV settings for calendar
-5. Test the connection
+1. Vá para **Configurações → Contas**
+2. Configure as definições SMTP para email
+3. Configure as definições CalDAV para o calendário
+4. Teste a ligação
-### Multiple Mailboxes
+### Caixas de Correio Múltiplas
-* **Unlimited Accounts**: Connect multiple email accounts per user
-* **Account Management**: Switch between different mailboxes
-* **Sync Settings**: Configure different settings per mailbox
+* **Contas Ilimitadas**: Conectar múltiplas contas de email por usuário
+* **Gestão de Contas**: Alternar entre diferentes caixas de correio
+* **Definições de sincronização**: Configure definições diferentes por caixa de correio
- Only true mailboxes can be connected (e.g., support@domain.com with its own inbox). Email aliases that forward to another mailbox cannot be connected to Twenty.
+ Apenas caixas de correio verdadeiras podem ser conectadas (ex.: suporte@dominio.com com sua própria caixa de entrada). Aliases de email que redirecionam para outra caixa de correio não podem ser conectados ao Twenty.
-## Email Configuration
+## Configuração de Email
-### Message Visibility
+### Visibilidade da Mensagem
-Choose different levels of visibility for your emails:
+Escolha diferentes níveis de visibilidade para seus emails:
-* **Metadata Only**: Share only basic information (sender, recipient, date, time)
-* **Subject and Metadata**: Share subject line along with metadata
-* **All Email Content**: Share entire email content including attachments
+* **Apenas Metadados**: Compartilhar apenas informação básica (remetente, destinatário, data, hora)
+* **Assunto e Metadados**: Compartilhar linha de assunto junto com metadados
+* **Todo o Conteúdo do Email**: Compartilhar o conteúdo inteiro do email incluindo anexos
-### Contact Auto-Creation
+### Criação automática de contactos
-* **Deactivated**: No automatic contact creation
-* **For messages sent & received**: Create contacts for all external email interactions
-* **For messages sent only**: Create contacts only for emails you send
-* **Note**: Internal emails (same domain) are never synced to maintain privacy
+* **Desativado**: Nenhuma criação automática de contato
+* **Para mensagens enviadas & recebidas**: Criar contatos para todas as interações de email externos
+* **Somente para mensagens enviadas**: Criar contatos apenas para emails que você envia
+* **Nota**: Emails internos (mesmo domínio) nunca são sincronizados para manter a privacidade
-When enabled, contacts are automatically linked to their Company records based on their email domain. If the company doesn't exist yet, Twenty creates it for you.
+Quando ativado, os contactos são automaticamente associados aos respetivos registos de Empresa com base no domínio de email. Se a empresa ainda não existir, o Twenty cria-a por si.
-### Control which emails get sync with Message Folder Selection (Lab Feature)
+### Controle quais emails são sincronizados com a Seleção de Pastas de Mensagens
-Control which email folders sync with Twenty:
+Controle quais pastas de email sincronizam com o Twenty:
-1. Go to **Settings → Releases → Lab** and enable **Message Folder**
-2. Return to **Settings → Accounts** and select your connected email account
-3. Choose which folders to sync:
- * **Inbox**: Primary incoming emails
- * **Sent**: Outgoing emails you've sent
- * **Custom Folders**: Any specific folders you want to include
- * **Exclude Folders**: Skip folders like Spam, Trash, or personal folders
+1. Vá para **Configurações → Contas** e selecione sua conta de email conectada
+2. Escolha quais pastas sincronizar:
+ * **Caixa de Entrada**: Principais emails recebidos
+ * **Enviado**: Emails de saída que você enviou
+ * **Pastas Personalizadas**: Quaisquer pastas específicas que você deseja incluir
+ * **Excluir Pastas**: Pule pastas como Spam, Lixo, ou pastas pessoais
-This gives you precise control over which emails appear in your CRM without syncing everything.
+Isso lhe dá controle preciso sobre quais emails aparecem no seu CRM sem sincronizar tudo.
-**What Gets Synced:**
+**O Que é Sincronizado:**
-* **External Emails**: All emails with external contacts from selected folders
-* **Internal Emails**: Not synced (same domain emails remain private)
-* **Attachments**: Coming in H1 2026
+* **Emails Externos**: Todos os emails com contatos externos das pastas selecionadas
+* **Emails Internos**: Não sincronizados (emails do mesmo domínio permanecem privados)
+* **Anexos**: Disponível em H1 2026
-**Note**: We don't provide a CC email address for selective syncing. Instead, use the Message Folder feature above to achieve the same level of control over which emails sync with Twenty.
+**Nota**: Não fornecemos um endereço de email CC para sincronização seletiva. Em vez disso, use o recurso Pasta de Mensagem acima para conseguir o mesmo nível de controle sobre quais emails sincronizam com o Twenty.
-## Calendar Configuration
+## Configuração do Calendário
-### Event Visibility
+### Visibilidade do Evento
-Choose what will be visible to other users in your workspace:
+Escolha o que ficará visível para outros utilizadores no seu espaço de trabalho:
-* **Everything**: The whole event details will be shared with your team
-* **Metadata**: Only date & participants will be shared with your team
+* **Tudo**: Todos os detalhes do evento serão compartilhados com sua equipe
+* **Metadados**: Apenas data & participantes serão compartilhados com sua equipe
-### Contact Auto-Creation for Meetings
+### Criação Automática de Contato para Reuniões
-* **Yes**: Automatically create contacts for meeting participants not in your CRM
-* **No**: Only link meetings to existing contacts
+* **Sim**: Criar contatos automaticamente para participantes de reuniões que não estão no seu CRM
+* **Não**: Apenas vincula reuniões a contatos existentes
-When enabled, contacts are automatically linked to their Company records based on their email domain. If the company doesn't exist yet, Twenty creates it for you.
+Quando ativado, os contactos são automaticamente associados aos respetivos registos de Empresa com base no domínio de email. Se a empresa ainda não existir, o Twenty cria-a por si.
-### Control which events get sync
+### Controle quais eventos serão sincronizados
-* **Meeting Import**: Automatically import calendar events
-* **Contact Linking**: Link meetings to People and Company records
+* **Importação de Reuniões**: Importar automaticamente eventos de calendário
+* **Vinculação de Contatos**: Vincular reuniões a registros de Pessoas e Empresas
-**What Gets Synced:**
+**O Que é Sincronizado:**
-* **Meetings**: Calendar events with external participants
-* **Contact Linking**: Events automatically linked to CRM records
-* **Team Events**: Shared calendar visibility
+* **Reuniões**: Eventos de calendário com participantes externos
+* **Vinculação de Contatos**: Eventos automaticamente vinculados aos registros do CRM
+* **Eventos de Equipe**: Visibilidade de calendário compartilhada
-## Sync Frequency
+## Frequência de Sincronização
-**Updates every 5 minutes**: Both email and calendar data sync automatically every 5 minutes after the initial import.
+**Atualizações a cada 5 minutos**: Tanto os dados de email quanto de calendário são sincronizados automaticamente a cada 5 minutos após a importação inicial.
- **Initial sync timing**: Calendar sync completes quickly (usually within minutes), while email sync takes longer for large mailboxes—up to a few hours depending on volume. Don't worry if you see contacts from calendar events appearing before your email contacts; this is normal behavior.
+ **Tempo de sincronização inicial**: A sincronização do calendário é concluída rapidamente (geralmente em poucos minutos), enquanto a sincronização de emails leva mais tempo para caixas de correio grandes. Twenty importa emails a uma taxa de aproximadamente **400 mensagens por minuto** (limitado pela restrição de taxa da API do Gmail), por isso uma caixa de correio com 10.000 emails leva cerca de 25 minutos. Não se preocupe se vir contactos de eventos do calendário a aparecer antes dos seus contactos de email; isto é um comportamento normal.
-## Next Steps
+## Próximos Passos
-* [Mailbox capabilities](/l/pt/user-guide/calendar-emails/capabilities/mailbox)
-* [Troubleshoot missing emails](/l/pt/user-guide/calendar-emails/how-tos/i-dont-see-emails-on-records)
+* [Funcionalidades da caixa de correio](/l/pt/user-guide/calendar-emails/capabilities/mailbox)
+* [Resolver problemas de emails em falta](/l/pt/user-guide/calendar-emails/how-tos/i-dont-see-emails-on-records)
diff --git a/packages/twenty-docs/l/pt/user-guide/dashboards/capabilities/chart-settings.mdx b/packages/twenty-docs/l/pt/user-guide/dashboards/capabilities/chart-settings.mdx
new file mode 100644
index 0000000000..d79bb485f2
--- /dev/null
+++ b/packages/twenty-docs/l/pt/user-guide/dashboards/capabilities/chart-settings.mdx
@@ -0,0 +1,275 @@
+---
+title: Configurações do Gráfico
+description: Configure seus gráficos para exibir os dados exatamente como você precisa.
+---
+
+import { ChartIcon } from '/snippets/chart-icon.mdx';
+
+## Acessando as configurações do gráfico
+
+1. Clique no botão **Editar** no canto superior direito do seu painel
+
+
+
+2. O painel entra no modo de edição
+3. Clique em qualquer widget para selecioná-lo
+4. O painel de configurações é aberto à direita
+
+As configurações são organizadas em seções:
+
+* **Dados**: Quais dados obter e como filtrá-los
+* **Eixo X**: Como agrupar e ordenar categorias (gráficos de barras/linhas)
+* **Eixo Y**: O que medir e como exibir (gráficos de barras/linhas)
+* **Estilo**: Cores, rótulos e opções visuais
+
+
+ Algumas configurações só aparecem quando outras estão configuradas. Por exemplo, **Granularidade de data** só aparece quando você seleciona um campo de data.
+
+
+---
+
+## Configurações de Dados
+
+### Fonte
+
+Escolha de qual objeto extrair os dados.
+
+1. Clique em **Fonte**
+2. Selecione um objeto (Oportunidades, Pessoas, Empresas, etc.)
+
+Todos os seus objetos padrão e personalizados estão disponíveis. Alterar a fonte redefine outras configurações, pois as opções de campo dependem do objeto selecionado.
+
+
+
+### Filtro
+
+Limite quais registros são incluídos no gráfico.
+
+1. Clique em **Filtrar**
+2. O construtor de filtros é aberto
+3. Clique em **+ Adicionar filtro**
+4. Selecione um campo, condição e valor
+5. Adicione mais filtros conforme necessário
+
+Os filtros funcionam da mesma forma que nas visualizações de tabela. Use-os para focar em segmentos específicos dos seus dados.
+
+**Exemplo**: Filtre oportunidades em que a Etapa seja igual a "Ganha" para mostrar apenas negócios fechados.
+
+
+
+
+ Para campos de data, experimente **É relativo** para criar filtros dinâmicos como "Últimos 7 dias" ou "Este mês" que são atualizados automaticamente.
+
+
+
+ Filtros avançados são suportados—adicione várias regras de filtro e combine-as com a lógica **E** ou **Ou**.
+
+
+---
+
+## Configurações do Eixo X
+
+Essas configurações controlam o eixo horizontal dos gráficos de barras e de linhas—geralmente como seus dados são agrupados em categorias.
+
+### Dados em exibição
+
+Selecione o campo pelo qual agrupar seus dados. Isso determina as categorias exibidas no eixo X.
+
+**Exemplo**: Selecione "Etapa" para ver os dados agrupados pela etapa do pipeline, ou "Data de criação" para ver os dados ao longo do tempo.
+
+
+
+### Granularidade de data
+
+Ao agrupar por um campo de data, escolha o período de tempo para o agrupamento.
+
+| Opção | Agrupa dados por | Exemplo de saída |
+| -------------------- | ------------------------ | ------------------------------------------------------------------ |
+| **Dia** | Cada dia do calendário | 1º de jan., 2 de jan., 3 de jan.... |
+| **Semana** | Semanas do calendário | Semana 1, Semana 2, Semana 3... |
+| **Mês** | Meses do calendário | janeiro, fevereiro, março... |
+| **Trimestre** | Trimestres fiscais | T1, T2, T3, T4 |
+| **Ano** | Anos do calendário | 2023, 2024, 2025 |
+| **Dia da semana** | Dia da semana (agregado) | segunda-feira, terça-feira... (todas as segundas-feiras agregadas) |
+| **Mês do ano** | Mês (agregado) | janeiro, fevereiro... (todos os janeiros agregados) |
+| **Trimestre do ano** | Trimestre (agregado) | T1, T2, T3, T4 (todos os T1 agregados) |
+
+As opções "de semana/ano" agregam ao longo de todo o tempo. Use **Dia da semana** para ver qual dia da semana normalmente tem mais negócios. Use **Mês** para ver tendências mês a mês.
+
+### Ordenar por
+
+Controle a ordem das categorias no eixo X.
+
+* **Posição** – Usa a ordem definida nas configurações do seu campo Select
+* **Alfabética** – De A a Z (ou cronológica para datas)
+* **Por valor** – Ordenado pela métrica (do maior para o menor ou vice-versa)
+* **Manual** – Arraste para definir sua própria ordem
+
+
+
+**Dica**: Para etapas do pipeline, use **Posição** para mostrar as etapas na ordem do seu processo de vendas (Lead → Qualificado → Proposta → Ganha).
+
+
+ As opções exibidas dependem do tipo do seu campo. Campos Select têm todas as opções; campos de data e de texto exibem menos.
+
+
+
+ Com a ordenação **Manual**, arraste as categorias para criar uma ordem personalizada—perfeito para destacar segmentos específicos ou contar uma história com seus dados.
+
+
+### Omitir valores zero
+
+Oculte categorias que têm zero ou nenhum dado.
+
+* **Ativado**: Categorias sem registros são ocultadas
+* **Desativado**: Todas as categorias são exibidas, mesmo que vazias
+
+Use isso para limpar gráficos com dados esparsos.
+
+---
+
+## Configurações do Eixo Y
+
+Essas configurações controlam o que você está medindo e como isso é exibido.
+
+### Dados em exibição
+
+Selecione o campo e a operação para calcular sua métrica.
+
+* **Contagens** – Contar todos, Contar vazios, Contar não vazios, Contar valores únicos
+* **Matemática** – Soma, Média, Mín., Máx. (campos numéricos)
+* **Percentuais** – Percentual vazio, Percentual não vazio
+
+Campos booleanos adicionam Contar verdadeiro/falso. Gráficos agregados com campos de data exibem Mais antigo/Mais recente.
+
+**Exemplo**: Selecione "Valor" com Soma para ver o valor total de negócios por categoria, ou Contar todos para ver o número de negócios.
+
+
+
+
+ As opções exibidas dependem do seu campo e do tipo de gráfico. Se você não vir uma operação esperada, verifique o tipo do seu campo.
+
+
+### Razão
+
+Para campos Select, Multi-select ou Booleanos, você pode calcular o percentual de um valor específico.
+
+1. Selecione um campo Select, Multi-select ou Booleano
+2. Ativar **Proporção**
+3. Escolha a opção a ser medida
+
+**Exemplo**: Mostrar negócios "Ganho" como porcentagem de todas as oportunidades. Se você tiver 10 Ganhos de um total de 50, o gráfico mostrará 20%.
+
+### Agrupar por
+
+Adicione uma segunda dimensão para criar várias séries (múltiplas barras ou linhas).
+
+1. Defina primeiro o campo do eixo X
+2. Clique em **Agrupar por**
+3. Selecione um segundo campo
+
+**Exemplo**: Agrupe os negócios por Etapa (Eixo X) E por Responsável (Agrupar por) para ver, lado a lado, a distribuição do pipeline de cada pessoa.
+
+
+
+Quando Agrupar por estiver definido, você verá várias cores em seu gráfico e uma legenda aparecerá.
+
+### Granularidade de data
+
+Quando Agrupar por for um campo de data, escolha o período de tempo (mesmas opções do eixo X).
+
+### Ordenar por
+
+Quando **Agrupar por** estiver definido, controle a ordem das séries agrupadas (por exemplo, qual barra do responsável aparece primeiro em cada categoria).
+
+Mesmas opções da ordenação do eixo X—Posição, Alfabética e Manual—exceto que **a ordenação baseada em valor não está disponível** para o agrupamento secundário.
+
+### Acumulado
+
+Mostre totais acumulados em vez de valores individuais.
+
+* **Desativado**: Cada barra/ponto mostra seu próprio valor
+* **Ativado**: Cada barra/ponto mostra a soma de todos os valores anteriores mais o seu próprio
+
+**Exemplo**: janeiro = 10, fevereiro = 15
+
+* Acumulado desativado: Mostra 10 e 15
+* Acumulado ativado: Mostra 10 e 25 (10 + 15)
+
+Use o acumulado para acompanhar o progresso em direção a uma meta ao longo do tempo.
+
+
+
+### Faixa mínima / Faixa máxima
+
+Defina valores mínimos e máximos fixos para o eixo Y.
+
+* Deixe em branco para dimensionamento automático
+* Insira um número para fixar o limite
+
+**Quando usar:**
+
+* Defina Mín. como 0 para comparações visuais precisas
+* Defina ambos para escalas consistentes em vários gráficos
+* Foque em um intervalo de valores específico definindo ambos
+
+---
+
+## Configurações de Estilo
+
+### Cores
+
+Defina o esquema de cores do seu gráfico. Escolha entre uma variedade de paletas de cores.
+
+
+ Ao agrupar por um campo Select, o gráfico usa automaticamente as cores definidas para cada opção nas configurações do seu campo.
+
+
+### Nome do eixo
+
+Escolha quais rótulos de eixo mostrar: **Nenhum**, **Eixo X**, **Eixo Y** ou **Ambos** (somente gráficos de barras e de linhas).
+
+### Barras empilhadas / Linhas empilhadas
+
+Quando Agrupar por estiver definido, escolha como várias séries serão exibidas.
+
+* **Desativado (Agrupadas)**: As séries aparecem lado a lado. Use ao comparar valores exatos entre grupos.
+* **Ativado (Empilhadas)**: As séries são empilhadas umas sobre as outras. Use ao mostrar composição—como as partes compõem o todo.
+
+**Exemplo**: Negócios por etapa, agrupados por responsável
+
+* Agrupadas: Veja os números exatos de cada responsável lado a lado
+* Empilhadas: Veja o total de negócios por etapa, com a contribuição de cada responsável empilhada
+
+### Rótulos de dados
+
+Mostre valores diretamente nos elementos do gráfico (barras, pontos, fatias).
+
+* **Ativado**: Os valores aparecem no gráfico
+* **Desativado**: Nenhum valor exibido (visual mais limpo)
+
+### Legenda
+
+Mostrar ou ocultar a legenda (só aparece quando Agrupar por está definido).
+
+* **Ativado**: A legenda mostra o que cada cor representa
+* **Desativado**: Nenhuma legenda exibida
+
+
+ **Passe o mouse** sobre um item da legenda para destacar esse grupo. **Clique** para ocultá-lo temporariamente do gráfico.
+
+
+---
+
+## Notas específicas do gráfico
+
+### Gráficos de pizza
+
+* **Cada fatia representa** – Defina como as fatias são agrupadas
+* **Ocultar categoria vazia** – Remover fatias de valor zero
+* **Mostrar valor no centro** – Exibir o valor agregado (soma, média, contagem etc.)
+
+### Gráficos agregados
+
+* **Prefixo** – Adicionar texto antes do número (por exemplo, `$`)
+* **Sufixo** – Adicionar texto após o número (por exemplo, `%`)
diff --git a/packages/twenty-docs/l/pt/user-guide/dashboards/capabilities/dashboards.mdx b/packages/twenty-docs/l/pt/user-guide/dashboards/capabilities/dashboards.mdx
index b3d731e668..c447c71a89 100644
--- a/packages/twenty-docs/l/pt/user-guide/dashboards/capabilities/dashboards.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/dashboards/capabilities/dashboards.mdx
@@ -1,74 +1,92 @@
---
-title: Dashboards
-description: Create and organize dashboards with tabs to visualize your CRM data.
+title: Painéis
+description: Crie e organize painéis com abas para visualizar seus dados do CRM.
---
-## Overview
+## Visão Geral
-Dashboards in Twenty are organized in a hierarchy: **Dashboards → Tabs → Widgets**. Each dashboard can contain multiple tabs, and each tab contains widgets (charts, numbers, iFrames).
+Os painéis no Twenty são organizados em uma hierarquia: **Painéis → Abas → Widgets**. Cada painel pode conter várias abas, e cada aba contém widgets (gráficos, números, iFrames).
-## Creating a Dashboard
+## Criando um painel
-1. Go to **Dashboards** in the navigation
-2. Click **+ New Dashboard**
-3. Give your dashboard a name
-4. Start adding tabs and widgets
+1. Vá até **Dashboards** na navegação
+2. Clique em **+ New Record**
-## Working with Tabs
+
-Tabs help you organize your dashboard into logical sections.
+3. Dê um nome ao seu painel
+4. Comece a adicionar abas e widgets
-### Creating Tabs
+## Trabalhando com abas
-1. In edit mode, click **+ Add Tab**
-2. Name your tab (e.g., "Pipeline Overview", "Team Performance")
-3. Add widgets to the tab
+As abas ajudam você a organizar seu painel em seções lógicas.
-### Duplicating Tabs
+### Criando abas
-1. Click on the tab you want to duplicate
-2. Click the **Duplicate** button in the side panel
+1. In edit mode, click **+** in the tab bar, side panel will open on the right
+2. Dê um nome à sua aba (por exemplo, "Visão geral do pipeline", "Desempenho da equipe")
+3. Adicione widgets à aba
-## Dashboard Layout
+### Reordering Tabs
-### Arranging Widgets
+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
-* Drag and drop to position
-* Resize for emphasis
-* Group related charts together
+### Deleting Tabs
-### Duplicating a Dashboard
+1. In edit mode, click on the tab you want to delete
+2. Click the **Delete** button in the command menu
-1. Exit edit mode (view mode only)
-2. Open the command bar with **Cmd + K** (or **Ctrl + K** on Windows)
-3. Select **Duplicate dashboard**
+### Duplicando abas
-### Best Practices
+1. Clique na aba que você deseja duplicar
+2. Clique no botão **Duplicate** no painel lateral
-* **Logical flow**: Arrange from overview to detail
-* **Visual hierarchy**: Larger charts for key metrics
-* **Consistent styling**: Use matching colors and fonts
+
-## Visibility & Access
+## Layout do painel
-### Dashboard Visibility
+### Organizando widgets
-Dashboards are visible to everyone who has access to your Twenty workspace. There is no private dashboard option at the moment.
+* Arraste e solte para posicionar
+* Redimensione para dar destaque
+* Agrupe gráficos relacionados
-### Favorites
+### Duplicando um painel
-You can add dashboards to your favorites for quick access. This is a personal setting—your favorites are not visible to other users.
+1. Select the dashboard you want to duplicate
+2. Abra a barra de comandos com **Cmd + K** (ou **Ctrl + K** no Windows)
+3. Selecione **Duplicar painel**
-To add a dashboard to favorites, open the dashboard and click the star icon.
+
-### Timezone Behavior
+### Melhores Práticas
-Dashboards currently display data based on the timezone of the user viewing them. This means the same dashboard may show different metrics for team members in different regions (e.g., APAC vs. US).
+* **Fluxo lógico**: organize do geral ao detalhado
+* **Hierarquia visual**: gráficos maiores para métricas-chave
+* **Estilo consistente**: use cores e fontes correspondentes
+
+## Visibilidade e acesso
+
+### Visibilidade do painel
+
+Os painéis são visíveis para todos que têm acesso ao seu espaço de trabalho da Twenty. No momento, não há opção de painel privado.
+
+### Favoritos
+
+Você pode adicionar painéis aos seus favoritos para acesso rápido. Esta é uma configuração pessoal — seus favoritos não são visíveis para outros usuários.
+
+Para adicionar um painel aos favoritos, abra o painel e clique no ícone de estrela.
+
+### Comportamento do fuso horário
+
+Atualmente, os painéis exibem dados com base no fuso horário de quem está visualizando. Isso significa que o mesmo painel pode mostrar métricas diferentes para membros da equipe em regiões distintas (por exemplo, APAC vs. US).
- **Coming soon**: We will add the ability to set a specific timezone for a dashboard, so all users see consistent data regardless of their location.
+ **Em breve**: adicionaremos a capacidade de definir um fuso horário específico para um painel, para que todos os usuários vejam dados consistentes independentemente de sua localização.
- **Coming soon**: Dashboard-level filters will allow you to apply filters across all widgets at once, making it faster to explore your data.
+ **Em breve**: filtros no nível do painel permitirão aplicar filtros a todos os widgets de uma vez, tornando mais rápido explorar seus dados.
diff --git a/packages/twenty-docs/l/pt/user-guide/dashboards/capabilities/widgets.mdx b/packages/twenty-docs/l/pt/user-guide/dashboards/capabilities/widgets.mdx
index fc12e61339..e5a066e793 100644
--- a/packages/twenty-docs/l/pt/user-guide/dashboards/capabilities/widgets.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/dashboards/capabilities/widgets.mdx
@@ -1,131 +1,149 @@
---
title: Widgets
-description: Explore the widget types and visualization options in Twenty.
+description: Explore os tipos de widget e as opções de visualização no Twenty.
---
-## Available Widgets
+import { ChartIcon } from '/snippets/chart-icon.mdx';
-Twenty provides various widget types to visualize your CRM data.
+## Widgets disponíveis
-### Bar Charts
+O Twenty oferece vários tipos de widget para visualizar seus dados de CRM.
-Display data as horizontal or vertical bars.
+### Gráficos de barras
-**Best for:**
+Exiba dados como barras horizontais ou verticais.
-* Comparing values across categories
-* Showing rankings
-* Tracking metrics by time period
+
+
+
-**Example uses:**
+**Melhor para:**
-* Deals by stage
-* Revenue by sales rep
-* Contacts added per month
+* Comparar valores entre categorias
+* Mostrar classificações
+* Acompanhar métricas por período de tempo
+
+**Exemplos de uso:**
+
+* Negócios por etapa
+* Receita por representante de vendas
+* Contatos adicionados por mês
- **Display limits**: Bar charts can show a maximum of 100 bars (horizontal) or 50 bars (vertical). If you see the warning "Undisplayed data: max X bars per chart", add filters to narrow down your data or change the grouping (e.g., group by week instead of days).
+ **Limites de exibição**: gráficos de barras podem mostrar no máximo 100 barras e 50 grupos por barra ao usar Agrupar por. Se você vir o aviso "Undisplayed data: max X bars per chart", adicione filtros para reduzir seus dados ou altere o agrupamento (por exemplo, agrupe por semana em vez de por dia).
-### Pie Charts
+### Gráficos de pizza
-Show proportions of a whole.
+Exiba proporções do todo.
-**Best for:**
+
+
+
-* Showing composition or distribution
-* Comparing parts to whole
-* Highlighting major segments
+**Melhor para:**
-**Example uses:**
+* Mostrar composição ou distribuição
+* Comparar partes com o todo
+* Destacar os principais segmentos
-* Deal distribution by source
-* Contact breakdown by industry
-* Pipeline composition by owner
+**Exemplos de uso:**
-### Line Charts
+* Distribuição de negócios por origem
+* Distribuição de contatos por setor
+* Composição do pipeline por responsável
-Display trends over time.
+### Gráficos de linha
-**Best for:**
+Exiba tendências ao longo do tempo.
-* Tracking changes over time
-* Identifying trends
-* Comparing multiple metrics
+
+
+
-**Example uses:**
+**Melhor para:**
-* Monthly deal count trend
-* Revenue growth over quarters
-* Activity levels over time
+* Acompanhar mudanças ao longo do tempo
+* Identificar tendências
+* Comparar várias métricas
-### Number Metrics
+**Exemplos de uso:**
-Display single key values prominently.
+* Tendência mensal do número de negócios
+* Crescimento da receita ao longo dos trimestres
+* Níveis de atividade ao longo do tempo
-**Best for:**
+### Gráficos agregados
-* Highlighting KPIs
-* Showing totals or averages
-* Quick status checks
+Exiba em destaque valores-chave únicos.
-**Example uses:**
+
+
+
-* Total pipeline value
-* Number of open opportunities
-* Conversion rate
+**Melhor para:**
-**Advanced options:**
+* Destacar KPIs
+* Mostrar totais ou médias
+* Verificações rápidas de status
-* **Ratio**: For Select fields, calculate ratios between values. Go to **Data on display** → select your field → enable the **Ratio** option.
-* **Prefix & Suffix**: Add custom text before or after the number (e.g., "$" prefix or "%" suffix) for better readability.
+**Exemplos de uso:**
-### iFrames
+* Valor total do pipeline
+* Número de oportunidades em aberto
+* Taxa de conversão
-Embed external tools and content directly in your dashboard.
+**Opções avançadas:**
-**Best for:**
+* **Proporção**: para campos do tipo Seleção, calcule proporções entre valores. Vá para **Dados em exibição** → selecione seu campo → ative a opção **Proporção**.
+* **Prefixo e Sufixo**: adicione texto personalizado antes ou depois do número (por exemplo, prefixo "$" ou sufixo "%") para melhor legibilidade.
-* Displaying external reports or dashboards
-* Integrating third-party sales tools
-* Showing live content from other systems
+### iFrames
-**Example uses:**
+Incorpore ferramentas e conteúdo externos diretamente no seu painel.
-* Metrics from your Support tool
-* Metrics from your dialer
-* Live content from your Sales sequence tool
+
+
+
+
+**Melhor para:**
+
+* Exibir relatórios ou painéis externos
+* Integrar ferramentas de vendas de terceiros
+* Mostrar conteúdo em tempo real de outros sistemas
+
+**Exemplos de uso:**
+
+* Métricas da sua ferramenta de Suporte
+* Métricas do seu discador
+* Conteúdo em tempo real da sua ferramenta de sequências de Vendas
+
+### Texto enriquecido
+
+Adicione texto e conteúdo formatados diretamente ao seu painel.
+
+
+
+
+
+**Melhor para:**
+
+* Adicionar contexto ou instruções
+* Descrições do painel
+* Notas e anotações
+
+**Recursos:**
+
+* Formatação de texto enriquecido (negrito, itálico, listas, etc.)
+* Envio de imagens e arquivos
+* Edição no estilo Markdown
- **Coming soon**: Gauge charts and tables are not yet available but are on our roadmap.
+ **Em breve**: gráficos de medidor e tabelas ainda não estão disponíveis, mas estão em nosso roteiro.
-## Configuring Widgets
+### Duplicar widgets
-### Data Source
-
-1. Select the object to visualize (Opportunities, People, etc.)
-2. Choose the metric to display (count, sum, average)
-3. Apply filters to focus on specific data
-
-### Grouping
-
-Group data by:
-
-* Fields (stage, owner, industry)
-* Time periods (day, week, month, quarter)
-* Custom segments
-
-### Styling
-
-Customize your charts with:
-
-* Colors and themes
-* Labels and legends
-* Size and positioning
-
-### Duplicating Widgets
-
-1. Click on the widget
-2. Open **Options**
-3. Click **Duplicate widget**
+1. Clique no widget
+2. Abra **Opções**
+3. Clique em **Duplicar widget**
diff --git a/packages/twenty-docs/l/pt/user-guide/dashboards/how-tos/dashboards-faq.mdx b/packages/twenty-docs/l/pt/user-guide/dashboards/how-tos/dashboards-faq.mdx
index 7af41b4efa..d9346e3277 100644
--- a/packages/twenty-docs/l/pt/user-guide/dashboards/how-tos/dashboards-faq.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/dashboards/how-tos/dashboards-faq.mdx
@@ -1,59 +1,55 @@
---
-title: Dashboards FAQ
-description: Frequently asked questions about dashboards in Twenty.
+title: Perguntas frequentes sobre painéis
+description: Perguntas frequentes sobre painéis na Twenty.
---
-
- No, dashboards are currently visible to everyone with access to your Twenty workspace. Private dashboards are not yet available.
+
+ Não, os painéis atualmente são visíveis para todos que têm acesso ao seu espaço de trabalho da Twenty. Painéis privados ainda não estão disponíveis.
-
- Dashboards currently display data based on the viewer's timezone. If you're in different regions (e.g., APAC vs. US), you may see slightly different numbers for the same dashboard. We're working on adding a timezone setting per dashboard to ensure consistent data across teams.
+
+ Atualmente, os painéis exibem dados com base no fuso horário de quem está visualizando. Se vocês estiverem em regiões diferentes (por exemplo, APAC vs. EUA), poderão ver números ligeiramente diferentes para o mesmo painel. Estamos trabalhando para adicionar uma configuração de fuso horário por painel para garantir dados consistentes entre as equipes.
-
- Exporting dashboards is not available at the moment. This feature is on our roadmap.
+
+ A exportação de painéis não está disponível no momento. Este recurso está em nosso roadmap.
-
- No, sharing dashboards with users outside your Twenty workspace (non-Twenty users) is not currently supported.
+
+ Não, compartilhar painéis com usuários fora do seu espaço de trabalho da Twenty (usuários que não são da Twenty) não é suportado no momento.
-
- Open the dashboard you want to favorite, then click the star icon. Favorites are personal—they won't affect other users.
+
+ Abra o painel que você quer adicionar aos favoritos e clique no ícone de estrela. Os favoritos são pessoais — não afetam outros usuários.
-
- * **Tabs** organize your dashboard into sections (like pages within the dashboard)
- * **Widgets** are the individual visualizations (charts, numbers, iFrames) within each tab
+
+ * **Abas** organizam seu painel em seções (como páginas dentro do painel)
+ * **Widgets** são as visualizações individuais (gráficos, números, iFrames) dentro de cada aba
- Structure: Dashboard → Tabs → Widgets
+ Estrutura: Painel → Abas → Widgets
-
- Bar charts have display limits: 100 bars for horizontal charts, 50 for vertical. If your data exceeds this, add filters to narrow down the results or change the grouping (e.g., group by week instead of day).
+
+ Filtros no nível do painel ainda não estão disponíveis, mas este recurso está em nosso roadmap. No momento, é preciso aplicar filtros a cada widget individualmente.
-
- Dashboard-level filters are not available yet, but this feature is on our roadmap. Currently, you need to apply filters to each widget individually.
+
+ Ainda não. Gráficos de medidor e tabelas estão em nosso roadmap e serão adicionados em uma versão futura.
-
- Not yet. Gauge charts and tables are on our roadmap and will be added in a future release.
+
+ 1. Certifique-se de que está no modo de visualização (não de edição)
+ 2. Abra a barra de comandos com **Cmd + K** (ou **Ctrl + K** no Windows)
+ 3. Selecione **Duplicar painel**
-
- 1. Make sure you're in view mode (not editing)
- 2. Open the command bar with **Cmd + K** (or **Ctrl + K** on Windows)
- 3. Select **Duplicate dashboard**
-
+
+ Os widgets são atualizados automaticamente conforme seus dados de CRM mudam:
-
- Widgets update automatically as your CRM data changes:
-
- * Real-time updates for most metrics
- * Use the refresh button for a manual update if needed
- * Historical data is preserved for trend analysis
+ * Atualizações em tempo real para a maioria das métricas
+ * Use o botão Atualizar para uma atualização manual, se necessário
+ * Os dados históricos são preservados para análise de tendências
diff --git a/packages/twenty-docs/l/pt/user-guide/dashboards/how-tos/widget-faq.mdx b/packages/twenty-docs/l/pt/user-guide/dashboards/how-tos/widget-faq.mdx
new file mode 100644
index 0000000000..e2c4f30651
--- /dev/null
+++ b/packages/twenty-docs/l/pt/user-guide/dashboards/how-tos/widget-faq.mdx
@@ -0,0 +1,67 @@
+---
+title: FAQ do Widget
+description: Perguntas frequentes e mensagens de erro explicadas.
+---
+
+
+
+ Três opções:
+
+ * **Percentual vazio/não vazio**: Em Dados exibidos, selecione Percentual vazio ou Percentual não vazio
+ * **Proporção**: Para campos Seleção ou Caixa de seleção, ative Proporção para mostrar uma opção específica como porcentagem de todos os registros
+ * **Sufixo**: Para gráficos agregados, adicione `%` como Sufixo nas configurações de Estilo
+
+
+
+ Ao usar **Agrupar por**, você pode exibir as séries de duas maneiras:
+
+ * **Agrupadas**: Barras lado a lado—ideal para comparar valores exatos
+ * **Empilhadas**: Barras uma sobre a outra—ideal para mostrar composição
+
+ Alterne **Empilhadas** nas configurações de Estilo para mudar.
+
+
+
+ As operações disponíveis dependem do **tipo de campo**:
+
+ * **Campos numéricos**: Soma, Média, Mín., Máx.
+ * **Campos de data**: Mais antigo, Mais recente (apenas para gráficos agregados)
+ * **Campos de caixa de seleção**: Contar verdadeiro, Contar falso
+
+ Se você não vir uma opção, verifique se selecionou um tipo de campo compatível.
+
+
+
+ Muitas configurações só aparecem quando os pré-requisitos são atendidos:
+
+ * **Granularidade de data**: Selecione primeiro um campo de data
+ * **Agrupar por, Legenda, Empilhadas**: Defina a Fonte primeiro
+ * **Alternadores de Legenda e Empilhadas**: Defina Agrupar por primeiro
+
+ Se uma configuração estiver ausente, configure primeiro seu pré-requisito.
+
+
+
+ O gráfico não encontrou nenhum registro que corresponda à sua configuração.
+
+ **Como corrigir:** Remova ou ajuste os filtros, verifique se você selecionou o objeto Fonte correto ou confirme se existem registros para seu intervalo de datas.
+
+
+
+ Uma configuração obrigatória está ausente ou é incompatível.
+
+ **Como corrigir:** Certifique-se de que a Fonte esteja definida, que Dados exibidos estejam configurados e que quaisquer campos de agrupamento obrigatórios estejam selecionados.
+
+
+
+ Seus dados excedem os limites de exibição (100 barras, 100 pontos de dados ou 100 fatias).
+
+ **Como corrigir:** Adicione filtros para restringir seus dados ou altere a granularidade de data de Dia para Semana ou Mês.
+
+
+
+ O campo selecionado não tem valores para os registros no seu filtro, ou o tipo de campo não corresponde aos dados esperados.
+
+ **Como corrigir:** Tente um campo diferente ou verifique se os registros têm valores para o campo selecionado.
+
+
diff --git a/packages/twenty-docs/l/pt/user-guide/dashboards/overview.mdx b/packages/twenty-docs/l/pt/user-guide/dashboards/overview.mdx
index 59e2f44a5a..1576c9ee4b 100644
--- a/packages/twenty-docs/l/pt/user-guide/dashboards/overview.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/dashboards/overview.mdx
@@ -1,79 +1,85 @@
---
-title: Dashboards
-description: Learn the basics of reporting and dashboards in Twenty.
+title: Painéis
+description: Aprenda o básico sobre relatórios e painéis no Twenty.
image: /images/user-guide/reporting/pie-chart.png
---
-
+
-## Understanding Dashboards
+
+ Os painéis estão atualmente em versão beta. Ative-os em **Configurações → Atualizações → Acesso antecipado**.
+
-Dashboards in Twenty provide a visual way to track your key performance metrics and gain insights from your CRM data.
+## Entendendo os painéis
-
+Os painéis no Twenty oferecem uma forma visual de acompanhar suas principais métricas de desempenho e obter insights dos seus dados de CRM.
-## Key Concepts
+
-### Dashboards
+## Conceitos principais
-A dashboard is a collection of tabs that display your CRM data at a glance. You can create multiple dashboards for different purposes:
+### Painéis
-* Sales performance
-* Team activity
-* Pipeline health
-* Custom metrics
+Um painel é uma coleção de abas que exibem seus dados de CRM num relance. Você pode criar vários painéis para diferentes finalidades:
-### Tabs
+* Desempenho de vendas
+* Atividade da equipe
+* Saúde do pipeline
+* Métricas personalizadas
-Tabs allow you to organize your dashboard into sections. Each tab contains one or more widgets.
+### Abas
+
+As abas permitem organizar seu painel em seções. Cada aba contém um ou mais widgets.
### Widgets
-Widgets are individual visualizations that display specific data. Types include:
+Widgets são visualizações individuais que exibem dados específicos. Os tipos incluem:
-* Bar charts
-* Pie charts
-* Line charts
-* Number metrics
+* Gráficos de barras
+* Gráficos de pizza
+* Gráficos de linha
+* Gráficos agregados
* iFrames
+* Texto enriquecido
- **Current limitations**:
+ **Limitações atuais**:
- * Exporting dashboards and sharing with external users (non-Twenty users) are not available at the moment.
- * Gauge charts and tables are not yet available.
+ * A exportação de painéis e o compartilhamento com usuários externos (usuários não-Twenty) não estão disponíveis no momento.
+ * Gráficos de indicador e tabelas ainda não estão disponíveis.
-## Getting Started
+## Primeiros passos
-### Creating Your First Dashboard
+### Criando seu primeiro painel
-1. Navigate to the **Dashboards** section
-2. Click **+ New Dashboard**
-3. Give your dashboard a name
-4. Add tabs to organize your content
-5. Add widgets to display your data
-6. Save
+1. Navegue até a seção **Dashboards**
+2. Clique em **+ New Dashboard**
+3. Dê um nome ao seu painel
+4. Adicione abas para organizar seu conteúdo
+5. Adicione widgets para exibir seus dados
+6. Salvar
-### Adding Widgets
+### Adicionando widgets
-1. Open a tab on your dashboard
-2. Click **+ Add Widget**
-3. Select the widget type
-4. Choose the data source (object)
-5. Configure the widget settings
-6. Save and view your widget
+1. Abra uma aba no seu painel
+2. Clique em **+ Add Widget**
+3. Selecione o tipo de widget
+4. Escolha a fonte de dados (objeto)
+5. Configure as configurações do widget
+6. Salve e visualize seu widget
-## Best Practices
+## Melhores Práticas
-* **Start simple**: Begin with a few key metrics and add more over time
-* **Focus on actionable data**: Display metrics that drive decisions
-* **Regular review**: Check your dashboards regularly to spot trends
-* **Share with team**: Make dashboards visible to relevant team members
+* **Comece simples**: Inicie com algumas métricas-chave e adicione mais ao longo do tempo
+* **Foque em dados acionáveis**: Exiba métricas que orientem as decisões
+* **Revisão regular**: Verifique seus painéis regularmente para identificar tendências
+* **Compartilhe com a equipe**: Torne os painéis visíveis para os membros relevantes da equipe
-## Next Steps
+## Próximos Passos
-* [Widgets and visualizations](/l/pt/user-guide/dashboards/capabilities/widgets)
-* [Dashboards FAQ](/l/pt/user-guide/dashboards/how-tos/dashboards-faq)
+* [Widgets e visualizações](/l/pt/user-guide/dashboards/capabilities/widgets)
+* [Referência das configurações de gráfico](/l/pt/user-guide/dashboards/capabilities/chart-settings)
+* [FAQ de painéis](/l/pt/user-guide/dashboards/how-tos/dashboards-faq)
diff --git a/packages/twenty-docs/l/pt/user-guide/data-migration/capabilities/error-handling.mdx b/packages/twenty-docs/l/pt/user-guide/data-migration/capabilities/error-handling.mdx
index d0bd8e3b0f..21d549e5a4 100644
--- a/packages/twenty-docs/l/pt/user-guide/data-migration/capabilities/error-handling.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/data-migration/capabilities/error-handling.mdx
@@ -1,76 +1,76 @@
---
-title: Error Handling & Validation
-description: Review and fix import errors directly in the UI before confirming.
+title: Tratamento de erros e validação
+description: Revise e corrija os erros de importação diretamente na IU antes de confirmar.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-## Pre-Import Validation
+## Validação pré-importação
-After uploading your file and mapping fields, Twenty validates your data **before** importing. This allows you to catch and fix errors without affecting your existing data.
+Depois de carregar o seu ficheiro e mapear os campos, o Twenty valida os seus dados **antes** de os importar. Isto permite detetar e corrigir erros sem afetar os seus dados existentes.
-## How It Works
+## Como Funciona
-1. **Upload** your CSV file
-2. **Map** your columns to Twenty fields
-3. **Review** the potential errors highlighted in yellow
-4. **Fix errors** directly in the UI
-5. **Confirm** the import
+1. **Carregue** o seu ficheiro CSV
+2. **Mapeie** as suas colunas para os campos do Twenty
+3. **Revise** os potenciais erros destacados em amarelo
+4. **Corrija os erros** diretamente na IU
+5. **Confirme** a importação
-
+
-## Error Display
+## Apresentação de erros
-Rows with issues are highlighted in **yellow**. You can:
+As linhas com erros são destacadas em **amarelo**. Pode:
-* **Edit the cell directly** to fix the error
-* **Remove the row** to skip it entirely
+* **Edite a célula diretamente** para corrigir o erro
+* **Remova a linha** para a ignorar por completo
-This inline editing saves time—no need to go back to your spreadsheet, fix errors, and re-upload.
+Esta edição em linha poupa tempo—não é necessário voltar à sua folha de cálculo, corrigir os erros e voltar a carregar.
-## Common Error Types
+## Tipos de erro comuns
-### Duplicate Values
+### Valores duplicados
-**Cause**: A unique field (email, domain) already exists in Twenty or appears twice in your file.
+**Causa**: Um campo único (email, domínio) já existe no Twenty ou aparece duas vezes no seu ficheiro.
-**Fix**:
+**Correção**:
-* Edit the duplicate value in the import UI
-* Remove one of the duplicate rows
+* Edite o valor duplicado na IU de importação
+* Remova uma das linhas duplicadas
-See [Uniqueness Constraints](/l/pt/user-guide/data-migration/capabilities/uniqueness-constraints) for more details on how uniqueness is enforced.
+Consulte [Restrições de unicidade](/l/pt/user-guide/data-migration/capabilities/uniqueness-constraints) para mais detalhes sobre como a unicidade é aplicada.
-### Invalid Format
+### Formato inválido
-**Cause**: Data doesn't match the expected format (e.g., invalid email, wrong date format).
+**Causa**: Os dados não correspondem ao formato esperado (por exemplo, email inválido, formato de data incorreto).
-**Fix**: Edit the cell to use the correct format.
+**Correção**: Edite a célula para usar o formato correto.
-See [Field Mapping](/l/pt/user-guide/data-migration/capabilities/field-mapping) for the expected format of each field type.
+Consulte [Mapeamento de Campos](/l/pt/user-guide/data-migration/capabilities/field-mapping) para o formato esperado de cada tipo de campo.
-### Missing Required Fields
+### Campos obrigatórios ausentes
-**Cause**: A required field is empty.
+**Causa**: Um campo obrigatório está vazio.
-**Fix**: Enter a value in the required field or remove the row.
+**Correção**: Introduza um valor no campo obrigatório ou remova a linha.
-### Relation Not Found
+### Relação não encontrada
-**Cause**: The referenced record doesn't exist (e.g., a Company domain that wasn't imported).
+**Causa**: O registo referenciado não existe (por exemplo, um domínio de Empresa que não foi importado).
-**Fix**:
+**Correção**:
-* Import the parent records first
-* Or correct the reference value
+* Importe primeiro os registos pai
+* Ou corrija o valor de referência
-See [Import Relations](/l/pt/user-guide/data-migration/capabilities/import-relations) for the correct import order and how to link records.
+Consulte [Importar relações](/l/pt/user-guide/data-migration/capabilities/import-relations) para conhecer a ordem correta de importação e como ligar registos.
-## Tips for Fewer Errors
+## Dicas para reduzir erros
-1. **Download the template** to see expected format prior to importing your file
-2. **Clean your data** in the spreadsheet first
-3. **Import files in correct order** to import relations (Companies → People → Opportunities)
-4. **Test with small batches** before full import
-5. **Check for duplicates** before uploading
-6. **Limit the size of your file to 10,000 records** per file
+1. **Transfira o modelo** para ver o formato esperado antes de importar o seu ficheiro
+2. **Limpe os seus dados** primeiro na folha de cálculo
+3. **Importe os ficheiros na ordem correta** para importar relações (Empresas → Pessoas → Oportunidades)
+4. **Teste com pequenos lotes** antes da importação completa
+5. **Verifique se existem duplicados** antes de carregar
+6. **Limite o tamanho do seu ficheiro a 10,000 registos** por ficheiro
diff --git a/packages/twenty-docs/l/pt/user-guide/data-migration/capabilities/field-mapping.mdx b/packages/twenty-docs/l/pt/user-guide/data-migration/capabilities/field-mapping.mdx
index 9eab01bc23..0b74a2fb6c 100644
--- a/packages/twenty-docs/l/pt/user-guide/data-migration/capabilities/field-mapping.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/data-migration/capabilities/field-mapping.mdx
@@ -1,198 +1,198 @@
---
-title: Field Mapping
-description: How field mapping works during data import.
+title: Mapeamento de Campos
+description: Como o mapeamento de campos funciona durante a importação de dados.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-## How Field Mapping Works
+## Como funciona o mapeamento de campos
-When you upload a file, Twenty analyzes your columns and attempts to match them to existing fields.
+Ao fazer upload de um arquivo, a Twenty analisa as suas colunas e tenta associá-las aos campos existentes.
-### Automatic Mapping
+### Mapeamento automático
-Twenty tries to match columns based on:
+A Twenty tenta associar as colunas com base em:
-* Column header names (exact or similar matches)
-* Data type detection (dates, numbers, emails)
-* Common field patterns
+* Nomes dos cabeçalhos das colunas (correspondências exatas ou semelhantes)
+* Detecção de tipo de dados (datas, números, e-mails)
+* Padrões comuns de campos
-**Quick tip:** Export a few rows from the object you want to import. The exported file will have the exact column names Twenty expects, making automatic mapping seamless during import.
+**Dica rápida:** Exporte algumas linhas do objeto que você deseja importar. O arquivo exportado terá exatamente os nomes de coluna que a Twenty espera, facilitando o mapeamento automático durante a importação.
-### Manual Mapping Options
+### Opções de mapeamento manual
-For each column, you can:
+Para cada coluna, você pode:
-* **Map to a field**: Select the matching Twenty field from a dropdown
-* **Do not map**: Skip the column entirely (data won't be imported)
+* **Mapear para um campo**: selecione o campo correspondente da Twenty em um menu suspenso
+* **Não mapear**: ignore a coluna completamente (os dados não serão importados)
-**Fields must exist before import.** The import creates records, not fields. Create custom fields under **Settings → Data Model** before importing.
+**Os campos devem existir antes da importação.** A importação cria registros, não campos. Crie campos personalizados em **Configurações → Modelo de Dados** antes de importar.
-## Field Type Compatibility
+## Compatibilidade de tipos de campo
-All field types available in the Data Model are supported for import.
+Todos os tipos de campos disponíveis no Modelo de Dados são compatíveis com a importação.
-You can also import `id` values to either assign a specific ID to new records or update existing ones.
+Você também pode importar valores de `id` para atribuir um ID específico a novos registros ou atualizar os existentes.
-## Data Format Requirements
+## Requisitos de formato de dados
-**Some fields have special syntax.** We recommend downloading the sample file before preparing your import to see the expected syntax for each field type.
+**Alguns campos têm sintaxe especial.** Recomendamos baixar o arquivo de exemplo antes de preparar sua importação para ver a sintaxe esperada para cada tipo de campo.
-### Address Fields
+### Campos de Endereço
-Address is a nested field with multiple columns. Some can be left empty.
+Endereço é um campo aninhado com várias colunas. Algumas podem ficar em branco.
-* **Address / Address 1**: Street address line 1
-* **Address / Address 2**: Street address line 2
-* **Address / City**: City name
-* **Address / State**: State or province
-* **Address / Country**: Country name
-* **Address / Post Code**: Postal/ZIP code
+* **Endereço / Endereço 1**: Linha 1 do endereço
+* **Endereço / Endereço 2**: Linha 2 do endereço
+* **Endereço / Cidade**: Nome da cidade
+* **Endereço / Estado**: Estado ou província
+* **Endereço / País**: Nome do país
+* **Endereço / Código Postal**: Código Postal/CEP
-### Array Fields
+### Campos de Array
-Use the following format:
+Use o seguinte formato:
```
-["value1","value2"]
+[\"value1\",\"value2\"]
```
-### Boolean Fields
+### Campos Booleanos
-Use `TRUE` or `FALSE` (uppercase) - not `true` or `false`
+Use `TRUE` ou `FALSE` (em maiúsculas) - não `true` ou `false`
-### Currency Fields
+### Campos de Moeda
-Currency is a nested field with two columns that **both must be filled**:
+Moeda é um campo aninhado com duas colunas que **ambas devem ser preenchidas**:
-* **Amount / Amount**: The numeric value (e.g., `1234.56`)
-* **Amount / Currency**: The currency code (e.g., `USD`, `EUR`)
+* **Valor / Valor**: O valor numérico (por exemplo, `1234.56`)
+* **Valor / Moeda**: O código da moeda (por exemplo, `USD`, `EUR`)
-### Date Fields
+### Campos de Data
-Supported formats:
+Formatos suportados:
-* `YYYY-MM-DD` (recommended)
+* `YYYY-MM-DD` (recomendado)
* `MM/DD/YYYY`
* `DD/MM/YYYY`
-* ISO 8601 format
+* Formato ISO 8601
-### Domain Fields
+### Campos de Domínio
-* It is recommended to use the format `https://domain.com` to avoid creating duplicates, as this is the format used for Companies created by the mailbox and calendar synchronizations
-* A `Domain Label` and `Domain URL` can be filled: best practice is to fill `domain.com` in the label and `https://domain.com` in the url
-* Domains must be unique within the Companies object
-* **Domains must be unique within the file to import**
+* Recomenda-se usar o formato `https://domain.com` para evitar a criação de duplicatas, pois esse é o formato usado para Empresas criadas pelas sincronizações da caixa de correio e do calendário
+* Um `Domain Label` e uma `Domain URL` podem ser preenchidos: a boa prática é preencher `domain.com` no rótulo e `https://domain.com` na URL
+* Domínios devem ser exclusivos no objeto Empresas
+* **Os domínios devem ser exclusivos dentro do arquivo a ser importado**
-### Email Fields
+### Campos de E-mail
-* Must be valid email format
-* Emails must be unique within the People object
-* **Emails must be unique within the file to import**
-* For additional emails: use **Emails / Primary Email** for the main email, and **Emails / Additional Emails** with this format:
+* Deve estar em um formato de e-mail válido
+* Os e-mails devem ser exclusivos dentro do objeto Pessoas
+* **Os e-mails devem ser exclusivos dentro do arquivo a ser importado**
+* Para e-mails adicionais: use **E-mails / E-mail principal** para o e-mail principal e **E-mails / E-mails adicionais** com este formato:
```
-["jane@twenty.com","jane.doe@twenty.com"]
+[\"jane@twenty.com\",\"jane.doe@twenty.com\"]
```
-### Id Fields
+### Campos de ID
-Specifying an `id` during import is optional. Twenty auto-generates one if not provided.
+Especificar um `id` durante a importação é opcional. A Twenty gera um automaticamente se não for fornecido.
-Use cases for mapping an `id` column:
+Casos de uso para mapear uma coluna `id`:
-* **Set a specific ID**: Choose the UUID for newly created records
-* **Update existing records**: Match against existing records to update them instead of creating duplicates. In that case, it is recommended to not map the other unique fields: mapping only one unique field ensures a smoother import.
+* **Definir um ID específico**: escolha o UUID para registros recém-criados
+* **Atualizar registros existentes**: faça a correspondência com registros existentes para atualizá-los, em vez de criar duplicatas. Nesse caso, recomenda-se não mapear os outros campos exclusivos: mapear apenas um campo exclusivo garante uma importação mais tranquila.
-If you provide an `id`, it must be in UUID format (e.g., `c776ee49-f608-4a77-8cc8-6fe96ae1e43f`).
+Se você fornecer um `id`, ele deve estar no formato UUID (por exemplo, `c776ee49-f608-4a77-8cc8-6fe96ae1e43f`).
-### JSON Fields
+### Campos JSON
-Use valid JSON format:
+Use um formato JSON válido:
```
-{"key":"value","key2":"value2"}
+{\"key\":\"value\",\"key2\":\"value2\"}
```
-### Links Fields
+### Campos de Links
-Similar to Domain fields:
+Semelhante aos campos de Domínio:
-* Fill both the label and URL columns: **Links / Link URL** and **Links / Link Label**
-* Use full URL format: `https://example.com`
-* For secondary links, use **Links / Secondary Links** column with this format:
+* Preencha as colunas de rótulo e URL: **Links / URL do link** e **Links / Rótulo do link**
+* Use o formato completo de URL: `https://example.com`
+* Para links secundários, use a coluna **Links / Links Secundários** com este formato:
```
-[{"url":"https://twenty.com","label":"Twenty"}]
+[{\"url\":\"https://twenty.com\",\"label\":\"Twenty\"}]
```
-### Multi-Select Fields
+### Campos de Seleção Múltipla
-Use the **API names** (not the display labels) in the following format:
+Use os **nomes da API** (não os rótulos de exibição) no seguinte formato:
```
-["VALUE1","VALUE2"]
+[\"VALUE1\",\"VALUE2\"]
```
-See [here](#finding-api-names-for-select-fields) where to find the API names.
+Veja [aqui](#finding-api-names-for-select-fields) onde encontrar os nomes da API.
-New select options will not be created automatically by the import. They must be added under **Settings → Data Model** before importing.
+Novas opções de seleção não serão criadas automaticamente pela importação. Elas devem ser adicionadas em **Configurações → Modelo de Dados** antes de importar.
- **Import overwrites, it does not add.**
+ **A importação substitui; não adiciona.**
- If a record already has `VALUE2` and `VALUE3` selected, and you import `["VALUE1"]`, the record will only have `VALUE1` after import. The previous selections are replaced, not merged.
+ Se um registro já tiver `VALUE2` e `VALUE3` selecionados e você importar `[\"VALUE1\"]`, o registro terá apenas `VALUE1` após a importação. As seleções anteriores são substituídas, não mescladas.
-### Number Fields
+### Campos Numéricos
-* Numbers only
-* Decimals use period: `1234.56`
-* No thousands separators
+* Apenas números
+* Decimais usam ponto: `1234.56`
+* Sem separadores de milhares
-### Phone Fields
+### Campos de Telefone
-Phone is a nested field with multiple columns that **must be filled**
+Telefone é um campo aninhado com várias colunas que devem ser preenchidas
-* **Phones / Primary Phone Number**: The phone number (e.g., `4159095555`)
-* **Phones / Primary Phone Country Code**: Country code (e.g., `US`)
-* **Phones / Primary Phone Calling Code**: Dialing code (e.g., `+1`)
+* **Telefones / Número de telefone principal**: O número de telefone (por exemplo, `4159095555`)
+* **Telefones / Código do país do telefone principal**: Código do país (por exemplo, `US`)
+* **Telefones / Código de chamada do telefone principal**: Código de discagem (por exemplo, `+1`)
-### Rating Fields
+### Campos de Classificação
-Use the API name format: `RATING_1`, `RATING_2`, `RATING_3`, `RATING_4`, `RATING_5`
+Use o formato de nome da API: `RATING_1`, `RATING_2`, `RATING_3`, `RATING_4`, `RATING_5`
-### Relation Fields
+### Campos de Relação
-Please see our dedicated article: [Import Relations Between Objects](/l/pt/user-guide/data-migration/capabilities/import-relations)
+Consulte nosso artigo dedicado: [Importar relações entre objetos](/l/pt/user-guide/data-migration/capabilities/import-relations)
-### Select Fields
+### Campos de Seleção
-Use the **API name** of the option (not the display label):
+Use o **nome da API** da opção (não o rótulo de exibição):
```
VALUE1
```
-See [here](#finding-api-names-for-select-fields) where to find the API names.
-New select options will not be created automatically by the import. They must be added under **Settings → Data Model** before importing.
+Veja [aqui](#finding-api-names-for-select-fields) onde encontrar os nomes da API.
+Novas opções de seleção não serão criadas automaticamente pela importação. Elas devem ser adicionadas em **Configurações → Modelo de Dados** antes de importar.
-### Text Fields
+### Campos de Texto
-* No special formatting required
-* Leading/trailing spaces are trimmed
+* Nenhuma formatação especial é necessária
+* Espaços no início e no fim são removidos
-## Finding API Names
+## Encontrar Nomes da API
-For Select, Multi-Select, and Array fields with predefined options, you must use the **API names**, not the display labels.
+Para campos Select, Multi-Select e Array com opções predefinidas, você deve usar os **nomes da API**, não os rótulos de exibição.
-### How to Find API Names
+### Como encontrar nomes da API
-1. Go to **Settings → Data Model**
-2. Select the object and field
-3. Enable **Advanced mode** (toggle at the bottom right of the settings page)
-4. View the API name for each option
+1. Vá para **Configurações → Modelo de Dados**
+2. Selecione o objeto e o campo
+3. Ative o **Modo Avançado** (alternador no canto inferior direito da página de configurações)
+4. Visualize o nome da API de cada opção
-
+
diff --git a/packages/twenty-docs/l/pt/user-guide/data-migration/capabilities/file-formats.mdx b/packages/twenty-docs/l/pt/user-guide/data-migration/capabilities/file-formats.mdx
index 0dca437155..e95ef0d5e4 100644
--- a/packages/twenty-docs/l/pt/user-guide/data-migration/capabilities/file-formats.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/data-migration/capabilities/file-formats.mdx
@@ -1,48 +1,48 @@
---
-title: Supported File Formats
-description: File formats supported for data import in Twenty.
+title: Formatos de Ficheiro Suportados
+description: Formatos de ficheiro suportados para importação de dados no Twenty.
---
-## Supported Formats
+## Formatos Suportados
-Twenty supports three file formats for import:
+O Twenty suporta três formatos de ficheiro para importação:
-| Format | Extension | Notes |
-| ------------------ | --------- | ---------------------------- |
-| **CSV** | .csv | Recommended, most compatible |
-| **Excel** | .xlsx | Modern Excel format |
-| **Excel (Legacy)** | .xls | Older Excel format |
+| Formato | Extensão | Notas |
+| ------------------ | -------- | ---------------------------- |
+| **CSV** | .csv | Recomendado, mais compatível |
+| **Excel** | .xlsx | Formato moderno do Excel |
+| **Excel (Legado)** | .xls | Formato antigo do Excel |
-## File Requirements
+## Requisitos do Ficheiro
-| Requirement | Value |
-| ---------------- | ------------------------------------- |
-| **Encoding** | UTF-8 recommended |
-| **Record limit** | 10,000 records per file |
-| **Structure** | First row must contain column headers |
-| **Content** | One object type per file |
+| Requisito | Valor |
+| ---------------------- | ------------------------------------------------------ |
+| **Codificação** | UTF-8 recomendado |
+| **Limite de registos** | 10 000 registos por ficheiro |
+| **Estrutura** | A primeira linha deve conter os cabeçalhos das colunas |
+| **Conteúdo** | Um tipo de objeto por ficheiro |
-## CSV Best Practices
+## Melhores Práticas para CSV
-* **Delimiter**: Use comma (`,`) or semicolon (`;`)
-* **Text qualifier**: Use double quotes (`"`) for text containing commas
-* **Line endings**: Windows (CRLF) or Unix (LF) both supported
-* **Empty values**: Leave cells empty, don't use "NULL" or "N/A"
+* **Delimitador**: Utilize vírgula (`,`) ou ponto e vírgula (`;`)
+* **Qualificador de texto**: Utilize aspas duplas (`\"`) para texto que contenha vírgulas
+* **Finais de linha**: Windows (CRLF) ou Unix (LF), ambos são suportados
+* **Valores vazios**: Deixe as células em branco, não utilize "NULL" ou "N/A"
-## Excel Best Practices
+## Melhores Práticas para o Excel
-When exporting from Excel:
+Ao exportar do Excel:
-* Remove formulas (export values only)
-* Delete empty rows at the end
-* Ensure no merged cells
-* Use the first sheet only
+* Remova as fórmulas (exporte apenas valores)
+* Elimine as linhas vazias no final
+* Garanta que não existam células combinadas
+* Utilize apenas a primeira folha
-## Large Datasets
+## Grandes Conjuntos de Dados
-For datasets larger than 10,000 records:
+Para conjuntos de dados com mais de 10 000 registos:
-* Split into multiple files
-* Or use the [API import](/l/pt/user-guide/data-migration/how-tos/import-data-via-api) for unlimited records
+* Divida em vários ficheiros
+* Ou utilize a [importação via API](/l/pt/user-guide/data-migration/how-tos/import-data-via-api) para registos ilimitados
-For very large migrations (100,000+ records), the API is significantly faster and more reliable than CSV imports.
+Para migrações muito grandes (100 000+ registos), a API é significativamente mais rápida e fiável do que as importações em CSV.
diff --git a/packages/twenty-docs/l/pt/user-guide/data-migration/capabilities/import-relations.mdx b/packages/twenty-docs/l/pt/user-guide/data-migration/capabilities/import-relations.mdx
index e0364191de..7e95e65403 100644
--- a/packages/twenty-docs/l/pt/user-guide/data-migration/capabilities/import-relations.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/data-migration/capabilities/import-relations.mdx
@@ -1,94 +1,94 @@
---
-title: Import Relations Between Objects
-description: Import relationships between records via CSV.
+title: Importar Relações Entre Objetos
+description: Importar relações entre registos via CSV.
---
-## Overview
+## Visão Geral
-Twenty supports importing relationships between objects during CSV import. This allows you to link records (e.g., attach People to Companies) as part of your data migration.
+O Twenty suporta a importação de relações entre objetos durante a importação por CSV. Isto permite-lhe ligar registos (por exemplo, associar Pessoas a Empresas) como parte da sua migração de dados.
-**Currently supported for import**: One-to-many relations pointing to a single object type on each side (e.g., People → Companies). Relations pointing to multiple object types are not yet supported in import/export.
+**Atualmente suportado para importação**: Relações um-para-muitos que apontam para um único tipo de objeto de cada lado (por exemplo, Pessoas → Empresas). Relações que apontam para vários tipos de objeto ainda não são suportadas na importação/exportação.
-## How Relations Work in Twenty
+## Como funcionam as relações no Twenty
-### One to Many / Many to One
+### Um para Muitos / Muitos para Um
-Twenty supports standard relations where one record links to many others:
+O Twenty suporta relações padrão em que um registo se liga a muitos outros:
-* **One Company → Many People**: A company can have multiple employees, but each person belongs to one company
-* **One Company → Many Opportunities**: A company can have multiple deals, but each opportunity belongs to one company
+* **Uma Empresa → Muitas Pessoas**: Uma empresa pode ter vários colaboradores, mas cada pessoa pertence a uma empresa
+* **Uma Empresa → Muitas Oportunidades**: Uma empresa pode ter vários negócios, mas cada oportunidade pertence a uma empresa
-### Relations That Can Point to Multiple Object Types
+### Relações que podem apontar para vários tipos de objeto
-Some relations can connect to different types of objects. This works in two ways:
+Algumas relações podem ligar-se a diferentes tipos de objetos. Isto funciona de duas formas:
-**Pattern 1: Many records linking to one record each from different object types**
+**Padrão 1: Muitos registos a ligar-se, cada um, a um registo de diferentes tipos de objeto**
-Several Notes, Tasks, or Activities can each be attached to multiple object types at once:
+Várias Notas, Tarefas ou Atividades podem ser anexadas, cada uma, a vários tipos de objeto ao mesmo tempo:
-* **Notes** can be linked to one Person, one Company, and one Opportunity simultaneously
-* **Tasks** can be linked to one Person, one Company, and one Opportunity simultaneously
+* **Notas** podem ser ligadas a uma Pessoa, uma Empresa e uma Oportunidade em simultâneo
+* **Tarefas** podem ser ligadas a uma Pessoa, uma Empresa e uma Oportunidade em simultâneo
-Here, the Notes/Tasks are on the "many" side. Each links to one record per object type.
+Aqui, as Notas/Tarefas estão do lado "muitos". Cada uma liga-se a um registo por tipo de objeto.
-**Pattern 2: One record receiving links from many records of different object types**
+**Padrão 2: Um registo a receber ligações de muitos registos de diferentes tipos de objeto**
-A Project can receive links from multiple records across different object types:
+Um Projeto pode receber ligações de vários registos de diferentes tipos de objeto:
-* **A Project** can have many People linked to it, many Companies linked to it, and many Notes attached to it
+* **Um Projeto** pode ter muitas Pessoas ligadas a ele, muitas Empresas ligadas a ele e muitas Notas anexadas a ele
-Here, the Project is on the "one" side. Multiple records from different objects can all link to the same Project.
+Aqui, o Projeto está do lado "um". Vários registos de diferentes objetos podem ligar-se todos ao mesmo Projeto.
- **Import/Export limitation**: Relations that point to multiple object types (like Notes → People/Companies/Opportunities) are **not yet supported** in CSV import or export.
+ **Limitação de Importação/Exportação**: Relações que apontam para vários tipos de objeto (como Notas → Pessoas/Empresas/Oportunidades) **ainda não são suportadas** na importação ou exportação por CSV.
- * **Import**: Only one-to-many relations pointing to a single object type on each side can be imported
- * **Export**: Columns for relations pointing to multiple object types are currently left empty
+ * **Importação**: Apenas podem ser importadas relações um-para-muitos que apontem para um único tipo de objeto de cada lado
+ * **Exportação**: As colunas para relações que apontam para vários tipos de objeto são, atualmente, deixadas em branco
- This is on our roadmap.
+ Isto está no nosso roadmap.
-### What's Not Supported Today
+### O que não é suportado hoje
-**Many to Many relations** are not yet available. For example, you cannot currently create a relation where:
+**Relações muitos-para-muitos** ainda não estão disponíveis. Por exemplo, atualmente não pode criar uma relação em que:
-* Many People are linked to many Projects
+* Muitas Pessoas estão ligadas a muitos Projetos
-Many to Many relations are planned for H1 2026.
+Relações muitos-para-muitos estão planeadas para o 1.º semestre de 2026.
-## Linking Records During Import
+## Ligar registos durante a importação
-**Reminder**: Only one-to-many relations pointing to a single object type can be imported (e.g., People → Companies). Relations pointing to multiple object types (e.g., Notes → People/Companies/Opportunities) are not yet supported.
+**Lembrete**: Só podem ser importadas relações um-para-muitos que apontem para um único tipo de objeto (por exemplo, Pessoas → Empresas). Relações que apontem para vários tipos de objeto (por exemplo, Notas → Pessoas/Empresas/Oportunidades) ainda não são suportadas.
-### Step 1: Identify the "One" and "Many" Sides
+### Passo 1: Identificar os lados "Um" e "Muitos"
-First, determine which object is on the "one" side and which is on the "many" side of the relationship.
+Primeiro, determine qual o objeto que está do lado "um" e qual está do lado "muitos" da relação.
-**Example**:
+**Exemplo**:
-* **Company** is the "one" side (one company has many employees)
-* **People** is the "many" side (each person belongs to one company)
+* **Empresa** é o lado "um" (uma empresa tem muitos colaboradores)
+* **Pessoas** é o lado "muitos" (cada pessoa pertence a uma empresa)
-### Step 2: Ensure the "One" Side Records Exist
+### Passo 2: Garanta que existem os registos do lado "Um"
-Before importing the "many" side, the "one" side records must already exist in Twenty.
+Antes de importar o lado "muitos", os registos do lado "um" já devem existir no Twenty.
-* Import or create the "one" side records first (e.g., Companies)
-* Validate their unique identifier. This can be:
- * The `id` (Twenty's UUID)
- * A field set as unique (e.g., `domain` for Companies, or an external ID from your previous system)
+* Importe ou crie primeiro os registos do lado "um" (por exemplo, Empresas)
+* Valide o seu identificador único. Isto pode ser:
+ * O `id` (UUID do Twenty)
+ * Um campo definido como único (por exemplo, `domain` para Empresas, ou um ID externo do seu sistema anterior)
-The import will fail if a reference is made to a record that does not exist.
+A importação falhará se for feita referência a um registo que não existe.
-### Step 3: Prepare Your CSV File
+### Passo 3: Prepare o seu ficheiro CSV
-Add a column in your "many" side CSV file that references the "one" side record.
+Adicione uma coluna no seu ficheiro CSV do lado "muitos" que referencia o registo do lado "um".
-**Example**: For a People CSV file linking to Companies:
+**Exemplo**: Para um ficheiro CSV de Pessoas ligado a Empresas:
```
firstName,lastName,email,companyDomain
@@ -96,53 +96,53 @@ John,Smith,john@acme.com,https://acme.com
Jane,Doe,jane@widgets.co,https://widgets.co
```
-**Important**:
+**Importante**:
-* The value must **exactly match** the unique field on the Company record
-* For domains, use the **Domain URL** (e.g., `https://acme.com`), not the Domain Label
-* Map only **one** unique identifier per relation: this leads to a smoother import
+* O valor deve **corresponder exatamente** ao campo único no registo da Empresa
+* Para domínios, use o **URL de domínio** (por exemplo, `https://acme.com`), não o rótulo do domínio
+* Mapeie apenas **um** identificador único por relação: isto leva a uma importação mais fluida
-### Step 4: Ensure the Relation Field Exists
+### Passo 4: Verifique se o campo de relação existe
-Before uploading your file, make sure the relation field exists between your objects.
+Antes de carregar o seu ficheiro, garanta que o campo de relação existe entre os seus objetos.
-If it doesn't exist:
+Se não existir:
-1. Go to **Settings → Data Model**
-2. Select your object (e.g., People)
-3. Create a relation field pointing to the target object (e.g., Company)
+1. Vá a **Definições → Modelo de Dados**
+2. Selecione o seu objeto (por exemplo, Pessoas)
+3. Crie um campo de relação que aponte para o objeto de destino (por exemplo, Empresa)
-### Step 5: Upload and Map the Relation
+### Passo 5: Carregue e mapeie a relação
-1. Upload your CSV file via the import UI
-2. In the field mapping step, find your relation column (e.g., `companyDomain`)
-3. Map it to the relation field (e.g., Company)
-4. Twenty will automatically link each record to the matching parent
+1. Carregue o seu ficheiro CSV através da interface de importação
+2. No passo de mapeamento de campos, encontre a sua coluna de relação (por exemplo, `companyDomain`)
+3. Mapeie-a para o campo de relação (por exemplo, Empresa)
+4. O Twenty ligará automaticamente cada registo ao pai correspondente
-### Available Unique Fields for Relations
+### Campos únicos disponíveis para relações
-| Object | Unique Fields Available |
-| ------------------------------------- | --------------------------------------- |
-| **Companies** | `id`, `domain`, any custom unique field |
-| **People** | `id`, `email`, any custom unique field |
-| **Workspace Members** | `id`, `email` (not name) |
-| **Other standard and custom objects** | `id`, any field marked as unique |
+| Objeto | Campos únicos disponíveis |
+| ------------------------------------------ | -------------------------------------------------- |
+| **Empresas** | `id`, `domain`, qualquer campo único personalizado |
+| **Pessoas** | `id`, `email`, qualquer campo único personalizado |
+| **Membros do Espaço de Trabalho** | `id`, `email` (não o nome) |
+| **Outros objetos padrão e personalizados** | `id`, qualquer campo marcado como único |
-**Linking to Workspace Members**: When the relation points to Workspace Members (your team logging into Twenty), reference them by their **email address**, not their name.
+**Ligação a Membros do Espaço de Trabalho**: Quando a relação aponta para Membros do Espaço de Trabalho (a sua equipa que inicia sessão no Twenty), refira-os pelo seu **endereço de email**, não pelo nome.
-We recommend using `domain` for Companies and `email` for People, as these are human-readable and easy to maintain in spreadsheets.
+Recomendamos usar `domain` para Empresas e `email` para Pessoas, pois são legíveis para humanos e fáceis de manter em folhas de cálculo.
-**Reminder**: Soft-deleted records (visible under Command Menu → See deleted records) count toward uniqueness criteria. If you import a record with the same unique value as a deleted record, the deleted record will be restored. See [Uniqueness Constraints](/l/pt/user-guide/data-migration/capabilities/uniqueness-constraints) for more details.
+**Lembrete**: Registos suavemente eliminados (visíveis em Menu de Comandos → Ver registos eliminados) contam para os critérios de unicidade. Se importar um registo com o mesmo valor único que um registo eliminado, o registo eliminado será restaurado. Veja [Restrições de unicidade](/l/pt/user-guide/data-migration/capabilities/uniqueness-constraints) para mais detalhes.
-## Import Order Rule
+## Regra da Ordem de Importação
- **Always import the "one" side first!**
+ **Importe sempre primeiro o lado "um"!**
- 1. **Companies** first (no dependencies)
- 2. **People** second (linked to Companies)
- 3. **Opportunities** third (linked to Companies/People)
- 4. **Custom objects** following their dependencies
+ 1. **Empresas** primeiro (sem dependências)
+ 2. **Pessoas** em segundo (ligadas a Empresas)
+ 3. **Oportunidades** em terceiro (ligadas a Empresas/Pessoas)
+ 4. **Objetos personalizados** seguindo as suas dependências
- The parent record must exist before you can reference it.
+ O registo pai deve existir antes de o poder referenciar.
diff --git a/packages/twenty-docs/l/pt/user-guide/data-migration/capabilities/uniqueness-constraints.mdx b/packages/twenty-docs/l/pt/user-guide/data-migration/capabilities/uniqueness-constraints.mdx
index 5f6d05701b..9ad552ddf0 100644
--- a/packages/twenty-docs/l/pt/user-guide/data-migration/capabilities/uniqueness-constraints.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/data-migration/capabilities/uniqueness-constraints.mdx
@@ -1,72 +1,72 @@
---
-title: Uniqueness Constraints
-description: How Twenty enforces data uniqueness during import.
+title: Restrições de Unicidade
+description: Como o Twenty impõe a unicidade dos dados durante a importação.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-## Overview
+## Visão geral
-Twenty enforces uniqueness on certain fields to prevent duplicate records and ensure data integrity. Understanding these constraints is essential for successful imports.
+O Twenty impõe unicidade em determinados campos para evitar registos duplicados e garantir a integridade dos dados. Compreender estas restrições é essencial para importações bem-sucedidas.
-## Default Unique Fields
+## Campos Únicos por Predefinição
-| Object | Unique Fields |
-| ------------------ | ---------------------- |
-| **People** | `id`, `email` |
-| **Companies** | `id`, `domain` |
-| **Custom objects** | `id` only (by default) |
+| Objeto | Campos Únicos |
+| -------------------------- | ------------------------------ |
+| **Pessoas** | `id`, `email` |
+| **Empresas** | `id`, `domain` |
+| **Objetos personalizados** | `id` apenas (por predefinição) |
-The `id` field is Twenty's internal identifier, auto-generated for each record. It uses UUID format (e.g., `c776ee49-f608-4a77-8cc8-6fe96ae1e43f`).
+O campo `id` é o identificador interno do Twenty, gerado automaticamente para cada registo. Utiliza o formato UUID (por exemplo, `c776ee49-f608-4a77-8cc8-6fe96ae1e43f`).
-## Custom Unique Fields
+## Campos Únicos Personalizados
-You can define additional unique fields under **Settings → Data Model**:
+Pode definir campos únicos adicionais em **Definições → Modelo de Dados**:
-1. Go to **Settings → Data Model**
-2. Select the object
-3. Click on a field
-4. Enable **Unique** in field settings
+1. Vá a **Definições → Modelo de Dados**
+2. Selecione o objeto
+3. Clique num campo
+4. Ative **Único** nas definições do campo
-### Use Cases for Custom Unique Fields
+### Casos de Utilização para Campos Únicos Personalizados
-* **External IDs**: Store IDs from other systems (Salesforce ID, HubSpot ID)
-* **Business identifiers**: Employee numbers, customer codes
-* **Alternative contact info**: LinkedIn profile, phone number
+* **IDs externos**: Guardar IDs de outros sistemas (Salesforce ID, HubSpot ID)
+* **Identificadores empresariais**: Números de colaborador, códigos de cliente
+* **Informações de contacto alternativas**: Perfil do LinkedIn, número de telefone
-The field name `id` is reserved for Twenty's internal ID. Use a different name like `externalId` or `legacyId` for external identifiers.
+O nome do campo `id` é reservado para o ID interno do Twenty. Utilize um nome diferente, como `externalId` ou `legacyId`, para identificadores externos.
-## Import Behavior
+## Comportamento da Importação
-### Creating New Records
+### Criação de Novos Registos
-If a unique field value doesn't exist, a new record is created.
+Se o valor de um campo único não existir, é criado um novo registo.
-### Updating Existing Records
+### Atualização de Registos Existentes
-If a unique field value matches an existing record, that record is **updated** with the new data.
-To **update existing records**, it is recommended to **only match one unique field**.
+Se o valor de um campo único corresponder a um registo existente, esse registo é **atualizado** com os novos dados.
+Para **atualizar registos existentes**, recomenda-se **corresponder apenas a um campo único**.
-### Soft-Deleted Records
+### Registos Eliminados Logicamente
- **Deleted records count toward uniqueness.**
+ **Os registos eliminados contam para a unicidade.**
- Soft-deleted records (visible under Command Menu → See deleted records) are included in uniqueness checks. If you import a record with the same unique value as a deleted record, the deleted record will be **restored** with the new data.
+ Registos eliminados logicamente (visíveis em Menu de Comandos → Ver registos eliminados) são incluídos nas verificações de unicidade. Se importar um registo com o mesmo valor único que um registo eliminado, o registo eliminado será **restaurado** com os novos dados.
-## Duplicate Detection During Import
+## Deteção de Duplicados Durante a Importação
-During the validation phase:
+Durante a fase de validação:
-* Duplicates within your file are highlighted in yellow
-* You can edit or remove duplicate rows from the UI before starting the import
+* Os duplicados no seu ficheiro são realçados a amarelo
+* Pode editar ou remover linhas duplicadas na interface antes de iniciar a importação
-
+
-## Best Practices
+## Melhores Práticas
-1. **Remove duplicates** from your file before importing
-2. **Check for existing records** in Twenty before importing
-3. **Use external IDs** when migrating from other systems
-4. **Include unique fields** if you want to update existing records
+1. **Remova os duplicados** do seu ficheiro antes de importar
+2. **Verifique se existem registos** no Twenty antes de importar
+3. **Utilize IDs externos** ao migrar de outros sistemas
+4. **Inclua campos únicos** se quiser atualizar registos existentes
diff --git a/packages/twenty-docs/l/pt/user-guide/data-migration/how-tos/export-your-data.mdx b/packages/twenty-docs/l/pt/user-guide/data-migration/how-tos/export-your-data.mdx
index ac49738a29..ca43e98b3b 100644
--- a/packages/twenty-docs/l/pt/user-guide/data-migration/how-tos/export-your-data.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/data-migration/how-tos/export-your-data.mdx
@@ -1,209 +1,209 @@
---
-title: Export Your Data
-description: Complete step-by-step guide to exporting data from Twenty.
+title: Exporte Seus Dados
+description: Guia completo passo a passo para exportar dados do Twenty.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-## Overview
+## Visão geral
-Export your workspace data to CSV for backups, reporting, or migration.
+Exporte os dados do seu espaço de trabalho para CSV para backups, relatórios ou migração.
-**Use cases:**
+**Casos de uso:**
-* **Regular backups** — keep copies of your data
-* **External reporting** — analyze data in Excel, Google Sheets, or BI tools
-* **Migration** — move data to another system
-* **Bulk updates** — export, edit, and re-import to update records
+* **Backups regulares** — mantenha cópias dos seus dados
+* **Relatórios externos** — analise os dados no Excel, Google Sheets ou em ferramentas de BI
+* **Migração** — mova dados para outro sistema
+* **Atualizações em massa** — exporte, edite e reimporte para atualizar registros
-## What You Need to Know
+## O Que Você Precisa Saber
-### Export Limits
+### Limites de Exportação
-* **Maximum 20,000 records** per export
-* Only **visible columns** are exported
-* Only **filtered records** are exported (based on your current view)
+* **Máximo de 20,000 registros** por exportação
+* Apenas **as colunas visíveis** são exportadas
+* Apenas **os registros filtrados** são exportados (com base na sua visualização atual)
-For larger exports (20,000+ records), use filters to export in batches or use the [API](/l/pt/developers/extend/capabilities/apis).
+Para exportações maiores (20,000+ registros), use filtros para exportar em lotes ou use a [API](/l/pt/developers/extend/capabilities/apis).
-### Permissions
+### Permissões
-You need the **"Export CSV"** permission to export data. Contact your workspace admin if you don't have this option.
+Você precisa da permissão **"Export CSV"** para exportar dados. Entre em contato com o administrador do seu espaço de trabalho se você não tiver essa opção.
-## Step 1: Navigate to the Object
+## Etapa 1: Navegue até o Objeto
-Go to the object you want to export:
+Vá para o objeto que você deseja exportar:
-* **People** — for contacts
-* **Companies** — for organizations
-* **Opportunities** — for deals
-* **Custom objects** — any object you've created
+* **Pessoas** — para contatos
+* **Empresas** — para organizações
+* **Oportunidades** — para negócios
+* **Objetos personalizados** — qualquer objeto que você criou
-## Step 2: Configure Your View
+## Etapa 2: Configure Sua Visualização
-**Important:** The export includes only what's visible in your current view.
+**Importante:** A exportação inclui apenas o que está visível na sua visualização atual.
-### Add/Remove Columns
+### Adicionar/Remover Colunas
-1. Click **Options → Fields** (or the **+** at the end of columns)
-2. Check the fields you want to export
-3. Uncheck fields you don't need
+1. Clique em **Opções → Campos** (ou no **+** no final das colunas)
+2. Marque os campos que você deseja exportar
+3. Desmarque os campos de que você não precisa
-### Filter Records (Optional)
+### Filtrar Registros (Opcional)
-If you only need a subset of data:
+Se você precisa apenas de um subconjunto de dados:
-1. Click **Filter**
-2. Add filter conditions (e.g., "Created date > January 1, 2024")
-3. Only matching records will be exported
+1. Clique em **Filtrar**
+2. Adicione condições de filtro (ex.: "Data de criação > 1 de janeiro de 2024")
+3. Somente os registros correspondentes serão exportados
-### Sort Records (Optional)
+### Ordenar Registros (Opcional)
-1. Click a column header to sort
-2. The export will follow your sort order
+1. Clique no cabeçalho de uma coluna para ordenar
+2. A exportação seguirá sua ordem de classificação
-**Create a dedicated export view.** Save a view specifically configured for exports so you don't need to reconfigure each time.
+**Crie uma visualização dedicada para exportação.** Salve uma visualização configurada especificamente para exportações para que você não precise reconfigurar a cada vez.
-## Step 3: Export the Data
+## Etapa 3: Exporte os Dados
-1. Click the **⋮** icon on the top right of the table
-2. Select **Export view**
-3. Choose where to save the CSV file
-4. Wait for the download to complete
+1. Clique no ícone **⋮** no canto superior direito da tabela
+2. Selecione **Exportar visualização**
+3. Escolha onde salvar o arquivo CSV
+4. Aguarde a conclusão do download
-## What Gets Exported
+## O Que É Exportado
-| Included | Not Included |
-| -------------------------------- | ---------------------- |
-| All visible columns | Hidden columns |
-| Records matching current filters | Filtered-out records |
-| Custom field values | Fields not in the view |
-| Record IDs | File attachments |
-| Relation IDs | Images |
+| Incluído | Não incluído |
+| --------------------------------------------- | ------------------------------------ |
+| Todas as colunas visíveis | Colunas ocultas |
+| Registros que correspondem aos filtros atuais | Registros excluídos pelos filtros |
+| Valores de campos personalizados | Campos que não estão na visualização |
+| IDs dos registros | Anexos de arquivo |
+| IDs de relacionamento | Imagens |
-### Relation Fields
+### Campos de Relação
-Relation IDs are only exported on the **"many" side** of a relationship:
+IDs de relacionamento são exportados apenas no **lado "muitos"** de um relacionamento:
-* **People export** includes a `companyId` column (People → Company relation)
-* **Companies export** does NOT include `peopleIds` (Companies is the "one" side)
+* **Exportação de Pessoas** inclui uma coluna `companyId` (relação Pessoas → Empresa)
+* **Exportação de Empresas** NÃO inclui `peopleIds` (Empresas é o lado "um")
-This means you can use the People export to re-import and maintain the Company link, but you'll need to re-import People after Companies to recreate the relationships.
+Isso significa que você pode usar a exportação de Pessoas para reimportar e manter o vínculo com Empresas, mas será necessário reimportar Pessoas após Empresas para recriar os relacionamentos.
-## Exporting for Specific Purposes
+## Exportação para Finalidades Específicas
-### For Backups
+### Para Backups
-1. Create a view with **all fields** visible
-2. Remove all filters to include all records
-3. Export each object type separately
-4. Store exports in a secure location
-5. Set a recurring reminder (weekly/monthly)
+1. Crie uma visualização com **todos os campos** visíveis
+2. Remova todos os filtros para incluir todos os registros
+3. Exporte cada tipo de objeto separadamente
+4. Armazene as exportações em um local seguro
+5. Defina um lembrete recorrente (semanal/mensal)
-### For External Reporting
+### Para Relatórios Externos
-1. Include only the fields you need for analysis
-2. Apply filters to focus on relevant data
-3. Consider sorting by the field you'll analyze
+1. Inclua apenas os campos necessários para a análise
+2. Aplique filtros para focar nos dados relevantes
+3. Considere ordenar pelo campo que você analisará
-### For Bulk Updates
+### Para Atualizações em Massa
-1. Export the records you want to update
-2. Include the unique identifier (`email`, `domain`, or `id`)
-3. Edit the exported file
-4. Re-import to update records
- See: [How to Update Existing Records](/l/pt/user-guide/data-migration/how-tos/update-existing-records-via-import)
+1. Exporte os registros que você deseja atualizar
+2. Inclua o identificador único (`email`, `domain` ou `id`)
+3. Edite o arquivo exportado
+4. Reimporte para atualizar os registros
+ Veja: [Como Atualizar Registros Existentes](/l/pt/user-guide/data-migration/how-tos/update-existing-records-via-import)
-### For Migration
+### Para Migração
-If you're exporting to migrate to another system:
+Se você está exportando para migrar para outro sistema:
-1. **Export each object separately** — People, Companies, Opportunities, etc.
-2. **Include ID fields** — these help maintain relationships
-3. **Document field mappings** — note how Twenty fields map to your target system
+1. **Exporte cada objeto separadamente** — Pessoas, Empresas, Oportunidades, etc.
+2. **Inclua campos de ID** — eles ajudam a manter os relacionamentos
+3. **Documente os mapeamentos de campos** — observe como os campos do Twenty se mapeiam para o seu sistema de destino
-## Handling Large Datasets (20,000+ Records)
+## Como Lidar com Conjuntos de Dados Grandes (20,000+ Registros)
-The export limit is 20,000 records. For larger datasets:
+O limite de exportação é de 20,000 registros. Para conjuntos de dados maiores:
-### Option 1: Export in Batches
+### Opção 1: Exportar em Lotes
-1. Add a filter (e.g., "Created date" ranges)
-2. Export the first batch
-3. Change the filter
-4. Export the next batch
-5. Combine files in your spreadsheet
+1. Adicione um filtro (por exemplo, intervalos de "Data de criação")
+2. Exporte o primeiro lote
+3. Altere o filtro
+4. Exporte o próximo lote
+5. Combine os arquivos na sua planilha
-**Example filters for batching:**
+**Exemplos de filtros para lotes:**
-* By date range (January, February, March...)
-* By owner (Team member A, Team member B...)
-* By status (Active, Inactive...)
+* Por intervalo de datas (janeiro, fevereiro, março...)
+* Por responsável (Membro da equipe A, Membro da equipe B...)
+* Por status (Ativo, Inativo...)
-### Option 2: Use the API
+### Opção 2: Usar a API
-The API has no record limit:
+A API não tem limite de registros:
-1. Get your API key from **Settings → Developers**
-2. Use the GraphQL API to query records
-3. Process results in your application
+1. Obtenha sua chave de API em **Configurações → Desenvolvedores**
+2. Use a API GraphQL para consultar registros
+3. Processe os resultados no seu aplicativo
-See: [API Documentation](/l/pt/developers/extend/capabilities/apis)
+Veja: [Documentação da API](/l/pt/developers/extend/capabilities/apis)
-## Tips and Best Practices
+## Dicas e Boas Práticas
-### Create Export Views
+### Crie Visualizações de Exportação
-Save views configured specifically for exports:
+Salve visualizações configuradas especificamente para exportações:
-1. Configure columns and filters
-2. Click **View options** → **Save as new view**
-3. Name it "Export - [Purpose]"
+1. Configure colunas e filtros
+2. Clique em **Opções da visualização** → **Salvar como nova visualização**
+3. Nomeie como "Export - [Finalidade]"
-### Secure Your Exports
+### Proteja Suas Exportações
-Exported files may contain sensitive data:
+Arquivos exportados podem conter dados sensíveis:
-* Store in secure locations
-* Delete old exports when no longer needed
-* Be careful sharing export files
+* Armazene em locais seguros
+* Exclua exportações antigas quando não forem mais necessárias
+* Tenha cuidado ao compartilhar arquivos de exportação
-### Check Before Exporting
+### Verifique Antes de Exportar
-Correct columns are visible
-Filters are set correctly (or removed for full export)
-You have Export permission
+As colunas corretas estão visíveis
+Os filtros estão configurados corretamente (ou removidos para exportação completa)
+Você tem permissão de Exportação
-## FAQ
+## Perguntas frequentes
-
- Only visible columns are exported. Add the columns you need via **Options → Fields** before exporting.
+
+ Apenas as colunas visíveis são exportadas. Adicione as colunas necessárias em **Opções → Campos** antes de exportar.
-
- Check your filters. The export only includes records matching your current view filters. Remove filters to export all records.
+
+ Verifique seus filtros. A exportação inclui apenas registros que correspondem aos filtros da sua visualização atual. Remova os filtros para exportar todos os registros.
-
- Not in a single export. Use filters to export in batches, or use the API for larger datasets.
+
+ Não em uma única exportação. Use filtros para exportar em lotes ou use a API para conjuntos de dados maiores.
-
- CSV (Comma Separated Values). Opens in Excel, Google Sheets, or any spreadsheet application.
+
+ CSV (valores separados por vírgula). Abre no Excel, Google Sheets ou qualquer aplicativo de planilha.
-
- Yes, but only on the "many" side of relationships. For example, a People export includes `companyId`, but a Companies export does not include people IDs.
+
+ Sim, mas apenas no lado "muitos" dos relacionamentos. Por exemplo, uma exportação de Pessoas inclui `companyId`, mas uma exportação de Empresas não inclui IDs de pessoas.
-
- Not directly through the UI. Use the API to build automated export workflows.
+
+ Não diretamente pela interface. Use a API para criar fluxos de trabalho de exportação automatizados.
-## Next Steps
+## Próximos Passos
-* [How to Update Existing Records](/l/pt/user-guide/data-migration/how-tos/update-existing-records-via-import) — edit and re-import your export
-* [How to Import Data via API](/l/pt/user-guide/data-migration/how-tos/import-data-via-api) — for large datasets
-* [API Documentation](/l/pt/developers/extend/capabilities/apis) — build custom export workflows
+* [Como Atualizar Registros Existentes](/l/pt/user-guide/data-migration/how-tos/update-existing-records-via-import) — edite e reimporte sua exportação
+* [Como Importar Dados via API](/l/pt/user-guide/data-migration/how-tos/import-data-via-api) — para conjuntos de dados grandes
+* [Documentação da API](/l/pt/developers/extend/capabilities/apis) — crie fluxos de trabalho de exportação personalizados
diff --git a/packages/twenty-docs/l/pt/user-guide/data-migration/how-tos/fix-import-errors.mdx b/packages/twenty-docs/l/pt/user-guide/data-migration/how-tos/fix-import-errors.mdx
index 578878d12a..c8217845a9 100644
--- a/packages/twenty-docs/l/pt/user-guide/data-migration/how-tos/fix-import-errors.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/data-migration/how-tos/fix-import-errors.mdx
@@ -1,122 +1,122 @@
---
-title: Fix Import Errors
-description: Complete troubleshooting guide for resolving CSV import errors.
+title: Corrigir erros de importação
+description: Guia completo de solução de problemas para corrigir erros de importação de CSV.
---
-## Overview
+## Visão Geral
-Import not working? This guide helps you identify and fix common import errors step by step.
+A importação não está funcionando? Este guia ajuda-o a identificar e corrigir, passo a passo, erros comuns de importação.
-## How Import Validation Works
+## Como funciona a validação da importação
-After uploading your file and mapping columns, Twenty validates your data:
+Depois de carregar o seu ficheiro e mapear as colunas, o Twenty valida os seus dados:
-1. **Validation runs** — Twenty checks each row for errors
-2. **Errors are highlighted** — problematic rows appear in **yellow**
-3. **You can fix in-place** — edit cells directly in the import UI
-4. **Or remove rows** — skip problematic records entirely
+1. **A validação é executada** — o Twenty verifica cada linha quanto a erros
+2. **Os erros são realçados** — as linhas problemáticas aparecem a **amarelo**
+3. **Pode corrigir no local** — edite as células diretamente na interface de importação
+4. **Ou remova linhas** — ignore completamente os registos problemáticos
-**Fix errors in the UI.** You don't need to go back to your spreadsheet. Edit cells directly during import to save time.
+**Corrija os erros na interface.** Não precisa de voltar à sua folha de cálculo. Edite as células diretamente durante a importação para poupar tempo.
-## Step-by-Step Troubleshooting
+## Resolução de problemas passo a passo
-### Step 1: Identify the Error Type
+### Passo 1: Identifique o tipo de erro
-Click on a highlighted row to see the specific error message. Common error types:
+Clique numa linha realçada para ver a mensagem de erro específica. Tipos de erro comuns:
-| Error Message | What It Means |
-| --------------------------------------------------------------------- | ------------------------------------------------------------ |
-| Duplicate values highlighted in yellow | Value already exists in Twenty or appears twice in your file |
-| `{field} is not a valid {type}` (hover on yellow cell) | Data doesn't match expected format |
-| Required field highlighted | A required field is empty |
-| `Can't connect to {object}. No unique record found...` (import fails) | Referenced record doesn't exist |
-| `Too many records. Up to 10000 allowed` (upload blocked) | File has more than 10,000 records |
+| Mensagem de Erro | O que significa |
+| --------------------------------------------------------------------------- | ----------------------------------------------------------------- |
+| Valores duplicados realçados a amarelo | O valor já existe no Twenty ou aparece duas vezes no seu ficheiro |
+| `{field} is not a valid {type}` (passe o cursor sobre a célula amarela) | Os dados não correspondem ao formato esperado |
+| Campo obrigatório realçado | O campo obrigatório está vazio |
+| `Can't connect to {object}. No unique record found...` (a importação falha) | O registo referenciado não existe |
+| `Too many records. Up to 10000 allowed` (carregamento bloqueado) | O ficheiro tem mais de 10 000 registos |
-### Step 2: Fix the Error
+### Passo 2: Corrija o erro
-Follow the specific instructions below for each error type.
+Siga as instruções específicas abaixo para cada tipo de erro.
---
-## Error: Duplicate Value
+## Erro: Valor duplicado
-### What You'll See
+### O Que Você Verá
-Rows with duplicate values are **highlighted in yellow** in the import UI before the import starts.
+As linhas com valores duplicados são realçadas a amarelo na interface de importação antes de a importação começar.
-### What It Means
+### O que significa
-A unique field (email, domain) either:
+Um campo único (email, domínio) pode:
-* Already exists in Twenty
-* Appears twice in your file
+* Já existe no Twenty
+* Aparece duas vezes no seu ficheiro
-### How to Fix
+### Como corrigir
-**Option 1: Edit the duplicate value**
+**Opção 1: Edite o valor duplicado**
-1. Click the cell with the error
-2. Change to a unique value
-3. Continue with import
+1. Clique na célula com o erro
+2. Altere para um valor único
+3. Continue com a importação
-**Option 2: Remove the duplicate row**
+**Opção 2: Remova a linha duplicada**
-1. Click the X next to the row
-2. The row will be skipped during import
+1. Clique no X ao lado da linha
+2. A linha será ignorada durante a importação
-**Option 3: Let Twenty update the existing record**
+**Opção 3: Deixe o Twenty atualizar o registo existente**
-1. Ensure your file includes a unique identifier (`email`, `domain`, or `id`)
-2. Map the unique identifier field
-3. Twenty will update the existing record instead of creating a duplicate
+1. Garanta que o seu ficheiro inclui um identificador único (`email`, `domain` ou `id`)
+2. Mapeie o campo do identificador único
+3. O Twenty atualizará o registo existente em vez de criar um duplicado
- **You can update unique fields too.**
+ **Também pode atualizar campos únicos.**
- * If you keep the `id` but change the `email` → the email will be updated
- * If you keep the `email` but change the `id` → the id will be updated
+ * Se mantiver o `id` mas alterar o `email` → o email será atualizado
+ * Se mantiver o `email` mas alterar o `id` → o id será atualizado
- As long as one unique identifier matches, Twenty updates the record.
+ Desde que um identificador único corresponda, o Twenty atualiza o registo.
-### How to Prevent This Error
+### Como prevenir este erro
-Before importing:
+Antes de importar:
-1. Sort your spreadsheet by the unique field
-2. Remove duplicate rows
-3. Check if records already exist in Twenty
+1. Ordene a sua folha de cálculo pelo campo único
+2. Remova linhas duplicadas
+3. Verifique se os registos já existem no Twenty
- **Soft-deleted records count toward uniqueness.**
+ **Registos eliminados logicamente contam para a unicidade.**
- Check Command Menu → See deleted records. Records there still enforce uniqueness. Permanently delete them or restore and update.
+ Verifique o Menu de Comandos → Ver registos eliminados. Os registos lá continuam a impor a unicidade. Elimine-os permanentemente ou restaure e atualize.
-For more details: [Uniqueness Constraints](/l/pt/user-guide/data-migration/capabilities/uniqueness-constraints)
+Para mais detalhes: [Restrições de Unicidade](/l/pt/user-guide/data-migration/capabilities/uniqueness-constraints)
---
-## Error: Invalid Format
+## Erro: Formato inválido
-### What You'll See
+### O Que Você Verá
-The cell value is highlighted in yellow. Hover over it to see the error message:
+O valor da célula está realçado a amarelo. Passe o cursor sobre ele para ver a mensagem de erro:
```
-{field name} is not a valid {field type}
+{field name} não é um {field type} válido
```
-### What It Means
+### O que significa
-The data doesn't match the expected format for that field type.
+Os dados não correspondem ao formato esperado para esse tipo de campo.
-### How to Fix — By Field Type
+### Como corrigir — Por tipo de campo
-#### Email
+#### E-mail
-**Problem:** Invalid email format
-**Solution:** Use format `name@domain.com`
+**Problema:** Formato de email inválido
+**Solução:** Use o formato `name@domain.com`
```
❌ john.smith@
@@ -124,45 +124,45 @@ The data doesn't match the expected format for that field type.
✓ john.smith@acme.com
```
-#### Domain
+#### Domínio
-**Problem:** Inconsistent format may cause duplicates
-**Solution:** Use `https://domain.com` format (recommended)
+**Problema:** Formato inconsistente pode causar duplicados
+**Solução:** Use o formato `https://domain.com` (recomendado)
```
-⚠️ acme.com (valid, but not recommended)
-⚠️ www.acme.com (valid, but not recommended)
-✅ https://acme.com (recommended)
+⚠️ acme.com (válido, mas não recomendado)
+⚠️ www.acme.com (válido, mas não recomendado)
+✅ https://acme.com (recomendado)
```
-All formats are valid, but `https://domain.com` is recommended because it matches the format used by email/calendar sync. Using other formats may create duplicate companies.
+Todos os formatos são válidos, mas `https://domain.com` é recomendado porque corresponde ao formato usado pela sincronização de email/calendário. Usar outros formatos pode criar empresas duplicadas.
-#### Date
+#### Data
-**Problem:** Unrecognized date format
-**Solution:** Use consistent format throughout file
+**Problema:** Formato de data não reconhecido
+**Solução:** Use um formato consistente em todo o ficheiro
```
-✓ 2024-03-15 (YYYY-MM-DD - recommended)
+✓ 2024-03-15 (YYYY-MM-DD - recomendado)
✓ 03/15/2024 (MM/DD/YYYY)
✓ 15/03/2024 (DD/MM/YYYY)
```
-#### Phone
+#### Telefone
-**Problem:** Missing required columns
-**Solution:** Include all phone columns
+**Problema:** Colunas obrigatórias em falta
+**Solução:** Inclua todas as colunas de telefone
-| Column | Example |
+| Coluna | Exemplo |
| --------------------------------------- | ------------ |
| **Phones / Primary Phone Number** | `4159095555` |
| **Phones / Primary Phone Country Code** | `US` |
| **Phones / Primary Phone Calling Code** | `+1` |
-#### Boolean
+#### Booleano
-**Problem:** Wrong boolean value
-**Solution:** Use uppercase `TRUE` or `FALSE`
+**Problema:** Valor booleano incorreto
+**Solução:** Use `TRUE` ou `FALSE` em maiúsculas
```
❌ true
@@ -172,37 +172,37 @@ The data doesn't match the expected format for that field type.
✓ FALSE
```
-#### Select / Multi-Select
+#### Seleção / Seleção múltipla
-**Problem:** Value doesn't match existing options
-**Solution:** Use **API names**, not display labels
+**Problema:** O valor não corresponde às opções existentes
+**Solução:** Use **nomes da API**, não rótulos de exibição
-How to find API names:
+Como encontrar nomes da API:
-1. Go to **Settings → Data Model**
-2. Select the object and field
-3. Enable **Advanced mode** (toggle at bottom right)
-4. Use the API name (e.g., `OPTION_1`, not "Option 1")
+1. Vá a **Definições → Modelo de Dados**
+2. Selecione o objeto e o campo
+3. Ative o **Modo Avançado** (alternador no canto inferior direito)
+4. Use o nome da API (por exemplo, `OPTION_1`, não "Option 1")
```
❌ High Priority
✓ HIGH_PRIORITY
```
-#### Currency
+#### Moeda
-**Problem:** Missing amount or currency code
-**Solution:** Fill both columns
+**Problema:** Valor ou código de moeda em falta
+**Solução:** Preencha ambas as colunas
-| Column | Example |
-| --------------------- | --------- |
-| **Amount / Amount** | `1234.56` |
-| **Amount / Currency** | `USD` |
+| Coluna | Exemplo |
+| ----------------- | --------- |
+| **Valor / Valor** | `1234.56` |
+| **Valor / Moeda** | `USD` |
-#### Number
+#### Número
-**Problem:** Non-numeric characters
-**Solution:** Numbers only, period for decimals
+**Problema:** Caracteres não numéricos
+**Solução:** Apenas números; ponto para decimais
```
❌ $1,234.56
@@ -210,221 +210,221 @@ How to find API names:
✓ 1234.56
```
-For complete format reference: [Field Mapping](/l/pt/user-guide/data-migration/capabilities/field-mapping)
+Para referência completa de formatos: [Referência de Mapeamento de Campos](/l/pt/user-guide/data-migration/capabilities/field-mapping)
---
-## Error: Required Field Missing
+## Erro: Campo obrigatório em falta
-### What You'll See
+### O Que Você Verá
-The row is highlighted in yellow with the required field cell marked.
+A linha está realçada a amarelo com a célula do campo obrigatório assinalada.
-### What It Means
+### O que significa
-A required field is empty for this row.
+Um campo obrigatório está vazio nesta linha.
-### How to Fix
+### Como corrigir
-**Option 1: Enter a value**
+**Opção 1: Introduza um valor**
-1. Click the empty cell
-2. Enter a value
-3. Continue with import
+1. Clique na célula vazia
+2. Introduza um valor
+3. Continue com a importação
-**Option 2: Remove the row**
+**Opção 2: Remova a linha**
-1. If you don't have the data, click X to skip the row
+1. Se não tiver os dados, clique em X para ignorar a linha
-### How to Prevent This Error
+### Como prevenir este erro
-Before importing, identify required fields:
+Antes de importar, identifique os campos obrigatórios:
-1. Go to **Settings → Data Model**
-2. Select your object
-3. Check which fields are marked as required
+1. Vá a **Definições → Modelo de Dados**
+2. Selecione o seu objeto
+3. Verifique quais os campos marcados como obrigatórios
---
-## Error: Relation Not Found
+## Erro: Relação não encontrada
-### What You'll See
+### O Que Você Verá
-This error appears **after the import starts** — the import fails with a message like:
+Este erro aparece após o início da importação — a importação falha com uma mensagem como:
```
Can't connect to company. No unique record found with condition: id = 7776ee49-f608-4a77-8cc8-6fe96ae1e43f
```
-This means there is no Company in Twenty with that specific identifier.
+Isto significa que não existe nenhuma Empresa no Twenty com esse identificador específico.
-Unlike other errors, this one is not caught during the data review step. The import will start and then fail when it encounters the missing relation.
+Ao contrário de outros erros, este não é detetado durante a etapa de revisão dos dados. A importação começará e depois falhará quando encontrar a relação em falta.
-### What It Means
+### O que significa
-You're trying to link to a record that doesn't exist in Twenty.
+Está a tentar ligar a um registo que não existe no Twenty.
-### How to Fix
+### Como corrigir
-**Option 1: Import parent records first**
+**Opção 1: Importe primeiro os registos pai**
-1. Cancel the current import
-2. Import the parent records (e.g., Companies)
-3. Then import the child records (e.g., People)
+1. Cancele a importação atual
+2. Importe os registos pai (por exemplo, Empresas)
+3. Depois, importe os registos filho (por exemplo, Pessoas)
-**Option 2: Fix the reference value**
+**Opção 2: Corrija o valor de referência**
-1. Check the reference value in your file
-2. Ensure it exactly matches an existing record
-3. Verify format: domains should be `https://domain.com`
+1. Verifique o valor de referência no seu ficheiro
+2. Garanta que corresponde exatamente a um registo existente
+3. Verifique o formato: os domínios devem ser `https://domain.com`
-**Option 3: Remove the relation**
+**Opção 3: Remova a relação**
-1. Clear the cell to import without the relation
-2. Add the relation manually later
+1. Limpe a célula para importar sem a relação
+2. Adicione a relação manualmente mais tarde
-### How to Prevent This Error
+### Como prevenir este erro
-1. **Import in the correct order:**
- * Companies first
- * People second (with company references)
- * Opportunities third
+1. **Importe na ordem correta:**
+ * Empresas primeiro
+ * Pessoas em segundo (com referências à empresa)
+ * Oportunidades em terceiro
-2. **Verify reference values:**
- * Export parent records to get exact identifiers
- * Use domain format `https://domain.com`
- * Check for typos and case sensitivity
+2. **Verifique os valores de referência:**
+ * Exporte os registos pai para obter identificadores exatos
+ * Use o formato de domínio `https://domain.com`
+ * Verifique erros de digitação e sensibilidade a maiúsculas/minúsculas
- **Import will fail if a reference is made to a non-existent record.**
+ **A importação falhará se for feita referência a um registo inexistente.**
- Always import parent objects before child objects.
+ Importe sempre os objetos pai antes dos objetos filho.
-For more details: [Import Relations](/l/pt/user-guide/data-migration/capabilities/import-relations)
+Para mais detalhes: [Importação de Relações](/l/pt/user-guide/data-migration/capabilities/import-relations)
---
-## Error: File Too Large
+## Erro: Ficheiro demasiado grande
-### What You'll See
+### O Que Você Verá
-This error appears **when uploading your file** — the upload is blocked entirely:
+Este erro aparece ao carregar o seu ficheiro — o carregamento é totalmente bloqueado:
```
-Too many records. Up to 10000 allowed
+Demasiados registos. Até 10 000 permitidos
```
-You won't be able to proceed to the data review step until you reduce the file size.
+Não poderá avançar para a etapa de revisão dos dados até reduzir o tamanho do ficheiro.
-### What It Means
+### O que significa
-Your file has more than 10,000 records.
+O seu ficheiro tem mais de 10 000 registos.
-### How to Fix
+### Como corrigir
-**Option 1: Split into multiple files**
+**Opção 1: Divida em vários ficheiros**
-1. Divide your data into files of 10,000 records or fewer
-2. Import each file separately
-3. Maintain import order (Companies before People)
+1. Divida os seus dados em ficheiros de 10 000 registos ou menos
+2. Importe cada ficheiro separadamente
+3. Mantenha a ordem de importação (Empresas antes de Pessoas)
-**Option 2: Use API import**
-For very large datasets, use the API which has no record limit.
-See: [How to Import Data via API](/l/pt/user-guide/data-migration/how-tos/import-data-via-api)
+**Opção 2: Use a importação via API**
+Para conjuntos de dados muito grandes, use a API, que não tem limite de registos.
+Consulte: [Como Importar Dados via API](/l/pt/user-guide/data-migration/how-tos/import-data-via-api)
---
-## Error: Field Not Recognized
+## Erro: Campo não reconhecido
-### What It Means
+### O que significa
-A column in your file can't be mapped because the field doesn't exist in Twenty.
+Uma coluna no seu ficheiro não pode ser mapeada porque o campo não existe no Twenty.
-### How to Fix
+### Como corrigir
-1. Go to **Settings → Data Model**
-2. Select the object you're importing
-3. Click **+ Add field**
-4. Create the custom field with the appropriate type
-5. Re-upload your file
+1. Vá a **Definições → Modelo de Dados**
+2. Selecione o objeto que está a importar
+3. Clique em **+ Adicionar campo**
+4. Crie o campo personalizado com o tipo apropriado
+5. Carregue novamente o seu ficheiro
-The CSV import creates records, not fields. All fields must exist before importing.
+A importação de CSV cria registos, não campos. Todos os campos devem existir antes de importar.
---
-## Error: User Relation Empty
+## Erro: Relação de utilizador vazia
-### What It Means
+### O que significa
-You're trying to assign a record to a user (Owner, Assignee) but the relation isn't being mapped.
+Está a tentar atribuir um registo a um utilizador (Proprietário, Responsável), mas a relação não está a ser mapeada.
-### Common Causes
+### Causas comuns
-1. **User hasn't accepted their invitation** — the user doesn't exist in Twenty yet
-2. **Using user ID from old system** — Twenty can't match IDs from another system
-3. **Wrong email format** — the email doesn't match the user's Twenty account
+1. **O utilizador não aceitou o convite** — o utilizador ainda não existe no Twenty
+2. **A usar o ID de utilizador do sistema antigo** — o Twenty não consegue corresponder IDs de outro sistema
+3. **Formato de email incorreto** — o email não corresponde à conta do utilizador no Twenty
-### How to Fix
+### Como corrigir
-1. Ensure all users have **accepted their invitation** to your Twenty workspace
-2. Use the user's **email address** (not their name or old system ID)
-3. Use the same email they used to join Twenty
+1. Garanta que todos os utilizadores aceitaram o convite para o seu espaço de trabalho no Twenty
+2. Use o **endereço de email** do utilizador (não o nome nem o ID do sistema antigo)
+3. Use o mesmo email que utilizaram para aderir ao Twenty
- **Users must accept invitations before importing.**
+ **Os utilizadores devem aceitar os convites antes de importar.**
- If a user hasn't accepted their invitation, records referencing them will have empty user relations.
+ Se um utilizador não tiver aceite o convite, os registos que o referenciem terão relações de utilizador vazias.
---
-## Pre-Import Checklist
+## Lista de verificação antes da importação
-Avoid errors by checking these before importing:
+Evite erros verificando isto antes de importar:
-### File Requirements
+### Requisitos do ficheiro
-File is CSV, XLSX, or XLS format
-File has fewer than 10,000 records
-File uses UTF-8 encoding
+O ficheiro está no formato CSV, XLSX ou XLS
+O ficheiro tem menos de 10 000 registos
+O ficheiro usa codificação UTF-8
-### Data Quality
+### Qualidade dos dados
-No duplicate emails (for People)
-No duplicate domains (for Companies)
-All dates use consistent format
-All domains use `https://domain.com` format
+Sem emails duplicados (para Pessoas)
+Sem domínios duplicados (para Empresas)
+Todas as datas usam um formato consistente
+Todos os domínios usam o formato `https://domain.com`
-### Field Formats
+### Formatos de campos
-Boolean fields use `TRUE` or `FALSE` (uppercase)
-Select fields use API names, not display labels
-Phone fields have all required columns
-Currency fields have both Amount and Currency Code
+Campos booleanos usam `TRUE` ou `FALSE` (maiúsculas)
+Campos de seleção usam nomes da API, não rótulos de exibição
+Campos de telefone têm todas as colunas necessárias
+Campos de moeda têm tanto o Valor como o Código da Moeda
-### Relations
+### Relações
-Parent records imported before child records
-Relation columns reference existing records
-Domain format matches Twenty's format exactly
+Registos pai importados antes dos registos filho
+Colunas de relação referenciam registos existentes
+O formato de domínio corresponde exatamente ao formato do Twenty
-### Data Model
+### Modelo de dados
-All custom fields exist in Settings → Data Model
-Select options exist before importing
+Todos os campos personalizados existem em Definições → Modelo de Dados
+As opções de seleção existem antes de importar
---
-## Still Having Issues?
+## Ainda com problemas?
-If you've tried the above solutions:
+Se já tentou as soluções acima:
-1. **Download the sample file** — see the exact format Twenty expects
-2. **Export existing records** — compare your file to working data
-3. **Test with a small batch** — try 5-10 rows first
-4. **Check the reference articles:**
- * [Field Mapping](/l/pt/user-guide/data-migration/capabilities/field-mapping)
- * [Uniqueness Constraints](/l/pt/user-guide/data-migration/capabilities/uniqueness-constraints)
- * [Import Relations](/l/pt/user-guide/data-migration/capabilities/import-relations)
- * [Error Handling](/l/pt/user-guide/data-migration/capabilities/error-handling)
+1. **Transfira o ficheiro de exemplo** — veja o formato exato que o Twenty espera
+2. **Exporte os registos existentes** — compare o seu ficheiro com dados funcionais
+3. **Teste com um pequeno lote** — experimente primeiro 5–10 linhas
+4. **Consulte os artigos de referência:**
+ * [Mapeamento de Campos](/l/pt/user-guide/data-migration/capabilities/field-mapping)
+ * [Restrições de Unicidade](/l/pt/user-guide/data-migration/capabilities/uniqueness-constraints)
+ * [Importação de Relações](/l/pt/user-guide/data-migration/capabilities/import-relations)
+ * [Tratamento de Erros](/l/pt/user-guide/data-migration/capabilities/error-handling)
diff --git a/packages/twenty-docs/l/pt/user-guide/data-migration/how-tos/import-companies-via-csv.mdx b/packages/twenty-docs/l/pt/user-guide/data-migration/how-tos/import-companies-via-csv.mdx
index 905525599f..e7b14ce88c 100644
--- a/packages/twenty-docs/l/pt/user-guide/data-migration/how-tos/import-companies-via-csv.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/data-migration/how-tos/import-companies-via-csv.mdx
@@ -1,71 +1,71 @@
---
-title: Import Companies via CSV
-description: Complete step-by-step guide to importing companies into Twenty.
+title: Importar Empresas via CSV
+description: Guia completo passo a passo para importar empresas para o Twenty.
---
-## Overview
+## Visão Geral
-This guide walks you through importing your companies into Twenty. **Companies should be imported first** because People and Opportunities link to Companies.
+Este guia explica como importar as suas empresas para o Twenty. **As empresas devem ser importadas primeiro** porque Pessoas e Oportunidades se ligam a Empresas.
-## Before You Start
+## Antes de Começar
-### Prerequisites Checklist
+### Lista de Verificação de Pré-requisitos
- Your file is CSV, XLSX, or XLS format
+ O seu ficheiro está no formato CSV, XLSX ou XLS
- File has fewer than 10,000 records
+ O ficheiro tem menos de 10 000 registos
- No duplicate domains in your file
+ Sem domínios duplicados no seu ficheiro
- All custom fields exist in **Settings → Data Model**
+ Todos os campos personalizados existem em **Settings → Data Model**
- Need to import more than 10,000 companies? Split into multiple files or use the [API import](/l/pt/user-guide/data-migration/how-tos/import-data-via-api).
+ Precisa de importar mais de 10 000 empresas? Divida em vários ficheiros ou use a [importação via API](/l/pt/user-guide/data-migration/how-tos/import-data-via-api).
-## Step 1: Prepare Your Company Data
+## Passo 1: Prepare os seus dados de empresas
-### Required and Recommended Fields
+### Campos Obrigatórios e Recomendados
-| Field | Required? | Format | Notes |
-| ----------------- | ----------- | -------------------- | ------------------------ |
-| **Name** | Recommended | Text | Company display name |
-| **Domain** | Recommended | `https://domain.com` | Unique identifier |
-| **Address** | Optional | Multiple columns | See below |
-| **Employees** | Optional | Number | Employee count |
-| **Custom fields** | Optional | Varies | Must exist in Data Model |
+| Campo | Obrigatório? | Formato | Notas |
+| ------------------------- | ------------ | -------------------- | ------------------------------- |
+| **Name** | Recomendado | Texto | Nome de apresentação da empresa |
+| **Domínio** | Recomendado | `https://domain.com` | Identificador único |
+| **Endereço** | Opcional | Várias colunas | Veja abaixo |
+| **Empregados** | Opcional | Número | Número de empregados |
+| **Campos personalizados** | Opcional | Varia | Deve existir no Data Model |
-### Domain Format
+### Formato de Domínio
- **Use the format `https://domain.com` for domains.**
+ **Use o formato `https://domain.com` para domínios.**
- This matches the format used when Companies are auto-created from email/calendar sync, preventing duplicates later.
+ Isto corresponde ao formato utilizado quando as Empresas são criadas automaticamente a partir da sincronização de e-mail/calendário, evitando duplicados posteriormente.
-**Domain columns:**
+**Colunas de domínio:**
* **Domain / Domain Label**: `acme.com`
* **Domain / Domain URL**: `https://acme.com`
-### Address Format
+### Formato de Endereço
-Address is a nested field with multiple columns:
+Endereço é um campo aninhado com várias colunas:
```
Address / Address 1,Address / City,Address / State,Address / Country,Address / Post Code
123 Main Street,San Francisco,CA,USA,94105
```
-### Sample CSV Structure
+### Exemplo de estrutura de CSV
```csv
name,Domain / Domain URL,Domain / Domain Label,Address / City,Address / Country,employees
@@ -74,128 +74,128 @@ Widget Co,https://widgets.co,widgets.co,New York,USA,50
```
- **Pro tip:** Click **Download sample file** during import to see the exact column names Twenty expects.
+ **Dica profissional:** Clique em **Download sample file** durante a importação para ver os nomes de colunas exatos que o Twenty espera.
-## Step 2: Access the Import Feature
+## Passo 2: Aceda à funcionalidade de importação
-**Option 1: From the Companies View**
+**Opção 1: A partir da vista Empresas**
-1. Navigate to **Companies** in the left sidebar
-2. Click the **⋮** icon on the top right
-3. Select **Import records**
+1. Navegue até **Empresas** na barra lateral esquerda
+2. Clique no ícone **⋮** no canto superior direito
+3. Selecione **Import records**
-**Option 2: Using Command Menu**
+**Opção 2: Utilizando o Menu de Comando**
-1. Press `Cmd + K` (Mac) or `Ctrl + K` (Windows)
-2. Type "import"
-3. Select **Import records**
-4. Choose **Companies**
+1. Prima `Cmd + K` (Mac) ou `Ctrl + K` (Windows)
+2. Escreva "import"
+3. Selecione **Import records**
+4. Escolha **Empresas**
-## Step 3: Upload Your File
+## Passo 3: Carregue o seu ficheiro
-1. Click **Select file**
-2. Choose your CSV, XLSX, or XLS file
-3. Wait for Twenty to analyze your file
+1. Clique em **Select file**
+2. Escolha o seu ficheiro CSV, XLSX ou XLS
+3. Aguarde que o Twenty analise o seu ficheiro
-## Step 4: Map Your Columns
+## Passo 4: Mapeie as suas colunas
-Twenty automatically tries to match your columns to fields. Review and adjust:
+O Twenty tenta automaticamente corresponder as suas colunas aos campos. Revise e ajuste:
-1. **Check automatic mappings** — verify they're correct
-2. **Fix incorrect mappings** — click the dropdown to select the right field
-3. **Skip columns** — select **Do not map** for columns you don't want to import
+1. **Verifique os mapeamentos automáticos** — confirme que estão corretos
+2. **Corrija mapeamentos incorretos** — clique no menu suspenso para selecionar o campo correto
+3. **Ignorar colunas** — selecione **Do not map** para as colunas que não quer importar
-### Important Mapping Rules
+### Regras Importantes de Mapeamento
-* **Domain**: Map to **Domain / Domain URL** (not Domain Label)
-* **Address**: Map each part to its specific column (City, State, etc.)
-* **Select fields**: Values must match existing options (or you'll map them in the next step)
+* **Domínio**: Faça o mapeamento para **Domain / Domain URL** (não para Domain Label)
+* **Endereço**: Mapeie cada parte para a respetiva coluna (Cidade, Estado, etc.)
+* **Campos Select**: Os valores devem corresponder às opções existentes (ou irá mapeá-los no passo seguinte)
-## Step 5: Map Select Field Values
+## Passo 5: Mapear valores de campos Select
-If you have Select or Multi-Select fields:
+Se tiver campos Select ou Multi-Select:
-1. Twenty shows your values alongside existing options
-2. Match each value in your file to a Twenty option
-3. Or create new options if needed
+1. O Twenty mostra os seus valores ao lado das opções existentes
+2. Relacione cada valor no seu ficheiro a uma opção do Twenty
+3. Ou crie novas opções, se necessário
- Select options use **API names**, not display labels. Check **Settings → Data Model** → Enable **Advanced mode** to see API names.
+ As opções de Select usam **nomes de API**, não os rótulos de apresentação. Em **Settings → Data Model** → Ative o **Modo avançado** para ver os nomes de API.
-## Step 6: Review and Fix Errors
+## Passo 6: Rever e corrigir erros
-Before completing the import, Twenty validates your data:
+Antes de concluir a importação, o Twenty valida os seus dados:
-1. Click **Next Steps**
-2. Rows with errors are highlighted in **yellow**
-3. **Fix errors directly** — click a cell and edit the value
-4. **Remove problematic rows** — click the X to skip that row
+1. Clique em **Next Steps**
+2. As linhas com erros são destacadas em **amarelo**
+3. **Corrija os erros diretamente** — clique numa célula e edite o valor
+4. **Remova as linhas problemáticas** — clique no X para ignorar essa linha
-### Common Company Import Errors
+### Erros comuns na importação de empresas
-| Error | Cause | Solution |
-| -------------------------- | ------------------------------- | ------------------------------------------ |
-| **Duplicate domain** | Domain already exists in Twenty | Remove from file or update existing record |
-| **Invalid domain format** | Wrong format | Use `https://domain.com` |
-| **Missing required field** | Required field is empty | Fill in the value or remove the row |
+| Erro | Causa | Solução |
+| ------------------------------- | ------------------------------ | -------------------------------------------------- |
+| **Domínio duplicado** | O domínio já existe no Twenty | Remova do ficheiro ou atualize o registo existente |
+| **Formato de domínio inválido** | Formato incorreto | Use `https://domain.com` |
+| **Campo obrigatório ausente** | O campo obrigatório está vazio | Preencha o valor ou remova a linha |
-## Step 7: Complete the Import
+## Passo 7: Concluir a importação
-1. Review the import summary
-2. Click **Confirm** to import
-3. Wait for the import to complete
-4. Verify by checking a few records
+1. Revise o resumo da importação
+2. Clique em **Confirm** para importar
+3. Aguarde a conclusão da importação
+4. Verifique consultando alguns registos
-## After Importing Companies
+## Após importar empresas
-Now you can import records that link to Companies:
+Agora pode importar registos que se ligam a Empresas:
-1. **[Import People](/l/pt/user-guide/data-migration/how-tos/import-contacts-via-csv)** — link them to Companies using the domain
-2. **Import Opportunities** — link them to Companies
-3. **Verify the import** — spot-check a few records to ensure data is correct
+1. **[Importar Pessoas](/l/pt/user-guide/data-migration/how-tos/import-contacts-via-csv)** — ligue-as a Empresas utilizando o domínio
+2. **Importar Oportunidades** — ligue-as a Empresas
+3. **Verifique a importação** — faça uma verificação pontual de alguns registos para garantir que os dados estão corretos
-## Updating Existing Companies
+## Atualizar Empresas existentes
-To update companies instead of creating new ones:
+Para atualizar empresas em vez de criar novas:
-1. Include the `domain` or `id` column in your file
-2. Twenty matches records by this unique identifier
-3. Existing companies are updated; new ones are created
+1. Inclua a coluna `domain` ou `id` no seu ficheiro
+2. O Twenty faz a correspondência dos registos por este identificador único
+3. As empresas existentes são atualizadas; as novas são criadas
-See [How to Update Existing Records](/l/pt/user-guide/data-migration/how-tos/update-existing-records-via-import) for details.
+Veja [Como Atualizar Registos Existentes](/l/pt/user-guide/data-migration/how-tos/update-existing-records-via-import) para obter detalhes.
-## FAQ
+## Perguntas Frequentes
-
- Domain is a unique identifier in Twenty. This prevents duplicate companies and ensures email sync correctly links emails to the right company.
+
+ O domínio é um identificador único no Twenty. Isto evita empresas duplicadas e garante que a sincronização de e-mail associe corretamente os e-mails à empresa certa.
-
- You can leave the domain empty. However, we recommend adding domains when possible for better data quality and automatic email linking.
+
+ Pode deixar o domínio em branco. No entanto, recomendamos adicionar domínios quando possível para melhorar a qualidade dos dados e a ligação automática de e-mails.
-
- Yes! You can import companies first, then import People later and link them using the company domain.
+
+ Sim! Pode importar as empresas primeiro, depois importar as Pessoas e associá-las usando o domínio da empresa.
-
- If you include a unique identifier (domain or id) that matches an existing company, Twenty updates that company instead of creating a duplicate.
+
+ Se incluir um identificador único (domínio ou id) que corresponda a uma empresa existente, a Twenty atualiza essa empresa em vez de criar um duplicado.
-
- Either remove the duplicate from your file, or include the company's `id` to update the existing record instead.
+
+ Remova o duplicado do seu ficheiro ou inclua o `id` da empresa para, em vez disso, atualizar o registo existente.
-## Troubleshooting
+## Resolução de Problemas
-Having issues? Check:
+Está a ter problemas? Consulte:
-* [How to Fix Import Errors](/l/pt/user-guide/data-migration/how-tos/fix-import-errors)
-* [Field Mapping Reference](/l/pt/user-guide/data-migration/capabilities/field-mapping)
-* [Uniqueness Constraints](/l/pt/user-guide/data-migration/capabilities/uniqueness-constraints)
+* [Como Corrigir Erros de Importação](/l/pt/user-guide/data-migration/how-tos/fix-import-errors)
+* [Referência de Mapeamento de Campos](/l/pt/user-guide/data-migration/capabilities/field-mapping)
+* [Restrições de Unicidade](/l/pt/user-guide/data-migration/capabilities/uniqueness-constraints)
diff --git a/packages/twenty-docs/l/pt/user-guide/data-migration/how-tos/import-contacts-via-csv.mdx b/packages/twenty-docs/l/pt/user-guide/data-migration/how-tos/import-contacts-via-csv.mdx
index 6d71e24786..3ea0f1efca 100644
--- a/packages/twenty-docs/l/pt/user-guide/data-migration/how-tos/import-contacts-via-csv.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/data-migration/how-tos/import-contacts-via-csv.mdx
@@ -1,90 +1,90 @@
---
-title: Import Contacts via CSV
-description: Complete step-by-step guide to importing people/contacts into Twenty.
+title: Importar contactos via CSV
+description: Guia completo passo a passo para importar pessoas/contactos para o Twenty.
---
-## Overview
+## Visão Geral
-This guide walks you through importing your contacts (People) into Twenty. **Import Companies first** if you want to link People to Companies.
+Este guia explica como importar os seus contactos (People) para o Twenty. **Importe Empresas primeiro** se quiser associar Pessoas a Empresas.
-## Before You Start
+## Antes de Começar
-### Prerequisites Checklist
+### Lista de Verificação de Pré-requisitos
- Your file is CSV, XLSX, or XLS format
+ O seu ficheiro está no formato CSV, XLSX ou XLS
- File has fewer than 10,000 records
+ O ficheiro tem menos de 10 000 registos
- No duplicate email addresses in your file
+ Sem endereços de e-mail duplicados no seu ficheiro
- **Companies imported first** (if linking People to Companies)
+ **Empresas importadas primeiro** (se estiver a associar Pessoas a Empresas)
- All custom fields exist in **Settings → Data Model**
+ Todos os campos personalizados existem em **Settings → Data Model**
- **Import Companies Before People**
+ **Importe Empresas Antes de Pessoas**
- If you want to link People to Companies, import Companies first. The Company must exist before you can reference it.
+ Se quiser associar Pessoas a Empresas, importe primeiro as Empresas. A Empresa deve existir antes de poder referenciá-la.
-## Step 1: Prepare Your Contact Data
+## Passo 1: Prepare os seus dados de contactos
-### Required and Recommended Fields
+### Campos Obrigatórios e Recomendados
-| Field | Required? | Format | Notes |
-| ----------------- | ----------- | ----------------- | ------------------------- |
-| **Email** | Recommended | `name@domain.com` | Must be unique |
-| **First Name** | Recommended | Text | |
-| **Last Name** | Recommended | Text | |
-| **Company** | Optional | Domain or ID | Links to existing Company |
-| **Phone** | Optional | Multiple columns | See below |
-| **Job Title** | Optional | Text | |
-| **Custom fields** | Optional | Varies | Must exist in Data Model |
+| Campo | Obrigatório? | Formato | Notas |
+| ------------------------- | ------------ | ----------------- | -------------------------- |
+| **Email** | Recomendado | `name@domain.com` | Deve ser único |
+| **Nome** | Recomendado | Texto | |
+| **Apelido** | Recomendado | Texto | |
+| **Empresa** | Opcional | Domínio ou ID | Liga à Empresa existente |
+| **Telefone** | Opcional | Várias colunas | Veja abaixo |
+| **Cargo** | Opcional | Texto | |
+| **Campos personalizados** | Opcional | Varia | Deve existir no Data Model |
-### Email Format
+### Formato de E-mail
-* Must be valid email format: `name@domain.com`
-* **Must be unique** — no duplicates in your file or in Twenty
-* For additional emails, use the **Emails / Additional Emails** column:
+* Deve estar num formato de e-mail válido: `name@domain.com`
+* **Deve ser único** — sem duplicados no seu ficheiro ou no Twenty
+* Para e-mails adicionais, utilize a coluna **Emails / Additional Emails**:
```
["jane@twenty.com","jane.doe@twenty.com"]
```
-### Phone Format
+### Formato de Telefone
-Phone is a **nested field** requiring multiple columns:
+Telefone é um **campo aninhado** que requer várias colunas:
-| Column | Example |
+| Coluna | Exemplo |
| --------------------------------------- | ------------ |
| **Phones / Primary Phone Number** | `4159095555` |
| **Phones / Primary Phone Country Code** | `US` |
| **Phones / Primary Phone Calling Code** | `+1` |
-### Linking to Companies
+### A associar a Empresas
-Add a column with the Company's unique identifier:
+Adicione uma coluna com o identificador único da Empresa:
-| Column Name | Format | Example |
-| --------------- | ---------- | -------------------------------------- |
-| `companyDomain` | URL format | `https://acme.com` |
-| `companyId` | UUID | `c776ee49-f608-4a77-8cc8-6fe96ae1e43f` |
+| Nome da Coluna | Formato | Exemplo |
+| --------------- | -------------- | -------------------------------------- |
+| `companyDomain` | Formato de URL | `https://acme.com` |
+| `companyId` | UUID | `c776ee49-f608-4a77-8cc8-6fe96ae1e43f` |
- **Use Domain URL format** (`https://acme.com`), not the label. This matches how Companies are stored in Twenty.
+ **Use o formato de URL de domínio** (`https://acme.com`), não o rótulo. Isto corresponde à forma como as Empresas são armazenadas no Twenty.
-### Sample CSV Structure
+### Exemplo de estrutura de CSV
```csv
firstName,lastName,email,jobTitle,companyDomain,Phones / Primary Phone Number,Phones / Primary Phone Country Code
@@ -93,150 +93,150 @@ Jane,Doe,jane@widgets.co,CTO,https://widgets.co,2125551234,US
```
- **Pro tip:** Click **Download sample file** during import or export a few existing People to see the exact column names Twenty expects.
+ **Dica profissional:** Clique em **Download sample file** durante a importação ou exporte algumas Pessoas existentes para ver os nomes de colunas exatos que o Twenty espera.
-## Step 2: Access the Import Feature
+## Passo 2: Aceda à funcionalidade de importação
-**Option 1: From the People View**
+**Opção 1: A partir da vista Pessoas**
-1. Navigate to **People** in the left sidebar
-2. Click the **⋮** icon on the top right
-3. Select **Import records**
+1. Navegue até **Pessoas** na barra lateral esquerda
+2. Clique no ícone **⋮** no canto superior direito
+3. Selecione **Import records**
-**Option 2: Using Command Menu**
+**Opção 2: Utilizando o Menu de Comando**
-1. Press `Cmd + K` (Mac) or `Ctrl + K` (Windows)
-2. Type "import"
-3. Select **Import records**
-4. Choose **People**
+1. Prima `Cmd + K` (Mac) ou `Ctrl + K` (Windows)
+2. Escreva "import"
+3. Selecione **Import records**
+4. Escolha **Pessoas**
-## Step 3: Upload Your File
+## Passo 3: Carregue o seu ficheiro
-1. Click **Select file**
-2. Choose your CSV, XLSX, or XLS file
-3. Wait for Twenty to analyze your file
+1. Clique em **Select file**
+2. Escolha o seu ficheiro CSV, XLSX ou XLS
+3. Aguarde que o Twenty analise o seu ficheiro
-## Step 4: Map Your Columns
+## Passo 4: Mapeie as suas colunas
-Twenty automatically tries to match your columns to fields. Review and adjust:
+O Twenty tenta automaticamente corresponder as suas colunas aos campos. Revise e ajuste:
-1. **Check automatic mappings** — verify they're correct
-2. **Fix incorrect mappings** — click the dropdown to select the right field
-3. **Skip columns** — select **Do not map** for columns you don't want to import
+1. **Verifique os mapeamentos automáticos** — confirme que estão corretos
+2. **Corrija mapeamentos incorretos** — clique no menu suspenso para selecionar o campo correto
+3. **Ignorar colunas** — selecione **Do not map** para as colunas que não quer importar
-### Important Mapping Rules
+### Regras Importantes de Mapeamento
-| Column Type | Map To | Notes |
-| ----------------- | ------------------------------ | ---------------------------------- |
-| Company reference | **Company** relation field | Use domain OR id, not both |
-| Email | **Email** | Primary email address |
-| Additional emails | **Emails / Additional Emails** | Array format |
-| Phone | Separate columns | Number, Country Code, Calling Code |
+| Tipo de Coluna | Mapear Para | Notas |
+| --------------------- | ------------------------------ | ----------------------------------------- |
+| Referência de Empresa | campo de relação **Empresa** | Use domínio OU ID, não ambos |
+| E-mail | **Email** | Endereço de e-mail principal |
+| E-mails adicionais | **Emails / Additional Emails** | Formato de array |
+| Telefone | Colunas separadas | Número, Código do País, Código de Chamada |
-### Mapping the Company Relation
+### Mapeamento da Relação com a Empresa
-When mapping the company column:
+Ao mapear a coluna de empresa:
-1. Find your company reference column (e.g., `companyDomain`)
-2. Map it to the **Company** relation field
-3. Twenty will link each Person to the matching Company
+1. Encontre a sua coluna de referência de empresa (por exemplo, `companyDomain`)
+2. Mapeie-a para o campo de relação **Empresa**
+3. O Twenty irá associar cada Pessoa à Empresa correspondente
- **Map only ONE unique identifier for relations.**
+ **Mapeie apenas UM identificador único para relações.**
- Don't map both `companyId` AND `companyDomain`. Choose one—preferably domain since it's human-readable.
+ Não mapeie ambos `companyId` E `companyDomain`. Escolha um — de preferência o domínio, pois é legível para humanos.
-## Step 5: Map Select Field Values
+## Etapa 5: Mapear valores de campos Select
-If you have Select or Multi-Select fields (like Lead Source):
+Se você tiver campos Select ou Multi-Select (como Origem do lead):
-1. Twenty shows your values alongside existing options
-2. Match each value in your file to a Twenty option
-3. Or create new options if needed
+1. O Twenty exibe seus valores ao lado das opções existentes
+2. Relacione cada valor no seu arquivo a uma opção do Twenty
+3. Ou crie novas opções, se necessário
- Select options use **API names**, not display labels. Check **Settings → Data Model** → Enable **Advanced mode** to see API names.
+ As opções de Select usam **nomes de API**, não os rótulos de exibição. Em **Configurações → Modelo de dados** → Ative o **Modo avançado** para ver os nomes de API.
-## Step 6: Review and Fix Errors
+## Etapa 6: Revisar e corrigir erros
-Before completing the import, Twenty validates your data:
+Antes de concluir a importação, o Twenty valida seus dados:
-1. Click **Next Steps**
-2. Rows with errors are highlighted in **yellow**
-3. **Fix errors directly** — click a cell and edit the value
-4. **Remove problematic rows** — click the X to skip that row
+1. Clique em **Próximos Passos**
+2. As linhas com erros são destacadas em **amarelo**
+3. **Corrija os erros diretamente** — clique em uma célula e edite o valor
+4. **Remova as linhas problemáticas** — clique no X para ignorar essa linha
-### Common Contact Import Errors
+### Erros comuns na importação de contatos
-| Error | Cause | Solution |
-| -------------------------- | -------------------------------------- | ------------------------------------------- |
-| **Duplicate email** | Email already exists in Twenty or file | Remove duplicate or update existing record |
-| **Invalid email format** | Email format incorrect | Fix to `name@domain.com` |
-| **Relation not found** | Company doesn't exist | Import Companies first or fix the reference |
-| **Missing required field** | Required field is empty | Fill in the value or remove the row |
+| Erro | Causa | Solução |
+| ------------------------------ | ------------------------------------------ | ---------------------------------------------------- |
+| **E-mail duplicado** | O e-mail já existe no Twenty ou no arquivo | Remova o duplicado ou atualize o registro existente |
+| **Formato de e-mail inválido** | Formato de e-mail incorreto | Corrija para `name@domain.com` |
+| **Relação não encontrada** | A empresa não existe | Importe as Empresas primeiro ou corrija a referência |
+| **Campo obrigatório ausente** | O campo obrigatório está vazio | Preencha o valor ou remova a linha |
-## Step 7: Complete the Import
+## Etapa 7: Concluir a importação
-1. Review the import summary
-2. Click **Confirm** to import
-3. Wait for the import to complete
-4. Verify by checking a few records and their Company links
+1. Revise o resumo da importação
+2. Clique em **Confirmar** para importar
+3. Aguarde a conclusão da importação
+4. Verifique conferindo alguns registros e seus vínculos com a Empresa
-## After Importing Contacts
+## Após importar contatos
-Your contacts are now in Twenty! Next steps:
+Seus contatos agora estão no Twenty! Próximos passos:
-1. **Verify Company links** — open a few People records to confirm they're linked to the right Company
-2. **Import Opportunities** — if needed, link them to People and Companies
-3. **Set up email sync** — connect your mailbox to see email history on contact records
+1. **Verifique os vínculos com a Empresa** — abra alguns registros de Pessoas para confirmar que estão vinculados à Empresa correta
+2. **Importe Oportunidades** — se necessário, vincule-as a Pessoas e Empresas
+3. **Configure a sincronização de e-mail** — conecte sua caixa de correio para ver o histórico de e-mails nos registros de contato
-## Updating Existing Contacts
+## Atualizando contatos existentes
-To update contacts instead of creating new ones:
+Para atualizar contatos em vez de criar novos:
-1. Include the `email` or `id` column in your file
-2. Twenty matches records by this unique identifier
-3. Existing contacts are updated; new ones are created
+1. Inclua a coluna `email` ou `id` no seu arquivo
+2. O Twenty faz a correspondência dos registros por esse identificador único
+3. Os contatos existentes são atualizados; os novos são criados
-See [How to Update Existing Records](/l/pt/user-guide/data-migration/how-tos/update-existing-records-via-import) for details.
+Veja [Como Atualizar Registros Existentes](/l/pt/user-guide/data-migration/how-tos/update-existing-records-via-import) para obter detalhes.
-## FAQ
+## Perguntas frequentes
-
- Email is a unique identifier in Twenty. This prevents duplicate contacts and ensures email sync correctly links emails to the right person.
+
+ O e-mail é um identificador único no Twenty. Isso evita contatos duplicados e garante que a sincronização de e-mail vincule corretamente os e-mails à pessoa certa.
-
- You can leave the email empty. However, we recommend adding emails when possible for better data quality and email sync functionality.
+
+ Você pode deixar o e-mail em branco. No entanto, recomendamos adicionar e-mails quando possível para melhorar a qualidade dos dados e a funcionalidade de sincronização de e-mail.
-
- Add a column with the Company's domain (e.g., `https://acme.com`) or ID. During mapping, connect this column to the Company relation field.
+
+ Adicione uma coluna com o domínio da Empresa (por exemplo, `https://acme.com`) ou o ID. Durante o mapeamento, conecte essa coluna ao campo de relação da Empresa.
-
- Import Companies first, then import People. The Company must exist before you can reference it.
+
+ Importe as Empresas primeiro e, depois, as Pessoas. A Empresa deve existir antes que você possa referenciá-la.
-
- Yes! Create a custom field marked as "unique" in your data model to store the external ID. Note: the field name `id` is reserved for Twenty's internal ID.
+
+ Sim! Crie um campo personalizado marcado como "único" no seu modelo de dados para armazenar o ID externo. Observação: o nome do campo `id` é reservado para o ID interno do Twenty.
-
- The Company you're referencing doesn't exist. Either import the Company first, or check that the domain/ID exactly matches an existing Company.
+
+ A Empresa que você está referenciando não existe. Importe a Empresa primeiro ou verifique se o domínio/ID corresponde exatamente a uma Empresa existente.
-## Troubleshooting
+## Resolução de Problemas
-Having issues? Check:
+Com problemas? Confira:
-* [How to Fix Import Errors](/l/pt/user-guide/data-migration/how-tos/fix-import-errors)
-* [How to Import Relations](/l/pt/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv)
-* [Field Mapping Reference](/l/pt/user-guide/data-migration/capabilities/field-mapping)
+* [Como corrigir erros de importação](/l/pt/user-guide/data-migration/how-tos/fix-import-errors)
+* [Como importar relações](/l/pt/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv)
+* [Referência de mapeamento de campos](/l/pt/user-guide/data-migration/capabilities/field-mapping)
diff --git a/packages/twenty-docs/l/pt/user-guide/data-migration/how-tos/import-data-via-api.mdx b/packages/twenty-docs/l/pt/user-guide/data-migration/how-tos/import-data-via-api.mdx
index fa4080ee0a..0639b13735 100644
--- a/packages/twenty-docs/l/pt/user-guide/data-migration/how-tos/import-data-via-api.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/data-migration/how-tos/import-data-via-api.mdx
@@ -1,176 +1,176 @@
---
-title: Import Data via API
-description: When and how to use Twenty's APIs for large-scale data imports.
+title: Importar dados via API
+description: Quando e como usar as APIs da Twenty para importações de dados em larga escala.
---
-## Overview
+## Visão Geral
-Twenty provides both **GraphQL** and **REST APIs** for programmatic data import. Use the API when CSV import isn't practical for your data volume or when you need automated, recurring imports.
+A Twenty oferece tanto **GraphQL** como **APIs REST** para a importação programática de dados. Use a API quando a importação por CSV não for prática para o seu volume de dados ou quando precisar de importações automatizadas e recorrentes.
-## When to Use API Import
+## Quando usar a importação via API
-| Scenario | Recommended Method |
-| ---------------------------------- | ----------------------------- |
-| Under 10,000 records | CSV Import |
-| 10,000 - 50,000 records | CSV Import (split into files) |
-| **50,000+ records** | **API Import** |
-| One-time migration | Either (based on volume) |
-| **Recurring imports** | **API Import** |
-| **Real-time sync** | **API Import** |
-| **Integration with other systems** | **API Import** |
+| Cenário | Método recomendado |
+| ---------------------------------- | ----------------------------------------- |
+| Menos de 10 000 registos | Importação CSV |
+| 10 000 - 50 000 registos | Importação CSV (dividida em ficheiros) |
+| **Mais de 50 000 registos** | **Importação via API** |
+| Migração única | Qualquer um dos dois (com base no volume) |
+| **Importações recorrentes** | **Importação via API** |
+| **Sincronização em tempo real** | **Importação via API** |
+| **Integração com outros sistemas** | **Importação via API** |
-For datasets in the hundreds of thousands, the API is significantly faster and more reliable than multiple CSV imports.
+Para conjuntos de dados na casa das centenas de milhares, a API é significativamente mais rápida e mais fiável do que múltiplas importações CSV.
-## API Rate Limits
+## Limites de taxa da API
-Twenty enforces rate limits to ensure system stability:
+A Twenty impõe limites de taxa para assegurar a estabilidade do sistema:
-| Limit | Value |
-| -------------------------- | --------------------- |
-| **Requests per minute** | 100 |
-| **Records per batch call** | 60 |
-| **Maximum throughput** | ~6,000 records/minute |
+| Limite | Valor |
+| -------------------------------- | ---------------------- |
+| **Pedidos por minuto** | 100 |
+| **Registos por chamada em lote** | 60 |
+| **Taxa de transferência máxima** | ~6 000 registos/minuto |
- **Plan your import around these limits.**
+ **Planeie a sua importação em função destes limites.**
- For 100,000 records at maximum throughput, expect approximately 17 minutes of import time. Add buffer time for error handling and retries.
+ Para 100 000 registos à taxa de transferência máxima, conte com aproximadamente 17 minutos de tempo de importação. Adicione tempo de margem para tratamento de erros e novas tentativas.
-## Getting Started
+## Primeiros passos
-### Step 1: Get Your API Key
+### Passo 1: Obtenha a sua chave de API
-1. Go to **Settings → Developers**
-2. Click **+ Create API key**
-3. Give your key a descriptive name
-4. Copy the API key immediately (it won't be shown again)
-5. Store it securely
+1. Vá para **Configurações → Programadores**
+2. Clique em **+ Criar chave de API**
+3. Dê à sua chave um nome descritivo
+4. Copie imediatamente a chave de API (não será mostrada novamente)
+5. Guarde-a em segurança
- **Keep your API key secret.**
+ **Mantenha a sua chave de API em segredo.**
- Anyone with your API key can access and modify your workspace data. Never commit it to code repositories or share it publicly.
+ Qualquer pessoa com a sua chave de API pode aceder e modificar os dados do seu espaço de trabalho. Nunca a faça commit em repositórios de código nem a partilhe publicamente.
-### Step 2: Choose Your API
+### Passo 2: Escolha a sua API
-Twenty supports two API types:
+A Twenty suporta dois tipos de API:
-| API | Best For | Documentation |
-| ----------- | ----------------------------------------------------------- | ------------------------------------------------ |
-| **GraphQL** | Flexible queries, fetching related data, complex operations | [API Docs](/l/pt/developers/extend/capabilities/apis) |
-| **REST** | Simple CRUD operations, familiar REST patterns | [API Docs](/l/pt/developers/extend/capabilities/apis) |
+| API | Melhor para | Documentação |
+| ----------- | ------------------------------------------------------------------------ | ----------------------------------------------------------- |
+| **GraphQL** | Consultas flexíveis, obtenção de dados relacionados, operações complexas | [Documentação da API](/l/pt/developers/extend/capabilities/apis) |
+| **REST** | Operações CRUD simples, padrões REST familiares | [Documentação da API](/l/pt/developers/extend/capabilities/apis) |
-Both APIs support:
+Ambas as APIs suportam:
-* Creating, reading, updating, and deleting records
-* **Batch operations** — create or update up to 60 records per call
+* Criar, ler, atualizar e eliminar registos
+* **Operações em lote** — criar ou atualizar até 60 registos por chamada
-**For imports, use batch operations** to maximize throughput within rate limits.
+**Para importações, use operações em lote** para maximizar a taxa de transferência dentro dos limites de taxa.
-### Step 3: Plan Your Import Order
+### Passo 3: Planeie a ordem da importação
-Just like CSV imports, **order matters** for relations:
+Tal como nas importações por CSV, **a ordem importa** para as relações:
-1. **Companies** first (no dependencies)
-2. **People** second (can link to Companies)
-3. **Opportunities** third (can link to Companies and People)
-4. **Tasks/Notes** (can link to any of the above)
-5. **Custom objects** (following their dependencies)
+1. **Empresas** primeiro (sem dependências)
+2. **Pessoas** em segundo (podem ligar-se a Empresas)
+3. **Oportunidades** em terceiro (podem ligar-se a Empresas e Pessoas)
+4. **Tarefas/Notas** (podem ligar-se a qualquer um dos anteriores)
+5. **Objetos personalizados** (seguindo as suas dependências)
-## Best Practices
+## Melhores Práticas
-### Batch Your Requests
+### Agrupe os seus pedidos
-* Don't send records one at a time
-* Group up to **60 records per API call**
-* This maximizes throughput within rate limits
+* Não envie registos um de cada vez
+* Agrupe até **60 registos por chamada de API**
+* Isto maximiza a taxa de transferência dentro dos limites de taxa
-### Handle Rate Limits
+### Lide com os limites de taxa
-* Implement delays between requests (600ms minimum for sustained imports)
-* Use exponential backoff when you hit limits
-* Monitor for 429 (Too Many Requests) responses
+* Implemente atrasos entre pedidos (mínimo de 600 ms para importações contínuas)
+* Use backoff exponencial quando atingir os limites
+* Monitorize respostas 429 (Too Many Requests)
-### Validate Data First
+### Valide os dados primeiro
-* Clean and validate your data before importing
-* Check required fields are populated
-* Verify formats match Twenty's requirements (see [Field Mapping](/l/pt/user-guide/data-migration/capabilities/field-mapping))
+* Limpe e valide os seus dados antes de importar
+* Verifique se os campos obrigatórios estão preenchidos
+* Verifique se os formatos correspondem aos requisitos da Twenty (veja [Mapeamento de Campos](/l/pt/user-guide/data-migration/capabilities/field-mapping))
-### Log Everything
+### Registe tudo
-* Log every record imported (including IDs)
-* Log errors with full context
-* This helps debug issues and verify completion
+* Registe cada registo importado (incluindo IDs)
+* Registe erros com todo o contexto
+* Isto ajuda a depurar problemas e a verificar a conclusão
-### Test First
+### Teste primeiro
-* Test with a small batch (10-20 records)
-* Verify data appears correctly in Twenty
-* Then run the full import
+* Teste com um pequeno lote (10-20 registos)
+* Verifique se os dados aparecem corretamente na Twenty
+* Depois, execute a importação completa
-### Upsert to Avoid Duplicates
+### Upsert para evitar duplicados
-The GraphQL API supports **batch upsert** — update if the record exists, create if not. This prevents duplicates when re-running imports.
+A API GraphQL suporta **upsert em lote** — atualize se o registo existir, crie se não existir. Isto evita duplicados ao voltar a executar importações.
-## Finding Object and Field Names
+## Encontrar nomes de objetos e campos
-To see available objects and fields:
+Para ver os objetos e campos disponíveis:
-1. Go to **Settings → API and Webhooks**
-2. Browse the **Metadata API**
-3. View all standard and custom objects with their fields
+1. Vá para **Configurações → API e Webhooks**
+2. Explore a **API de Metadados**
+3. Veja todos os objetos padrão e personalizados com os seus campos
-The documentation shows all standard and custom objects, their fields, and the expected data types.
+A documentação mostra todos os objetos padrão e personalizados, os seus campos e os tipos de dados esperados.
-## Professional Services
+## Serviços Profissionais
-For complex API migrations, our partners can help:
+Para migrações de API complexas, os nossos parceiros podem ajudar:
-| Service | What's Included |
-| ----------------------- | ---------------------------------- |
-| **Data Model Design** | design your optimal data structure |
-| **Migration Scripts** | write and run the import scripts |
-| **Data Transformation** | handle complex mapping and cleanup |
-| **Validation & QA** | verify the migration is complete |
+| Serviço | O que está incluído |
+| ------------------------------------- | -------------------------------------------- |
+| **Conceção do Modelo de Dados** | conceber a sua estrutura de dados ideal |
+| **Scripts de migração** | escrever e executar os scripts de importação |
+| **Transformação de dados** | tratar de mapeamentos complexos e limpeza |
+| **Validação e Garantia de Qualidade** | verificar que a migração está concluída |
-**Best for:**
+**Melhor para:**
-* Migrations of 100,000+ records
-* Complex data transformations
-* Tight timelines
-* Teams without developer resources
+* Migrações de mais de 100 000 registos
+* Transformações de dados complexas
+* Prazos apertados
+* Equipas sem recursos de programadores
-Contact us at [contact@twenty.com](mailto:contact@twenty.com) or explore our [Implementation Services](/l/pt/user-guide/getting-started/capabilities/implementation-services).
+Contacte-nos em [contact@twenty.com](mailto:contact@twenty.com) ou explore os nossos [Serviços de Implementação](/l/pt/user-guide/getting-started/capabilities/implementation-services).
-## FAQ
+## Perguntas Frequentes
-
- GraphQL lets you request exactly the data you need in a single query and is better for complex operations. REST uses standard HTTP methods (GET, POST, PUT, DELETE) and may be more familiar if you've worked with traditional APIs.
+
+ O GraphQL permite solicitar exatamente os dados de que precisa numa única consulta e é melhor para operações complexas. O REST utiliza métodos HTTP padrão (GET, POST, PUT, DELETE) e pode ser mais familiar se já trabalhou com APIs tradicionais.
-
- Yes! Use update mutations (GraphQL) or PUT/PATCH requests (REST) with the record's `id`.
+
+ Sim! Utilize mutations de atualização (GraphQL) ou pedidos PUT/PATCH (REST) com o `id` do registo.
-
- Query for existing records first using unique identifiers (email, domain). Update if exists, create if not.
+
+ Pesquise primeiro por registos existentes usando identificadores únicos (email, domínio). Atualize se existir, crie se não existir.
-
- Yes, use delete mutations (GraphQL) or DELETE requests (REST).
+
+ Sim, utilize mutations de eliminação (GraphQL) ou pedidos DELETE (REST).
-
- Not currently, but both APIs work with any HTTP client in any language.
+
+ De momento não, mas ambas as APIs funcionam com qualquer cliente HTTP em qualquer linguagem.
-## API Documentation
+## Documentação da API
-For full implementation details, code examples, and schema reference:
+Para detalhes completos de implementação, exemplos de código e referência de esquema:
-* [API Documentation](/l/pt/developers/extend/capabilities/apis)
+* [Documentação da API](/l/pt/developers/extend/capabilities/apis)
diff --git a/packages/twenty-docs/l/pt/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv.mdx b/packages/twenty-docs/l/pt/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv.mdx
index c7528e6690..be681bf829 100644
--- a/packages/twenty-docs/l/pt/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv.mdx
@@ -1,103 +1,103 @@
---
-title: Import Relations Between Objects via CSV
-description: Complete step-by-step guide to linking records during CSV import.
+title: Importar Relações Entre Objetos via CSV
+description: Guia completo, passo a passo, para associar registos durante a importação de CSV.
---
-## Overview
+## Visão Geral
-This guide walks you through importing relations between objects—for example, linking People to Companies, or Opportunities to People.
+Este guia orienta-o na importação de relações entre objetos — por exemplo, ligar Pessoas a Empresas ou Oportunidades a Pessoas.
-**What can be imported:** Only one-to-many relations pointing to a single object type. Relations pointing to multiple object types (like Notes linking to People AND Companies) are not yet supported for import.
+**O que pode ser importado:** Apenas relações um-para-muitos que apontem para um único tipo de objeto. Relações que apontam para vários tipos de objeto (como Notas ligadas a Pessoas E Empresas) ainda não são suportadas para importação.
-## Understanding Relations
+## Compreender as Relações
-### What is a "One-to-Many" Relation?
+### O que é uma relação "Um-para-Muitos"?
-In a one-to-many relation:
+Numa relação um-para-muitos:
-* **One** Company has **many** People (employees)
-* **One** Company has **many** Opportunities
-* **One** Person has **many** Tasks
+* **Uma** Empresa tem **muitas** Pessoas (colaboradores)
+* **Uma** Empresa tem **muitas** Oportunidades
+* **Uma** Pessoa tem **muitas** Tarefas
-The "one" side is the **parent**. The "many" side is the **child**.
+O lado "um" é o **pai**. O lado "muitos" é o **filho**.
-### Common Relations in Twenty
+### Relações Comuns no Twenty
-| Relation | "One" Side (Parent) | "Many" Side (Child) |
-| ------------------------- | ------------------- | ------------------- |
-| Companies → People | Company | People |
-| Companies → Opportunities | Company | Opportunities |
-| People → Tasks | Person | Tasks |
-| People → Notes | Person | Notes |
+| Relação | Lado "Um" (Pai) | Lado "Muitos" (Filho) |
+| ------------------------ | --------------- | --------------------- |
+| Empresas → Pessoas | Empresa | Pessoas |
+| Empresas → Oportunidades | Empresa | Oportunidades |
+| Pessoas → Tarefas | Pessoa | Tarefas |
+| Pessoas → Notas | Pessoa | Notas |
-## Step 1: Identify the "One" and "Many" Sides
+## Passo 1: Identificar os lados "Um" e "Muitos"
-Before importing, determine which object is the parent and which is the child.
+Antes de importar, determine qual objeto é o pai e qual é o filho.
-**Ask yourself:** "Does ONE [Object A] have MANY [Object B]?"
+**Pergunte a si mesmo:** "UM [Objeto A] tem MUITOS [Objeto B]?"
-* One Company → Many People ✓ (Company is parent)
-* One Person → Many Companies ✗ (This is wrong—a person belongs to one company)
+* Uma Empresa → Muitas Pessoas ✓ (A Empresa é o pai)
+* Uma Pessoa → Muitas Empresas ✗ (Isto está errado — uma pessoa pertence a uma empresa)
-## Step 2: Import the Parent Records First
+## Passo 2: Importe primeiro os registos pai
-The parent ("one" side) must exist in Twenty before you can reference it.
+O pai (lado "um") deve existir no Twenty antes de poder referenciá-lo.
-**Import order:**
+**Ordem de importação:**
-1. **Companies** first (no dependencies)
-2. **People** second (link to Companies)
-3. **Opportunities** third (link to Companies and/or People)
-4. **Tasks/Notes** (link to any of the above)
+1. **Empresas** primeiro (sem dependências)
+2. **Pessoas** em segundo (ligar a Empresas)
+3. **Oportunidades** em terceiro (ligar a Empresas e/ou Pessoas)
+4. **Tarefas/Notas** (ligar a qualquer um dos anteriores)
- **If the parent record doesn't exist, the import will fail.**
+ **Se o registo pai não existir, a importação falhará.**
- Always verify that Companies are imported before importing People with company references.
+ Verifique sempre que as Empresas são importadas antes de importar Pessoas com referências a empresas.
-## Step 3: Note the Parent's Unique Identifier
+## Passo 3: Anote o identificador único do pai
-You need to reference the parent record using a **unique identifier**. Available options:
+Precisa de referenciar o registo pai usando um **identificador único**. Opções disponíveis:
-| Parent Object | Available Unique Identifiers |
-| --------------------- | --------------------------------------------------------------- |
-| **Companies** | `id` (UUID), `domain` (recommended), or any custom unique field |
-| **People** | `id` (UUID), `email`, or any custom unique field |
-| **Workspace Members** | `id` (UUID), `email` (not name) |
-| **Custom Objects** | `id` (UUID), or any field marked as unique |
+| Objeto Pai | Identificadores Únicos Disponíveis |
+| -------------------------- | ------------------------------------------------------------------------- |
+| **Empresas** | `id` (UUID), `domain` (recomendado) ou qualquer campo único personalizado |
+| **Pessoas** | `id` (UUID), `email` ou qualquer campo único personalizado |
+| **Membros do Workspace** | `id` (UUID), `email` (não o nome) |
+| **Objetos personalizados** | `id` (UUID) ou qualquer campo marcado como único |
-**Recommended:** Use `domain` for Companies and `email` for People. These are human-readable and easy to verify in your spreadsheet.
+**Recomendado:** Use `domain` para Empresas e `email` para Pessoas. São legíveis por humanos e fáceis de verificar na sua folha de cálculo.
-### Finding the Identifier
+### Encontrar o identificador
-If you need the `id`:
+Se precisar do `id`:
-1. Export the parent records from Twenty
-2. The export includes the `id` column
-3. Use these IDs in your child records file
+1. Exporte os registos pai do Twenty
+2. A exportação inclui a coluna `id`
+3. Use estes IDs no seu ficheiro de registos filho
-## Step 4: Verify the Relation Field Exists
+## Passo 4: Verifique se o campo de relação existe
-Before importing, ensure the relation field exists between your objects.
+Antes de importar, garanta que o campo de relação existe entre os seus objetos.
-**To check or create:**
+**Para verificar ou criar:**
-1. Go to **Settings → Data Model**
-2. Select your child object (e.g., People)
-3. Look for a relation field pointing to the parent (e.g., Company)
-4. If it doesn't exist, create it:
- * Click **+ Add field**
- * Select **Relation** type
- * Choose the parent object
+1. Vá a **Definições → Modelo de Dados**
+2. Selecione o seu objeto filho (por exemplo, Pessoas)
+3. Procure um campo de relação que aponte para o pai (por exemplo, Empresa)
+4. Se não existir, crie-o:
+ * Clique em **+ Adicionar campo**
+ * Selecione o tipo **Relação**
+ * Escolha o objeto pai
-## Step 5: Prepare Your CSV File
+## Passo 5: Prepare o seu ficheiro CSV
-Add a column to your child CSV that references the parent using its unique identifier.
+Adicione uma coluna ao seu CSV de registos filho que faça referência ao pai utilizando o seu identificador único.
-### Example: People Linking to Companies
+### Exemplo: Pessoas ligadas a Empresas
-**Your People CSV:**
+**O seu CSV de Pessoas:**
```csv
firstName,lastName,email,jobTitle,companyDomain
@@ -106,66 +106,66 @@ Jane,Doe,jane@widgets.co,CTO,https://widgets.co
Bob,Johnson,bob@techstart.io,Developer,https://techstart.io
```
-The `companyDomain` column references the Company's domain.
+A coluna `companyDomain` faz referência ao domínio da Empresa.
-### Format Requirements
+### Requisitos de Formato
-| Identifier | Format | Example |
-| ---------- | -------------- | -------------------------------------- |
-| Domain | URL format | `https://acme.com` |
-| Email | Standard email | `john@acme.com` |
-| ID | UUID | `c776ee49-f608-4a77-8cc8-6fe96ae1e43f` |
+| Identificador | Formato | Exemplo |
+| ------------- | -------------- | -------------------------------------- |
+| Domínio | Formato de URL | `https://acme.com` |
+| E-mail | Email padrão | `john@acme.com` |
+| ID | UUID | `c776ee49-f608-4a77-8cc8-6fe96ae1e43f` |
- **Domain format matters!**
+ **O formato do domínio é importante!**
- Use `https://domain.com` (not just `domain.com`). This matches how Twenty stores Company domains and prevents matching errors.
+ Use `https://domain.com` (não apenas `domain.com`). Isto corresponde à forma como a Twenty armazena domínios de Empresas e evita erros de correspondência.
-### Important Rules
+### Regras Importantes
-1. **Exact match required** — the value must exactly match the parent record
-2. **Map only ONE unique identifier** — don't include both `companyId` AND `companyDomain`
-3. **Case sensitive** — `Acme.com` ≠ `acme.com`
+1. **Correspondência exata obrigatória** — o valor deve corresponder exatamente ao registo pai
+2. **Mapeie apenas UM identificador único** — não inclua `companyId` E `companyDomain`
+3. **Sensível a maiúsculas/minúsculas** — `Acme.com` ≠ `acme.com`
-## Step 6: Upload and Map the Relation
+## Passo 6: Carregue e mapeie a relação
-1. Navigate to the child object (e.g., People)
-2. Click **⋮** → **Import records**
-3. Upload your CSV file
-4. In the field mapping step:
- * Find your relation column (e.g., `companyDomain`)
- * Map it to the **Company** relation field
-5. Complete the remaining mapping
-6. Review errors and confirm
+1. Navegue até ao objeto filho (por exemplo, Pessoas)
+2. Clique em **⋮** → **Importar registos**
+3. Carregue o seu ficheiro CSV
+4. Na etapa de mapeamento de campos:
+ * Encontre a sua coluna de relação (por exemplo, `companyDomain`)
+ * Mapeie-a para o campo de relação **Empresa**
+5. Conclua o mapeamento restante
+6. Revise os erros e confirme
-Twenty will automatically link each child record to the matching parent.
+A Twenty ligará automaticamente cada registo filho ao pai correspondente.
-## Step 7: Verify the Import
+## Passo 7: Verifique a importação
-After importing:
+Após a importação:
-1. Open a few child records (e.g., People)
-2. Verify the relation field shows the correct parent (e.g., Company)
-3. Open a parent record and check the related records section
+1. Abra alguns registos filho (por exemplo, Pessoas)
+2. Verifique se o campo de relação mostra o pai correto (por exemplo, Empresa)
+3. Abra um registo pai e verifique a secção de registos relacionados
-## Common Mistakes to Avoid
+## Erros Comuns a Evitar
-| Mistake | Problem | Solution |
-| -------------------------- | -------------------------------------------------- | ------------------------------------------------------- |
-| **Wrong import order** | Importing People before Companies | Always import parents first, then children |
-| **Wrong domain format** | Using `acme.com` instead of `https://acme.com` | Use full URL format with `https://` |
-| **Multiple unique fields** | Mapping both `companyId` AND `companyDomain` | Map only ONE unique identifier |
-| **Missing relation field** | The relation field doesn't exist in the data model | Create it in **Settings → Data Model** before importing |
-| **Non-existent records** | The parent record doesn't exist in Twenty | Import parent records first, or check for typos |
-| **Case mismatch** | `Acme.com` in file but `acme.com` in Twenty | Ensure exact case matching |
+| Erro | Problema | Solução |
+| ---------------------------------------------- | ------------------------------------------------ | ---------------------------------------------------------------------- |
+| **Ordem de importação incorreta** | Importar Pessoas antes de Empresas | Importe sempre primeiro os pais e depois os filhos |
+| **Formato de domínio incorreto** | Usar `acme.com` em vez de `https://acme.com` | Use o formato completo de URL com `https://` |
+| **Vários campos únicos** | Mapear ambos `companyId` E `companyDomain` | Mapeie apenas UM identificador único |
+| **Campo de relação em falta** | O campo de relação não existe no modelo de dados | Crie-o em **Definições → Modelo de Dados** antes de importar |
+| **Registos inexistentes** | O registo pai não existe no Twenty | Importe primeiro os registos pai ou verifique se há erros ortográficos |
+| **Incompatibilidade de maiúsculas/minúsculas** | `Acme.com` no ficheiro mas `acme.com` no Twenty | Garanta correspondência exata de maiúsculas/minúsculas |
-## Linking to Workspace Members
+## Ligar a Membros do Espaço de Trabalho
-When linking to Workspace Members (your team):
+Ao ligar a Membros do Espaço de Trabalho (a sua equipa):
-* Use their **email address**, not their name
-* Example: `owner@yourcompany.com`, not "John Smith"
+* Use o **endereço de email** deles, não o nome
+* Exemplo: `owner@yourcompany.com`, não "John Smith"
```csv
taskName,assignedTo
@@ -173,56 +173,56 @@ Follow up with client,john@yourcompany.com
Review proposal,jane@yourcompany.com
```
-## FAQ
+## Perguntas Frequentes
-
- You have two options:
+
+ Tem duas opções:
- 1. Use the Twenty `id` (export parent records to get their IDs)
- 2. Create a custom unique field in your data model to store an external ID from your previous system
+ 1. Use o `id` da Twenty (exporte os registos pai para obter os respetivos IDs)
+ 2. Crie um campo único personalizado no seu modelo de dados para armazenar um ID externo do seu sistema anterior
-
- Yes! Include the child record's unique identifier (e.g., `email` for People) and the new relation value. The import will update the relation.
+
+ Sim! Inclua o identificador único do registo filho (por exemplo, `email` para Pessoas) e o novo valor da relação. A importação atualizará a relação.
-
- Many-to-Many relations are not yet supported for import. This is planned for H1 2026.
+
+ Relações muitos-para-muitos ainda não são suportadas para importação. Isto está planeado para o 1.º semestre de 2026.
-
- Relations pointing to multiple object types are not yet supported for import/export. This is on our roadmap.
+
+ Relações que apontam para vários tipos de objeto ainda não são suportadas para importação/exportação. Isto está no nosso roadmap.
-
- The import will show an error for that row. You can either:
+
+ A importação mostrará um erro para essa linha. Você pode:
- * Import the parent record first, then re-import
- * Fix the reference value
- * Remove the row from import
+ * Importe primeiro o registo pai e depois volte a importar
+ * Corrija o valor de referência
+ * Remova a linha da importação
-
- Common causes:
+
+ Causas comuns:
- * Wrong format (use `https://domain.com` for domains)
- * Case mismatch (check exact spelling)
- * Parent doesn't exist (import parents first)
- * Mapping multiple identifiers (use only one)
+ * Formato incorreto (use `https://domain.com` para domínios)
+ * Incompatibilidade de maiúsculas/minúsculas (verifique a grafia exata)
+ * O pai não existe (importe primeiro os pais)
+ * Mapeamento de vários identificadores (use apenas um)
- **Remember: Soft-deleted records count toward uniqueness.**
+ **Lembre-se: registos eliminados logicamente contam para a unicidade.**
- If you're getting "not found" errors but the record seems to exist, check Command Menu → See deleted records. The parent may have been soft-deleted.
+ Se estiver a receber erros de "not found", mas o registo parece existir, verifique Menu de Comandos → Ver registos eliminados. O pai pode ter sido eliminado logicamente.
-## Troubleshooting
+## Resolução de Problemas
-Having issues? Check:
+Está a ter problemas? Consulte:
-* [How to Fix Import Errors](/l/pt/user-guide/data-migration/how-tos/fix-import-errors)
-* [Import Relations Capabilities](/l/pt/user-guide/data-migration/capabilities/import-relations)
-* [Uniqueness Constraints](/l/pt/user-guide/data-migration/capabilities/uniqueness-constraints)
+* [Como Corrigir Erros de Importação](/l/pt/user-guide/data-migration/how-tos/fix-import-errors)
+* [Capacidades de Importação de Relações](/l/pt/user-guide/data-migration/capabilities/import-relations)
+* [Restrições de Unicidade](/l/pt/user-guide/data-migration/capabilities/uniqueness-constraints)
diff --git a/packages/twenty-docs/l/pt/user-guide/data-migration/how-tos/migrating-from-other-crms.mdx b/packages/twenty-docs/l/pt/user-guide/data-migration/how-tos/migrating-from-other-crms.mdx
index 6fd05e872b..83ba9c3606 100644
--- a/packages/twenty-docs/l/pt/user-guide/data-migration/how-tos/migrating-from-other-crms.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/data-migration/how-tos/migrating-from-other-crms.mdx
@@ -1,133 +1,133 @@
---
-title: Migrating from Other CRMs
-description: Step-by-step guide to migrate your data from any CRM to Twenty.
+title: Migração de Outros CRMs
+description: Guia passo a passo para migrar os seus dados de qualquer CRM para o Twenty.
---
-## Overview
+## Visão Geral
-This guide walks you through migrating your data from any CRM to Twenty. The process involves auditing your data, preparing your Twenty workspace, exporting from your current system, and importing into Twenty.
+Este guia explica como migrar os seus dados de qualquer CRM para o Twenty. O processo envolve auditar os seus dados, preparar o seu espaço de trabalho no Twenty, exportar do seu sistema atual e importar para o Twenty.
-Views, workflows, and permissions must be recreated manually after migration. Plan time for this configuration work.
+Vistas, fluxos de trabalho e permissões devem ser recriados manualmente após a migração. Reserve tempo para este trabalho de configuração.
-## Step 1: Audit Your Current Data
+## Passo 1: Auditar os seus dados atuais
-Migration is an opportunity for a fresh start. Don't bring over clutter.
+A migração é uma oportunidade para um novo começo. Não traga dados desnecessários.
-**What to keep:**
+**O que manter:**
-* Active contacts and companies
-* Open opportunities and deals
-* Important notes and activities
-* Custom fields you actually use
+* Contactos ativos e empresas ativas
+* Oportunidades e negócios em aberto
+* Notas e atividades importantes
+* Campos personalizados que realmente utiliza
-**What to leave behind:**
+**O que deixar para trás:**
-* Outdated contacts (no activity in 2+ years)
-* Duplicate records
-* Test data
-* Unused custom fields
+* Contactos desatualizados (sem atividade há mais de 2 anos)
+* Registos duplicados
+* Dados de teste
+* Campos personalizados não utilizados
-## Step 2: Map Your Data Model
+## Passo 2: Mapear o seu modelo de dados
-Create a mapping document between your current CRM and Twenty:
+Crie um documento de mapeamento entre o seu CRM atual e o Twenty:
-| Your CRM | Twenty |
-| ---------------------- | -------------------- |
-| Account / Organization | **Company** |
-| Contact / Person | **People** |
-| Deal / Opportunity | **Opportunity** |
-| Activity | **Task** or **Note** |
-| Custom Object | **Custom Object** |
+| O seu CRM | Twenty |
+| ---------------------- | ------------------------ |
+| Conta / Organização | **Empresa** |
+| Contacto / Pessoa | **Pessoas** |
+| Negócio / Oportunidade | **Oportunidade** |
+| Atividade | **Tarefa** ou **Nota** |
+| Objeto personalizado | **Objeto personalizado** |
-**For each field, document:**
+**Para cada campo, documente:**
-* The source field name
-* The target Twenty field
-* Any format transformations needed (dates, phone numbers, etc.)
+* O nome do campo de origem
+* O campo de destino no Twenty
+* Quaisquer transformações de formato necessárias (datas, números de telefone, etc.)
-Keep this mapping document handy during import—you'll reference it when mapping columns.
+Mantenha este documento de mapeamento à mão durante a importação — irá referenciá-lo ao mapear as colunas.
-## Step 3: Set Up Your Twenty Workspace
+## Passo 3: Configure o seu espaço de trabalho no Twenty
-Before importing data, prepare your Twenty workspace:
+Antes de importar dados, prepare o seu espaço de trabalho no Twenty:
-### Create Custom Objects and Fields
+### Crie objetos e campos personalizados
-1. Go to **Settings → Data Model**
-2. Create any custom objects you need
-3. Add custom fields to standard and custom objects
-4. Configure field settings (unique, required, select options, etc.)
+1. Vá a **Definições → Modelo de Dados**
+2. Crie todos os objetos personalizados de que necessita
+3. Adicione campos personalizados a objetos padrão e personalizados
+4. Configure as definições dos campos (único, obrigatório, opções de seleção, etc.)
- **Fields must exist before import.**
+ **Os campos devem existir antes da importação.**
- The CSV import creates records, not fields. Create all custom fields in Settings → Data Model before importing.
+ A importação de CSV cria registos, não campos. Crie todos os campos personalizados em Definições → Modelo de Dados antes de importar.
-### Invite Your Team
+### Convide a sua equipa
- **Invite users BEFORE importing data.**
+ **Convide os utilizadores ANTES de importar dados.**
- If your data includes user references (Account Owner, Assignee, etc.), those users must exist in Twenty before import. Otherwise, those relations cannot be mapped.
+ Se os seus dados incluírem referências a utilizadores (Proprietário da conta, Responsável, etc.), esses utilizadores devem existir no Twenty antes da importação. Caso contrário, essas relações não podem ser mapeadas.
-1. Go to **Settings → Members**
-2. Invite all team members
-3. **Wait for everyone to accept** their invitation
-4. Verify all users appear in your Members list
+1. Vá para **Configurações → Membros**
+2. Convide todos os membros da equipa
+3. **Aguarde que todos aceitem** o convite
+4. Verifique se todos os utilizadores aparecem na sua lista de Membros
-## Step 4: Export from Your Current CRM
+## Passo 4: Exporte a partir do seu CRM atual
-Export your data from your current CRM:
+Exporte os seus dados do seu CRM atual:
-1. Look for an **Export** function (usually under Settings, Data Management, or Admin)
-2. Export to **CSV format** when possible
-3. Export each object type separately (Companies, Contacts, Deals, etc.)
-4. Include all fields you want to migrate
+1. Procure uma função **Exportar** (normalmente em Definições, Gestão de Dados ou Administração)
+2. Exporte para o **formato CSV** sempre que possível
+3. Exporte cada tipo de objeto separadamente (Empresas, Contactos, Negócios, etc.)
+4. Inclua todos os campos que pretende migrar
-**Export these objects (in this order for reference):**
+**Exporte estes objetos (nesta ordem, para referência):**
-1. Companies / Accounts / Organizations
-2. Contacts / People
-3. Deals / Opportunities
-4. Notes and Activities
-5. Custom objects
+1. Empresas / Contas / Organizações
+2. Contactos / Pessoas
+3. Negócios / Oportunidades
+4. Notas e Atividades
+5. Objetos personalizados
-## Step 5: Clean and Format Your Data
+## Passo 5: Limpe e formate os seus dados
-Open each exported CSV in a spreadsheet application and prepare it for Twenty.
+Abra cada CSV exportado numa aplicação de folha de cálculo e prepare-o para o Twenty.
-### Remove Duplicates
+### Remova duplicados
-1. Sort by the unique field (email for People, domain for Companies)
-2. Remove or merge duplicate rows
-3. Verify no duplicates exist in Twenty already
+1. Ordene pelo campo único (e-mail para Pessoas, domínio para Empresas)
+2. Remova ou una linhas duplicadas
+3. Verifique se não existem já duplicados no Twenty
-### Format Fields Correctly
+### Formate os campos corretamente
-| Field Type | Required Format |
-| ----------------- | ------------------------------------------------- |
-| **Domain** | `https://domain.com` |
-| **Email** | `name@domain.com` (must be unique) |
-| **Date** | `YYYY-MM-DD` |
-| **Phone** | Three columns: Number, Country Code, Calling Code |
-| **Boolean** | `TRUE` or `FALSE` (uppercase) |
-| **Select fields** | Use API names, not display labels |
+| Tipo de campo | Formato obrigatório |
+| --------------------- | ------------------------------------------------------- |
+| **Domínio** | `https://domain.com` |
+| **Email** | `name@domain.com` (deve ser único) |
+| **Data** | `YYYY-MM-DD` |
+| **Telefone** | Três colunas: Número, Código do País, Código de Chamada |
+| **Booleano** | `TRUE` ou `FALSE` (maiúsculas) |
+| **Campos de seleção** | Use nomes de API, não os rótulos de apresentação |
- **Domain format is critical.**
+ **O formato do domínio é crítico.**
- Use `https://domain.com` (not `domain.com` or `www.domain.com`). This matches Twenty's format and prevents duplicates when you connect email/calendar sync.
+ Use `https://domain.com` (não `domain.com` nem `www.domain.com`). Isto corresponde ao formato do Twenty e evita duplicados quando ligar a sincronização de e-mail/calendário.
-See [How to Prepare Your CSV Files](/l/pt/user-guide/data-migration/how-tos/prepare-your-csv-files) for complete formatting requirements for all field types.
+Veja [Como preparar os seus ficheiros CSV](/l/pt/user-guide/data-migration/how-tos/prepare-your-csv-files) para requisitos completos de formatação para todos os tipos de campo.
-### Add Relation Columns
+### Adicione colunas de relação
-To link records (e.g., People to Companies), add a column with the parent's unique identifier.
+Para ligar registos (por exemplo, Pessoas a Empresas), adicione uma coluna com o identificador único do registo pai.
-**Example: People CSV with Company link**
+**Exemplo: CSV de Pessoas com ligação à Empresa**
```csv
firstName,lastName,email,companyDomain
@@ -135,159 +135,159 @@ John,Smith,john@acme.com,https://acme.com
Jane,Doe,jane@widgets.co,https://widgets.co
```
-See [How to Import Relations](/l/pt/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv) for detailed instructions on linking records.
+Veja [Como importar relações](/l/pt/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv) para instruções detalhadas sobre como ligar registos.
-### Update User References
+### Atualize as referências a utilizadores
-If your data includes user assignments (Owner, Assignee):
+Se os seus dados incluírem atribuições de utilizador (Proprietário, Responsável):
-1. Add a column with the **user's email** (not just their ID from the old system)
-2. Use the same email addresses that users used to join your Twenty workspace
+1. Adicione uma coluna com o **e-mail do utilizador** (não apenas o ID dele do sistema antigo)
+2. Use os mesmos endereços de e-mail que os utilizadores usaram para aderir ao seu espaço de trabalho no Twenty
-See [How to Prepare Your CSV Files](/l/pt/user-guide/data-migration/how-tos/prepare-your-csv-files) for complete formatting guide.
+Veja [Como preparar os seus ficheiros CSV](/l/pt/user-guide/data-migration/how-tos/prepare-your-csv-files) para o guia completo de formatação.
-## Step 6: Import to Twenty
+## Passo 6: Importe para o Twenty
- **Import Order Matters!**
+ **A ordem de importação é importante!**
- Always import in this order:
+ Importe sempre por esta ordem:
- 1. **Companies** first (no dependencies)
- 2. **People** second (link to Companies)
- 3. **Opportunities** third (link to Companies/People)
- 4. **Notes and Tasks** (link to records)
- 5. **Custom objects** following their dependencies
+ 1. **Empresas** primeiro (sem dependências)
+ 2. **Pessoas** em segundo (ligadas a Empresas)
+ 3. **Oportunidades** em terceiro (ligadas a Empresas/Pessoas)
+ 4. **Notas e Tarefas** (ligadas a registos)
+ 5. **Objetos personalizados** seguindo as suas dependências
- The parent record must exist before you can reference it.
+ O registo pai deve existir antes de o poder referenciar.
-### Import Each Object
+### Importe cada objeto
-For each CSV file, in order:
+Para cada ficheiro CSV, por ordem:
-1. Navigate to the object in Twenty
-2. Click **⋮ → Import records**
-3. Upload the CSV file
-4. Map columns to fields:
- * Map user email columns to the appropriate relation fields
- * Map relation columns (like `companyDomain`) to relation fields
-5. Review and fix any errors in the UI
-6. Confirm the import
-7. Verify a few records before proceeding to the next file
+1. Navegue até ao objeto no Twenty
+2. Clique em **⋮ → Importar registos**
+3. Carregue o ficheiro CSV
+4. Mapeie as colunas para os campos:
+ * Mapeie as colunas de e-mail do utilizador para os campos de relação apropriados
+ * Mapeie as colunas de relação (como `companyDomain`) para campos de relação
+5. Revise e corrija quaisquer erros na interface
+6. Confirme a importação
+7. Verifique alguns registos antes de avançar para o ficheiro seguinte
-**Detailed guides:**
+**Guias detalhados:**
-* [How to Import Companies](/l/pt/user-guide/data-migration/how-tos/import-companies-via-csv)
-* [How to Import Contacts](/l/pt/user-guide/data-migration/how-tos/import-contacts-via-csv)
-* [How to Import Relations](/l/pt/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv)
+* [Como importar empresas](/l/pt/user-guide/data-migration/how-tos/import-companies-via-csv)
+* [Como importar contactos](/l/pt/user-guide/data-migration/how-tos/import-contacts-via-csv)
+* [Como importar relações](/l/pt/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv)
-## Step 7: Large Migrations (50,000+ Records)
+## Passo 7: Migrações de grande dimensão (50 000+ registos)
-For large migrations:
+Para migrações de grande dimensão:
-| Volume | Recommended Approach |
-| ----------------------- | ----------------------------- |
-| Under 10,000 records | Single CSV import |
-| 10,000 - 50,000 records | Split into multiple CSV files |
-| 50,000+ records | Use the API |
+| Volume | Abordagem recomendada |
+| ------------------------ | ------------------------------ |
+| Menos de 10 000 registos | Uma única importação CSV |
+| 10 000 - 50 000 registos | Divida em vários ficheiros CSV |
+| Mais de 50 000 registos | Utilize a API |
-**For API imports:**
+**Para importações via API:**
-* Faster and more reliable for large datasets
-* Supports batch operations (up to 60 records per call)
-* See [How to Import Data via API](/l/pt/user-guide/data-migration/how-tos/import-data-via-api)
+* Mais rápido e fiável para conjuntos de dados grandes
+* Suporta operações em lote (até 60 registos por chamada)
+* Consulte [Como importar dados via API](/l/pt/user-guide/data-migration/how-tos/import-data-via-api)
-## Step 8: Post-Migration Setup
+## Passo 8: Configuração pós-migração
-After importing data, complete your workspace configuration:
+Após importar os dados, complete a configuração do seu espaço de trabalho:
-### Recreate Views
+### Recrie vistas
-* Set up saved views with filters, sorts, and column configurations
-* Create any kanban or calendar views you need
+* Configure vistas guardadas com filtros, ordenações e configurações de colunas
+* Crie quaisquer vistas kanban ou de calendário de que necessite
-### Recreate Workflows
+### Recriar Fluxos de Trabalho
-* Rebuild your automations in **Settings → Workflows**
-* Start with the most critical workflows
-* Test each one before relying on it
+* Recrie as suas automatizações em **Definições → Fluxos de trabalho**
+* Comece pelos fluxos de trabalho mais críticos
+* Teste cada um antes de confiar nele
-### Configure Roles and Permissions
+### Configure funções e permissões
-* Set up roles in **Settings → Roles**
-* Assign users to appropriate roles
+* Configure as funções em **Definições → Funções**
+* Atribua os utilizadores às funções apropriadas
-### Connect Email and Calendar
+### Ligue o e-mail e o calendário
-* Each user connects their own account in **Settings → Accounts**
-* Twenty will start syncing emails to contact records
-* See [Email & Calendar](/l/pt/user-guide/calendar-emails/overview)
+* Cada utilizador liga a sua própria conta em **Definições → Contas**
+* O Twenty começará a sincronizar e-mails com os registos de contactos
+* Consulte [E-mail e Calendário](/l/pt/user-guide/calendar-emails/overview)
-### Train Your Team
+### Forme a sua equipa
-* Walk through the new interface together
-* Document any team-specific processes
+* Percorram juntos a nova interface
+* Documente quaisquer processos específicos da equipa
-## Common Issues and Solutions
+## Problemas Comuns e Soluções
-| Issue | Cause | Solution |
-| ----------------------- | --------------------------- | ------------------------------------------------------------------------------------ |
-| **Duplicate errors** | Email/domain already exists | Remove duplicates from file, or include unique identifier to update existing records |
-| **Relation not found** | Parent record doesn't exist | Import parent objects first (Companies before People) |
-| **Missing fields** | Custom field doesn't exist | Create field in Settings → Data Model before importing |
-| **Select field errors** | Using display labels | Use API names (enable Advanced mode in Settings to find them) |
-| **User relation empty** | User hasn't accepted invite | Ensure all users accept invitations before importing |
+| Problema | Causa | Solução |
+| ------------------------------- | ------------------------------------- | ------------------------------------------------------------------------------------------------------- |
+| **Erros de duplicados** | E-mail/domínio já existe | Remova os duplicados do ficheiro ou inclua um identificador único para atualizar os registos existentes |
+| **Relação não encontrada** | O registo pai não existe | Importe primeiro os objetos pai (Empresas antes de Pessoas) |
+| **Campos em falta** | O campo personalizado não existe | Crie o campo em Definições → Modelo de Dados antes de importar |
+| **Erros em campos de seleção** | Utilização de rótulos de apresentação | Use nomes de API (ative o modo Avançado em Definições para os encontrar) |
+| **Relação de utilizador vazia** | O utilizador não aceitou o convite | Garanta que todos os utilizadores aceitam os convites antes de importar |
-See [How to Fix Import Errors](/l/pt/user-guide/data-migration/how-tos/fix-import-errors) for detailed troubleshooting steps.
+Consulte [Como Corrigir Erros de Importação](/l/pt/user-guide/data-migration/how-tos/fix-import-errors) para passos detalhados de resolução de problemas.
-## Post-Migration Checklist
+## Lista de Verificação Pós-Migração
-### Data Integrity
+### Integridade dos dados
-All records imported (compare counts with source system)
-Relations working correctly (People linked to Companies)
-User assignments mapped correctly (Owner, Assignee)
-Custom fields populated
-No unexpected duplicates
+Todos os registos importados (compare contagens com o sistema de origem)
+Relações a funcionar corretamente (Pessoas ligadas a Empresas)
+Atribuições de utilizador mapeadas corretamente (Proprietário, Responsável)
+Campos personalizados preenchidos
+Sem duplicados inesperados
-### Configuration
+### Configuração
-Views recreated
-Workflows recreated and tested
-Roles and permissions configured
-Email/calendar sync connected
+Vistas recriadas
+Fluxos de trabalho recriados e testados
+Funções e permissões configuradas
+Sincronização de e-mail/calendário ligada
-### Team Readiness
+### Preparação da equipa
-Team trained on new system
-Old CRM access plan decided (keep for reference? When to disable?)
+Equipa formada no novo sistema
+Plano de acesso ao CRM antigo decidido (manter para referência? Quando desativar?)
-## FAQ
+## Perguntas Frequentes
-
- Not currently. Workflows must be recreated manually in Twenty.
+
+ De momento, não. Os fluxos de trabalho devem ser recriados manualmente no Twenty.
-
- File attachments are not included in CSV exports. You'll need to re-upload them manually, migrate via API, or contact our team for assistance.
+
+ Os anexos de ficheiros não estão incluídos nas exportações CSV. Terá de voltar a carregá-los manualmente, migrá-los via API ou contactar a nossa equipa para obter assistência.
-
- Yes, we recommend keeping your old CRM running until you've verified the migration is complete. Just be careful not to create new data in both places.
+
+ Sim, recomendamos manter o seu CRM antigo a funcionar até verificar que a migração está concluída. Apenas tenha cuidado para não criar novos dados em ambos os locais.
-
- Depends on data volume and complexity. Small migrations (under 10,000 records) can be done in a few hours. Large migrations may take several days including data cleanup and testing.
+
+ Depende do volume e da complexidade dos dados. Migrações pequenas (menos de 10 000 registos) podem ser feitas em poucas horas. Migrações grandes podem demorar vários dias, incluindo limpeza de dados e testes.
-## Need Help?
+## Precisa de ajuda?
-For complex migrations or large datasets:
+Para migrações complexas ou conjuntos de dados grandes:
-* **Guided setup:** Book a 4-hour onboarding pack
-* **Full migration service:** Our partners can handle the entire migration
+* **Configuração guiada:** Reserve um pacote de integração de 4 horas
+* **Serviço de migração completo:** Os nossos parceiros podem tratar de toda a migração
-Contact [contact@twenty.com](mailto:contact@twenty.com) or explore our [Implementation Services](/l/pt/user-guide/getting-started/capabilities/implementation-services).
+Contacte [contact@twenty.com](mailto:contact@twenty.com) ou explore os nossos [Serviços de Implementação](/l/pt/user-guide/getting-started/capabilities/implementation-services).
diff --git a/packages/twenty-docs/l/pt/user-guide/data-migration/how-tos/migrating-from-self-hosted-to-cloud.mdx b/packages/twenty-docs/l/pt/user-guide/data-migration/how-tos/migrating-from-self-hosted-to-cloud.mdx
index 8fa4f6a543..c34598319c 100644
--- a/packages/twenty-docs/l/pt/user-guide/data-migration/how-tos/migrating-from-self-hosted-to-cloud.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/data-migration/how-tos/migrating-from-self-hosted-to-cloud.mdx
@@ -1,171 +1,171 @@
---
-title: Migrating from Self-Hosted to Cloud
-description: Step-by-step guide to migrate your Twenty self-hosted instance to Twenty Cloud.
+title: Migração de Auto-Hospedagem para Nuvem
+description: Guia passo a passo para migrar a sua instância Twenty auto-hospedada para a Twenty Cloud.
---
-## Overview
+## Visão Geral
-This guide walks you through migrating your data from a Twenty self-hosted instance to Twenty Cloud. The process involves setting up your cloud workspace, exporting your data, and re-importing it.
+Este guia orienta-o na migração dos seus dados de uma instância Twenty auto-hospedada para a Twenty Cloud. O processo envolve configurar o seu espaço de trabalho na cloud, exportar os seus dados e voltar a importá-los.
-Views, workflows, and roles must be recreated manually after migration. Plan time for this configuration work.
+Vistas, fluxos de trabalho e funções devem ser recriados manualmente após a migração. Reserve tempo para este trabalho de configuração.
-## Step 1: Create Your Cloud Workspace
+## Passo 1: Crie o seu espaço de trabalho na Cloud
-1. Go to [app.twenty.com](https://app.twenty.com) and create a new workspace
-2. Complete the initial setup wizard
-3. Note your new workspace URL
+1. Aceda a [app.twenty.com](https://app.twenty.com) e crie um novo espaço de trabalho
+2. Conclua o assistente de configuração inicial
+3. Anote o URL do seu novo espaço de trabalho
-## Step 2: Recreate Your Data Model
+## Passo 2: Recrie o seu Modelo de Dados
-Before importing data, recreate your custom objects and fields:
+Antes de importar os dados, recrie os seus objetos e campos personalizados:
-1. Go to **Settings → Data Model** in your cloud instance
-2. Create custom objects that match your self-hosted setup
-3. Add custom fields to standard and custom objects
-4. Configure field settings (unique, required, etc.)
+1. Aceda a **Configurações → Modelo de Dados** na sua instância na cloud
+2. Crie objetos personalizados que correspondam à sua configuração auto-hospedada
+3. Adicione campos personalizados a objetos padrão e personalizados
+4. Configure as definições dos campos (único, obrigatório, etc.)
-Take screenshots of your self-hosted data model for reference, or keep both instances open side by side.
+Tire capturas de ecrã do seu modelo de dados auto-hospedado para referência ou mantenha ambas as instâncias abertas lado a lado.
-## Step 3: Invite All Users
+## Passo 3: Convide todos os utilizadores
- **Critical: Invite users BEFORE importing data.**
+ **Crítico: Convide os utilizadores ANTES de importar dados.**
- Users must accept their invitations before you import any records that reference them (like Account Owner fields). If users don't exist yet, those relations cannot be mapped.
+ Os utilizadores devem aceitar os convites antes de importar quaisquer registos que os referenciem (como campos Account Owner). Se os utilizadores ainda não existirem, essas relações não poderão ser mapeadas.
-1. Go to **Settings → Members** in your cloud instance
-2. Invite all team members who had accounts on self-hosted
-3. **Wait for everyone to accept** their invitation
-4. Verify all users appear in your Members list
+1. Aceda a **Configurações → Membros** na sua instância na cloud
+2. Convide todos os membros da equipa que tinham contas na instância auto-hospedada
+3. **Aguarde que todos aceitem** o convite
+4. Verifique se todos os utilizadores aparecem na sua lista de Membros
-## Step 4: Export Data from Self-Hosted
+## Passo 4: Exportar dados da instância auto-hospedada
-Export each object from your self-hosted instance:
+Exporte cada objeto da sua instância auto-hospedada:
-1. Navigate to each object (Companies, People, Opportunities, etc.)
-2. Configure the view to show **all columns** you want to migrate
-3. Click **⋮ → Export view**
-4. Save each CSV file with a clear name (e.g., `companies-export.csv`)
+1. Aceda a cada objeto (Empresas, Pessoas, Oportunidades, etc.)
+2. Configure a vista para mostrar **todas as colunas** que pretende migrar
+3. Clique em **⋮ → Export view**
+4. Guarde cada ficheiro CSV com um nome claro (por exemplo, `companies-export.csv`)
-**Export in this order** (for reference when importing):
+**Exporte nesta ordem** (para referência durante a importação):
-1. Companies
-2. People
-3. Opportunities
-4. Custom objects (following their dependencies)
-5. Tasks, Notes
+1. Empresas
+2. Pessoas
+3. Oportunidades
+4. Objetos personalizados (seguindo as suas dependências)
+5. Tarefas, Notas
-## Step 5: Update Workspace Member References
+## Passo 5: Atualizar referências de Membros do espaço de trabalho
-The exported CSVs contain user IDs from your self-hosted instance. These IDs won't match your cloud instance, so you need to replace them with emails.
+Os CSV exportados contêm IDs de utilizador da sua instância auto-hospedada. Esses IDs não corresponderão à sua instância na cloud, por isso precisa de os substituir por endereços de e-mail.
-**For each CSV file with user references (Owner, Assignee, etc.):**
+**Para cada ficheiro CSV com referências a utilizadores (Owner, Assignee, etc.):**
-1. Open the CSV in a spreadsheet application
-2. Add a new column next to each user ID column (e.g., `accountOwnerEmail` next to `accountOwnerId`)
-3. Fill in the **email address** of each user
-4. You can delete the old ID column or leave it (it will be skipped during import)
+1. Abra o CSV numa aplicação de folha de cálculo
+2. Adicione uma nova coluna ao lado de cada coluna de ID de utilizador (por exemplo, `accountOwnerEmail` ao lado de `accountOwnerId`)
+3. Preencha o **endereço de e-mail** de cada utilizador
+4. Pode apagar a coluna de ID antiga ou deixá-la (será ignorada durante a importação)
-**Example:**
+**Exemplo:**
-Before:
+Antes:
```csv
name,domain,accountOwnerId
Acme Corp,https://acme.com,old-uuid-123
```
-After:
+Depois:
```csv
name,domain,accountOwnerEmail
Acme Corp,https://acme.com,john@yourcompany.com
```
-Use the same email addresses that users used to accept their cloud workspace invitation.
+Use os mesmos endereços de e-mail que os utilizadores usaram para aceitar o convite do espaço de trabalho na cloud.
-## Step 6: Plan Your Import Order
+## Passo 6: Planeie a ordem de importação
-Import files in the correct order to maintain relationships:
+Importe os ficheiros na ordem correta para manter as relações:
-1. **Companies** first (no dependencies)
-2. **People** second (link to Companies)
-3. **Opportunities** third (link to Companies and People)
-4. **Custom objects** (following their dependencies)
-5. **Tasks and Notes** last (link to other records)
+1. **Empresas** primeiro (sem dependências)
+2. **Pessoas** em segundo (ligadas a Empresas)
+3. **Oportunidades** em terceiro (ligadas a Empresas e Pessoas)
+4. **Objetos personalizados** (seguindo as suas dependências)
+5. **Tarefas e Notas** por último (ligadas a outros registos)
-See [How to Import Relations](/l/pt/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv) for details on maintaining relationships.
+Veja [Como importar relações](/l/pt/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv) para detalhes sobre a manutenção das relações.
-## Step 7: Import to Cloud
+## Passo 7: Importar para a Cloud
-For each CSV file, in order:
+Para cada ficheiro CSV, por ordem:
-1. Navigate to the object in your cloud instance
-2. Click **⋮ → Import records**
-3. Upload the CSV file
-4. Map columns to fields:
- * Map user email columns to the appropriate relation fields
- * Map other columns as usual
-5. Review and fix any errors
-6. Confirm the import
-7. Verify a few records before proceeding to the next file
+1. Aceda ao objeto na sua instância na cloud
+2. Clique em **⋮ → Import records**
+3. Carregue o ficheiro CSV
+4. Mapeie as colunas para os campos:
+ * Mapeie as colunas de e-mail do utilizador para os campos de relação apropriados
+ * Mapeie as outras colunas como de costume
+5. Revise e corrija quaisquer erros
+6. Confirme a importação
+7. Verifique alguns registos antes de avançar para o ficheiro seguinte
-## Step 8: Recreate Configuration
+## Passo 8: Recriar a configuração
-After importing data, manually recreate:
+Depois de importar os dados, recrie manualmente:
-### Views
+### Visualizações
-* Recreate saved views with filters, sorts, and column configurations
-* Set up any kanban or calendar views
+* Recrie vistas guardadas com filtros, ordenações e configurações de colunas
+* Configure quaisquer vistas kanban ou de calendário
-### Workflows
+### Fluxos de trabalho
-* Recreate automations in **Settings → Workflows**
-* Test each workflow before relying on it
+* Recrie automatizações em **Configurações → Fluxos de trabalho**
+* Teste cada fluxo de trabalho antes de confiar nele
-### Roles and Permissions
+### Funções e Permissões
-* Configure roles in **Settings → Roles**
-* Assign users to appropriate roles
+* Configure as funções em **Configurações → Funções**
+* Atribua os utilizadores às funções apropriadas
-### Integrations
+### Integrações
-* Reconnect email and calendar sync for each user
-* Reconfigure any API integrations with new API keys
+* Volte a ligar a sincronização de e-mail e calendário para cada utilizador
+* Reconfigure quaisquer integrações de API com novas chaves de API
-## Post-Migration Checklist
+## Lista de Verificação Pós-Migração
-All data imported successfully
-Relations between objects working correctly
-User assignments (Owner, Assignee) mapped correctly
-Views recreated
-Workflows recreated and tested
-Roles and permissions configured
-Email/calendar sync reconnected
-API integrations updated with new keys
+Todos os dados importados com sucesso
+Relações entre objetos a funcionar corretamente
+Atribuições de utilizadores (Owner, Assignee) mapeadas corretamente
+Vistas recriadas
+Fluxos de trabalho recriados e testados
+Funções e permissões configuradas
+Sincronização de e-mail/calendário restabelecida
+Integrações de API atualizadas com novas chaves
-## FAQ
+## Perguntas Frequentes
-
- Not currently. Workflows must be recreated manually in your cloud instance.
+
+ De momento, não. Os fluxos de trabalho devem ser recriados manualmente na sua instância na cloud.
-
- File attachments are not included in CSV exports. You'll need to re-upload any attachments manually, migrate them via API or contact our team for assistance with large migrations.
+
+ Os anexos de ficheiros não estão incluídos nas exportações CSV. Terá de voltar a carregar quaisquer anexos manualmente, migrá-los via API ou contactar a nossa equipa para obter assistência em migrações de grande dimensão.
-
- Yes, we recommend keeping your self-hosted instance running until you've verified the cloud migration is complete. Just be careful not to create new data in both places.
+
+ Sim, recomendamos manter a sua instância auto-hospedada em funcionamento até verificar que a migração para a cloud está concluída. Apenas tenha cuidado para não criar novos dados em ambos os locais.
-
- Records referencing that user will fail to import or the relation will be empty. Ensure all users accept invitations before importing data.
+
+ Os registos que referenciam esse utilizador não serão importados ou a relação ficará vazia. Garanta que todos os utilizadores aceitam os convites antes de importar os dados.
-## Need Help?
+## Precisa de ajuda?
-For complex migrations or large datasets, contact us at [contact@twenty.com](mailto:contact@twenty.com) or explore our [Implementation Services](/l/pt/user-guide/getting-started/capabilities/implementation-services).
+Para migrações complexas ou conjuntos de dados grandes, contacte-nos em [contact@twenty.com](mailto:contact@twenty.com) ou explore os nossos [Serviços de Implementação](/l/pt/user-guide/getting-started/capabilities/implementation-services).
diff --git a/packages/twenty-docs/l/pt/user-guide/data-migration/how-tos/prepare-your-csv-files.mdx b/packages/twenty-docs/l/pt/user-guide/data-migration/how-tos/prepare-your-csv-files.mdx
index f78e214d99..4abfbb2e8f 100644
--- a/packages/twenty-docs/l/pt/user-guide/data-migration/how-tos/prepare-your-csv-files.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/data-migration/how-tos/prepare-your-csv-files.mdx
@@ -1,200 +1,200 @@
---
-title: Prepare Your CSV Files
-description: Complete step-by-step guide to format your data for import into Twenty.
+title: Prepare seus arquivos CSV
+description: Guia completo passo a passo para formatar seus dados para importação no Twenty.
---
-## Overview
+## Visão Geral
-This guide walks you through preparing your CSV file for a successful import. Follow these steps in order to avoid errors.
+Este guia orienta você na preparação do seu arquivo CSV para uma importação bem-sucedida. Siga estas etapas para evitar erros.
-## Step 1: Check File Requirements
+## Etapa 1: Verifique os requisitos do arquivo
-Before you start, ensure your file meets these requirements:
+Antes de começar, verifique se o seu arquivo atende a estes requisitos:
-| Requirement | Details |
-| -------------- | ------------------------ |
-| **Format** | CSV, XLSX, or XLS |
-| **Size limit** | 10,000 records per file |
-| **Encoding** | UTF-8 recommended |
-| **Structure** | One object type per file |
+| Requisito | Detalhes |
+| --------------------- | ----------------------------- |
+| **Formato** | CSV, XLSX ou XLS |
+| **Limite de tamanho** | 10.000 registros por arquivo |
+| **Codificação** | UTF-8 recomendado |
+| **Estrutura** | Um tipo de objeto por arquivo |
-For datasets larger than 10,000 records, split into multiple files or use the [API import](/l/pt/user-guide/data-migration/how-tos/import-data-via-api).
+Para conjuntos de dados maiores que 10.000 registros, divida em vários arquivos ou use a [importação via API](/l/pt/user-guide/data-migration/how-tos/import-data-via-api).
-## Step 2: Download the Sample File
+## Etapa 2: Baixe o arquivo de exemplo
-**This is the most important step.** The sample file shows you the exact column names and format Twenty expects.
+**Esta é a etapa mais importante.** O arquivo de exemplo mostra os nomes exatos das colunas e o formato que o Twenty espera.
-1. Go to the object view (People, Companies, etc.)
-2. Click **⋮** → **Import records**
-3. Click **Download sample file**
-4. Use this file as your template
+1. Navegue até qualquer objeto (Pessoas, Empresas, etc.)
+2. Clique em **⋮** → **Importar registros**
+3. Clique em **Baixar arquivo de exemplo**
+4. Use este arquivo como seu modelo
-**Pro tip:** Export a few existing records instead. This gives you real examples of how data should be formatted, and the column names will map automatically during import.
+**Dica de especialista:** Em vez disso, exporte alguns registros existentes. Isso fornece exemplos reais de como os dados devem ser formatados, e os nomes das colunas serão mapeados automaticamente durante a importação.
-## Step 3: Remove Duplicate Values
+## Etapa 3: Remova valores duplicados
-Twenty enforces uniqueness on certain fields. Duplicates will cause import errors.
+O Twenty impõe unicidade em determinados campos. Duplicados causarão erros de importação.
-| Object | Unique Fields |
-| ------------------ | ----------------------------------------- |
-| **People** | `id`, `email` |
-| **Companies** | `id`, `domain` |
-| **Custom objects** | `id`, plus any field you marked as unique |
+| Objeto | Campos exclusivos |
+| -------------------------- | ------------------------------------------------------------------ |
+| **Pessoas** | `id`, `email` |
+| **Empresas** | `id`, `domain` |
+| **Objetos personalizados** | `id`, além de qualquer campo que você tenha marcado como exclusivo |
-**Before importing:**
+**Antes de importar:**
-1. Sort your spreadsheet by the unique field (email or domain)
-2. Remove or merge duplicate rows
-3. Check for duplicates that already exist in Twenty
+1. Ordene sua planilha pelo campo exclusivo (email ou domínio)
+2. Remova ou mescle linhas duplicadas
+3. Verifique se há duplicados que já existem no Twenty
-**Soft-deleted records count toward uniqueness.** Records in Command Menu → See deleted records will cause duplicate errors. Delete them permanently or restore and update them.
+**Registros excluídos logicamente contam para a unicidade.** Registros em Menu de Comando → Ver registros excluídos causarão erros de duplicação. Exclua-os permanentemente ou restaure e atualize-os.
-## Step 4: Format Each Field Type Correctly
+## Etapa 4: Formate corretamente cada tipo de campo
-Different field types require specific formats. Here's the complete reference:
+Tipos de campo diferentes exigem formatos específicos. Aqui está a referência completa:
-### Text Fields
+### Campos de texto
-* No special formatting required
-* Leading/trailing spaces are automatically trimmed
+* Nenhuma formatação especial é necessária
+* Espaços no início/fim são automaticamente removidos
-### Email Fields
+### Campos de email
-* Must be valid email format: `name@domain.com`
-* Must be unique (no duplicates in file or in Twenty)
-* For additional emails, use this format in the **Emails / Additional Emails** column:
+* Deve estar em um formato de email válido: `name@domain.com`
+* Deve ser exclusivo (sem duplicados no arquivo ou no Twenty)
+* Para emails adicionais, use este formato na coluna **Emails / Additional Emails**:
```
["jane@twenty.com","jane.doe@twenty.com"]
```
-### Domain Fields
+### Campos de domínio
-* **Recommended format**: `https://domain.com`
-* This matches the format used by mailbox/calendar sync (prevents duplicates)
-* Fill both columns:
+* **Formato recomendado**: `https://domain.com`
+* Isso corresponde ao formato usado pela sincronização de caixa de correio/calendário (evita duplicados)
+* Preencha ambas as colunas:
* **Domain / Domain Label**: `domain.com`
* **Domain / Domain URL**: `https://domain.com`
-* Must be unique within your file and in Twenty
+* Deve ser exclusivo dentro do seu arquivo e no Twenty
-### Phone Fields
+### Campos de telefone
-Phone is a **nested field** requiring multiple columns:
+Telefone é um **campo aninhado** que requer várias colunas:
-| Column | Example |
+| Coluna | Exemplo |
| --------------------------------------- | ------------ |
| **Phones / Primary Phone Number** | `4159095555` |
| **Phones / Primary Phone Country Code** | `US` |
| **Phones / Primary Phone Calling Code** | `+1` |
-### Address Fields
+### Campos de Endereço
-Address is a **nested field** with multiple columns (some can be left empty):
+Endereço é um **campo aninhado** com várias colunas (algumas podem ficar em branco):
-* **Address / Address 1**: Street address line 1
-* **Address / Address 2**: Street address line 2 (optional)
-* **Address / City**: City name
-* **Address / State**: State or province
-* **Address / Country**: Country name
-* **Address / Post Code**: Postal/ZIP code
+* **Endereço / Endereço 1**: Linha 1 do endereço
+* **Endereço / Endereço 2**: Linha 2 do endereço (opcional)
+* **Endereço / Cidade**: Nome da cidade
+* **Endereço / Estado**: Estado ou província
+* **Endereço / País**: Nome do país
+* **Endereço / Código Postal**: Código Postal/CEP
-### Date Fields
+### Campos de Data
-Use consistent formatting throughout your file:
+Use formatação consistente em todo o seu arquivo:
-* `YYYY-MM-DD` (recommended): `2024-03-15`
+* `YYYY-MM-DD` (recomendado): `2024-03-15`
* `MM/DD/YYYY`: `03/15/2024`
* `DD/MM/YYYY`: `15/03/2024`
* ISO 8601: `2024-03-15T10:30:00Z`
-### Number Fields
+### Campos Numéricos
-* Numbers only (no text)
-* Use period for decimals: `1234.56`
-* No thousands separators (not `1,234.56`)
+* Apenas números (sem texto)
+* Use ponto para decimais: `1234.56`
+* Sem separadores de milhares (não `1,234.56`)
-### Currency Fields
+### Campos de Moeda
-Currency is a **nested field** requiring two columns that **both must be filled**:
+Moeda é um **campo aninhado** que requer duas colunas que **ambas devem ser preenchidas**:
-| Column | Example |
-| --------------------- | --------- |
-| **Amount / Amount** | `1234.56` |
-| **Amount / Currency** | `USD` |
+| Coluna | Exemplo |
+| ----------------- | --------- |
+| **Valor / Valor** | `1234.56` |
+| **Valor / Moeda** | `USD` |
-### Boolean Fields
+### Campos Booleanos
-Use uppercase: `TRUE` or `FALSE`
+Use maiúsculas: `TRUE` ou `FALSE`
-Lowercase `true` or `false` will not work.
+`true` ou `false` em minúsculas não funcionam.
-### Select Fields
+### Campos de Seleção
-Use the **API name** of the option, not the display label.
+Use o **nome da API** da opção, não o rótulo de exibição.
-**How to find API names:**
+**Como encontrar nomes da API:**
-1. Go to **Settings → Data Model**
-2. Select the object and field
-3. Enable **Advanced mode** (toggle at bottom right)
-4. Copy the API name (e.g., `OPTION_1`, not "Option 1")
+1. Vá para **Configurações → Modelo de Dados**
+2. Selecione o objeto e o campo
+3. Ative o **Modo Avançado** (alternador no canto inferior direito)
+4. Copie o nome da API (por exemplo, `OPTION_1`, não "Option 1")
-New select options are not created automatically. Add them in **Settings → Data Model** before importing.
+Novas opções de seleção não são criadas automaticamente. Adicione-as em **Configurações → Modelo de Dados** antes de importar.
-### Multi-Select Fields
+### Campos de Seleção Múltipla
-Use API names in array format:
+Use os nomes da API no formato de array:
```
["VALUE1","VALUE2"]
```
-### Array Fields
+### Campos de Array
-Use JSON array format:
+Use o formato de array JSON:
```
["value1","value2"]
```
-### Rating Fields
+### Campos de Classificação
-Use the format: `RATING_1`, `RATING_2`, `RATING_3`, `RATING_4`, or `RATING_5`
+Use o formato: `RATING_1`, `RATING_2`, `RATING_3`, `RATING_4` ou `RATING_5`
-### Links/URL Fields
+### Campos de Links/URL
-Fill both columns:
+Preencha ambas as colunas:
-* **Links / Link Label**: `Twenty`
-* **Links / Link URL**: `https://twenty.com`
+* **Links / Rótulo do Link**: `Twenty`
+* **Links / URL do Link**: `https://twenty.com`
-For secondary links, use the **Links / Secondary Links** column:
+Para links secundários, use a coluna **Links / Links Secundários**:
```
[{"url":"https://twenty.com","label":"Twenty"}]
```
-### JSON Fields
+### Campos JSON
-Use valid JSON format:
+Use um formato JSON válido:
```
{"key":"value","key2":"value2"}
```
-### ID Fields
+### Campos de ID
-* **Optional**: Twenty auto-generates IDs if not provided
-* **Format**: UUID (e.g., `c776ee49-f608-4a77-8cc8-6fe96ae1e43f`)
-* **Use case**: Include ID to update existing records instead of creating new ones
+* **Opcional**: a Twenty gera IDs automaticamente se não forem fornecidos
+* **Formato**: UUID (por exemplo, `c776ee49-f608-4a77-8cc8-6fe96ae1e43f`)
+* **Caso de uso**: Inclua o ID para atualizar registros existentes em vez de criar novos
-## Step 5: Add Relation Columns (If Linking Records)
+## Etapa 5: Adicione Colunas de Relação (se estiver vinculando registros)
-To link records to other objects (e.g., People to Companies), add a column with the unique identifier of the related record.
+Para vincular registros a outros objetos (por exemplo, Pessoas a Empresas), adicione uma coluna com o identificador exclusivo do registro relacionado.
-**Example**: Linking People to Companies
+**Exemplo**: Vinculando Pessoas a Empresas
-Add a column to your People CSV:
+Adicione uma coluna ao seu CSV de Pessoas:
```
firstName,lastName,email,companyDomain
@@ -202,69 +202,69 @@ John,Smith,john@acme.com,https://acme.com
Jane,Doe,jane@widgets.co,https://widgets.co
```
-**Important rules for relations:**
+**Regras importantes para relações:**
-* The parent record must already exist in Twenty
-* Use the **Domain URL** format (`https://domain.com`), not the label
-* Map only ONE unique identifier (don't include both `companyId` AND `companyDomain`)
-* For Workspace Members, use their **email** (not name)
+* O registro pai já deve existir na Twenty
+* Use o formato **URL de domínio** (`https://domain.com`), não o rótulo
+* Mapeie apenas UM identificador exclusivo (não inclua `companyId` E `companyDomain`)
+* Para Membros do Workspace, use o **email** deles (não o nome)
- **Import Order Matters!**
+ **A ordem de importação é importante!**
- Import the "one" side before the "many" side:
+ Importe o lado "um" antes do lado "muitos":
- 1. **Companies** first
- 2. **People** second (with company reference)
- 3. **Opportunities** third
+ 1. **Empresas** primeiro
+ 2. **Pessoas** em segundo (com referência à empresa)
+ 3. **Oportunidades** em terceiro
- The parent record must exist before you can reference it.
+ O registro pai deve existir antes de você poder referenciá-lo.
-See [How to Import Relations](/l/pt/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv) for detailed instructions.
+Veja [Como importar relações](/l/pt/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv) para instruções detalhadas.
-## Step 6: Ensure Fields Exist in Twenty
+## Etapa 6: Garanta que os campos existam na Twenty
-The import creates **records**, not **fields**. All fields you want to import must already exist in your data model.
+A importação cria registros, não campos. Todos os campos que você deseja importar já devem existir no seu modelo de dados.
-**Before importing:**
+**Antes de importar:**
-1. Go to **Settings → Data Model**
-2. Select your object
-3. Create any custom fields you need
-4. Note the exact field names (they must match your column headers)
+1. Vá para **Configurações → Modelo de Dados**
+2. Selecione o seu objeto
+3. Crie todos os campos personalizados necessários
+4. Anote os nomes exatos dos campos (eles devem corresponder aos cabeçalhos das suas colunas)
-## Step 7: Final Checklist
+## Etapa 7: Lista de Verificação Final
-Before uploading your file, verify:
+Antes de enviar seu arquivo, verifique:
-File is CSV, XLSX, or XLS format
-File has fewer than 10,000 records
-Encoding is UTF-8
-No duplicate emails (for People) or domains (for Companies)
-Dates use consistent format throughout
-Domains use `https://domain.com` format
-Boolean fields use `TRUE` or `FALSE` (uppercase)
-Select fields use API names, not display labels
-All custom fields exist in Settings → Data Model
-Parent records imported before child records
-Relation columns reference existing records
+O arquivo está no formato CSV, XLSX ou XLS
+O arquivo tem menos de 10.000 registros
+A codificação é UTF-8
+Sem emails duplicados (para Pessoas) ou domínios (para Empresas)
+As datas usam formato consistente em todo o arquivo
+Os domínios usam o formato `https://domain.com`
+Os campos booleanos usam `TRUE` ou `FALSE` (maiúsculas)
+Os campos de Seleção usam nomes da API, não rótulos de exibição
+Todos os campos personalizados existem em Configurações → Modelo de Dados
+Registros pai importados antes dos registros filho
+As colunas de relação referenciam registros existentes
-## Common Mistakes to Avoid
+## Erros Comuns a Evitar
-| Mistake | Solution |
-| -------------------------------------------- | ------------------------------------- |
-| Using `true` instead of `TRUE` | Boolean values must be uppercase |
-| Using display labels for Select fields | Find and use API names in Settings |
-| Importing People before Companies | Always import parent objects first |
-| Missing currency code for Currency fields | Fill both Amount and Currency columns |
-| Wrong domain format | Use `https://domain.com` consistently |
-| Mapping multiple unique fields for relations | Map only ONE (domain OR id, not both) |
+| Erro | Solução |
+| ----------------------------------------------- | ----------------------------------------------- |
+| Usar `true` em vez de `TRUE` | Valores booleanos devem estar em maiúsculas |
+| Usar rótulos de exibição para campos de Seleção | Encontre e use os nomes da API em Configurações |
+| Importar Pessoas antes de Empresas | Sempre importe os objetos pai primeiro |
+| Falta o código de moeda nos campos de Moeda | Preencha as colunas Valor e Moeda |
+| Formato de domínio incorreto | Use `https://domain.com` de forma consistente |
+| Mapeando vários campos exclusivos para relações | Mapeie apenas UM (domínio OU ID, não ambos) |
-## Next Steps
+## Próximos Passos
-Your file is ready! Now:
+Seu arquivo está pronto! Agora:
-* [Import Companies](/l/pt/user-guide/data-migration/how-tos/import-companies-via-csv) (import these first)
-* [Import Contacts](/l/pt/user-guide/data-migration/how-tos/import-contacts-via-csv)
-* [Fix any import errors](/l/pt/user-guide/data-migration/how-tos/fix-import-errors)
+* [Importar Empresas](/l/pt/user-guide/data-migration/how-tos/import-companies-via-csv) (importe-as primeiro)
+* [Importar Contatos](/l/pt/user-guide/data-migration/how-tos/import-contacts-via-csv)
+* [Corrigir quaisquer erros de importação](/l/pt/user-guide/data-migration/how-tos/fix-import-errors)
diff --git a/packages/twenty-docs/l/pt/user-guide/data-migration/how-tos/update-existing-records-via-import.mdx b/packages/twenty-docs/l/pt/user-guide/data-migration/how-tos/update-existing-records-via-import.mdx
index 7551649886..9f70ce8684 100644
--- a/packages/twenty-docs/l/pt/user-guide/data-migration/how-tos/update-existing-records-via-import.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/data-migration/how-tos/update-existing-records-via-import.mdx
@@ -1,67 +1,67 @@
---
-title: Update Existing Records via Import
-description: Complete step-by-step guide to bulk updating records using CSV import.
+title: Atualizar Registos Existentes via Importação
+description: Guia completo passo a passo para atualizar em massa registos através da importação de CSV.
---
-## Overview
+## Visão Geral
-Need to update many records at once? Instead of editing them one by one, use the CSV import to bulk update existing records.
+Precisa de atualizar muitos registos de uma só vez? Em vez de os editar um a um, utilize a importação CSV para atualizar em massa os registos existentes.
-**Use cases:**
+**Casos de uso:**
-* Update job titles for multiple people
-* Change company information in bulk
-* Add data to new custom fields
-* Correct data errors across many records
+* Atualizar cargos para várias pessoas
+* Alterar informações da empresa em massa
+* Adicionar dados a novos campos personalizados
+* Corrigir erros de dados em muitos registos
-## How It Works
+## Como Funciona
-When you import a file containing a **unique identifier** that matches an existing record, Twenty updates that record instead of creating a duplicate.
+Quando importar um ficheiro que contenha um **identificador único** que corresponde a um registo existente, a Twenty atualiza esse registo em vez de criar um duplicado.
-| If unique identifier... | Twenty will... |
-| -------------------------- | ------------------------------------------------ |
-| Matches an existing record | **Update** the existing record |
-| Doesn't match any record | **Create** a new record |
-| Is missing from your file | **Create** a new record (with auto-generated ID) |
+| Se o identificador único... | A Twenty irá... |
+| ---------------------------------- | --------------------------------------------------------- |
+| Corresponde a um registo existente | **Atualizar** o registo existente |
+| Não corresponde a nenhum registo | **Criar** um novo registo |
+| Está em falta no ficheiro | **Criar** um novo registo (com ID gerado automaticamente) |
- **Multi-Select fields are overwritten, not merged.**
+ **Os campos de seleção múltipla são substituídos, não combinados.**
- If a record has `Option A` and `Option B` selected, and you import `["Option C"]`, the record will only have `Option C` after import. The import replaces all previous selections—it does not add to them.
+ Se um registo tiver `Option A` e `Option B` selecionadas, e importar `[\"Option C\"]`, o registo terá apenas `Option C` após a importação. A importação substitui todas as seleções anteriores — não as adiciona.
- To keep existing values, include them all in your import: `["Option A","Option B","Option C"]`
+ Para manter os valores existentes, inclua-os todos na sua importação: `[\"Option A\",\"Option B\",\"Option C\"]`
-## Step 1: Export Your Current Data
+## Passo 1: Exportar os Seus Dados Atuais
-First, export the records you want to update:
+Primeiro, exporte os registos que pretende atualizar:
-1. Navigate to the object (People, Companies, etc.)
-2. **Add the columns you need** — click **Options → Fields** to show the fields you want to update
-3. **Filter if needed** — narrow down to only the records you want to update
-4. Click **⋮** → **Export view**
-5. Save the CSV file
+1. Navegue até ao objeto (Pessoas, Empresas, etc.)
+2. **Adicione as colunas de que precisa** — clique em **Options → Fields** para mostrar os campos que quer atualizar
+3. **Filtre se necessário** — restrinja apenas aos registos que pretende atualizar
+4. Clique em **⋮** → **Export view**
+5. Guarde o ficheiro CSV
-**Why export first?** The exported file has the correct format, includes unique identifiers, and maps automatically during import.
+**Porquê exportar primeiro?** O ficheiro exportado tem o formato correto, inclui identificadores únicos e é mapeado automaticamente durante a importação.
-### What Gets Exported
+### O Que É Exportado
-* All visible columns in your current view
-* The record's unique identifiers (`id`, `email`, `domain`)
-* Current field values you can modify
+* Todas as colunas visíveis na sua vista atual
+* Os identificadores únicos do registo (`id`, `email`, `domain`)
+* Valores atuais de campos que pode modificar
-## Step 2: Edit the CSV File
+## Passo 2: Editar o Ficheiro CSV
-Open the exported file in your spreadsheet application (Excel, Google Sheets, etc.):
+Abra o ficheiro exportado na sua aplicação de folha de cálculo (Excel, Google Sheets, etc.):
-1. **Keep the unique identifier column** — don't delete `id`, `email`, or `domain`
-2. **Update the values** in the columns you want to change
-3. **Remove columns you don't need to update** (optional, but cleaner)
-4. **Don't change unique identifier values** — or Twenty will create new records
+1. **Mantenha a coluna do identificador único** — não elimine `id`, `email` ou `domain`
+2. **Atualize os valores** nas colunas que quer alterar
+3. **Remova as colunas que não precisa de atualizar** (opcional, mas mais limpo)
+4. **Não altere os valores do identificador único** — caso contrário a Twenty criará novos registos
-### Example: Updating Job Titles
+### Exemplo: Atualizar Cargos
-**Exported file:**
+**Ficheiro exportado:**
```csv
id,email,firstName,lastName,jobTitle
@@ -70,7 +70,7 @@ id,email,firstName,lastName,jobTitle
550e8400-e29b-41d4-a716-446655440003,bob@acme.com,Bob,Johnson,Sales Rep
```
-**After your edits:**
+**Após as suas alterações:**
```csv
id,email,firstName,lastName,jobTitle
@@ -80,63 +80,63 @@ id,email,firstName,lastName,jobTitle
```
- **Don't change the unique identifier values.**
+ **Não altere os valores do identificador único.**
- If you change `john@acme.com` to `john.smith@acme.com`, Twenty will create a new record instead of updating the existing one.
+ Se alterar `john@acme.com` para `john.smith@acme.com`, a Twenty criará um novo registo em vez de atualizar o existente.
-## Step 3: Import the Updated File
+## Passo 3: Importar o Ficheiro Atualizado
-1. Navigate to the object
-2. Click **⋮** → **Import records**
-3. Upload your edited CSV file
-4. **Ensure the unique identifier is mapped** — verify `email`, `domain`, or `id` is mapped correctly
-5. Review the field mappings
-6. Check for errors
-7. Click **Confirm**
+1. Navegue até ao objeto
+2. Clique em **⋮** → **Import records**
+3. Carregue o seu ficheiro CSV editado
+4. **Garanta que o identificador único está mapeado** — verifique se `email`, `domain` ou `id` está mapeado corretamente
+5. Revise o mapeamento dos campos
+6. Verifique se há erros
+7. Clique em **Confirm**
-Twenty matches records by the unique identifier and updates them with new values.
+A Twenty faz a correspondência dos registos pelo identificador único e atualiza-os com novos valores.
-## Choosing the Right Unique Identifier
+## Escolher o Identificador Único Correto
-| Object | Recommended | Alternative | Notes |
-| ------------------ | ---------------- | ----------- | ---------------------------- |
-| **People** | `email` | `id` | Email is human-readable |
-| **Companies** | `domain` | `id` | Domain is human-readable |
-| **Custom objects** | Any unique field | `id` | Use your custom unique field |
+| Objeto | Recomendado | Alternativa | Notas |
+| -------------------------- | -------------------- | ----------- | ----------------------------------- |
+| **Pessoas** | `email` | `id` | O email é legível por humanos |
+| **Empresas** | `domínio` | `id` | O domínio é legível por humanos |
+| **Objetos personalizados** | Qualquer campo único | `id` | Use o seu campo único personalizado |
-**Use only ONE unique identifier.** Don't map both `email` AND `id`. This can cause confusion and errors.
+**Utilize apenas UM identificador único.** Não mapeie `email` E `id`. Isto pode causar confusão e erros.
-### Using Custom Unique Fields
+### Utilizar Campos Únicos Personalizados
-If you have a custom field marked as unique (like an external ID from another system):
+Se tiver um campo personalizado marcado como único (como um ID externo de outro sistema):
-1. Include that field in your export and import
-2. Map it during import
-3. Twenty will match on that field
+1. Inclua esse campo na exportação e importação
+2. Mapeie-o durante a importação
+3. A Twenty fará a correspondência com base nesse campo
-## Step 4: Verify the Updates
+## Passo 4: Verificar as Atualizações
-After importing:
+Após a importação:
-1. Open a few updated records
-2. Verify the changes were applied
-3. Check that no duplicate records were created
+1. Abra alguns registos atualizados
+2. Verifique se as alterações foram aplicadas
+3. Confirme que não foram criados registos duplicados
-## What About Fields Not in Your File?
+## E os Campos que Não Estão no seu Ficheiro?
-**Fields not included in your import file remain unchanged.**
+**Os campos não incluídos no seu ficheiro de importação permanecem inalterados.**
-| Your file includes... | Result |
-| ---------------------------- | ------------------------------------------------------ |
-| `email`, `jobTitle` | Only `jobTitle` is updated; other fields stay the same |
-| `email`, `jobTitle`, `phone` | `jobTitle` and `phone` are updated |
+| O seu ficheiro inclui... | Resultado |
+| ---------------------------- | ------------------------------------------------------------------ |
+| `email`, `jobTitle` | Apenas `jobTitle` é atualizado; os outros campos permanecem iguais |
+| `email`, `jobTitle`, `phone` | `jobTitle` e `phone` são atualizados |
-This means you only need to include the fields you want to change (plus the unique identifier).
+Isto significa que só precisa de incluir os campos que pretende alterar (além do identificador único).
-## Combining Updates and New Records
+## Combinar Atualizações e Novos Registos
-You can update existing records AND create new ones in the same import:
+Pode atualizar registos existentes e criar novos na mesma importação:
```csv
email,firstName,lastName,jobTitle
@@ -144,55 +144,55 @@ john@acme.com,John,Smith,Senior Manager ← Updates existing (email matches)
newperson@acme.com,New,Person,Analyst ← Creates new (email doesn't match)
```
-## Common Mistakes to Avoid
+## Erros Comuns a Evitar
-| Mistake | Problem | Result | Solution |
-| ------------------------------ | ------------------------------------------------------- | -------------------------------------- | ----------------------------------------- |
-| **Changing unique identifier** | Changed `john@acme.com` to `john.smith@acme.com` | Creates new record instead of updating | Keep unique identifiers unchanged |
-| **Multiple unique fields** | Mapping both `email` AND `id` | Potential matching conflicts | Map only ONE unique identifier |
-| **No unique identifier** | File only has `firstName`, `lastName`, `jobTitle` | All rows create new records | Always include `email`, `domain`, or `id` |
-| **Case mismatch** | File has `John@acme.com` but Twenty has `john@acme.com` | Creates new record | Export from Twenty to get exact values |
+| Erro | Problema | Resultado | Solução |
+| ---------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------- | ---------------------------------------------- |
+| **Alterar o identificador único** | Alterado de `john@acme.com` para `john.smith@acme.com` | Cria um novo registo em vez de atualizar | Mantenha os identificadores únicos inalterados |
+| **Vários campos únicos** | Mapear `email` E `id` | Potenciais conflitos de correspondência | Mapeie apenas UM identificador único |
+| **Sem identificador único** | O ficheiro tem apenas `firstName`, `lastName`, `jobTitle` | Todas as linhas criam novos registos | Inclua sempre `email`, `domain` ou `id` |
+| **Incompatibilidade de maiúsculas/minúsculas** | O ficheiro tem `John@acme.com`, mas a Twenty tem `john@acme.com` | Cria novo registo | Exporte da Twenty para obter os valores exatos |
-## FAQ
+## Perguntas Frequentes
-
- Records with unique identifiers that don't match existing records will be created as new records. This lets you update and create in the same import.
+
+ Registos com identificadores únicos que não correspondam a registos existentes serão criados como novos registos. Isto permite-lhe atualizar e criar na mesma importação.
-
- Yes, leave the cell empty in your CSV. The import will clear that field's value on the existing record.
+
+ Sim, deixe a célula vazia no seu CSV. A importação irá limpar o valor desse campo no registo existente.
-
- Fields not in your import file remain unchanged on existing records. Only fields you include are updated.
+
+ Os campos que não estão no ficheiro de importação permanecem inalterados nos registos existentes. Apenas os campos que incluir são atualizados.
-
- Yes! Include the relation's unique identifier (e.g., `companyDomain`) and map it to the relation field. The relation will be updated.
+
+ Sim! Inclua o identificador único da relação (por exemplo, `companyDomain`) e faça o mapeamento para o campo de relação. A relação será atualizada.
-
- During the import review step, Twenty shows you how many records will be updated vs. created based on unique identifier matches.
+
+ Durante a etapa de revisão da importação, a Twenty mostra quantos registos serão atualizados vs. criados com base nas correspondências do identificador único.
-
- There's no automatic undo. We recommend exporting your data as a backup before making bulk updates.
+
+ Não existe desfazer automático. Recomendamos exportar os seus dados como cópia de segurança antes de fazer atualizações em massa.
-## Best Practices
+## Melhores Práticas
-1. **Export first** — always start from an export to ensure correct format
-2. **Backup before updating** — export your data before making bulk changes
-3. **Test with a few records** — try updating 5-10 records first before doing a large batch
-4. **Use human-readable identifiers** — `email` and `domain` are easier to verify than `id`
-5. **Only include necessary columns** — fewer columns means less chance for errors
+1. **Exporte primeiro** — comece sempre a partir de uma exportação para garantir o formato correto
+2. **Faça uma cópia de segurança antes de atualizar** — exporte os seus dados antes de fazer alterações em massa
+3. **Teste com alguns registos** — tente atualizar primeiro 5–10 registos antes de fazer um lote grande
+4. **Utilize identificadores legíveis por humanos** — `email` e `domain` são mais fáceis de verificar do que `id`
+5. **Inclua apenas as colunas necessárias** — menos colunas significa menor probabilidade de erros
-## Troubleshooting
+## Resolução de Problemas
-Having issues? Check:
+Está a ter problemas? Consulte:
-* [How to Fix Import Errors](/l/pt/user-guide/data-migration/how-tos/fix-import-errors)
-* [Uniqueness Constraints](/l/pt/user-guide/data-migration/capabilities/uniqueness-constraints)
-* [Field Mapping Reference](/l/pt/user-guide/data-migration/capabilities/field-mapping)
+* [Como Corrigir Erros de Importação](/l/pt/user-guide/data-migration/how-tos/fix-import-errors)
+* [Restrições de Unicidade](/l/pt/user-guide/data-migration/capabilities/uniqueness-constraints)
+* [Referência de Mapeamento de Campos](/l/pt/user-guide/data-migration/capabilities/field-mapping)
diff --git a/packages/twenty-docs/l/pt/user-guide/data-migration/overview.mdx b/packages/twenty-docs/l/pt/user-guide/data-migration/overview.mdx
index 18c2899f98..51a157265d 100644
--- a/packages/twenty-docs/l/pt/user-guide/data-migration/overview.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/data-migration/overview.mdx
@@ -1,89 +1,89 @@
---
-title: Data Migration
-description: Import and export your CRM data via CSV files or API.
+title: Migração de dados
+description: Importe e exporte os seus dados de CRM através de ficheiros CSV ou da API.
image: /images/user-guide/import-export-data/cloud.png
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-
+
-## Import Methods
+## Métodos de importação
-Twenty supports two main methods for importing data:
+A Twenty suporta dois métodos principais para importar dados:
-| Method | Best For | Volume Limit |
-| -------------- | ------------------------------------ | ----------------------- |
-| **CSV Import** | Standard migrations, regular updates | 10,000 records per file |
-| **API Import** | Large-scale migrations, automation | Unlimited |
+| Método | Melhor para | Limite de volume |
+| ---------------------- | ----------------------------------------- | ---------------------------- |
+| **Importação de CSV** | Migrações padrão, atualizações regulares | 10 000 registos por ficheiro |
+| **Importação via API** | Migrações em grande escala, automatização | Sem limite |
-For very large datasets (hundreds of thousands of records), use the API. Our [implementation partners](/l/pt/user-guide/getting-started/capabilities/implementation-services) can help run these scripts if needed.
+Para conjuntos de dados muito grandes (centenas de milhares de registos), utilize a API. Os nossos [parceiros de implementação](/l/pt/user-guide/getting-started/capabilities/implementation-services) podem ajudar a executar estes scripts, se necessário.
-## CSV Import Basics
+## Noções básicas da importação de CSV
-You can import data for any object using CSV, XLSX, or XLS files. Each file should contain **only one type of object** (e.g., only People records).
+Pode importar dados para qualquer objeto utilizando ficheiros CSV, XLSX ou XLS. Cada ficheiro deve conter **apenas um tipo de objeto** (por exemplo, apenas registos de Pessoas).
-**Fields must exist before import.** Uploading a CSV creates records but does not create fields. If you need custom fields, create them first under **Settings → Data Model**.
+**Os campos têm de existir antes da importação.** Carregar um CSV cria registos, mas não cria campos. Se precisar de campos personalizados, crie-os primeiro em **Definições → Modelo de dados**.
-### Steps
+### Passos
-1. Navigate to the object where you want to import data
-2. Click the **⋮** icon on the top right (this is the Command Menu) and click on **Import records**
-3. Download the template file to ensure your data is in the expected format
-4. Upload your formatted CSV file
-5. Map your columns to Twenty fields
-6. Review errors (highlighted in yellow) and fix them, directly editing in the UI
-7. Confirm the import
+1. Navegue até ao objeto onde pretende importar dados
+2. Clique no ícone **⋮** no canto superior direito (este é o Menu de Comandos) e clique em **Importar registos**
+3. Descarregue o ficheiro de modelo para garantir que os seus dados estão no formato esperado
+4. Carregue o seu ficheiro CSV formatado
+5. Mapeie as suas colunas para os campos da Twenty
+6. Revise os erros (realçados a amarelo) e corrija-os, editando diretamente na interface
+7. Confirme a importação
-### Importing relations between objects
+### Importar relações entre objetos
-You can import relations between objects using the csv import function. You need to reference the related object using a unique field from this object: the `id`, the `email` for People and Workspace Members, the `domain` for companies, any other field set as unique in the data model for any other object.
+Pode importar relações entre objetos utilizando a função de importação de CSV. Tem de referenciar o objeto relacionado utilizando um campo único desse objeto: o `id`, o `email` para Pessoas e Membros do espaço de trabalho, o `domain` para empresas, ou qualquer outro campo definido como único no modelo de dados para qualquer outro objeto.
-**Deleted records count toward uniqueness.** Soft-deleted records (visible under Command Menu → See deleted records) are included in uniqueness checks. If you import a record with the same unique value as a deleted record, the deleted record will be restored.
+**Os registos eliminados contam para a unicidade.** Os registos eliminados logicamente (visíveis no Menu de Comandos → Ver registos eliminados) são incluídos nas verificações de unicidade. Se importar um registo com o mesmo valor único que um registo eliminado, o registo eliminado será restaurado.
- **Import Order Matters!**
+ **A ordem de importação é importante!**
- When importing related objects, upload files in this order:
+ Ao importar objetos relacionados, carregue os ficheiros por esta ordem:
- 1. **Companies** first (the "one" side of relationships)
- 2. **People** second (linked to companies via companyId)
- 3. **Opportunities** third (linked to companies/people)
- 4. **Custom objects** with relations last
+ 1. **Empresas** primeiro (o lado "um" das relações)
+ 2. **Pessoas** em segundo (ligadas às empresas via companyId)
+ 3. **Oportunidades** em terceiro (ligadas a empresas/pessoas)
+ 4. **Objetos personalizados** com relações por último
- Why? The "one" side of a one-to-many relationship must exist before you can reference it. For example, the Company record must exist before you import a Person with that company's ID.
+ Porquê? O lado "um" de uma relação um-para-muitos tem de existir antes de o poder referenciar. Por exemplo, o registo da Empresa tem de existir antes de importar uma Pessoa com o ID dessa empresa.
-Please refer to [this article](/l/pt/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv) for a step-by-step guide on how to proceed.
+Consulte [este artigo](/l/pt/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv) para um guia passo a passo sobre como proceder.
-## Export Data
+## Exportar Dados
-Export your workspace data for backups, reporting, or migration.
+Exporte os dados do seu espaço de trabalho para cópias de segurança, relatórios ou migração.
-### Steps
+### Passos
-1. Navigate to the object you want to export
-2. Configure the view with the columns you need
-3. Click **⋮** → **Export view**
-4. Save the CSV file
+1. Navegue até ao objeto que pretende exportar
+2. Configure a visualização com as colunas de que necessita
+3. Clique em **⋮** → **Exportar visualização**
+4. Guarde o ficheiro CSV
-**Only visible columns are exported.** The CSV file will only contain the columns displayed in your current view. Add or hide columns before exporting to control what data is included.
+**Apenas as colunas visíveis são exportadas.** O ficheiro CSV conterá apenas as colunas apresentadas na sua visualização atual. Adicione ou oculte colunas antes de exportar para controlar que dados são incluídos.
-**Export limits**: Up to 20,000 records per export.
+**Limites de exportação**: Até 20 000 registos por exportação.
-## Permissions
+## Permissões
-Data import and export require specific permissions:
+A importação e a exportação de dados requerem permissões específicas:
-* **Import**: Requires "Import CSV" permission
-* **Export**: Requires "Export CSV" permission
+* **Importar**: Requer a permissão "Import CSV"
+* **Exportar**: Requer a permissão "Export CSV"
-Contact your workspace admin if you don't have these permissions.
+Contacte o administrador do seu espaço de trabalho se não tiver estas permissões.
-## Next Steps
+## Próximos Passos
-* [Prepare your CSV files](/l/pt/user-guide/data-migration/how-tos/prepare-your-csv-files)
-* [Import relations between objects](/l/pt/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv)
-* [Import via API for large datasets](/l/pt/user-guide/data-migration/how-tos/import-data-via-api)
+* [Prepare os seus ficheiros CSV](/l/pt/user-guide/data-migration/how-tos/prepare-your-csv-files)
+* [Importar relações entre objetos](/l/pt/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv)
+* [Importar via API para conjuntos de dados de grande dimensão](/l/pt/user-guide/data-migration/how-tos/import-data-via-api)
diff --git a/packages/twenty-docs/l/pt/user-guide/data-model/capabilities/fields.mdx b/packages/twenty-docs/l/pt/user-guide/data-model/capabilities/fields.mdx
index ef477158c2..faf37537f5 100644
--- a/packages/twenty-docs/l/pt/user-guide/data-model/capabilities/fields.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/data-model/capabilities/fields.mdx
@@ -1,122 +1,122 @@
---
-title: Fields
-description: Understand the role of fields and how to manage them.
+title: Campos
+description: Compreenda o papel dos campos e como geri-los.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-## About Fields
+## Sobre Campos
-Fields are like columns in a spreadsheet. They store different types of data like text, numbers, or dates. Fields can be standard (built-in) or custom (the ones you create).
+Os campos são como colunas em uma planilha. Eles armazenam diferentes tipos de dados como texto, números ou datas. Os campos podem ser padrão (incorporados) ou personalizados (os que você cria).
-### Standard Fields
+### Campos Padrão
-Standard fields come built-in with Twenty to handle common business needs.
+Campos padrão vêm incorporados no Twenty para atender necessidades comuns de negócios.
-For example, `First Name` and `Last Name` are standard fields in the `People` object. They store text data for individual names.
+Por exemplo, `Nome` e `Sobrenome` são campos padrão no objeto `Pessoas`. Eles armazenam dados de texto para nomes individuais.
-You cannot delete standard fields, but you can deactivate them if you don't need them.
+Você não pode excluir campos padrão, mas pode desativá-los se não precisar deles.
-You can also customize the options of the standard `SELECT` type fields, for example the options for the `Stage` on Opportunities.
+Também pode personalizar as opções dos campos padrão do tipo `SELECT`, por exemplo, as opções para o `Stage` em Oportunidades.
-### Custom Fields
+### Campos Personalizados
-Custom fields can be added to any object. You can store text, numbers, dates, dropdown selections, and more. Use custom fields to track information that's specific to your business.
+Campos personalizados podem ser adicionados a qualquer objeto. Você pode armazenar texto, números, datas, seleções suspensas e mais. Use campos personalizados para rastrear informações específicas do seu negócio.
-For instance, a custom field for SpaceX could be `Rocket Active Status`, indicating if a rocket is operational.
+Por exemplo, um campo personalizado para a SpaceX pode ser `Status Ativo do Foguete`, indicando se um foguete está operacional.
-## Field Types
+## Tipos de campo
-Twenty supports various field types:
+A Twenty suporta vários tipos de campo:
-| Type | Description | Example |
-| ------------ | ----------------------------------------------------------------- | ------------------ |
-| Address | Structured address with street, city, state, country, postal code | Office Address |
-| Array | List of text values | Tags |
-| Boolean | True/false checkbox | Is Active |
-| Currency | Monetary value with currency code | Deal Amount (USD) |
-| Date | Date values | Close Date |
-| Date & Time | Date with time | Meeting Time |
-| Domain | Website domain (used for Companies) | acme.com |
-| Email | Email addresses (with primary + additional) | Contact Email |
-| JSON | Structured JSON data | Custom metadata |
-| Links | URLs with labels (primary + secondary) | Website, LinkedIn |
-| Long Text | Multi-line text | Description, Notes |
-| Multi-Select | Multiple choices from a predefined list | Tags, Categories |
-| Number | Numeric values (integers or decimals) | Quantity, Score |
-| Phone | Phone numbers with country code | Work Phone |
-| Rating | Star rating (1-5) | Priority, Score |
-| Relation | Links to records in other objects | Company → People |
-| Select | Single choice from a predefined list | Stage, Status |
-| Text | Single line of text | Name, Title |
+| Tipo | Descrição | Exemplo |
+| ---------------- | ----------------------------------------------------------------- | ------------------------ |
+| Endereço | Endereço estruturado com rua, cidade, estado, país, código postal | Endereço do escritório |
+| Matriz | Lista de valores de texto | Etiquetas |
+| Booleano | Caixa de seleção verdadeiro/falso | Está ativo |
+| Moeda | Valor monetário com código de moeda | Valor do negócio (USD) |
+| Data | Valores de data | Data de Fecho |
+| Data e hora | Data com hora | Hora da reunião |
+| Domínio | Domínio do website (usado para Empresas) | acme.com |
+| E-mail | Endereços de e-mail (com principal + adicionais) | E-mail do contacto |
+| JSON | Dados JSON estruturados | Metadados personalizados |
+| Links | URLs com rótulos (principal + secundário) | Website, LinkedIn |
+| Texto longo | Texto com várias linhas | Descrição, Notas |
+| Seleção Múltipla | Várias escolhas de uma lista predefinida | Etiquetas, Categorias |
+| Número | Valores numéricos (inteiros ou decimais) | Quantidade, Pontuação |
+| Telefone | Números de telefone com código do país | Telefone do trabalho |
+| Avaliação | Classificação por estrelas (1-5) | Prioridade, Pontuação |
+| Relação | Ligações para registos noutros objetos | Empresa → Pessoas |
+| Selecionar | Escolha única de uma lista predefinida | Fase, Estado |
+| Texto | Uma única linha de texto | Nome, Título |
-## Create a Custom Field
+## Criar um Campo Personalizado
-To add a custom field to any object, follow these steps:
+Para adicionar um campo personalizado a qualquer objeto, siga estas etapas:
-1. Go to `Settings` in the left sidebar.
-2. Go to `Data Model`, then select the object you wish to customize.
-3. Proceed by clicking on `Add Field`.
-4. Choose a field name and type that suits your requirements. Consider adding a field description for better understanding.
+1. Acesse `Configurações` na barra lateral esquerda.
+2. Acesse `Modelo de Dados`, depois selecione o objeto que você deseja personalizar.
+3. Prossiga clicando em `Adicionar Campo`.
+4. Escolha um nome e tipo de campo que atenda aos seus requisitos. Considere adicionar uma descrição do campo para um melhor entendimento.
-Your newly created field is now available within the application's fields. To display it on a specific view, click on the options menu, then select `Fields`.
+Seu novo campo agora está disponível dentro dos campos do aplicativo. Para exibi-lo em uma vista específica, clique no menu de opções e selecione `Campos`.
-
+
-**Quick way:** Click the **+** button at the top right of any object table, then select `Customize fields`. This takes you directly to the Data Model settings.
+**Modo rápido:** Clique no botão **+** no canto superior direito de qualquer tabela de objeto e selecione `Personalizar campos`. Isso leva você diretamente para as configurações do Modelo de Dados.
-## Deactivate a Field
+## Desativar um campo
-You can deactivate a field to hide it from the app without losing your data. Think of it as hiding the field rather than deleting it.
+Você pode desativar um campo para ocultá-lo no aplicativo sem perder seus dados. Pense nisso como esconder o campo em vez de excluí-lo.
-Here's how you can do it:
+Veja como você pode fazer isso:
-1. Find the field you want to deactivate in your object settings.
+1. Encontre o campo que deseja desativar nas configurações do seu objeto.
-2. Click the three dots `⋮` next to the field to open the menu.
+2. Clique nos três pontos `⋮` ao lado do campo para abrir o menu.
-3. Select `Deactivate` from the dropdown.
+3. Selecione `Desativar` no menu suspenso.
-What happens when you deactivate a field?
+O que acontece quando você desativa um campo?
-1. **In the app:** The field disappears and you can't add new values to it.
+1. **No aplicativo:** O campo desaparece e você não pode adicionar novos valores a ele.
-2. **Existing relationships:** If it's a relation field, existing connections stay but you can't create new ones.
+2. **Relações existentes:** Se for um campo de relação, conexões existentes permanecem, mas não é possível criar novas.
-3. **API access:** You can still access the field and its data through the API.
+3. **Acesso API:** Você ainda pode acessar o campo e seus dados através da API.
-You can reactivate Standard and Custom Fields or have the option to permanently delete them.
+Você pode reativar Campos Padrão e Personalizados ou ter a opção de excluí-los permanentemente.
-## Make Fields Unique
+## Tornar Campos Únicos
-Make a field unique to ensure distinct records cannot have the same value. For example, email addresses are unique for each person.
+Torne um campo único para garantir que registros distintos não possam ter o mesmo valor. Por exemplo, endereços de e-mail são únicos para cada pessoa.
-If you get an error when setting uniqueness, check for duplicate values in your data (including deleted records).
+Se você receber um erro ao definir exclusividade, verifique se há valores duplicados nos seus dados (incluindo registros excluídos).
-## Field Configuration Best Practices
+## Melhores Práticas de Configuração de Campos
-### Naming Conventions and Limitations
+### Convenções de Nomeação e Limitações
-* **Singular and plural named must be distinct**: Our GraphQL API needs distinct names for mutations
-* **Protected field names**: some names are reserved for system usage (e.g., `Type`, `Application`)
+* **Os nomes singular e plural devem ser distintos**: Nosso API GraphQL precisa de nomes distintos para mutações.
+* **Nomes de campo protegidos**: alguns nomes são reservados para utilização do sistema (por exemplo, `Type`, `Application`)
-### Currency and Phone Fields
+### Campos de Moeda e Telefone
-* **Default currency**: can be configured via the data model
-* **Default country codes**: can be configured for phone fields via the data model
+* **Moeda padrão**: pode ser configurada através do modelo de dados.
+* **Códigos de país padrão**: podem ser configurados para campos de telefone através do modelo de dados.
-### Select Fields
+### Campos de Seleção
-* **A default option can be selected** for each Select field
+* **Uma opção padrão pode ser selecionada** para cada campo de Seleção.
-### Record Text Fields
+### Campos de Texto do Registro
-* **Each object has one main display field**: This field appears in the leftmost column and represents the record when linked to other objects. It must be a text field. For example, People uses `Name` as the main field, so when you link a person to a company, you'll see their name in the company's view.
+* **Cada objeto tem um campo principal de exibição**: Este campo aparece na coluna mais à esquerda e representa o registro quando vinculado a outros objetos. Ele deve ser um campo de texto. Por exemplo, `Pessoas` usa `Nome` como campo principal, então quando você vincula uma pessoa a uma empresa, verá seu nome na visão da empresa.
diff --git a/packages/twenty-docs/l/pt/user-guide/data-model/capabilities/objects.mdx b/packages/twenty-docs/l/pt/user-guide/data-model/capabilities/objects.mdx
index f2f1105277..ce2c2f316f 100644
--- a/packages/twenty-docs/l/pt/user-guide/data-model/capabilities/objects.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/data-model/capabilities/objects.mdx
@@ -1,91 +1,91 @@
---
-title: Objects
-description: Learn about standard and custom objects in Twenty.
+title: Objetos
+description: Saiba mais sobre objetos padrão e personalizados no Twenty.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-## Standard Objects
+## Objetos Padrão
-Standard objects are predefined entities in your workspace to help you get started. They're part of a shared data model accessible to all users of Twenty. You can use them as-is, customize them or deactivate them.
+Objetos padrão são entidades predefinidas no seu espaço de trabalho para ajudar você a começar. Eles fazem parte de um modelo de dados compartilhado acessível a todos os usuários do Twenty. Você pode usá-los como estão, personalizá-los ou desativá-los.
-### People
+### Pessoas
-The `People` object stores your contacts. It includes contact details and interaction history, so you can see all your customer interactions in one place.
+O objeto `Pessoas` armazena seus contatos. Inclui detalhes de contato e histórico de interação, para que você possa ver todas as interações com seus clientes em um só lugar.
-### Company
+### Empresa
-The `Companies` object stores your business accounts. It includes details like industry, size and location. Companies connect to both `People` and `Opportunities` objects.
+O objeto `Empresas` armazena suas contas comerciais. Inclui detalhes como setor, tamanho e localização. Empresas conectam-se tanto aos objetos `Pessoas` quanto `Oportunidades`.
-### Opportunities
+### Oportunidades
-The `Opportunities` object stores deal-related data. It tracks the progression of potential sales, from prospecting to closure, recording stages, deal sizes, associated account, and expected close date. You can view your sales pipeline in a kanban layout.
+O objeto `Oportunidades` armazena dados relacionados a negócios. Acompanha o progresso das vendas potenciais, da prospecção ao fechamento, registrando etapas, tamanhos de negócios, conta associada e data prevista de fechamento. Você pode visualizar seu pipeline de vendas em um layout kanban.
-### Notes
+### Notas
-The `Notes` object stores free-form notes that can be attached to People, Companies, Opportunities, and other records. Use notes to capture meeting summaries, important details, or any contextual information.
+O objeto `Notes` armazena anotações em formato livre que podem ser anexadas a Pessoas, Empresas, Oportunidades e outros registros. Use anotações para registrar resumos de reuniões, detalhes importantes ou qualquer informação contextual.
-### Tasks
+### Tarefas
-The `Tasks` object stores to-dos and action items. Tasks can be linked to People, Companies, Opportunities, and other records. Track due dates, assignees, and completion status to stay on top of your follow-ups.
+O objeto `Tasks` armazena tarefas e itens de ação. As tarefas podem ser vinculadas a Pessoas, Empresas, Oportunidades e outros registros. Acompanhe prazos, responsáveis e status de conclusão para manter o controle dos seus acompanhamentos.
-## Custom Objects
+## Objetos personalizados
-Custom objects let you store information that's unique to your organization and that standard objects can't handle. For example, if you're SpaceX, you may want to create a custom object for Rockets and Launches.
+Objetos personalizados permitem armazenar informações únicas para sua organização que os objetos padrão não podem acomodar. Por exemplo, se você é a SpaceX, pode querer criar um objeto personalizado para Foguetes e Lançamentos.
-### Creating a New Custom Object
+### Criando um novo objeto personalizado
-To create a new custom object:
+Para criar um novo objeto personalizado:
-1. Go to Settings in the sidebar on the left.
-2. Under Workspace, go to Data model. Here you'll be able to see an overview of all your existing Standard and Custom objects (both active and disabled).
+1. Vá para Configurações na barra lateral esquerda.
+2. Em Espaço de Trabalho, vá para Modelo de Dados. Aqui você poderá ver uma visão geral de todos os seus objetos Padrão e Personalizados (ativos e desativados).
-
+
-3. Click on `+ New object` at the top. Enter the name (both singular and plural), choose an icon, and add a description for your custom object and hit Save (at the top right). Using Listing as an example of custom object, the singular would be "listing" and the plural would be "listings" along with a description like "Listings that hosts created to showcase their property."
+3. Clique em `+ Novo objeto` no topo. Digite o nome (tanto no singular quanto no plural), escolha um ícone e adicione uma descrição para o seu objeto personalizado e clique em Salvar (no canto superior direito). Usando Listagem como exemplo de objeto personalizado, o singular seria "listagem" e o plural seria "listagens", juntamente com uma descrição como "Listagens que anfitriões criaram para exibir sua propriedade."
-4. Your custom object is now created and will appear in your sidebar. You can start adding records to it right away.
+4. Seu objeto personalizado foi criado e aparecerá na sua barra lateral. Você já pode começar a adicionar registros a ele.
-## Managing Objects
+## Gerenciando objetos
-### Deactivating Objects
+### Desativando objetos
-If you don't need a standard or custom object:
+Se você não precisar de um objeto padrão ou personalizado:
-1. Go to Settings → Data Model
-2. Find the object you want to deactivate
-3. Click the toggle to deactivate it
-4. The object will be hidden from your workspace but data is preserved
+1. Vá para Configurações → Modelo de Dados
+2. Encontre o objeto que você deseja desativar
+3. Clique no botão de alternância para desativá-lo
+4. O objeto ficará oculto no seu espaço de trabalho, mas os dados serão preservados
-### Reactivating Objects
+### Reativando objetos
-To bring back a deactivated object:
+Para restaurar um objeto desativado:
-1. Go to Settings → Data Model
-2. Look for deactivated objects (they'll be grayed out)
-3. Click the toggle to reactivate it
-4. The object and all its data will be restored
+1. Vá para Configurações → Modelo de Dados
+2. Procure por objetos desativados (eles aparecerão acinzentados)
+3. Clique no botão de alternância para reativá-lo
+4. O objeto e todos os seus dados serão restaurados
-## Best Practices
+## Melhores Práticas
-### When to Create Custom Objects
+### Quando criar objetos personalizados
-* **Unique business entities**: Things specific to your industry or process
-* **Complex relationships**: When you need to track connections between multiple entities
-* **Scalable data**: When you might have many instances of something
+* **Entidades de negócio exclusivas**: Itens específicos do seu setor ou processo
+* **Relações complexas**: Quando você precisa acompanhar conexões entre várias entidades
+* **Dados escaláveis**: Quando você pode ter muitas instâncias de algo
-### When to Use Fields Instead
+### Quando usar campos em vez de objetos
-* **Simple attributes**: Properties that describe existing objects
-* **Categories or labels**: Ways to classify existing records
-* **Single values**: Information that doesn't need its own lifecycle
+* **Atributos simples**: Propriedades que descrevem objetos existentes
+* **Categorias ou rótulos**: Formas de classificar registros existentes
+* **Valores únicos**: Informações que não precisam de um ciclo de vida próprio
-### Object Naming
+### Nomenclatura de objetos
-* **Use clear, descriptive names**: Make it obvious what the object represents
-* **Follow conventions**: Use singular for the object name, plural for the collection
-* **Consider your team**: Choose names everyone will understand
+* **Use nomes claros e descritivos**: Torne óbvio o que o objeto representa
+* **Siga convenções**: Use singular para o nome do objeto e plural para a coleção
+* **Considere sua equipe**: Escolha nomes que todos entendam
diff --git a/packages/twenty-docs/l/pt/user-guide/data-model/capabilities/relation-fields.mdx b/packages/twenty-docs/l/pt/user-guide/data-model/capabilities/relation-fields.mdx
index ddcd3c709e..a81e2438fc 100644
--- a/packages/twenty-docs/l/pt/user-guide/data-model/capabilities/relation-fields.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/data-model/capabilities/relation-fields.mdx
@@ -1,92 +1,96 @@
---
-title: Relation Fields
-description: Connect records across different objects using relation fields.
+title: Campos de Relação
+description: Ligue registos entre diferentes objetos usando campos de relação.
---
-## Types of Relations
+## Tipos de Relações
-### One-to-Many
+### Um-para-Muitos
-One record in Object A can be linked to many records in Object B.
+Um registo no Objeto A pode estar ligado a muitos registos no Objeto B.
-**Example:** One Company can have many People (employees).
+**Exemplo:** Uma Empresa pode ter muitas Pessoas (colaboradores).
-### Many-to-One
+### Muitos-para-Um
-Many records in Object A can be linked to one record in Object B.
+Muitos registos no Objeto A podem estar ligados a um registo no Objeto B.
-**Example:** Many People can belong to one Company.
+**Exemplo:** Muitas Pessoas podem pertencer a uma Empresa.
-### Relations to Multiple Object Types
+### Relações com Múltiplos Tipos de Objeto
-Some objects can link to multiple object types on one side of the relation.
+Alguns objetos podem ligar-se a vários tipos de objeto de um dos lados da relação.
-**Example:** A Note can be attached to one Person AND one Company AND one Opportunity simultaneously. The Note is on the "many" side, connecting to multiple "one" sides.
+**Exemplo:** Uma Nota pode ser anexada a uma Pessoa E a uma Empresa E a uma Oportunidade em simultâneo. A Nota está no lado "muitos", ligando-se a vários lados "um".
-Similarly, a Project (on the "one" side) could receive links from multiple People, multiple Companies, and multiple Notes.
+De forma semelhante, um Projeto (do lado "um") pode receber ligações de várias Pessoas, várias Empresas e várias Notas.
- **Import/Export limitation**: Relations pointing to multiple object types are not yet supported for CSV import/export. This is on our roadmap.
+ **Limitação de Importação/Exportação**: Relações que apontam para vários tipos de objeto ainda não são suportadas para importação/exportação CSV. Isto está no nosso roadmap.
-### Many-to-Many
+### Muitos-para-Muitos
-Many records in Object A can be linked to many records in Object B.
+Muitos registos no Objeto A podem estar ligados a muitos registos no Objeto B.
-**Example:** Many People can be linked to many Projects, and vice versa.
+**Exemplo:** Muitas Pessoas podem estar ligadas a muitos Projetos e vice-versa.
+
+As relações muitos-para-muitos utilizam um padrão de **objeto de junção**: um objeto intermediário que conecta ambos os lados. Com o recurso de relação de junção, Twenty exibe diretamente os registros finais vinculados, ocultando o objeto intermediário da IU.
+
+
- **Many-to-Many is not yet supported.**
-
- This relation type is planned for H1 2026. As a workaround, create an intermediate "junction" object (e.g., "Project Assignments") that has Many-to-One relations to both objects.
+ **Recurso de laboratório**: As relações de junção devem ser ativadas em **Configurações → Atualizações → Lab** antes do uso.
-## Creating a Relation Field
+Consulte [Como criar relações muitos-para-muitos](/l/pt/user-guide/data-model/how-tos/create-many-to-many-relations) para um guia passo a passo completo.
-1. Go to **Settings → Data Model**
-2. Select the object where you want to add the relation
-3. Click **+ Add Field**
-4. Select **Relation** as the field type
-5. Choose the target object(s) to relate to
-6. Configure the relation settings:
- * **Field name on source object**: The name of the relation field on the object you're editing
- * **Field name on destination object**: The name of the relation field that will appear on the target object
- * Relation type (one-to-many, many-to-one)
-7. Click **Save**
+## Criar um Campo de Relação
-## Standard Relations
+1. Vá a **Definições → Modelo de Dados**
+2. Selecione o objeto onde pretende adicionar a relação
+3. Clique em **+ Adicionar campo**
+4. Selecione **Relação** como o tipo de campo
+5. Escolha o(s) objeto(s) de destino a relacionar
+6. Configure as definições da relação:
+ * **Nome do campo no objeto de origem**: O nome do campo de relação no objeto que está a editar
+ * **Nome do campo no objeto de destino**: O nome do campo de relação que aparecerá no objeto de destino
+ * Tipo de relação (um-para-muitos, muitos-para-um)
+7. Clique em **Salvar**
-Twenty comes with pre-built relations between standard objects:
+## Relações Padrão
-| From Object | To Object | Relation Type |
-| ------------- | --------- | ------------- |
-| People | Companies | Many-to-One |
-| Opportunities | Companies | Many-to-One |
-| Opportunities | People | Many-to-One |
+O Twenty inclui relações pré-criadas entre objetos padrão:
-## Best Practices
+| Objeto de Origem | Objeto de Destino | Tipo de Relação |
+| ---------------- | ----------------- | --------------- |
+| Pessoas | Empresas | Muitos-para-Um |
+| Oportunidades | Empresas | Muitos-para-Um |
+| Oportunidades | Pessoas | Muitos-para-Um |
-### Planning Relations
+## Melhores Práticas
-* **Map your data model**: Plan relations before creating them
-* **Consider direction**: Think about which object "owns" the relationship
-* **Avoid circular dependencies**: Keep your data model clean
+### Planear Relações
-### Naming Relations
+* **Mapeie o seu modelo de dados**: Planeie as relações antes de as criar
+* **Considere a direção**: Pense em que objeto "detém" a relação
+* **Evite dependências circulares**: Mantenha o seu modelo de dados limpo
-* **Use clear names**: Make it obvious what the relation represents
-* **Be consistent**: Use similar naming patterns across relations
-* **Consider both sides**: Name both sides of the relation appropriately
+### Nomear Relações
-### Performance
+* **Use nomes claros**: Torne óbvio o que a relação representa
+* **Seja consistente**: Utilize padrões de nomenclatura semelhantes em todas as relações
+* **Considere ambos os lados**: Nomeie adequadamente ambos os lados da relação
-* **Don't over-relate**: Too many relations can slow down your workspace
+### Desempenho
-## Limitations
+* **Não exagere nas relações**: Relações em excesso podem abrandar o seu espaço de trabalho
-* **Deleting relations** removes the link but not the related records
-* **Circular relations** should be avoided for data integrity
+## Limitações
+
+* **Eliminar relações** remove a ligação mas não os registos relacionados
+* **Relações circulares** devem ser evitadas para garantir a integridade dos dados
diff --git a/packages/twenty-docs/l/pt/user-guide/data-model/how-tos/create-custom-fields.mdx b/packages/twenty-docs/l/pt/user-guide/data-model/how-tos/create-custom-fields.mdx
index 6c21eab51a..ecf4790e87 100644
--- a/packages/twenty-docs/l/pt/user-guide/data-model/how-tos/create-custom-fields.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/data-model/how-tos/create-custom-fields.mdx
@@ -1,72 +1,72 @@
---
-title: Create Custom Fields
-description: Step-by-step guide to adding custom fields to any object.
+title: Criar Campos Personalizados
+description: Guia passo a passo para adicionar campos personalizados a qualquer objeto.
---
-Custom fields let you capture information specific to your business. Add them to any object—standard or custom.
+Os campos personalizados permitem capturar informações específicas do seu negócio. Adicione-os a qualquer objeto — padrão ou personalizado.
-## Steps
+## Etapas
-1. Go to **Settings → Data Model**
-2. Select the object you want to add a field to
-3. Click **+ Add Field**
-4. Choose a **field type** (see [Fields](/l/pt/user-guide/data-model/capabilities/fields) for all types)
-5. Enter the **field name** and optional description
-6. Configure field-specific settings (see below)
-7. Click **Save**
+1. Vá a **Definições → Modelo de Dados**
+2. Selecione o objeto ao qual pretende adicionar um campo
+3. Clique em **+ Adicionar campo**
+4. Escolha um **tipo de campo** (consulte [Campos](/l/pt/user-guide/data-model/capabilities/fields) para ver todos os tipos)
+5. Introduza o **nome do campo** e uma descrição opcional
+6. Configure definições específicas do campo (ver abaixo)
+7. Clique em **Salvar**
-**Quick method:** Click the **+** at the end of column headers in any table view → **Customize fields**.
+**Método rápido:** Clique em **+** no final dos cabeçalhos de coluna em qualquer visualização de tabela → **Personalizar campos**.
-## Show the Field in Views
+## Mostrar o campo nas visualizações
-New fields aren't automatically visible. To display:
+Novos campos não são visíveis automaticamente. Para exibir:
-1. Open the object's table view
-2. Click **Options → Fields**
-3. Click the **eye icon** next to your field to show it
-4. Drag to reorder
+1. Abra a visualização de tabela do objeto
+2. Clique em **Opções → Campos**
+3. Clique no **ícone de olho** ao lado do seu campo para mostrá-lo
+4. Arraste para reordenar
-## Configuration Options
+## Opções de Configuração
-### For Select / Multi-Select
+### Para Seleção / Seleção múltipla
-1. Click **+ Add option** to create choices
-2. Set a **default option** if desired
-3. Drag to reorder options
+1. Clique em **+ Adicionar opção** para criar opções
+2. Defina uma **opção predefinida** se desejar
+3. Arraste para reordenar as opções
- **Use API names for imports.** Enable **Advanced mode** in Settings to see API names. See [Field Mapping](/l/pt/user-guide/data-migration/capabilities/field-mapping).
+ **Use nomes de API para importações.** Ative o **modo Avançado** em Definições para ver os nomes de API. Consulte [Mapeamento de Campos](/l/pt/user-guide/data-migration/capabilities/field-mapping).
-### For Currency Fields
+### Para Campos de Moeda
-Set the **default currency** (USD, EUR, etc.) for new records.
+Defina a **moeda predefinida** (USD, EUR, etc.) para novos registos.
-### For Phone Fields
+### Para Campos de Telefone
-Set the **default country code** to pre-fill for new phone numbers.
+Defina o **código de país predefinido** para preencher automaticamente novos números de telefone.
-### Making a Field Unique
+### Tornar um Campo Único
-Toggle **Unique** to prevent duplicate values across records.
+Ative a opção **Único** para impedir valores duplicados entre registos.
- If duplicates exist (including in deleted records), you'll get an error. Clean up duplicates first.
+ Se existirem duplicados (incluindo em registos eliminados), ocorrerá um erro. Elimine os duplicados primeiro.
-### Setting Default Values
+### Definir Valores Predefinidos
-For Select fields, you can choose which option is pre-selected for new records. For Checkbox fields, set whether it's checked or unchecked by default.
+Para campos de Seleção, pode escolher qual opção é pré-selecionada para novos registos. Para campos de Caixa de seleção, defina se fica marcado ou desmarcado por predefinição.
-## Deactivating a Field
+## Desativar um Campo
-1. Go to **Settings → Data Model**
-2. Find the field
-3. Click **⋮ → Deactivate**
+1. Vá a **Definições → Modelo de Dados**
+2. Localize o campo
+3. Clique em **⋮ → Desativar**
-Data is preserved. You can reactivate or permanently delete later.
+Os dados são preservados. Pode reativar ou eliminar permanentemente mais tarde.
-## Related
+## Relacionados
-* [Fields](/l/pt/user-guide/data-model/capabilities/fields) — all field types explained
-* [Data Model FAQ](/l/pt/user-guide/data-model/how-tos/data-model-faq) — common questions
+* [Campos](/l/pt/user-guide/data-model/capabilities/fields) — todos os tipos de campo explicados
+* [Perguntas frequentes sobre o modelo de dados](/l/pt/user-guide/data-model/how-tos/data-model-faq) — perguntas comuns
diff --git a/packages/twenty-docs/l/pt/user-guide/data-model/how-tos/create-custom-objects.mdx b/packages/twenty-docs/l/pt/user-guide/data-model/how-tos/create-custom-objects.mdx
index 58c9fb46f2..1251edd1b9 100644
--- a/packages/twenty-docs/l/pt/user-guide/data-model/how-tos/create-custom-objects.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/data-model/how-tos/create-custom-objects.mdx
@@ -1,51 +1,51 @@
---
-title: Create Custom Objects
-description: Step-by-step guide to creating custom objects in Twenty.
+title: Criar Objetos Personalizados
+description: Guia passo a passo para criar objetos personalizados no Twenty.
---
-Custom objects let you store information unique to your business that standard objects don't cover. For example: Projects, Products, Tickets, or Listings.
+Objetos personalizados permitem armazenar informações exclusivas do seu negócio que os objetos padrão não cobrem. Por exemplo: Projetos, Produtos, Tickets ou Listagens.
- **Not sure if you need an object or a field?** See [Understanding Your Data Model](/l/pt/user-guide/data-model/overview) for guidance.
+ **Não tem a certeza se precisa de um objeto ou de um campo?** Consulte [Compreender o seu modelo de dados](/l/pt/user-guide/data-model/overview) para orientação.
-## Steps
+## Etapas
-1. Go to **Settings → Data Model**
-2. Click **+ New object**
-3. Fill in:
- * **Singular name** (e.g., "Listing")
- * **Plural name** (e.g., "Listings")
- * **Icon**
- * **Description** (optional)
-4. Click **Save**
+1. Vá a **Definições → Modelo de Dados**
+2. Clique em **+ Novo objeto**
+3. Preencha:
+ * **Nome no singular** (por exemplo, "Listagem")
+ * **Nome no plural** (por exemplo, "Listagens")
+ * **Ícone**
+ * **Descrição** (opcional)
+4. Clique em **Salvar**
-Your object appears in the sidebar immediately.
+O seu objeto aparece imediatamente na barra lateral.
-## Next: Add Fields
+## A seguir: Adicionar campos
-New objects start with basic fields. Add custom fields to capture the data you need:
+Novos objetos começam com campos básicos. Adicione campos personalizados para capturar os dados de que precisa:
-1. In **Settings → Data Model**, select your object
-2. Click **+ Add Field**
-3. Choose a field type, configure, and save
+1. Em **Definições → Modelo de Dados**, selecione o seu objeto
+2. Clique em **+ Adicionar campo**
+3. Escolha um tipo de campo, configure e guarde
-See [How to Create Custom Fields](/l/pt/user-guide/data-model/how-tos/create-custom-fields) for details on field types and configuration.
+Consulte [Como criar campos personalizados](/l/pt/user-guide/data-model/how-tos/create-custom-fields) para obter detalhes sobre os tipos de campo e a configuração.
-## Connecting to Other Objects
+## Ligar a outros objetos
-To link your object to People, Companies, or other objects, create a relation field. See [How to Create Relation Fields](/l/pt/user-guide/data-model/how-tos/create-relation-fields).
+Para ligar o seu objeto a Pessoas, Empresas ou outros objetos, crie um campo de relação. Consulte [Como criar campos de relação](/l/pt/user-guide/data-model/how-tos/create-relation-fields).
-## Deactivating an Object
+## Desativar um objeto
-If you no longer need an object:
+Se já não precisar de um objeto:
-1. Go to **Settings → Data Model**
-2. Toggle the object off
+1. Vá a **Definições → Modelo de Dados**
+2. Desative o objeto
-The object is hidden but data is preserved. You can reactivate or permanently delete later.
+O objeto fica oculto, mas os dados são preservados. Pode reativar ou eliminar permanentemente mais tarde.
-## Related
+## Relacionados
-* [Objects](/l/pt/user-guide/data-model/capabilities/objects) — standard vs custom objects
-* [Data Model FAQ](/l/pt/user-guide/data-model/how-tos/data-model-faq) — common questions
+* [Objetos](/l/pt/user-guide/data-model/capabilities/objects) — objetos padrão vs. personalizados
+* [Perguntas frequentes sobre o modelo de dados](/l/pt/user-guide/data-model/how-tos/data-model-faq) — perguntas comuns
diff --git a/packages/twenty-docs/l/pt/user-guide/data-model/how-tos/create-many-to-many-relations.mdx b/packages/twenty-docs/l/pt/user-guide/data-model/how-tos/create-many-to-many-relations.mdx
new file mode 100644
index 0000000000..0554c8b63b
--- /dev/null
+++ b/packages/twenty-docs/l/pt/user-guide/data-model/how-tos/create-many-to-many-relations.mdx
@@ -0,0 +1,180 @@
+---
+title: Criar Relações Muitos-para-muitos
+description: Conecte registros em que muitos itens de ambos os lados podem ser vinculados usando objetos de junção.
+---
+
+Relações muitos-para-muitos permitem conectar vários registros em ambos os lados. Por exemplo: muitas Pessoas podem trabalhar em muitos Projetos, e cada Projeto pode ter muitas Pessoas.
+
+
+ **Recurso de Laboratório**: As relações de junção estão atualmente no Lab. Ative-as em **Settings → Updates → Lab** antes de seguir este guia.
+
+
+
+ Este recurso também requer que o **Modo Avançado** esteja ativado (alternador no canto inferior direito de Settings).
+
+
+## Quando Usar Muitos-para-Muitos
+
+Use muitos-para-muitos quando ambos os lados de uma relação podem ter múltiplas conexões:
+
+| Relação | Exemplo |
+| -------------------- | ------------------------------------------------------------------------------------- |
+| Pessoas ↔ Projetos | Uma pessoa trabalha em vários projetos; um projeto tem vários membros da equipe |
+| Empresas ↔ Etiquetas | Uma empresa pode ter várias etiquetas; uma etiqueta pode se aplicar a várias empresas |
+| Produtos ↔ Pedidos | Um produto pode estar em vários pedidos; um pedido contém vários produtos |
+
+## Como Funciona
+
+A Twenty usa um padrão de **objeto de junção** para relações muitos-para-muitos. Um objeto de junção fica entre dois objetos e mantém as conexões:
+
+```
+People ←→ Project Assignments ←→ Projects
+```
+
+O objeto **Atribuições de Projeto** (junção) tem:
+
+* Uma relação com Pessoas (muitos-para-um)
+* Uma relação com Projetos (muitos-para-um)
+
+Ao ativar o alternador de relação de junção, a Twenty exibe os registros vinculados diretamente em vez de mostrar os registros intermediários de junção.
+
+## Pré-requisitos
+
+1. **Ative Relações de Junção no Lab**: Vá para **Settings → Updates → Lab** e ative **Junction Relations**
+2. **Ative o Modo Avançado**: Ative o **Modo Avançado** no canto inferior direito da barra lateral de Settings
+3. Planeje seu modelo de dados:
+ * Quais dois objetos você está conectando?
+ * Qual deve ser o nome do objeto de junção?
+
+## Etapa 1: Criar o Objeto de Junção
+
+Primeiro, crie o objeto intermediário que manterá as conexões.
+
+1. Vá a **Definições → Modelo de Dados**
+2. Clique em **+ Novo objeto**
+3. Dê um nome descritivo (por exemplo, "Atribuição de Projeto", "Membro da Equipe", "Pedido de Produto")
+4. Clique em **Salvar**
+
+
+ **Convenção de nomenclatura**: Use um nome que descreva a relação, como "Atribuição de Projeto" ou "Participação na Equipe". Isso torna o modelo de dados mais fácil de entender.
+
+
+## Etapa 2: Criar Relações a partir do Objeto de Junção
+
+Adicione campos de relação do objeto de junção para ambos os objetos que deseja conectar.
+
+### Primeira Relação (Junção → Objeto A)
+
+1. Selecione seu objeto de junção em **Settings → Data Model**
+2. Clique em **+ Adicionar campo**
+3. Escolha **Relação** como o tipo de campo
+4. Selecione o primeiro objeto (por exemplo, "Pessoas")
+5. Defina o tipo de relação como **Muitos-para-um** (muitas atribuições podem se vincular a uma pessoa)
+6. Nomeie os campos:
+ * Campo na junção: por exemplo, "Pessoa"
+ * Campo em Pessoas: por exemplo, "Atribuições de Projeto"
+7. Clique em **Salvar**
+
+### Segunda Relação (Junção → Objeto B)
+
+1. Ainda no objeto de junção, clique em **+ Add Field**
+2. Escolha **Relação** como o tipo de campo
+3. Selecione o segundo objeto (por exemplo, "Projetos")
+4. Defina o tipo de relação como **Muitos-para-um**
+5. Nomeie os campos:
+ * Campo na junção: por exemplo, "Projeto"
+ * Campo em Projetos: por exemplo, "Membros da Equipe"
+6. Clique em **Salvar**
+
+## Etapa 3: Configurar a Exibição da Relação de Junção
+
+Agora configure os objetos de origem para exibir diretamente os registros vinculados, ignorando o objeto de junção intermediário.
+
+1. Vá a **Definições → Modelo de Dados**
+2. Selecione o primeiro objeto (por exemplo, "Pessoas")
+3. Encontre o campo de relação apontando para o objeto de junção (por exemplo, "Atribuições de Projeto")
+4. Clique para editar o campo
+5. Ative **"Esta é uma relação com um objeto de junção"**
+6. Selecione a **Relação de destino** (por exemplo, "Projeto" — o campo na junção que aponta para o outro lado)
+7. Clique em **Salvar**
+
+{/* TODO: Add image
+
+*/}
+
+Repita para o outro objeto:
+
+1. Selecione "Projetos" em Data Model
+2. Edite o campo de relação "Membros da Equipe"
+3. Ative o alternador de junção
+4. Selecione "Pessoa" como a relação de destino
+5. Salvar
+
+## Resultado
+
+Após a configuração:
+
+* Em um registro de **Pessoa**, o campo "Atribuições de Projeto" exibe **Projetos** diretamente (não registros de atribuição)
+* Em um registro de **Projeto**, o campo "Membros da Equipe" exibe **Pessoas** diretamente
+
+O objeto de junção ainda existe e armazena as conexões, mas a interface apresenta uma visualização muitos-para-muitos mais limpa.
+
+## Exemplo: Pessoas ↔ Projetos
+
+Aqui está um passo a passo completo:
+
+### Criar o Objeto de Junção
+
+* Nome: **Atribuição de Projeto**
+* Descrição: "Vincula pessoas aos projetos em que trabalham"
+
+### Adicionar Relações
+
+1. **Atribuição de Projeto → Pessoas**
+ * Tipo: Muitos-para-um
+ * Campo em Atribuição: "Pessoa"
+ * Campo em Pessoas: "Atribuições de Projeto"
+
+2. **Atribuição de Projeto → Projetos**
+ * Tipo: Muitos-para-um
+ * Campo em Atribuição: "Projeto"
+ * Campo em Projetos: "Membros da Equipe"
+
+### Configurar Exibição de Junção
+
+1. No objeto **Pessoas**:
+ * Edite o campo "Atribuições de Projeto"
+ * Ative o alternador de junção
+ * Destino: "Projeto"
+
+2. No objeto **Projetos**:
+ * Edite o campo "Membros da Equipe"
+ * Ative o alternador de junção
+ * Destino: "Pessoa"
+
+### Use
+
+* Abra um registro de Pessoa → Veja seus Projetos diretamente
+* Abra um registro de Projeto → Veja os membros da equipe diretamente
+* Crie novas conexões de qualquer um dos lados
+
+## Adicionando Dados Extras às Conexões
+
+Como o objeto de junção é um objeto real, você pode adicionar campos personalizados para armazenar informações sobre a relação:
+
+* **Função**: "Desenvolvedor", "Designer", "Gerente"
+* **Data de Início**: Quando começaram no projeto
+* **Horas Alocadas**: Horas semanais neste projeto
+
+Para acessar esses dados, navegue diretamente até o objeto de junção ou consulte-o via API.
+
+## Limitações
+
+* **Importação/Exportação CSV**: A importação de relações muitos-para-muitos diretamente não é suportada. Em vez disso, importe registros para o objeto de junção.
+* **Filtros**: A filtragem por relações muitos-para-muitos pode ter opções limitadas.
+
+## Relacionados
+
+* [Campos de Relação](/l/pt/user-guide/data-model/capabilities/relation-fields) — tipos de relação explicados
+* [Criar Objetos Personalizados](/l/pt/user-guide/data-model/how-tos/create-custom-objects) — como criar objetos
+* [Criar Campos de Relação](/l/pt/user-guide/data-model/how-tos/create-relation-fields) — configuração básica de relação
diff --git a/packages/twenty-docs/l/pt/user-guide/data-model/how-tos/create-relation-fields.mdx b/packages/twenty-docs/l/pt/user-guide/data-model/how-tos/create-relation-fields.mdx
index db3d83f1ba..05e6d66070 100644
--- a/packages/twenty-docs/l/pt/user-guide/data-model/how-tos/create-relation-fields.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/data-model/how-tos/create-relation-fields.mdx
@@ -1,60 +1,60 @@
---
-title: Create Relation Fields
-description: Step-by-step guide to connecting objects with relation fields.
+title: Criar Campos de Relação
+description: Guia passo a passo para conectar objetos com campos de relação.
---
-Relation fields connect records from different objects—for example, linking People to Companies.
+Campos de relação conectam registros de objetos diferentes — por exemplo, vinculando Pessoas a Empresas.
- **Relation names cannot be changed after creation** (they affect the API). Plan your names carefully.
+ **Os nomes das relações não podem ser alterados após a criação** (eles afetam a API). Planeje os nomes com cuidado.
-## Before You Start
+## Antes de Começar
-Decide:
+Decida:
-* Which objects are you connecting? (e.g., People → Companies)
-* Which is the "one" side? (e.g., Company)
-* Which is the "many" side? (e.g., People — many people work at one company)
-* What should the field be named on each side?
+* Quais objetos você está conectando? (por exemplo, Pessoas → Empresas)
+* Qual é o lado "um"? (por exemplo, Empresa)
+* Qual é o lado "muitos"? (por exemplo, Pessoas — muitas pessoas trabalham em uma empresa)
+* Como o campo deve ser nomeado em cada lado?
-See [Relation Fields](/l/pt/user-guide/data-model/capabilities/relation-fields) for relation types explained.
+Veja [Campos de relação](/l/pt/user-guide/data-model/capabilities/relation-fields) para entender os tipos de relação.
-## Steps
+## Etapas
-1. Go to **Settings → Data Model**
-2. Select the object where you want the relation (typically the "many" side)
-3. Click **+ Add Field**
-4. Select **Relation** as the field type
-5. Choose the **target object**
-6. Select **One-to-Many** or **Many-to-One**
-7. Enter field names for **both sides** of the relation
-8. Click **Save**
+1. Vá para **Configurações → Modelo de Dados**
+2. Selecione o objeto no qual você deseja a relação (normalmente o lado "muitos")
+3. Clique em **+ Adicionar campo**
+4. Selecione **Relação** como o tipo de campo
+5. Escolha o **objeto de destino**
+6. Selecione **Um-para-muitos** ou **Muitos-para-um**
+7. Insira os nomes dos campos para **ambos os lados** da relação
+8. Clique em **Salvar**
-## Example: People → Companies
+## Exemplo: Pessoas → Empresas
-* Go to **Settings → Data Model → People**
-* Add a Relation field
-* Target: **Companies**
-* Type: **Many-to-One**
-* Field on People: **Company**
-* Field on Companies: **Employees**
+* Vá para **Configurações → Modelo de Dados → Pessoas**
+* Adicione um campo de Relação
+* Destino: **Empresas**
+* Tipo: **Muitos-para-um**
+* Campo em Pessoas: **Empresa**
+* Campo em Empresas: **Funcionários**
-Now each Person can be linked to a Company, and each Company shows its People.
+Agora, cada Pessoa pode ser vinculada a uma Empresa, e cada Empresa mostra suas Pessoas.
-## Deleting a Relation
+## Excluindo uma Relação
-1. Go to **Settings → Data Model**
-2. Find the relation field
-3. Click **⋮ → Deactivate**
+1. Vá para **Configurações → Modelo de Dados**
+2. Encontre o campo de relação
+3. Clique em **⋮ → Desativar**
-Links are preserved but hidden. Reactivate to restore.
+Os vínculos são preservados, mas ficam ocultos. Reative para restaurar.
- **Deleting a relation doesn't delete records.** Only the link between them is removed.
+ **Excluir uma relação não exclui registros.** Apenas o vínculo entre eles é removido.
-## Related
+## Relacionados
-* [Relation Fields](/l/pt/user-guide/data-model/capabilities/relation-fields) — types and limitations
-* [How to Import Relations](/l/pt/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv) — bulk import linked records
+* [Campos de relação](/l/pt/user-guide/data-model/capabilities/relation-fields) — tipos e limitações
+* [Como importar relações](/l/pt/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv) — importar em massa registros vinculados
diff --git a/packages/twenty-docs/l/pt/user-guide/data-model/how-tos/customize-your-data-model.mdx b/packages/twenty-docs/l/pt/user-guide/data-model/how-tos/customize-your-data-model.mdx
index 1bd6678381..84ca273d50 100644
--- a/packages/twenty-docs/l/pt/user-guide/data-model/how-tos/customize-your-data-model.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/data-model/how-tos/customize-your-data-model.mdx
@@ -1,22 +1,22 @@
---
-title: Customize Your Data Model
-description: Overview of data model customization options.
+title: Personalize seu modelo de dados
+description: Visão geral das opções de personalização do modelo de dados.
---
-Twenty's data model is fully customizable. Create objects, fields, and relations to match your business.
+O modelo de dados da Twenty é totalmente personalizável. Crie objetos, campos e relações para se adequar à sua empresa.
-## Quick Links
+## Links rápidos
-| I want to... | Guide |
-| ------------------------ | -------------------------------------------------------------------------------------- |
-| Create a new object | [How to Create Custom Objects](/l/pt/user-guide/data-model/how-tos/create-custom-objects) |
-| Add fields to an object | [How to Create Custom Fields](/l/pt/user-guide/data-model/how-tos/create-custom-fields) |
-| Connect objects together | [How to Create Relation Fields](/l/pt/user-guide/data-model/how-tos/create-relation-fields) |
+| Eu quero... | Guia |
+| ---------------------------- | ----------------------------------------------------------------------------------------- |
+| Criar um novo objeto | [Como criar objetos personalizados](/l/pt/user-guide/data-model/how-tos/create-custom-objects) |
+| Adicionar campos a um objeto | [Como criar campos personalizados](/l/pt/user-guide/data-model/how-tos/create-custom-fields) |
+| Conectar objetos entre si | [Como criar campos de relação](/l/pt/user-guide/data-model/how-tos/create-relation-fields) |
-## Learn More
+## Saiba mais
-* [Understanding Your Data Model](/l/pt/user-guide/data-model/overview) — key concepts and planning tips
-* [Objects](/l/pt/user-guide/data-model/capabilities/objects) — standard vs custom objects
-* [Fields](/l/pt/user-guide/data-model/capabilities/fields) — all field types
-* [Relation Fields](/l/pt/user-guide/data-model/capabilities/relation-fields) — connecting objects
-* [Data Model FAQ](/l/pt/user-guide/data-model/how-tos/data-model-faq) — common questions
+* [Compreendendo seu modelo de dados](/l/pt/user-guide/data-model/overview) — conceitos-chave e dicas de planejamento
+* [Objetos](/l/pt/user-guide/data-model/capabilities/objects) — objetos padrão vs. personalizados
+* [Campos](/l/pt/user-guide/data-model/capabilities/fields) — todos os tipos de campo
+* [Campos de relação](/l/pt/user-guide/data-model/capabilities/relation-fields) — conectando objetos
+* [Perguntas frequentes sobre o modelo de dados](/l/pt/user-guide/data-model/how-tos/data-model-faq) — perguntas comuns
diff --git a/packages/twenty-docs/l/pt/user-guide/data-model/how-tos/data-model-faq.mdx b/packages/twenty-docs/l/pt/user-guide/data-model/how-tos/data-model-faq.mdx
index 21fca4d989..4358ed9b2c 100644
--- a/packages/twenty-docs/l/pt/user-guide/data-model/how-tos/data-model-faq.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/data-model/how-tos/data-model-faq.mdx
@@ -1,155 +1,155 @@
---
-title: Data Model FAQ
-description: Frequently asked questions about Twenty's data model.
+title: Modelo de Dados FAQ
+description: Perguntas frequentes sobre o modelo de dados do Twenty.
---
-## Object Management
+## Gestão de Objetos
-
- Yes, custom objects can be deleted. You can also deactivate them first, which hides the object and its data from the interface while preserving the data.
+
+ Sim, objetos personalizados podem ser excluídos. Você também pode desativá-los primeiro, o que oculta o objeto e seus dados da interface, preservando os dados.
-
- No, standard objects cannot be deleted. You can only deactivate them, which hides them from the interface but preserves the data.
+
+ Não, os objetos padrão não podem ser excluídos. Você só pode desativá-los, o que os oculta da interface, mas preserva os dados.
-
- You can create as many custom objects and fields as you need — the price doesn't change.
+
+ Você pode criar quantos objetos e campos personalizados precisar — o preço não muda.
-
- You can rename the label of standard objects (People, Companies, Opportunities), but not their API names. The API names are fixed for consistency across all Twenty workspaces.
+
+ Você pode renomear o rótulo dos objetos padrão (Pessoas, Empresas, Oportunidades), mas não seus nomes de API. Os nomes de API são fixos para manter a consistência em todos os espaços de trabalho do Twenty.
-
- Yes, you can change the icon for both standard and custom objects in **Settings → Data Model**.
+
+ Sim, você pode alterar o ícone tanto de objetos padrão quanto personalizados em **Settings → Data Model**.
-
- Not yet. Object ordering in the navigation is currently fixed, but this feature is planned for a future release.
+
+ Ainda não. A ordenação de objetos na navegação é atualmente fixa, mas esse recurso está previsto para uma versão futura.
-
- All active objects appear in the navigation. You can deactivate objects you don't need under **Settings → Data Model**.
+
+ Todos os objetos ativos aparecem na navegação. Você pode desativar objetos que não precisa em **Configurações → Modelo de Dados**.
-## Field Capabilities
+## Capacidades de Campos
-
- No, field types cannot be changed after creation. If you need a different type, create a new field with the correct type, migrate your data, then deactivate the old field.
+
+ Não, os tipos de campo não podem ser alterados após a criação. Se você precisar de um tipo diferente, crie um novo campo com o tipo correto, migre seus dados e, em seguida, desative o campo antigo.
-
- Our GraphQL API uses both forms for different operations:
+
+ Nossa API GraphQL usa ambas as formas para diferentes operações:
- * `createPerson` (singular) for single record actions
- * `createPeople` (plural) for bulk operations
+ * `createPerson` (singular) para ações de registro único
+ * `createPeople` (plural) para operações em massa
- This creates limitations when singular and plural forms are the same, but it improves the developer experience.
+ Isto cria limitações quando as formas singular e plural são as mesmas, mas melhora a experiência do desenvolvedor.
-
- Certain field names like `Type` or `Application` are reserved for system use. Choose alternative names like `Category` or `Classification` instead.
+
+ Certos nomes de campos como `Tipo` ou `Aplicação` são reservados para uso do sistema. Escolha nomes alternativos como `Categoria` ou `Classificação`.
-
- * The field is hidden from the interface
- * Existing data is preserved
- * You can still access the field via API
- * Existing relations remain but you can't create new ones
- * You can reactivate the field later
+
+ * O campo fica oculto na interface
+ * Os dados existentes são preservados
+ * Você ainda pode acessar o campo via API
+ * As relações existentes permanecem, mas você não pode criar novas
+ * Você pode reativar o campo mais tarde
-
- Currently, you cannot make custom fields required. All fields accept empty values. You can use workflows to enforce required fields by sending alerts or blocking actions when fields are empty.
+
+ Atualmente, não é possível tornar campos personalizados obrigatórios. Todos os campos aceitam valores vazios. Você pode usar fluxos de trabalho para impor campos obrigatórios, enviando alertas ou bloqueando ações quando os campos estiverem vazios.
-
- * **Unique**: No two records can have the same value in this field
- * **Required**: The field must have a value (not currently supported for custom fields)
+
+ * **Único**: dois registros não podem ter o mesmo valor neste campo
+ * **Obrigatório**: o campo deve ter um valor (atualmente não é suportado para campos personalizados)
-
- Formula fields are coming in **Q1 2026**. In the meantime, you can use workflows to calculate and update field values automatically.
+
+ Campos de fórmula estarão disponíveis em **Q1 2026**. Enquanto isso, você pode usar fluxos de trabalho para calcular e atualizar valores de campos automaticamente.
-
- Nested fields are coming in **Q1 2026**. Currently, you can use workflows to bring field values from related objects. For example, to display a company's industry on a Person record, create a custom field on People and use a workflow to synchronize the value.
+
+ Campos aninhados estarão disponíveis em **Q1 2026**. Atualmente, você pode usar fluxos de trabalho para trazer valores de campos de objetos relacionados. Por exemplo, para exibir a indústria de uma empresa em um registro de Pessoa, crie um campo personalizado em Pessoas e use um fluxo de trabalho para sincronizar o valor.
-
- Field reordering will be available with custom layouts in **Q4 2025**. Currently, fields appear in alphabetical order.
+
+ A reordenação de campos estará disponível com layouts personalizados em **Q4 2025**. Atualmente, os campos aparecem em ordem alfabética.
-## Relations
+## Relações
-
- Yes! Self-referencing relations are supported and recommended for use cases like account hierarchies. For example, create a relation from Companies to Companies to track parent/child accounts.
+
+ Sim! Relações autorreferenciadas são suportadas e recomendadas para casos de uso como hierarquias de contas. Por exemplo, crie uma relação de Empresas para Empresas para acompanhar contas pai/filho.
-
- Many-to-many relationships are coming in **H1 2026**. Currently, create an intermediate object with two one-to-many relationships as a workaround.
+
+ Relacionamentos muitos-para-muitos estarão disponíveis no **H1 2026**. Atualmente, crie um objeto intermediário com dois relacionamentos de um-para-muitos como uma solução alternativa.
- For example, to link People and Projects (many-to-many), create a "Project Assignments" object with:
+ Por exemplo, para vincular Pessoas e Projetos (muitos-para-muitos), crie um objeto "Atribuições de Projeto" com:
- * A relation to People (many assignments → one person)
- * A relation to Projects (many assignments → one project)
+ * Uma relação com Pessoas (muitas atribuições → uma pessoa)
+ * Uma relação com Projetos (muitas atribuições → um projeto)
-
- These allow one object to relate to multiple different object types through a single field. For example, Notes can be attached to People AND Companies AND Opportunities simultaneously.
+
+ Essas relações permitem que um objeto se relacione com vários tipos de objeto diferentes por meio de um único campo. Por exemplo, Notas podem ser anexadas a Pessoas E Empresas E Oportunidades simultaneamente.
- Each Note links to one Person, one Company, and one Opportunity at the same time.
+ Cada Nota está vinculada a uma Pessoa, uma Empresa e uma Oportunidade ao mesmo tempo.
- Learn more in [Relation Fields](/l/pt/user-guide/data-model/capabilities/relation-fields).
+ Saiba mais em [Campos de relação](/l/pt/user-guide/data-model/capabilities/relation-fields).
-
- Yes, you can create multiple relations between the same two objects. For example, a Company could have both a "Primary Contact" and "Billing Contact" relation to People.
+
+ Sim, você pode criar várias relações entre os mesmos dois objetos. Por exemplo, uma Empresa poderia ter tanto uma relação "Contato Principal" quanto "Contato de Cobrança" com Pessoas.
-
- When you delete a record, the relation link is removed from the related records. The related records themselves are not deleted.
+
+ Quando você exclui um registro, o vínculo da relação é removido dos registros relacionados. Os próprios registros relacionados não são excluídos.
-
- While technically possible, circular relations (A → B → C → A) should be avoided as they can cause confusion and potential performance issues.
+
+ Apesar de tecnicamente possíveis, relações circulares (A → B → C → A) devem ser evitadas, pois podem causar confusão e possíveis problemas de desempenho.
-## Access and Permissions
+## Acesso e Permissões
-
- Go to **Settings → Data Model** to view and edit all your objects and fields.
+
+ Acesse **Settings → Data Model** para visualizar e editar todos os seus objetos e campos.
-
- Reach out to your workspace administrator. Data model access is usually restricted to administrators only.
+
+ Entre em contato com o administrador do seu espaço de trabalho. O acesso ao modelo de dados é geralmente restrito apenas aos administradores.
-## Data Management
+## Gerenciamento de dados
-
- There's no hard limit on record counts. However, very large datasets may impact performance in some views. Use filters and views to manage large datasets effectively.
+
+ Não há um limite rígido para a quantidade de registros. No entanto, conjuntos de dados muito grandes podem impactar o desempenho em algumas visualizações. Use filtros e visualizações para gerenciar grandes conjuntos de dados com eficiência.
-
- Yes, you can import CSV data into any object, including custom objects. The import process supports field mapping for custom fields. See [How to Prepare Your CSV Files](/l/pt/user-guide/data-migration/how-tos/prepare-your-csv-files).
+
+ Sim, você pode importar dados CSV para qualquer objeto, incluindo objetos personalizados. O processo de importação oferece suporte ao mapeamento de campos para campos personalizados. Consulte [Como preparar seus arquivos CSV](/l/pt/user-guide/data-migration/how-tos/prepare-your-csv-files).
-
- Currently, there's no built-in export for data model configuration. Contact support if you need to migrate your data model between workspaces.
+
+ Atualmente, não há exportação nativa para a configuração do modelo de dados. Entre em contato com o suporte se você precisar migrar seu modelo de dados entre espaços de trabalho.
-## Need More Help?
+## Precisa de mais ajuda?
-Check our [Implementation Services](/l/pt/user-guide/getting-started/capabilities/implementation-services) for help with complex data model design.
+Confira nossos [Serviços de implementação](/l/pt/user-guide/getting-started/capabilities/implementation-services) para obter ajuda com o design de modelos de dados complexos.
diff --git a/packages/twenty-docs/l/pt/user-guide/data-model/overview.mdx b/packages/twenty-docs/l/pt/user-guide/data-model/overview.mdx
index 28daff8ea2..4de8c71836 100644
--- a/packages/twenty-docs/l/pt/user-guide/data-model/overview.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/data-model/overview.mdx
@@ -1,180 +1,180 @@
---
-title: Data Model
-description: Learn what a data model is and how to design one that fits your business.
+title: Modelo de dados
+description: Saiba o que é um modelo de dados e como projetar um que se ajuste ao seu negócio.
image: /images/user-guide/fields/custom_data_model.png
---
-
+
-## What is a Data Model?
+## O que é um modelo de dados?
-A data model is the structure that defines how information is organized in your CRM. Think of it as the **blueprint** of your customer data — you design it once, then fill it with your actual data.
+Um modelo de dados é a estrutura que define como as informações são organizadas em seu CRM. Pense nisso como a **planta** dos dados dos seus clientes — você o projeta uma vez e depois o preenche com seus dados reais.
-## Key Concepts
+## Conceitos principais
-### Objects
+### Objetos
-**Objects** are the main categories of data in your CRM. Each object represents a type of thing you want to track.
+**Objetos** são as principais categorias de dados no seu CRM. Cada objeto representa um tipo de coisa que você quer acompanhar.
-Twenty comes with standard objects:
+O Twenty vem com objetos padrão:
-* **People** — individuals (contacts, leads, partners)
-* **Companies** — organizations
-* **Opportunities** — deals or sales
-* **Notes** — attached notes on records
-* **Tasks** — to-dos linked to records
+* **Pessoas** — indivíduos (contatos, leads, parceiros)
+* **Empresas** — organizações
+* **Oportunidades** — negócios ou vendas
+* **Notas** — notas anexadas aos registros
+* **Tarefas** — afazeres vinculados aos registros
-You can also create **custom objects** for anything specific to your business (e.g., Projects, Subscriptions, Events).
+Você também pode criar **objetos personalizados** para qualquer coisa específica do seu negócio (por exemplo, Projetos, Assinaturas, Eventos).
-### Fields
+### Campos
-**Fields** are the properties or attributes that describe each object. They store the actual information.
+**Campos** são as propriedades ou atributos que descrevem cada objeto. Eles armazenam as informações reais.
-For example, the **People** object has fields like:
+Por exemplo, o objeto **Pessoas** tem campos como:
-* Name
-* Email
-* Phone
-* Job Title
-* Company (a relation to the Companies object)
+* Nome
+* E-mail
+* Telefone
+* Título do Emprego
+* Empresa (uma relação com o objeto Empresas)
-Fields have different **types**: text, number, date, select, multi-select, relation, and more. You can add custom fields to any object.
+Os campos têm diferentes **tipos**: texto, número, data, seleção, seleção múltipla, relação e muito mais. Você pode adicionar campos personalizados a qualquer objeto.
-### Records
+### Registros
-**Records** are the individual entries within an object — the actual data you create and manage.
+**Registros** são as entradas individuais dentro de um objeto — os dados reais que você cria e gerencia.
-For example:
+Por exemplo:
-* "John Smith" is a **record** in the People object
-* "Acme Corp" is a **record** in the Companies object
+* "John Smith" é um **registro** no objeto Pessoas
+* "Acme Corp" é um **registro** no objeto Empresas
-**An analogy:**
+**Uma analogia:**
-| Data Model Concept | Real-World Analogy |
-| ------------------ | ------------------------------------------ |
-| **Objects** | Sections in a book (the categories) |
-| **Fields** | Columns in a spreadsheet (the properties) |
-| **Records** | Rows in a spreadsheet (the actual entries) |
+| Conceito do Modelo de Dados | Analogia do mundo real |
+| --------------------------- | ------------------------------------------ |
+| **Objetos** | Seções em um livro (as categorias) |
+| **Campos** | Colunas em uma planilha (as propriedades) |
+| **Registros** | Linhas em uma planilha (as entradas reais) |
-You design the data model (objects + fields) once, then create many records within that structure.
+Você projeta o modelo de dados (objetos + campos) uma vez e, em seguida, cria muitos registros dentro dessa estrutura.
-## Why Customize Your Data Model?
+## Por que personalizar seu modelo de dados?
-Every business works differently. Customizing your data model means you can shape Twenty around **your** processes instead of forcing yours into a rigid system.
+Cada empresa trabalha de maneira diferente. Personalizar seu modelo de dados significa que você pode moldar o Twenty em torno dos **seus** processos, em vez de forçar os seus a caber em um sistema rígido.
-Twenty offers full flexibility:
+O Twenty oferece total flexibilidade:
-* Create as many custom objects as you need
-* Add unlimited custom fields
-* The price doesn't change based on customization
+* Crie quantos objetos personalizados precisar
+* Adicione um número ilimitado de campos personalizados
+* O preço não muda com base na personalização
-## Tips to Design Your Data Model
+## Dicas para projetar seu modelo de dados
-### 1. Start with Your Core Objects
+### 1. Comece com seus objetos principais
-Identify the main concepts you work with. Twenty already provides:
+Identifique os principais conceitos com os quais você trabalha. O Twenty já oferece:
-* **People** — your contacts
-* **Companies** — your accounts
-* **Opportunities** — your deals
+* **Pessoas** — seus contatos
+* **Empresas** — suas contas
+* **Oportunidades** — seus negócios
-Think about what else you might need:
+Pense no que mais você pode precisar:
-* Stripe would need a `Subscriptions` object
-* Airbnb would need a `Trips` object
-* An accelerator would need a `Batches` object
+* Stripe precisaria de um objeto `Subscriptions`
+* Airbnb precisaria de um objeto `Trips`
+* Uma aceleradora precisaria de um objeto `Batches`
-### 2. Use Fields for Variations, Not New Objects
+### 2. Use campos para variações, não novos objetos
-If something is just a characteristic of an existing object, make it a **field**.
+Se algo for apenas uma característica de um objeto existente, faça dele um **campo**.
-**Use fields for:**
+**Use campos para:**
-* Categories and labels (e.g., `Industry` for Companies)
-* Status values (e.g., `Stage` for Opportunities)
-* Attributes and properties
+* Categorias e rótulos (por exemplo, `Industry` para Empresas)
+* Valores de status (por exemplo, `Stage` para Oportunidades)
+* Atributos e propriedades
-### 3. Create an Object When It Stands on Its Own
+### 3. Crie um objeto quando ele se sustentar por si só
-If the concept has its own lifecycle, properties, or relationships, it deserves an object.
+Se o conceito tem seu próprio ciclo de vida, propriedades ou relacionamentos, ele merece um objeto.
-**Create an object for:**
+**Crie um objeto para:**
-* **Projects** — have deadlines, owners, and tasks
-* **Subscriptions** — connect companies, products, and invoices
-* **Events** — involve attendees and follow-up actions
+* **Projetos** — têm prazos, responsáveis e tarefas
+* **Assinaturas** — conectam empresas, produtos e faturas
+* **Eventos** — envolvem participantes e ações de acompanhamento
-These go beyond a single field because they carry their own data and relationships.
+Estes vão além de um único campo, pois carregam seus próprios dados e relações.
-### 4. Create an Object When Records Are Open-Ended
+### 4. Crie um objeto quando os registros forem em quantidade indefinida
-If something can be linked multiple times and you don't know how many, use an object.
+Se algo puder ser vinculado várias vezes e você não souber quantas vezes, use um objeto.
-**Bad approach:**
-Creating fields like `Product 1`, `Product 2`, `Product 3`...
+**Abordagem ruim:**
+Criar campos como `Product 1`, `Product 2`, `Product 3`...
-**Good approach:**
-Create a `Products` object and relate it to records. This supports one, two, or a hundred products without changing your model.
+**Boa abordagem:**
+Crie um objeto `Products` e relacione-o aos registros. Dessa forma, você pode suportar um, dois ou cem produtos sem alterar seu modelo.
-### 5. Keep It Simple First
+### 5. Mantenha simples no início
-Start with fields. Move to new objects only when you feel the limits:
+Comece pelos campos. Passe para novos objetos apenas quando perceber as limitações:
-* Too many fields on one object
-* Repeated records that should be separate
-* Relationships that don't fit neatly
+* Muitos campos em um único objeto
+* Registros repetidos que deveriam ser separados
+* Relacionamentos que não se encaixam bem
-## Special Note on People, Companies, and Opportunities
+## Nota especial sobre Pessoas, Empresas e Oportunidades
- **Email and calendar sync only works with People, Companies, and Opportunities.**
+ **A sincronização de e-mail e calendário funciona apenas com Pessoas, Empresas e Oportunidades.**
- These are the only objects where you can access synchronized emails and meetings from your mailbox/calendar. We recommend using them as much as possible.
+ Estes são os únicos objetos nos quais você pode acessar e-mails e reuniões sincronizados da sua caixa de entrada/calendário. Recomendamos usá-los o máximo possível.
-**Best practices:**
+**Melhores Práticas:**
-* If you need categories of People, use fields (not new objects)
-* Example: Use a `Person Type` field with values "Prospect" and "Partner" instead of creating separate objects
-* Create different **views** to filter: one showing partners, another showing prospects
+* Se você precisar de categorias de Pessoas, use campos (não novos objetos)
+* Exemplo: Use um campo `Person Type` com os valores "Prospecto" e "Parceiro" em vez de criar objetos separados
+* Crie **exibições** diferentes para filtrar: uma mostrando parceiros, outra mostrando prospectos
-**It's okay to have fields that don't apply to every record.** For example, a `Referral Link` field on People that only applies when `Person Type = Partner`. Hide this field from views where it's not relevant.
+**Não há problema em ter campos que não se apliquem a todos os registros.** Por exemplo, um campo `Referral Link` em Pessoas que só se aplica quando `Person Type = Partner`. Oculte esse campo das exibições onde ele não for relevante.
-## Questions to Guide Your Choice
+## Perguntas para guiar sua escolha
-Ask yourself:
+Pergunte a si mesmo:
-Is this just a property of something I already have, or does it need its own properties?
-Will I ever need to track multiple of these per record, without knowing how many?
-Does this concept connect to several different objects, not just one?
-Will it have its own lifecycle (stages, start/end dates)?
+É apenas uma propriedade de algo que já tenho, ou precisa ter suas próprias propriedades?
+Alguma vez precisarei acompanhar vários desses por registro, sem saber quantos de antemão?
+Este conceito se conecta a vários objetos diferentes, não apenas a um?
+Terá seu próprio ciclo de vida (estágios, datas de início/fim)?
-If the answer is "yes" to one or more, it's probably time for a new object.
+Se a resposta for "sim" para uma ou mais dessas, provavelmente é hora de um novo objeto.
-## Accessing Your Data Model
+## Acessando seu Modelo de Dados
-1. Go to **Settings** in the left sidebar
-2. Click **Data Model**
-3. View all your objects (standard and custom)
-4. Click any object to see and edit its fields
+1. Acesse **Configurações** na barra lateral esquerda
+2. Clique em **Modelo de Dados**
+3. Veja todos os seus objetos (padrões e personalizados)
+4. Clique em qualquer objeto para ver e editar seus campos
- **Don't see Data Model in Settings?**
+ **Não vê o Modelo de Dados em Configurações?**
- Access to the data model is usually restricted to administrators. Contact your workspace admin if you need access.
+ O acesso ao modelo de dados é geralmente restrito apenas aos administradores. Entre em contato com o administrador do seu espaço de trabalho se precisar de acesso.
-## Next Steps
+## Próximos Passos
-Once you've planned your data model:
+Depois de planejar seu modelo de dados:
-* [How to Create Custom Objects](/l/pt/user-guide/data-model/how-tos/create-custom-objects)
-* [How to Create Custom Fields](/l/pt/user-guide/data-model/how-tos/create-custom-fields)
-* [How to Create Relation Fields](/l/pt/user-guide/data-model/how-tos/create-relation-fields)
+* [Como criar objetos personalizados](/l/pt/user-guide/data-model/how-tos/create-custom-objects)
+* [Como criar campos personalizados](/l/pt/user-guide/data-model/how-tos/create-custom-fields)
+* [Como criar campos de relação](/l/pt/user-guide/data-model/how-tos/create-relation-fields)
-## Need Help?
+## Precisa de ajuda?
-Our team can help you design and create the data model you need. Discover our [Implementation Services](/l/pt/user-guide/getting-started/capabilities/implementation-services).
+Nossa equipe pode ajudar você a projetar e criar o modelo de dados de que você precisa. Descubra nossos [serviços de implementação](/l/pt/user-guide/getting-started/capabilities/implementation-services).
diff --git a/packages/twenty-docs/l/pt/user-guide/getting-started/capabilities/glossary.mdx b/packages/twenty-docs/l/pt/user-guide/getting-started/capabilities/glossary.mdx
index 71ac91622f..72dcb51cbe 100644
--- a/packages/twenty-docs/l/pt/user-guide/getting-started/capabilities/glossary.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/getting-started/capabilities/glossary.mdx
@@ -1,108 +1,104 @@
---
-title: Glossary
-description: Get familiar with essential terminology used in Twenty.
+title: Glossário
+description: Familiarize-se com a terminologia essencial usada no Twenty.
---
## API
-API (Application Programming Interface) allows you to connect Twenty with other software systems and build custom integrations.
+API (Interface de Programação de Aplicações) permite que você conecte o Twenty com outros sistemas de software e construa integrações personalizadas.
-## Apps
+## Aplicativos
-Apps are custom extensions built as code that can define data models and serverless functions. They enable developers to create reusable customizations that can be deployed across multiple workspaces.
+Os aplicativos são extensões personalizadas escritas em código que podem definir modelos de dados e funções sem servidor. Eles permitem que desenvolvedores criem personalizações reutilizáveis que podem ser implantadas em vários espaços de trabalho.
-## Code Actions
+## Ações de código
-Code Actions are workflow steps that let you write custom JavaScript to transform data, make calculations, or perform complex logic that isn't possible with built-in actions.
+As Ações de código são etapas de fluxo de trabalho que permitem escrever JavaScript personalizado para transformar dados, realizar cálculos ou executar lógica complexa que não é possível com as ações integradas.
-## Command Menu
+## Menu de Comandos
-The Command Menu is a quick-access interface (opened with `Cmd + K` on Mac and `Ctrl + K` on Windows) that lets you perform actions, create records, and navigate your workspace efficiently.
+O Menu de Comandos é uma interface de acesso rápido (aberta com `Cmd + K` no Mac e `Ctrl + K` no Windows) que permite realizar ações, criar registros e navegar no seu espaço de trabalho de forma eficiente.
-## Company & People
+## Empresa e Pessoas
-The CRM has two fundamental types of records:
+O CRM tem dois tipos fundamentais de registros:
-* A `Company` represents a business or organization.
-* `People` represent your company's current and prospective customers or clients.
+* Uma `Empresa` representa um negócio ou organização.
+* `Pessoas` representam os atuais e potenciais clientes ou contatos da sua empresa.
-## Custom Fields
+## Campos Personalizados
-Custom Fields are data fields you create to capture information specific to your business needs and processes.
+Campos Personalizados são campos de dados que você cria para capturar informações específicas das necessidades e processos do seu negócio.
-## Data Model
+## Modelo de dados
-A Data Model is the structure that defines how information is organized in your CRM, including what objects exist, their properties (fields), and how they relate to each other.
+Um Modelo de Dados é a estrutura que define como a informação é organizada no seu CRM, incluindo quais objetos existem, suas propriedades (campos) e como se relacionam entre si.
-## Favorites
+## Favoritos
-Favorites are records you've marked for quick access, appearing in your sidebar for instant navigation to important data.
+Favoritos são registros que você marcou para acesso rápido, aparecendo na sua barra lateral para navegação instantânea a dados importantes.
-## Field
+## Campo
-A field refers to a specific area where particular data is stored for an entity.
+Um campo refere-se a uma área específica onde dados particulares são armazenados para uma entidade.
-## Integration
+## Iterador
-Integrations are built-in tools that allow you to link Twenty with other software or systems.
-
-## Iterator
-
-An Iterator is a workflow action that loops through an array of items, executing subsequent actions for each item in the list.
+O Iterator é uma ação de fluxo de trabalho que percorre um array de itens, executando as ações subsequentes para cada item da lista.
## Kanban
-A `Kanban` is a visual way to track your business processes using cards and columns. Each column represents a stage in your process (for example: new, ongoing, won, lost), and you move records through these stages as they progress.
+Um `Kanban` é uma maneira visual de rastrear os seus processos de negócios usando cartões e colunas. Cada coluna representa um estágio em seu processo (por exemplo: novo, em andamento, ganho, perdido) e você move os registros através desses estágios conforme eles progridem.
-## Object
+## Objeto
-An Object is a data structure that represents a specific type of entity in your CRM (like People, Companies, or Opportunities). Objects can be standard (built-in) or custom (created by you).
+Um Objeto é uma estrutura de dados que representa um tipo específico de entidade no seu CRM (como Pessoas, Empresas ou Oportunidades). Objetos podem ser padrão (pré-construídos) ou personalizados (criados por você).
-## Opportunities
+## Oportunidades
-Opportunities in Twenty CRM are potential deals or sales with accounts or contacts.
+Oportunidades no Twenty CRM são potenciais negócios ou vendas com contas ou contatos.
-## Record
+## Registro
-A Record indicates an instance of an object, like a specific account or contact.
+Um Registro indica uma instância de um objeto, como uma conta ou contato específico.
-## Relation Fields
+## Campos de Relação
-Relation Fields create connections between different objects, allowing you to link records together (like connecting a Person to a Company).
+Campos de Relação criam conexões entre diferentes objetos, permitindo que você vincule registros juntos (como conectar uma Pessoa a uma Empresa).
-## Standard Fields
+## Campos Padrão
-Standard Fields are pre-built data fields that come with objects by default and provide common functionality across all workspaces.
+Campos Padrão são campos de dados pré-construídos que vêm com objetos por padrão e oferecem funcionalidades comuns em todos os espaços de trabalho.
-## Tasks
+## Tarefas
-Tasks in Twenty CRM are assigned activities relating to contacts, accounts, or opportunities.
+Tarefas no Twenty CRM são atividades atribuídas relacionadas a contatos, contas ou oportunidades.
-## Triggers
+## Disparadores
-Triggers are the starting point of a workflow — the event or condition that initiates the automation. Examples include record creation, record updates, webhooks, or scheduled times.
+Os gatilhos são o ponto de partida de um fluxo de trabalho — o evento ou condição que inicia a automação. Exemplos incluem a criação de registros, atualizações de registros, webhooks ou horários agendados.
-## Views
+## Visualizações
-You can customize the display of your records using views, setting different filters, layouts and sorting options for each view.
+Você pode personalizar a exibição dos seus registros usando visualizações, definindo diferentes filtros, layouts e opções de ordenação para cada visualização.
## Upsert
-Upsert is an operation that combines "update" and "insert" — it updates an existing record if a match is found, or creates a new record if no match exists.
+Upsert é uma operação que combina "update" e "insert" — atualiza um registro existente se for encontrada uma correspondência, ou cria um novo registro se nenhuma correspondência existir.
## Webhooks
-Webhooks are automated messages sent from Twenty to other applications when specific events occur, enabling real-time data synchronization.
+Webhooks são mensagens automáticas enviadas do Twenty a outras aplicações quando eventos específicos ocorrem, permitindo a sincronização de dados em tempo real.
-## Workflows
+## Fluxos de trabalho
-Workflows are automated processes that trigger actions based on specific conditions, helping you automate repetitive tasks and business processes.
+Fluxos de trabalho são processos automatizados que desencadeiam ações com base em condições específicas, ajudando você a automatizar tarefas repetitivas e processos de negócios.
-## Workspace
+## Espaço de trabalho
-A `Workspace` typically represents a company using Twenty. It holds all the records and data that you and your team members add to Twenty.
-It has a single domain name, which is typically the domain name your company uses for employee email addresses.
+Um `Espaço de Trabalho` normalmente representa uma empresa usando o Twenty. Ele contém todos os registros e dados que você e os membros da sua equipe adicionam ao Twenty.
+Ele tem um único nome de domínio, que normalmente é o nome de domínio que sua empresa usa para endereços de e-mail de funcionários.
-## Workspace Members
+## Membros do Espaço de Trabalho
-Workspace Members are the Twenty users from your team who have access to your workspace. They can be assigned as owners or assignees for records.
+Membros do Espaço de Trabalho são os usuários do Twenty da sua equipe que têm acesso ao seu espaço de trabalho. Eles podem ser designados como proprietários ou responsáveis por registros.
diff --git a/packages/twenty-docs/l/pt/user-guide/getting-started/capabilities/implementation-services.mdx b/packages/twenty-docs/l/pt/user-guide/getting-started/capabilities/implementation-services.mdx
index 706de4d2a0..ac858c4131 100644
--- a/packages/twenty-docs/l/pt/user-guide/getting-started/capabilities/implementation-services.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/getting-started/capabilities/implementation-services.mdx
@@ -1,16 +1,16 @@
---
-title: Implementation Services
-description: Whether you need help getting started or creating advanced customizations, we have a solution.
+title: Serviços de Implementação
+description: Se você precisa de ajuda para começar ou para criar personalizações avançadas, temos uma solução.
---
-## Onboarding Packs
+## Pacotes de Integração
-Get help from our core team to set up your Twenty workspace with our 4-hour Onboarding packs:
+Obtenha ajuda de nossa equipe principal para configurar seu espaço de trabalho do Twenty com nossos pacotes de Integração de 4 horas:
-* **Data Model Design**: Design and create your custom data model with objects, fields, and relationships
-* **Data Migration**: Migrate your existing data from your current CRM to Twenty
-* **Workflow Creation**: Create custom workflows to support your business processes
+* **Design de Modelo de Dados**: Projete e crie seu modelo de dados personalizado com objetos, campos e relacionamentos
+* **Migração de Dados**: Migre seus dados existentes do seu CRM atual para o Twenty
+* **Criação de Workflows**: Crie workflows personalizados para dar suporte aos seus processos de negócios
-## Implementation Partners
+## Parceiros de Implementação
-Work with certified Twenty partners for more advanced customizations and integrations. Reach out to our team via [contact@twenty.com](mailto:contact@twenty.com) to be matched with our partners.
+Trabalhe com parceiros certificados do Twenty para personalizações e integrações mais avançadas. Entre em contato com nossa equipe via [contact@twenty.com](mailto:contact@twenty.com) para ser conectado aos nossos parceiros.
diff --git a/packages/twenty-docs/l/pt/user-guide/getting-started/capabilities/what-is-twenty.mdx b/packages/twenty-docs/l/pt/user-guide/getting-started/capabilities/what-is-twenty.mdx
index 519e5a624e..30b9759c9b 100644
--- a/packages/twenty-docs/l/pt/user-guide/getting-started/capabilities/what-is-twenty.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/getting-started/capabilities/what-is-twenty.mdx
@@ -1,42 +1,42 @@
---
-title: What is Twenty
-description: Twenty is an open-source CRM that gives you the building blocks to create exactly what your business needs.
+title: O que é Twenty
+description: O Twenty é um CRM de código aberto que oferece os blocos de construção para criar exatamente o que a sua empresa precisa.
---
-## Vision
+## Visão
-Creating a good CRM is hard because it's a balancing act.
-For each business, the requirements seem straightforward, yet everyone's needs are distinct.
-The result is a CRM that's either too basic, or one that's attempting to be a jack-of-all-trades but ending up as a master of none.
+Criar um bom CRM é difícil porque é um ato de equilíbrio.
+Para cada empresa, os requisitos parecem simples, mas as necessidades de cada um são distintas.
+O resultado é um CRM que é muito básico ou que tenta ser um faz-tudo, mas não se destaca em nada.
-At first, Twenty looks like most CRMs you already know: you can track deals, organize contacts, manage tasks and notes.
-**But what sets it apart is our approach to extensibility. We are building an open platform that provides the building blocks for you to solve your unique business problems.**
+À primeira vista, o Twenty parece como a maioria dos CRMs que você já conhece: você pode acompanhar negócios, organizar contatos, gerenciar tarefas e anotações.
+**Mas o que o diferencia é nossa abordagem à extensibilidade. Estamos construindo uma plataforma aberta que fornece os blocos de construção para você resolver seus problemas de negócios únicos.**
-We prioritize universal principles and common patterns over feature lists.
-We don't try to have all the answers and instead empower users to find what works best for them.
-Open-source is the bedrock of our approach, ensuring that Twenty evolves with its community, for its community.
+Priorizamos princípios universais e padrões comuns sobre listas de funcionalidades.
+Não tentamos ter todas as respostas e, em vez disso, capacitamos os usuários a encontrar o que funciona melhor para eles.
+O código aberto é a base da nossa abordagem, garantindo que o Twenty evolua com sua comunidade, para sua comunidade.
-## Benefits
+## Benefícios
-**Customizable:** Designed to fit your business needs.
+**Personalizável:** Projetado para atender às suas necessidades de negócios.
-**Community-driven:** Built and maintained by a large open-source community.
+**Guiado pela Comunidade:** Construído e mantido por uma grande comunidade de código aberto.
-**Cost-effective:** You'll never be vendor-locked, because you can always self-host.
+**Custo-benefício:** Você nunca ficará preso a um fornecedor, porque você sempre pode hospedar por conta própria.
-## Main Features
+## Principais Características
-* **Calendar & Emails:** Sync your mailbox and calendar to see all communications on your CRM records. [Learn more](/l/pt/user-guide/calendar-emails/overview).
-* **Data Model:** Create custom objects and fields to match your unique business processes. [Explore](/l/pt/user-guide/data-model/overview).
-* **Data Migration:** Import and export your data via CSV or API. [Get started](/l/pt/user-guide/data-migration/overview).
-* **Views & Pipelines:** Organize your data with table views, kanban boards, and sales pipelines. [Discover](/l/pt/user-guide/views-pipelines/overview).
-* **Workflows:** Automate your business processes and integrate with external tools. [Build automations](/l/pt/user-guide/workflows/overview).
-* **AI:** Enhance your CRM with AI-powered features and agents. [Explore AI](/l/pt/user-guide/ai/overview).
-* **Dashboards:** Track performance with custom reports and visualizations. [View dashboards](/l/pt/user-guide/dashboards/overview).
-* **Permissions & Access:** Control who can view, edit, and manage your data with role-based permissions. [Configure access](/l/pt/user-guide/permissions-access/overview).
-* **Notes & Tasks:** Create notes and tasks linked to your records for better collaboration.
-* **API & Webhooks:** Connect to other apps and build custom integrations. [Start integrating](/l/pt/developers/extend/capabilities/apis).
+* **Calendário e E-mails:** Sincronize sua caixa de entrada e calendário para ver todas as comunicações nos seus registros do CRM. [Saiba mais](/l/pt/user-guide/calendar-emails/overview).
+* **Modelo de Dados:** Crie objetos e campos personalizados para atender aos seus processos de negócios específicos. [Explorar](/l/pt/user-guide/data-model/overview).
+* **Migração de Dados:** Importe e exporte seus dados via CSV ou API. [Comece](/l/pt/user-guide/data-migration/overview).
+* **Visualizações e Pipelines:** Organize seus dados com visualizações em tabela, quadros kanban e pipelines de vendas. [Descubra](/l/pt/user-guide/views-pipelines/overview).
+* **Fluxos de Trabalho:** Automatize seus processos de negócios e integre com ferramentas externas. [Crie automações](/l/pt/user-guide/workflows/overview).
+* **IA:** Aprimore seu CRM com recursos e agentes com tecnologia de IA. [Explorar IA](/l/pt/user-guide/ai/overview).
+* **Painéis:** Acompanhe o desempenho com relatórios personalizados e visualizações personalizadas. [Ver painéis](/l/pt/user-guide/dashboards/overview).
+* **Permissões e Acesso:** Controle quem pode visualizar, editar e gerenciar seus dados com permissões baseadas em funções. [Configurar acesso](/l/pt/user-guide/permissions-access/overview).
+* **Notas e Tarefas:** Crie notas e tarefas vinculadas aos seus registros para uma melhor colaboração.
+* **API e Webhooks:** Conecte-se a outros aplicativos e crie integrações personalizadas. [Comece a integrar](/l/pt/developers/extend/capabilities/apis).
-## Join now
+## Participe agora
-[Register here](https://app.twenty.com) or [become a contributor on GitHub](https://github.com/twentyhq/twenty).
+[Registre-se aqui](https://app.twenty.com) ou [torne-se um colaborador no GitHub](https://github.com/twentyhq/twenty).
diff --git a/packages/twenty-docs/l/pt/user-guide/getting-started/how-tos/configure-your-workspace.mdx b/packages/twenty-docs/l/pt/user-guide/getting-started/how-tos/configure-your-workspace.mdx
index 2ba871c337..620f267377 100644
--- a/packages/twenty-docs/l/pt/user-guide/getting-started/how-tos/configure-your-workspace.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/getting-started/how-tos/configure-your-workspace.mdx
@@ -1,77 +1,77 @@
---
-title: Configure Your Workspace
-description: Every business works differently. Start with these 3 steps to shape Twenty around your needs.
+title: Configure o seu Espaço de Trabalho
+description: Cada empresa trabalha de maneira diferente. Comece com estas 3 etapas para adaptar o Twenty às suas necessidades.
---
-**Quick Win**: Start with connecting your mailbox. This gives you immediate value and helps your team see Twenty in action with real data. You can do so under Settings → Accounts.
+**Ganho Rápido**: Comece conectando sua caixa de correio. Isso lhe dá um valor imediato e ajuda sua equipe a ver o Twenty em ação com dados reais. Você pode fazer isso em Configurações → Contas.
-## 1. Customize your data model
+## 1. Personalize seu modelo de dados
-Twenty offers the flexibility you need to shape the data model that will best support your day-to-day.
-Create objects and fields of any type, including relations between your different objects. You can do so under Settings → Data Model.
-Here are a few tips:
+O Twenty oferece a flexibilidade que você precisa para moldar o modelo de dados que melhor dará suporte ao seu dia a dia.
+Crie objetos e campos de qualquer tipo, incluindo relações entre seus diferentes objetos. Você pode fazer isso em Configurações → Modelo de Dados.
+Aqui estão algumas dicas:
-* **You are not limited in the number of custom fields nor custom objects**. Adding custom objects and fields will not lead to upgrading your plan.
-* **People, Companies and Opportunities are the three objects from where you can access the emails and meetings synchronized from your mailbox and calendar**. We recommend using those as much as possible, adding fields to categorize your records if need be. Here is an example:
- * It is best to use the People object for your prospects and partners, creating a field on the People object named `Person Type`, instead of creating a Partner custom object. Because you would not be able to access the emails exchanged with this person from the Partner records.
- * Create different views under People, one to display partners and one to display prospects.
-* Two People cannot have the same email address. Two Companies cannot have the same domain.
-* You can deactivate standard fields and objects you do not want to use.
-* You can hide fields from views: don't be afraid of creating fields, you won't have to display all of them.
+* **Você não está limitado no número de campos personalizados nem de objetos personalizados**. Adicionar objetos e campos personalizados não resultará em uma atualização do seu plano.
+* **Pessoas, Empresas e Oportunidades são os três objetos a partir dos quais você pode acessar os e-mails e as reuniões sincronizados da sua caixa de correio e do seu calendário**. Recomendamos usar esses o máximo possível, adicionando campos para categorizar seus registros, se necessário. Aqui está um exemplo:
+ * É melhor usar o objeto Pessoas para seus prospectos e parceiros, criando um campo no objeto Pessoas chamado `Tipo de Pessoa`, em vez de criar um objeto de Parceiro personalizado. Porque você não conseguiria acessar os e-mails trocados com essa pessoa a partir dos registros de Parceiro.
+ * Crie diferentes visualizações em Pessoas, uma para exibir parceiros e outra para exibir prospectos.
+* Duas Pessoas não podem ter o mesmo endereço de e-mail. Duas Empresas não podem ter o mesmo domínio.
+* Você pode desativar campos e objetos padrão que não deseja usar.
+* Você pode ocultar campos das visualizações: não tenha medo de criar campos, você não terá que exibir todos.
-Read [this article](/l/pt/user-guide/data-model/overview) to learn how to design your data model.
+Leia [este artigo](/l/pt/user-guide/data-model/overview) para aprender como projetar seu modelo de dados.
-## 2. Bring your data in
+## 2. Traga seus dados
-Bringing your existing data into Twenty gives your team context from the start.
+Trazer seus dados existentes para o Twenty dá à sua equipe contexto desde o início.
-### Connect your mailbox
+### Conecte sua caixa de correio
-If you have not done so when creating your workspace, connect your **Google or Microsoft account** under Settings → Accounts. This allows Twenty to:
+Se você não fez isso ao criar seu espaço de trabalho, conecte sua **conta do Google ou Microsoft** em Configurações → Contas. Isso permite que o Twenty:
-* Import your messages and meetings
-* Auto-create contacts based on interactions (optional)
-* Keep communication history visible for your team
+* Importe suas mensagens e reuniões
+* Crie automaticamente contatos com base em interações (opcional)
+* Mantenha o histórico de comunicação visível para sua equipe
-**Using another provider?**
-You can add another mailbox via SMTP or another calendar via CalDAV. You will need to activate the feature under Settings → Releases → Lab, and then go back to the Settings → Accounts tab.
+**Usando outro provedor?**
+Você pode adicionar outra caixa de correio via SMTP ou outro calendário via CalDAV. Vá para **Configurações → Contas** para configurar.
-### Import data via csv
+### Importe dados via csv
-Use the Command menu (`Cmd + K` or `Ctrl + K`) to import People, Companies, Opportunities, or any custom objects via CSV.
+Use o menu de Comando (`Cmd + K` ou `Ctrl + K`) para importar Pessoas, Empresas, Oportunidades ou qualquer objeto personalizado via CSV.
-**Key guidelines**:
+**Diretrizes principais**:
-* Download the sample file to understand the expected format
-* Limit each file to 10k records
-* Remove duplicate emails for People or duplicate domains for Companies
-* Review and fix errors (highlighted in yellow) before importing
+* Baixe o arquivo de exemplo para entender o formato esperado
+* Limite cada arquivo a 10k registros
+* Remova e-mails duplicados para Pessoas ou domínios duplicados para Empresas
+* Revise e corrija erros (destacados em amarelo) antes de importar
-Read [this article](/l/pt/user-guide/data-migration/overview) to learn more about data import.
+Leia [este artigo](/l/pt/user-guide/data-migration/overview) para saber mais sobre importação de dados.
-## 3. Create your first view
+## 3. Crie sua primeira visualização
-Creating different views is key to make the data actionable for your team.
-Here is how to proceed:
+Criar diferentes visualizações é essencial para tornar os dados acionáveis para sua equipe.
+Aqui está como proceder:
-* **Add or hide columns**
- Manage the fields visible in a given view clicking on Options → Fields (from the top right). You can show/hide fields from there.
+* **Adicione ou oculte colunas**
+ Gerencie os campos visíveis em uma determinada visualização clicando em Opções → Campos (no canto superior direito). Você pode mostrar/ocultar campos a partir daí.
-* **Reorder fields**
- Reorder the fields from a given view clicking on Options → Fields (from the top right). Drag and drop the fields to reorder them.
+* **Reorganize campos**
+ Reorganize os campos de uma determinada visualização clicando em Opções → Campos (no canto superior direito). Arraste e solte os campos para reordená-los.
-* **Filter your view**
- Narrow down the records displayed using the Filters from the top right.
+* **Filtre sua visualização**
+ Restrinja os registros exibidos usando os Filtros no canto superior direito.
-* **Sort records**
- Reorder records displayed using the Sort function from the top right, or by clicking directly on the column name.
+* **Ordene registros**
+ Reorganize os registros exibidos usando a função Ordenar no canto superior direito, ou clicando diretamente no nome da coluna.
-* **Choose the layout**
- You can switch to a **Kanban layout** or a list **Group By** layout, as long as the object has a `Stage` or similar select-type field.
+* **Escolha o layout**
+ Você pode alternar para um layout **Kanban** ou um layout de lista **Agrupar Por**, desde que o objeto tenha um campo tipo select `Estágio` ou similar.
-* **Save your view as Favorites**
- This can be done using the dropdown menu showing the different views.
+* **Salve sua visualização como Favoritos**
+ Isso pode ser feito usando o menu suspenso que mostra as diferentes visualizações.
-## What's next?
+## O que vem depois?
-Start creating automations using [workflows](/l/pt/user-guide/workflows/overview).
+Comece a criar automações usando [workflows](/l/pt/user-guide/workflows/overview).
diff --git a/packages/twenty-docs/l/pt/user-guide/getting-started/how-tos/create-workspace.mdx b/packages/twenty-docs/l/pt/user-guide/getting-started/how-tos/create-workspace.mdx
index f93617f83f..3f3415a6d6 100644
--- a/packages/twenty-docs/l/pt/user-guide/getting-started/how-tos/create-workspace.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/getting-started/how-tos/create-workspace.mdx
@@ -1,48 +1,48 @@
---
-title: Create a Workspace
-description: Follow a step-by-step guide on how to register on Twenty, choose a subscription plan, and set up your account.
+title: Criar Espaço de Trabalho
+description: Siga um guia passo a passo sobre como se registrar na Twenty, escolher um plano de assinatura e configurar sua conta.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-## Step 1: Registration
+## Passo 1: Registro
-1. Navigate to [Twenty Sign Up](https://app.twenty.com).
-2. Select your preferred sign-up method:
- * **Continue with Google** for Google account registration.
- * **Continue with Microsoft** for Microsoft account registration.
- * Or, **Continue With Email** for email registration.
+1. Navegue até [Cadastro Twenty](https://app.twenty.com).
+2. Selecione o método de inscrição de sua preferência:
+ * **Continuar com Google** para registro com conta do Google.
+ * **Continuar com Microsoft** para registro com conta da Microsoft.
+ * Ou, **Continuar Com E-mail** para registro por e-mail.
-
+
-## Step 2: Choosing a Trial Period
+## Passo 2: Escolhendo um Período de Avaliação
-Choose between two trial periods:
+Escolha entre dois períodos de avaliação:
-### 30 days
+### 30 dias
-With credit card
+Com cartão de crédito
-### 7 days
+### 7 dias
-Without credit card
+Sem cartão de crédito
-Both trials include:
+Ambos os testes incluem:
-* Full access
-* Unlimited contacts
-* Email integration
-* Custom objects
-* API & Webhooks
+* Acesso total
+* Contactos ilimitados
+* Integração de e-mail
+* Objetos personalizados
+* API e Webhooks
-You can click on "Change plan" to choose a different plan or billing interval.
+Você pode clicar em "Mudar plano" para escolher um plano ou intervalo de faturamento diferente.
-## Step 3: Payment Confirmation & Account Setup
+## Passo 3: Confirmação de Pagamento e Configuração de Conta
-Post payment approval via Stripe, you're directed to create your workspace and user profile. Remember that you can cancel your subscription anytime.
+Após a aprovação do pagamento via Stripe, você é direcionado para criar seu espaço de trabalho e perfil de usuário. Lembre-se de que você pode cancelar sua assinatura a qualquer momento.
-## Support
+## Suporte
-For queries or help, connect with the dedicated support team at [contact@twenty.com](mailto:contact@twenty.com) or send a message on [Discord](https://discord.gg/cx5n4Jzs57).
+Para dúvidas ou ajuda, conecte-se com a equipe de suporte dedicada em [contact@twenty.com](mailto:contact@twenty.com) ou envie uma mensagem no [Discord](https://discord.gg/cx5n4Jzs57).
diff --git a/packages/twenty-docs/l/pt/user-guide/getting-started/how-tos/navigate-around-twenty.mdx b/packages/twenty-docs/l/pt/user-guide/getting-started/how-tos/navigate-around-twenty.mdx
index 8e03ed1a41..e0fd67f9de 100644
--- a/packages/twenty-docs/l/pt/user-guide/getting-started/how-tos/navigate-around-twenty.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/getting-started/how-tos/navigate-around-twenty.mdx
@@ -1,83 +1,84 @@
---
-title: Navigate Around Twenty
-description: Get a quick overview of how to navigate through the platform and where to take different types of actions.
+title: Navegue pelo Twenty
+description: Obtenha uma visão geral rápida de como navegar pela plataforma e onde realizar diferentes tipos de ações.
---
-## The Main Layout
+## O Layout Principal
-The center of the screen is **where your records live**: people, companies, opportunities, tasks, notes, dashboards, workflows and any other object you created. This is where the day-to-day work happens.
-You can **view, edit, delete records** from there as well as **creating new views**.
+O centro da tela é **onde seus registros estão**: pessoas, empresas, oportunidades, tarefas, notas, painéis, fluxos de trabalho e qualquer outro objeto que você criou. É aqui que o trabalho diário acontece.
+Você pode **visualizar, editar, excluir registros** a partir daqui, bem como **criar novas visualizações**.
-## The Navigation Bar
+## Barra de Navegação
-On the left side, from the top to the bottom, you'll be able to:
+Do lado esquerdo, de cima para baixo, você poderá:
-* Switch between your **several workspaces** using the dropdown menu or create a new workspace
-* Use the **search bar** (press `/` to focus on it instantly)
-* Open the **Settings** section
-* Have direct access to your **Favourites views**. Favourites are unique for each user.
-* Switch between different objects
-* **Create automations** using workflows
-* Reach out to Support and open our User Guide.
+* Alternar entre seus **diversos espaços de trabalho** usando o menu suspenso ou criar um novo espaço de trabalho
+* Usar a **barra de pesquisa** (pressionar `/` para focar nela instantaneamente)
+* Abrir a seção de **Configurações**
+* Ter acesso direto às suas visualizações favoritas. Favoritos são exclusivos para cada usuário.
+* Alternar entre diferentes objetos
+* **Criar automações** usando fluxos de trabalho
-## The Command Menu
+## Menu de Comandos
-The command menu gives you **quick access to actions** in Twenty. You can access it in two ways:
+O menu de comandos oferece **acesso rápido a ações** no Twenty. Você pode acessá-lo de duas maneiras:
-* **Keyboard shortcut**: Press `Cmd + K` (Mac) or `Ctrl + K` (Windows)
-* **Mouse**: Click the three dots in the top right corner
- From there, you can:
-* Create new records
-* **Import and export data via csv**
-* Create new views
-* Access deleted records (Twenty supports soft and hard deletes)
-* See the keyboard shortcuts to quickly access objects in your workspace
+* **Atalho de teclado**: Pressione `Cmd + K` (Mac) ou `Ctrl + K` (Windows)
+* **Mouse**: Clique nos três pontos no canto superior direito
+ A partir daí, você pode:
+* Criar novos registros
+* **Importar e exportar dados via csv**
+* Criar novas visualizações
+* Acessar registros excluídos (Twenty dá suporte a exclusões lógicas e permanentes)
+* Ver os atalhos de teclado para acessar rapidamente objetos no seu espaço de trabalho
-## The Search Bar
+## Barra de Pesquisa
-The search bar is accesible via the Command Menu, at the top of your navigation bar, or by pressing `/` to focus on it instantly. Search works across all object.
+A barra de pesquisa é acessível pelo Menu de Comandos, no topo da sua barra de navegação, ou pressionando `/` para focar nela instantaneamente. A pesquisa funciona em todos os objetos.
-## The Side Panel
+## Painel Lateral
-When you click on a record, the side panel appears on the right. This gives you a quick overview of the record's key information, without bringing you to another page. From there, you can decide to close this overview or to get additional information about this record, clicking on the Open button.
+Quando você clica em um registro, o painel lateral aparece à direita. Isso oferece uma visão geral rápida das informações principais do registro, sem levá-lo a outra página. A partir daí, você pode decidir fechar essa visão geral ou obter informações adicionais sobre esse registro, clicando no botão Abrir.
-## Views
+## Visualizações
-Every object (like Opportunities or People) supports multiple views. You're not limited in the number of views per object.
+Todos os objetos (como Oportunidades ou Pessoas) suportam várias visualizações. Você não está limitado no número de visualizações por objeto.
-Use the dropdown menu at the top left of the main layout to switch between the different views. For example:
+Use o menu suspenso no canto superior esquerdo do layout principal para alternar entre as diferentes visualizações. Por exemplo:
-* Use a Kanban view to track opportunities by stage
-* Use Group By view to create sections and improve efficiency
-* Use filters to focus on specific records (e.g. leads created last week)
-* Save filtered views to reuse them later
-* Favourite views for fast access
+* Usar uma visualização Kanban para rastrear oportunidades por estágio
+* Usar a visualização Agrupar Por para criar seções e melhorar a eficiência
+* Use filtros para focar em registros específicos (por exemplo, leads criados na semana passada)
+* Salvar visualizações filtradas para reutilizá-las mais tarde
+* Marcar visualizações como favoritas para acesso rápido
-If you're new to Views, read our [Views & Pipelines guide](/l/pt/user-guide/views-pipelines/overview) to learn how to create and customize them.
+Se você é novo em Visualizações, leia nosso [Guia de Visualizações e Pipelines](/l/pt/user-guide/views-pipelines/overview) para aprender a criá-las e personalizá-las.
-## Settings
+## Configurações
-Open your Settings from the top left to:
+Abra suas Configurações no canto superior esquerdo para:
-* **Connect your mailbox and calendar** accounts for seamless email and calendar sync
-* Customize your **data model**: create custom objects, fields, and relationships
-* **Access the API playground and configure webhooks**
-* **Manage user permissions** and workspace access controls
-* Invite team members and manage user roles
-* Edit your profile and workspace preferences
-* Configure billing and monitor workflow credits usage
-* Discover the latest releases and upcoming features (under Releases → Lab tab)
+* **Conectar suas contas de e-mail e calendário** para sincronização fluida de e-mails e calendários
+* Personalizar seu **modelo de dados**: criar objetos personalizados, campos e relações
+* **Acessar o playground da API e configurar webhooks**
+* **Gerenciar permissões de usuário** e controles de acesso ao espaço de trabalho
+* Convidar membros da equipe e gerenciar funções dos usuários
+* Editar seu perfil e preferências do espaço de trabalho
+* Configurar faturamento e monitorar o uso de créditos de fluxo de trabalho
+* Descubra e ative recursos futuros (em Atualizações → Acesso Antecipado)
+* **Acesse o Suporte** para entrar em contato via chat ao vivo
+* **Abra a Documentação** para navegar pelo Guia do Usuário e pela documentação para desenvolvedores
-If you do not see all those sections under Settings, reach out to your workspace administrator - some of them have restricted access.
+Se você não ver todas essas seções nas Configurações, entre em contato com o administrador do seu espaço de trabalho - algumas delas têm acesso restrito.
diff --git a/packages/twenty-docs/l/pt/user-guide/introduction.mdx b/packages/twenty-docs/l/pt/user-guide/introduction.mdx
index 5696d932a9..45d2ace30a 100644
--- a/packages/twenty-docs/l/pt/user-guide/introduction.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/introduction.mdx
@@ -1,63 +1,62 @@
---
-title: Discover Twenty
-description: Welcome to Twenty User Guide, your resources for advanced configurations and best practices.
+title: Descubra o Twenty
+description: Bem-vindo ao Guia do Usuário do Twenty, sua fonte para configurações avançadas e melhores práticas.
---
import { CardTitle } from "/snippets/card-title.mdx"
- Discover Twenty
- Learn what Twenty is and how it can help your business.
+ Descubra o Twenty
+ Saiba o que é o Twenty e como ele pode ajudar sua empresa.
- Data Model
- Customize your data model to fit your business processes.
+ Modelo de Dados
+ Personalize seu modelo de dados para se adequar aos processos da sua empresa.
- Data Migration
- Import and export your data via CSV or API.
+ Migração de Dados
+ Importe e exporte seus dados via CSV ou API.
- Calendar & Emails
- Centralize your team's meetings and emails.
+ Calendário & E-mails
+ Centralize as reuniões e os e-mails da sua equipe.
- Workflows
- Automate processes and integrate with external tools.
+ Fluxos de trabalho
+ Automatize processos e integre com ferramentas externas.
- AI
- Enhance your team with AI agents.
+ IA
+ Aprimore sua equipe com agentes de IA.
- Views & Pipelines
- Organize your data with actionable views and pipelines.
+ Visualizações & Pipelines
+ Organize seus dados com visualizações e pipelines acionáveis.
- Dashboards
- Real-time insights to track performance.
+ Painéis
+ Insights em tempo real para acompanhar o desempenho.
- Permissions & Access
- Manage roles and access to Twenty.
+ Gerencie papéis e o acesso ao Twenty.
- Billing
- Understand how Twenty pricing and billing works.
+ Faturamento
+ Entenda como funcionam os preços e o faturamento do Twenty.
- Settings
- Configure your workspace preferences.
+ Configurações
+ Configure as preferências do seu espaço de trabalho.
diff --git a/packages/twenty-docs/l/pt/user-guide/permissions-access/capabilities/permissions.mdx b/packages/twenty-docs/l/pt/user-guide/permissions-access/capabilities/permissions.mdx
index ddb2d78a99..477b515f39 100644
--- a/packages/twenty-docs/l/pt/user-guide/permissions-access/capabilities/permissions.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/permissions-access/capabilities/permissions.mdx
@@ -1,198 +1,198 @@
---
-title: Permissions
-description: Control access to objects, fields, and settings with role-based permissions.
+title: Permissões
+description: Controle o acesso a objetos, campos e configurações com permissões baseadas em função.
image: /images/user-guide/permissions/permissions.png
---
-Twenty's permission system allows you to control access to three main areas:
+O sistema de permissões do Twenty permite que você controle o acesso a três áreas principais:
-* **Objects and Fields**: Control who can view, edit, or delete records and individual fields
-* **Settings**: Manage access to workspace configuration and administrative functions
-* **Actions**: Control general workspace actions like importing data or sending emails
+* **Objetos e Campos**: Controle quem pode visualizar, editar ou excluir registros e campos individuais
+* **Configurações**: Gerencie o acesso à configuração do espaço de trabalho e funções administrativas
+* **Ações**: Controle ações gerais do espaço de trabalho, como importar dados ou enviar e-mails
-## Create a Role
+## Criar uma Função
-To create a new role:
+Para criar uma nova função:
-1. Go to **Settings → Roles**
-2. Under **All Roles**, click on **+ Create Role**
-3. Enter a role name
-4. In the default **Permissions** tab, [configure permissions](#customize-permissions)
-5. Click **Save** to finish
+1. Vá para **Configurações → Funções**
+2. Em **Todas as Funções**, clique em **+ Criar Função**
+3. Digite um nome para a função
+4. Na aba padrão **Permissões**, [configure as permissões](#customize-permissions)
+5. Clique em **Salvar** para finalizar
-## Delete a Role
+## Excluir uma Função
-To delete a role:
+Para excluir uma função:
-1. Go to **Settings → Roles**
-2. Click on the role you want to remove
-3. Open the **Settings** tab, then click **Delete Role**
-4. Click **Confirm** in the modal
+1. Vá para **Configurações → Funções**
+2. Clique na função que deseja remover
+3. Abra a aba de **Configurações** e clique em **Excluir Função**
+4. Clique em **Confirmar** no modal
- If a role is deleted, any workspace member assigned to it will be automatically reassigned to the default role. All except the **Admin** role can be deleted. There must always be at least one member assigned to the **Admin** role.
+ Se uma função for excluída, qualquer membro do espaço de trabalho atribuído a ela será automaticamente reatribuído à função padrão. Todas, exceto a função **Admin**, podem ser excluídas. Deve sempre haver pelo menos um membro atribuído à função **Admin**.
-## Assign Roles to Members
+## Atribuir Funções a Membros
-### View Current Assignments
+### Visualizar Atribuições Atuais
-* Go to **Settings → Roles**
-* See all roles and how many members are assigned to each
-* View which members have which roles
+* Vá para **Configurações → Funções**
+* Veja todas as funções e quantos membros estão atribuídos a cada uma
+* Veja quais membros têm quais funções
-### Assign a Role to a Member
+### Atribuir uma Função a um Membro
-1. Go to **Settings → Roles**
-2. Click on the role you want to assign
-3. Open the **Assignment** tab
-4. Click **+ Assign to member**
-5. Select the workspace member from the list
-6. Confirm the assignment
+1. Vá para **Configurações → Funções**
+2. Clique na função que deseja atribuir
+3. Abra a aba de **Atribuição**
+4. Clique em **+ Atribuir a membro**
+5. Selecione o membro do espaço de trabalho da lista
+6. Confirme a atribuição
-### Set Default Role
+### Definir Função Padrão
-1. Go to **Settings → Roles**
-2. In the **Options** section, find **Default Role**
-3. Select which role new members should automatically receive
-4. New workspace members will be assigned this role when they join
+1. Vá para **Configurações → Funções**
+2. Na seção **Opções**, encontre **Função Padrão**
+3. Selecione qual função novos membros devem receber automaticamente
+4. Novos membros do espaço de trabalho serão atribuídos a essa função ao ingressar
- You can only assign roles to existing workspace members. To invite new members, use [Member Management](/l/pt/user-guide/settings/capabilities/member-management).
+ Você só pode atribuir funções a membros existentes do espaço de trabalho. Para convidar novos membros, use [Gestão de Membros](/l/pt/user-guide/settings/capabilities/member-management).
-## Customize Permissions
+## Personalizar Permissões
-Permissions determine what each role can access or modify within your workspace, including workspace objects records, settings, and actions.
+As permissões determinam o que cada função pode acessar ou modificar dentro do seu espaço de trabalho, incluindo registros de objetos do espaço de trabalho, configurações e ações.
-### Object Permissions
+### Permissões de Objetos
-The **Objects** section controls what this role can do with records across your workspace.
+A seção **Objetos** controla o que esta função pode fazer com registros em todo o seu espaço de trabalho.
-#### Set Default Permissions (All Objects)
+#### Definir permissões padrão (Todos os objetos)
-First, configure the baseline permissions that apply to **all objects** by default:
+Primeiro, configure as permissões básicas que se aplicam a **todos os objetos** por padrão:
-| Permission | Description |
-| ---------------------------------- | -------------------------------------- |
-| **See Records on All Objects** | View records in lists and detail pages |
-| **Edit Records on All Objects** | Modify existing records |
-| **Delete Records on All Objects** | Soft-delete records (can be restored) |
-| **Destroy Records on All Objects** | Permanently delete records |
+| Permissão | Descrição |
+| ------------------------------------------ | --------------------------------------------------------- |
+| **Ver registros em todos os objetos** | Visualizar registros em listas e páginas de detalhes |
+| **Editar registros em todos os objetos** | Modificar registros existentes |
+| **Excluir registros em todos os objetos** | Excluir registros de forma lógica (podem ser restaurados) |
+| **Destruir registros em todos os objetos** | Excluir registros permanentemente |
-Select or unselect based on what should be the default behavior for this role.
+Selecione ou desmarque com base no que deve ser o comportamento padrão desta função.
- **Example — Intern role**: An intern should be able to see all objects but not edit them by default. Enable "See Records on All Objects" but leave "Edit Records on All Objects" unchecked.
+ **Exemplo — função de Estagiário**: Um estagiário deve poder ver todos os objetos, mas não editá-los por padrão. Ative "Ver registros em todos os objetos", mas deixe "Editar registros em todos os objetos" desmarcado.
-#### Add Object-Level Exceptions
+#### Adicionar exceções em nível de objeto
-After setting defaults, use the **Object-Level** sub-section to add rules that override the defaults for specific objects.
+Após definir os padrões, use a subseção **Em nível de objeto** para adicionar regras que substituem os padrões para objetos específicos.
-Click **+ Add rule** and select an object to create an exception.
+Clique em **+ Adicionar regra** e selecione um objeto para criar uma exceção.
-**Example rules for an Intern role:**
+**Regras de exemplo para uma função de Estagiário:**
-| Rule | Effect |
-| ------------------------------------- | ------------------------------------------------------ |
-| Opportunities → disable "See Records" | Intern cannot see the Opportunities object at all |
-| People → enable "Edit Records" | Intern can edit People records (but not other objects) |
+| Regra | Efeito |
+| ----------------------------------------- | ------------------------------------------------------------------------- |
+| Oportunidades → desativar "Ver registros" | O estagiário não consegue ver o objeto Oportunidades. |
+| Pessoas → ativar "Editar registros" | O estagiário pode editar registros de Pessoas (mas não de outros objetos) |
-### Field Permissions
+### Permissões de Campos
-Within each object-level rule, you can go further and configure **field-level permissions** to control access to specific fields.
+Em cada regra em nível de objeto, você pode ir além e configurar **permissões em nível de campo** para controlar o acesso a campos específicos.
-| Permission | Description |
-| -------------- | -------------------------- |
-| **See Field** | View the field value |
-| **Edit Field** | Modify the field value |
-| **No Access** | Field is completely hidden |
+| Permissão | Descrição |
+| ---------------- | ------------------------------ |
+| **Ver campo** | Visualizar o valor do campo |
+| **Editar campo** | Modificar o valor do campo |
+| **Sem acesso** | O campo fica totalmente oculto |
-**Example — Restrict sensitive fields:**
+**Exemplo — Restringir campos sensíveis:**
-For the Intern role with People edit access, you might want to restrict certain fields:
+Para a função de Estagiário com acesso de edição em Pessoas, talvez você queira restringir certos campos:
-* People → Email → **See Field** only (cannot edit)
-* People → Address → **No Access** (completely hidden)
+* Pessoas → E-mail → apenas **Ver campo** (não pode editar)
+* Pessoas → Endereço → **Sem acesso** (totalmente oculto)
-This allows the intern to edit most People fields while protecting sensitive information.
+Isso permite que o estagiário edite a maioria dos campos de Pessoas enquanto protege informações sensíveis.
-### How Permission Inheritance Works
+### Como funciona a herança de permissões
-Permissions cascade from general to specific:
+As permissões se propagam do geral para o específico:
-1. **All Objects** → sets the baseline for all objects
-2. **Object-Level rules** → override the baseline for specific objects
-3. **Field-Level rules** → override the object setting for specific fields
+1. **Todos os objetos** → define a base para todos os objetos
+2. **Regras em nível de objeto** → substituem a base para objetos específicos
+3. **Regras em nível de campo** → substituem a configuração do objeto para campos específicos
-More specific settings always take precedence.
+Configurações mais específicas sempre têm precedência.
-### Managing Permission Overrides
+### Gerenciando Substituições de Permissões
-To override inherited permissions:
+Para substituir permissões herdadas:
-1. Click **X** to remove the inherited rule
-2. Select the specific permissions you want
-3. Click the orange **Undo** icon (circular arrow) to revert changes
+1. Clique em **X** para remover a regra herdada
+2. Selecione as permissões específicas que você deseja
+3. Clique no ícone laranja de **Desfazer** (seta circular) para reverter alterações
-When done, click **Finish**, then **Save** once redirected to the role page.
+Quando terminar, clique em **Finalizar**, em seguida, **Salvar** ao redirecionar para a página de função.
-### Workspace Settings Permissions
+### Permissões de Configurações do Espaço de Trabalho
-Control access to workspace settings in two ways:
+Controle o acesso às configurações do espaço de trabalho de duas maneiras:
-* Toggle **Settings All Access** to grant full access
-* Or enable specific permissions (e.g., API key generation, workspace preferences, role assignment, data model configuration, security settings, and workflow management)
+* Ative **Acesso Total a Configurações** para conceder acesso total
+* Ou ative permissões específicas (por exemplo, geração de chave API, preferências do espaço de trabalho, atribuição de funções, configuração do modelo de dados, configurações de segurança e gestão de fluxos de trabalho)
- **Current limitation**: Access to workflow management is currently required to manually trigger workflows. This behavior may change in future releases.
+ **Limitação atual**: O acesso ao gerenciamento de fluxos de trabalho é atualmente necessário para acionar fluxos de trabalho manualmente. Esse comportamento pode mudar em versões futuras.
-### Workspace Action Permissions
+### Permissões de Ação do Espaço de Trabalho
-Control access to general workspace actions:
+Controle o acesso a ações gerais do espaço de trabalho:
-* Toggle **Application All Access** to grant full permissions
-* Or enable individual actions such as **Send Email**, **Import CSV**, and **Export CSV**
+* Ative **Acesso Total à Aplicação** para conceder permissões totais
+* Ou habilite ações individuais como **Enviar Email**, **Importar CSV** e **Exportar CSV**
-## Assigning Roles to API Keys and AI Agents
+## Atribuindo funções a chaves de API e agentes de IA
-Beyond workspace members, roles can also be assigned to **API Keys** and **AI Agents**. This is particularly helpful for teams who want to control exactly "who" can do what in their workspace—including automated processes and integrations.
+Além dos membros do espaço de trabalho, funções também podem ser atribuídas a **Chaves de API** e **Agentes de IA**. Isso é particularmente útil para equipes que desejam controlar exatamente "quem" pode fazer o quê em seu espaço de trabalho — incluindo processos automatizados e integrações.
-### Why Assign Roles to API Keys and AI Agents?
+### Por que atribuir funções a chaves de API e agentes de IA?
-* **Security**: Limit what automated processes can access or modify
-* **Compliance**: Ensure integrations only touch the data they need
-* **Control**: Prevent accidental data changes from misconfigured automations
-* **Auditability**: Track which actions were performed by which integration or agent
+* **Segurança**: Limite o que os processos automatizados podem acessar ou modificar
+* **Conformidade**: Garanta que as integrações acessem apenas os dados de que precisam
+* **Controle**: Evite alterações acidentais de dados causadas por automações mal configuradas
+* **Auditabilidade**: Acompanhe quais ações foram realizadas por qual integração ou agente
-### Assign a Role to an API Key
+### Atribuir uma função a uma chave de API
-1. Go to **Settings → Roles**
-2. Click on the role you want to assign
-3. Open the **Assignment** tab
-4. Under **API Keys**, click **+ Assign to API key**
-5. Select the API key from the list
-6. Confirm the assignment
+1. Vá para **Configurações → Funções**
+2. Clique na função que deseja atribuir
+3. Abra a aba de **Atribuição**
+4. Em **Chaves de API**, clique em **+ Atribuir à chave de API**
+5. Selecione a chave de API na lista
+6. Confirme a atribuição
-The API key will now inherit all permissions defined by that role. Any API calls made with this key will be restricted accordingly.
+A chave de API agora herdará todas as permissões definidas por essa função. Qualquer chamada de API feita com essa chave será restringida de acordo.
- API keys without an assigned role use default permissions. For tighter security, always assign a specific role to production API keys.
+ Chaves de API sem uma função atribuída usam permissões padrão. Para maior segurança, sempre atribua uma função específica às chaves de API de produção.
-### Assign a Role to an AI Agent
+### Atribuir uma função a um agente de IA
-1. Go to **Settings → Roles**
-2. Click on the role you want to assign
-3. Open the **Assignment** tab
-4. Under **AI Agents**, click **+ Assign to AI agent**
-5. Select the AI agent from the list
-6. Confirm the assignment
+1. Vá para **Configurações → Funções**
+2. Clique na função que deseja atribuir
+3. Abra a aba de **Atribuição**
+4. Em **Agentes de IA**, clique em **+ Atribuir ao agente de IA**
+5. Selecione o agente de IA na lista
+6. Confirme a atribuição
-The AI agent will only be able to access data and perform actions allowed by its assigned role.
+O agente de IA só poderá acessar dados e executar ações permitidas pela função que lhe foi atribuída.
- For AI agents running within workflows, this ensures the agent cannot access or modify data outside its intended scope—even if the workflow has broader permissions.
+ Para agentes de IA executados em fluxos de trabalho, isso garante que o agente não possa acessar ou modificar dados fora do seu escopo pretendido — mesmo que o fluxo de trabalho tenha permissões mais amplas.
diff --git a/packages/twenty-docs/l/pt/user-guide/permissions-access/capabilities/sso-configuration.mdx b/packages/twenty-docs/l/pt/user-guide/permissions-access/capabilities/sso-configuration.mdx
index 310c161605..f96221c975 100644
--- a/packages/twenty-docs/l/pt/user-guide/permissions-access/capabilities/sso-configuration.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/permissions-access/capabilities/sso-configuration.mdx
@@ -1,125 +1,125 @@
---
-title: SSO Configuration
-description: Configure Single Sign-On for secure enterprise authentication.
+title: Configuração de SSO
+description: Configure o Single Sign-On para autenticação corporativa segura.
---
-## About SSO
+## Sobre o SSO
-Single Sign-On (SSO) allows your team members to log into Twenty using your organization's identity provider. This provides:
+O Single Sign-On (SSO) permite que os membros da sua equipe façam login no Twenty usando o provedor de identidade da sua organização. Isso oferece:
-* **Centralized access control**: Manage access from one place
-* **Enhanced security**: Leverage your existing security policies
-* **Better user experience**: One set of credentials for all tools
+* **Controle de acesso centralizado**: Gerencie o acesso em um único lugar
+* **Segurança aprimorada**: Aproveite suas políticas de segurança existentes
+* **Melhor experiência do usuário**: Um conjunto de credenciais para todas as ferramentas
-## Supported Providers
+## Provedores suportados
-Twenty supports SSO with:
+O Twenty oferece suporte a SSO com:
-* **SAML 2.0**: Works with most enterprise identity providers
-* **Google Workspace**: For organizations using Google
-* **Microsoft Entra ID**: (formerly Azure AD) For Microsoft environments
+* **SAML 2.0**: Funciona com a maioria dos provedores de identidade corporativos
+* **Google Workspace**: Para organizações que usam o Google
+* **Microsoft Entra ID**: (anteriormente Azure AD) Para ambientes Microsoft
-## Setting Up SSO
+## Configurando o SSO
-### Prerequisites
+### Pré-requisitos
-* Organization plan (cloud and self-hosted workspaces)
-* Admin access to your identity provider
-* Admin access to Twenty workspace
+* Plano da organização (workspaces em nuvem e auto-hospedados)
+* Acesso de administrador ao seu provedor de identidade
+* Acesso de administrador ao workspace do Twenty
- **For self-hosting users willing to set up SSO**, reach out to contact@twenty.com
+ **Para usuários de auto-hospedagem que desejam configurar SSO**, entre em contato pelo contact@twenty.com
-### Configuration Steps
+### Etapas de configuração
-#### 1. Access SSO Settings
+#### 1. Acesse as configurações de SSO
-1. Go to **Settings → Security**
-2. Find the **SSO Configuration** section
-3. Click **Configure SSO**
+1. Vá para **Configurações → Segurança**
+2. Encontre a seção **Configuração de SSO**
+3. Clique em **Configurar SSO**
-#### 2) Choose Your Provider
+#### 2) Escolha seu provedor
-Select your identity provider from the list or choose "Custom SAML" for other providers.
+Selecione seu provedor de identidade na lista ou escolha "Custom SAML" para outros provedores.
-#### 3. Configure Your Identity Provider
+#### 3. Configure seu provedor de identidade
-You'll need to configure your identity provider with:
+Você precisará configurar seu provedor de identidade com:
-* **Entity ID**: Provided by Twenty
-* **ACS URL**: The callback URL for authentication
-* **Certificate**: For secure communication
+* **ID da Entidade**: Fornecido pelo Twenty
+* **URL ACS**: A URL de retorno para autenticação
+* **Certificado**: Para comunicação segura
-#### 4. Enter Provider Details in Twenty
+#### 4. Insira os detalhes do provedor no Twenty
-* **SSO URL**: Login URL from your provider
-* **Entity ID**: Your provider's identifier
-* **Certificate**: X.509 certificate from your provider
+* **URL de SSO**: URL de login do seu provedor
+* **ID da Entidade**: Identificador do seu provedor
+* **Certificado**: Certificado X.509 do seu provedor
-#### 5. Test and Enable
+#### 5. Testar e habilitar
-1. Click **Test Configuration** to verify setup
-2. Enable SSO when testing is successful
-3. Configure user provisioning preferences
+1. Clique em **Testar configuração** para verificar a configuração
+2. Ative o SSO quando o teste for bem-sucedido
+3. Configure as preferências de provisionamento de usuários
-## User Provisioning
+## Provisionamento de usuários
-### Just-in-Time (JIT) Provisioning
+### Provisionamento Just-in-Time (JIT)
-* Users are created automatically on first login
-* Assigned default role automatically
-* No manual user creation needed
+* Os usuários são criados automaticamente no primeiro login
+* A função padrão é atribuída automaticamente
+* Não é necessário criar usuários manualmente
-### Manual Provisioning
+### Provisionamento manual
-* Invite users before they can log in
-* Pre-assign specific roles
-* More control over who can access
+* Convide os usuários antes que possam fazer login
+* Pré-atribua funções específicas
+* Mais controle sobre quem pode acessar
-## Managing SSO Users
+## Gerenciamento de usuários de SSO
-### Role Assignment
+### Atribuição de função
-SSO users can be assigned roles like regular users:
+Os usuários de SSO podem receber funções como os usuários comuns:
-1. Go to **Settings → Members**
-2. Find the user
-3. Change their role as needed
+1. Vá para **Configurações → Membros**
+2. Localize o usuário
+3. Altere a função conforme necessário
-### Access Revocation
+### Revogação de acesso
-To remove access for SSO users:
+Para remover o acesso de usuários de SSO:
-* Remove them from your identity provider, or
-* Remove them from the Twenty workspace
+* Remova-os do seu provedor de identidade ou
+* Remova-os do workspace do Twenty
-## Best Practices
+## Melhores Práticas
-### Security
+### Segurança
-* **Require SSO**: Disable password login for SSO users
-* **Regular audits**: Review access periodically
-* **Strong IdP policies**: Enforce MFA at the identity provider
+* **Exigir SSO**: Desative o login por senha para usuários de SSO
+* **Auditorias regulares**: Revise o acesso periodicamente
+* **Políticas rígidas do IdP**: Exija MFA no provedor de identidade
-### User Management
+### Gerenciamento de usuários
-* **Clear naming**: Use consistent naming from your directory
-* **Group mapping**: Map IdP groups to Twenty roles (if available)
-* **Offboarding process**: Include Twenty in your deprovisioning workflow
+* **Nomenclatura clara**: Use uma nomenclatura consistente do seu diretório
+* **Mapeamento de grupos**: Mapeie os grupos do IdP para as funções do Twenty (se disponível)
+* **Processo de desligamento**: Inclua o Twenty no seu fluxo de trabalho de desprovisionamento
-## Troubleshooting
+## Resolução de Problemas
-### Common Issues
+### Problemas comuns
-* **Certificate errors**: Ensure certificate hasn't expired
-* **URL mismatches**: Verify ACS URL matches exactly
-* **User not found**: Check JIT provisioning settings
+* **Erros de certificado**: Certifique-se de que o certificado não expirou
+* **Incompatibilidades de URL**: Verifique se a URL ACS corresponde exatamente
+* **Usuário não encontrado**: Verifique as configurações de provisionamento JIT
-### Getting Help
+### Obtendo Ajuda
-If you encounter issues, contact support with:
+Se você encontrar problemas, contate o suporte com:
-* Error messages received
-* Identity provider being used
-* Configuration details (without sensitive data)
+* Mensagens de erro recebidas
+* Provedor de identidade utilizado
+* Detalhes da configuração (sem dados sensíveis)
diff --git a/packages/twenty-docs/l/pt/user-guide/permissions-access/how-tos/permissions-faq.mdx b/packages/twenty-docs/l/pt/user-guide/permissions-access/how-tos/permissions-faq.mdx
index 6700b48297..b1ac5cc92b 100644
--- a/packages/twenty-docs/l/pt/user-guide/permissions-access/how-tos/permissions-faq.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/permissions-access/how-tos/permissions-faq.mdx
@@ -1,126 +1,126 @@
---
-title: Permissions FAQ
-description: Frequently asked questions about roles and permissions.
+title: Perguntas frequentes sobre permissões
+description: Perguntas frequentes sobre funções e permissões.
---
-## Roles
+## Funções
-
- Twenty comes with an **Admin** and **Member** roles by default. You can create additional custom roles based on your team's needs (e.g., Sales Rep, Manager, Read-Only User).
+
+ O Twenty vem com as funções **Admin** e **Member** por padrão. Você pode criar funções personalizadas adicionais com base nas necessidades da sua equipe (por exemplo, Representante de vendas, Gerente, Usuário somente leitura).
-
- No, the Admin role cannot be deleted. There must always be at least one member assigned to the Admin role.
+
+ Não, a função Admin não pode ser excluída. Deve sempre haver pelo menos um membro atribuído à função Admin.
-
- Any workspace member assigned to that role will be automatically reassigned to the default role.
+
+ Qualquer membro do espaço de trabalho atribuído a essa função será automaticamente reatribuído à função padrão.
-
- Go to **Settings → Roles**, find the **Default Role** option, and select which role new members should automatically receive when they join.
+
+ Vá para **Configurações → Funções**, encontre a opção **Função Padrão** e selecione qual função os novos membros devem receber automaticamente ao entrar.
-
- No, each user can only have one role at a time. Create a custom role if you need a combination of permissions.
+
+ Não, cada usuário pode ter apenas uma função por vez. Crie uma função personalizada se precisar de uma combinação de permissões.
-## Permissions
+## Permissões
-
- * **Object permissions**: Control access to entire records (e.g., can see/edit/delete People records)
- * **Field permissions**: Control access to specific fields within an object (e.g., can see but not edit the Salary field)
+
+ * **Permissões de objeto**: Controlam o acesso a registros inteiros (por exemplo, ver/editar/excluir registros de Pessoas)
+ * **Permissões de campo**: Controlam o acesso a campos específicos dentro de um objeto (por exemplo, ver, mas não editar, o campo Salário)
- Field permissions allow more granular control over sensitive data.
+ As permissões de campo permitem um controle mais granular sobre dados confidenciais.
-
- Permissions cascade from global to specific:
+
+ As permissões se propagam do nível global para o específico:
- 1. **All Objects** sets the baseline for all objects
- 2. **Object-Level Permissions** can override the global setting for specific objects
- 3. **Field-Level Permissions** can override the object setting for specific fields
+ 1. **Todos os objetos** define a base para todos os objetos
+ 2. **Permissões em nível de objeto** podem substituir a configuração global para objetos específicos
+ 3. **Permissões em nível de campo** podem substituir a configuração do objeto para campos específicos
- More specific settings always take precedence.
+ Configurações mais específicas sempre têm precedência.
-
- For objects:
+
+ Para objetos:
- * **See Records**: View records in lists and detail pages
- * **Edit Records**: Modify existing records
- * **Delete Records**: Soft-delete records (can be restored)
- * **Destroy Records**: Permanently delete records
+ * **Ver registros**: Visualizar registros em listas e páginas de detalhes
+ * **Editar registros**: Modificar registros existentes
+ * **Excluir registros**: Exclusão lógica de registros (podem ser restaurados)
+ * **Destruir registros**: Excluir permanentemente registros
- For fields:
+ Para campos:
- * **See Field**: View the field value
- * **Edit Field**: Modify the field value
- * **No Access**: Field is completely hidden
+ * **Ver campo**: Visualizar o valor do campo
+ * **Editar campo**: Modificar o valor do campo
+ * **Sem acesso**: O campo fica totalmente oculto
-
- Row-level permissions will be available on the **Organization** plan by Q1 2026. This allows you to restrict access to specific records based on criteria (e.g., only see your own opportunities).
+
+ As permissões em nível de linha estarão disponíveis no plano **Organization** até o 1º trimestre de 2026. Isso permite restringir o acesso a registros específicos com base em critérios (por exemplo, ver apenas suas próprias oportunidades).
-
- 1. Go to **Settings → Roles**
- 2. Select the role
- 3. Navigate to the object containing the field
- 4. Set the field permission to **See Field** (without Edit Field)
+
+ 1. Vá para **Configurações → Funções**
+ 2. Selecione a função
+ 3. Navegue até o objeto que contém o campo
+ 4. Defina a permissão do campo como **Ver campo** (sem Editar campo)
-## Settings & Actions
+## Configurações e Ações
-
- You can control access to:
+
+ Você pode controlar o acesso a:
- * API key generation
- * Workspace preferences
- * Role assignment
- * Data model configuration
- * Security settings
- * Workflow management
+ * Geração de chave de API
+ * Preferências do espaço de trabalho
+ * Atribuição de função
+ * Configuração do modelo de dados
+ * Configurações de segurança
+ * Gerenciamento de fluxos de trabalho
- Use **Settings All Access** to grant full access, or enable specific permissions.
+ Use **Settings All Access** para conceder acesso total ou habilite permissões específicas.
-
- You can control:
+
+ Você pode controlar:
- * **Send Email**: Ability to send emails from Twenty
- * **Import CSV**: Ability to import data via CSV
- * **Export CSV**: Ability to export data to CSV
+ * **Enviar e-mail**: Capacidade de enviar e-mails a partir do Twenty
+ * **Importar CSV**: Capacidade de importar dados via CSV
+ * **Exportar CSV**: Capacidade de exportar dados para CSV
- Use **Application All Access** to grant all actions, or enable specific ones.
+ Use **Application All Access** para conceder todas as ações ou habilitar ações específicas.
## SSO
-
- No, SSO is a Premium feature available on the **Organization** plan only.
+
+ Não, o SSO é um recurso Premium disponível apenas no plano **Organization**.
-
- Twenty supports:
+
+ O Twenty é compatível com:
- * **SAML 2.0** (works with most enterprise identity providers)
+ * **SAML 2.0** (funciona com a maioria dos provedores de identidade corporativos)
* **Google Workspace**
- * **Microsoft Entra ID** (formerly Azure AD)
+ * **Microsoft Entra ID** (anteriormente Azure AD)
-
- With JIT provisioning, user accounts are automatically created in Twenty when someone logs in via SSO for the first time. They're assigned the default role automatically.
+
+ Com o provisionamento JIT, as contas de usuário são criadas automaticamente no Twenty quando alguém faz login via SSO pela primeira vez. A função padrão é atribuída automaticamente.
-
- Yes, once SSO is configured, you can disable password login for SSO users to enforce authentication through your identity provider.
+
+ Sim, depois que o SSO for configurado, você pode desativar o login por senha para usuários de SSO para impor a autenticação por meio do seu provedor de identidade.
diff --git a/packages/twenty-docs/l/pt/user-guide/permissions-access/overview.mdx b/packages/twenty-docs/l/pt/user-guide/permissions-access/overview.mdx
index 8c3888056e..f6562d58e6 100644
--- a/packages/twenty-docs/l/pt/user-guide/permissions-access/overview.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/permissions-access/overview.mdx
@@ -1,40 +1,40 @@
---
-title: Permissions & Access
-description: Manage roles, permissions, and access control in your workspace.
+title: Permissões e Acesso
+description: Gerencie funções, permissões e o controle de acesso no seu espaço de trabalho.
---
-
+
-Twenty's permission system lets you control who can access and modify data in your workspace. Create roles, assign permissions, and configure SSO for secure access.
+O sistema de permissões do Twenty permite controlar quem pode acessar e modificar dados no seu espaço de trabalho. Crie funções, atribua permissões e configure SSO para um acesso seguro.
-## What's in this section
+## O que há nesta seção
-
- Create roles and configure object, field, and settings permissions.
+
+ Crie funções e configure permissões de objetos, campos e configurações.
-
- Set up Single Sign-On with your identity provider.
+
+ Configure o Single Sign-On com o seu provedor de identidade.
- Common questions about roles, permissions, and SSO.
+ Perguntas comuns sobre funções, permissões e SSO.
-## Key features
+## Principais funcionalidades
-* **Role-based access**: Create custom roles with specific permissions
-* **Object permissions**: Control who can view, edit, or delete records
-* **Field permissions**: Restrict access to sensitive fields
-* **Settings permissions**: Control access to workspace configuration
-* **SSO integration**: Configure single sign-on for enterprise security (Organization plan)
+* **Acesso baseado em funções**: Crie funções personalizadas com permissões específicas
+* **Permissões de objeto**: Controle quem pode visualizar, editar ou excluir registros
+* **Permissões de campo**: Restrinja o acesso a campos sensíveis
+* **Permissões de configuração**: Controle o acesso às configurações do espaço de trabalho
+* **Integração com SSO**: Configure o Single Sign-On para segurança corporativa (plano Organization)
-## Quick links
+## Links rápidos
-* [Create a role](/l/pt/user-guide/permissions-access/capabilities/permissions#create-a-role)
-* [Configure SSO](/l/pt/user-guide/permissions-access/capabilities/sso-configuration)
-* [Manage team members](/l/pt/user-guide/settings/capabilities/member-management)
+* [Crie uma função](/l/pt/user-guide/permissions-access/capabilities/permissions#create-a-role)
+* [Configure o SSO](/l/pt/user-guide/permissions-access/capabilities/sso-configuration)
+* [Gerencie os membros da equipe](/l/pt/user-guide/settings/capabilities/member-management)
diff --git a/packages/twenty-docs/l/pt/user-guide/settings/capabilities/domains-settings.mdx b/packages/twenty-docs/l/pt/user-guide/settings/capabilities/domains-settings.mdx
index b2c49c5ae2..dab6efa411 100644
--- a/packages/twenty-docs/l/pt/user-guide/settings/capabilities/domains-settings.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/settings/capabilities/domains-settings.mdx
@@ -1,47 +1,47 @@
---
-title: Domain Settings
-description: Configure workspace domain, approved access domains, and public domains.
+title: Configurações de Domínio
+description: Configure o domínio do espaço de trabalho, os domínios de acesso aprovados e os domínios públicos.
---
-Configure domain settings under **Settings → Domains**.
+Configure as configurações de domínio em **Configurações → Domínios**.
-## Workspace Domain
+## Domínio do espaço de trabalho
-Edit your subdomain name or set a custom domain for your workspace.
+Edite o nome do seu subdomínio ou defina um domínio personalizado para o seu espaço de trabalho.
-### Customize Domain
+### Personalizar domínio
-1. Click **Customize Domain**
-2. Edit your subdomain (e.g., `yourcompany.twenty.com`)
-3. Or set up a custom domain (e.g., `crm.yourcompany.com`)
+1. Clique em **Personalizar Domínio**
+2. Edite seu subdomínio (por exemplo, `yourcompany.twenty.com`)
+3. Ou configure um domínio personalizado (por exemplo, `crm.yourcompany.com`)
-For custom domains, you'll need to configure DNS settings with your domain provider.
+Para domínios personalizados, você precisará configurar as configurações de DNS com o seu provedor de domínio.
-## Approved Domains
+## Domínios Aprovados
-Anyone with an email address at these domains is allowed to sign up for this workspace automatically.
+Qualquer pessoa com um endereço de e-mail nesses domínios pode inscrever-se neste espaço de trabalho automaticamente.
-### Add Approved Access Domain
+### Adicionar Domínio de Acesso Aprovado
-1. Click **Add Approved Access Domain**
-2. Enter your company domain (e.g., `yourcompany.com`)
-3. Save
+1. Clique em **Adicionar Domínio de Acesso Aprovado**
+2. Insira o domínio da sua empresa (por exemplo, `yourcompany.com`)
+3. Salvar
-Once configured, anyone with an email address at that domain can join your workspace without needing a direct invitation.
+Depois de configurado, qualquer pessoa com um endereço de e-mail nesse domínio pode entrar no seu espaço de trabalho sem precisar de um convite direto.
- This is useful for allowing your entire team to self-register while keeping the workspace restricted to your organization.
+ Isso é útil para permitir que toda a sua equipe se registre por conta própria, mantendo o espaço de trabalho restrito à sua organização.
-## Public Domains
+## Domínios Públicos
-Provision a complete and secure hosting environment on these domains.
+Provisionar um ambiente de hospedagem completo e seguro nestes domínios.
-### Add Public Domain
+### Adicionar Domínio Público
-1. Click **Add Public Domain**
-2. Enter the domain you want to use
-3. Configure DNS settings as instructed
-4. Verify the domain
+1. Clique em **Adicionar Domínio Público**
+2. Insira o domínio que você deseja usar
+3. Configure as configurações de DNS conforme as instruções
+4. Verifique o domínio
-SSL certificates are automatically provisioned for public domains.
+Os certificados SSL são provisionados automaticamente para domínios públicos.
diff --git a/packages/twenty-docs/l/pt/user-guide/settings/capabilities/experience-settings.mdx b/packages/twenty-docs/l/pt/user-guide/settings/capabilities/experience-settings.mdx
index e279f7d88b..02eccd923c 100644
--- a/packages/twenty-docs/l/pt/user-guide/settings/capabilities/experience-settings.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/settings/capabilities/experience-settings.mdx
@@ -1,38 +1,38 @@
---
-title: Experience Settings
-description: Customize your interface theme and regional preferences.
+title: Configurações da Experiência
+description: Personalize o tema da sua interface e as preferências regionais.
---
-Personalize your Twenty experience under **Settings → Experience**.
+Personalize a sua experiência no Twenty em **Configurações → Experiência**.
-## Appearance
+## Aparência
-Choose your visual theme:
+Escolha o seu tema visual:
-* **Light**: Clean, bright interface
-* **Dark**: Easier on the eyes in low-light conditions
-* **System settings**: Automatically matches your device's theme
+* **Claro**: Interface limpa e clara
+* **Escuro**: Mais fácil para os olhos em condições de pouca luz
+* **Configurações do sistema**: Combina automaticamente com o tema do seu dispositivo
-## Language
+## Idioma
-Select your preferred language for the Twenty interface from the dropdown menu.
+Selecione o idioma de sua preferência para a interface do Twenty no menu suspenso.
-## Formats
+## Formatos
-Configure date, time, number, timezone, and calendar start day.
+Configure a data, hora, número, fuso horário e dia de início do calendário.
-| Setting | Description |
-| ---------------------- | ---------------------------------------------------------- |
-| **Time zone** | Your local timezone for accurate timestamps and scheduling |
-| **Date format** | How dates appear (e.g., Dec 12, 2025) |
-| **Time format** | 12-hour (7:22 PM) or 24-hour format |
-| **Number format** | Decimal and thousands separators (e.g., 1,234.56) |
-| **Calendar start day** | First day of the week (Sunday or Monday) |
+| Configuração | Descrição |
+| ------------------------------- | --------------------------------------------------------------------------- |
+| **Fuso horário** | Seu fuso horário local para carimbos de data e hora e agendamentos precisos |
+| **Formato de data** | Como as datas aparecem (por exemplo, 12 de dez. de 2025) |
+| **Formato de hora** | Formato de 12 horas (7:22 PM) ou de 24 horas |
+| **Formato de número** | Separadores decimais e de milhares (por exemplo, 1.234,56) |
+| **Dia de início do calendário** | Primeiro dia da semana (domingo ou segunda-feira) |
-Each setting can be set to **System settings** to automatically match your device preferences, or you can choose a specific format.
+Cada configuração pode ser definida como **Configurações do sistema** para corresponder automaticamente às preferências do seu dispositivo, ou você pode escolher um formato específico.
-## How to Update
+## Como atualizar
-1. Go to **Settings → Experience**
-2. Adjust your preferences in each section
-3. Changes save automatically
+1. Vá para **Configurações → Experiência**
+2. Ajuste suas preferências em cada seção
+3. As alterações são salvas automaticamente
diff --git a/packages/twenty-docs/l/pt/user-guide/settings/capabilities/member-management.mdx b/packages/twenty-docs/l/pt/user-guide/settings/capabilities/member-management.mdx
index 16a302404e..56e20a4c44 100644
--- a/packages/twenty-docs/l/pt/user-guide/settings/capabilities/member-management.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/settings/capabilities/member-management.mdx
@@ -1,87 +1,87 @@
---
-title: Member Management
-description: Invite team members and manage workspace access.
+title: Gestão de Membros
+description: Convide membros da equipe e gerencie o acesso ao espaço de trabalho.
---
-Manage who has access to your workspace under **Settings → Members**.
+Gerencie quem tem acesso ao seu espaço de trabalho em **Configurações → Membros**.
-## Invite New Members
+## Convidar Novos Membros
-### Using Email Invitation
+### Usando convite por e-mail
-1. Go to **Settings → Members**
-2. Click **+ Invite**
-3. Enter the person's email address
-4. Select a role for the new member
-5. Click **Send invite**
+1. Vá para **Configurações → Membros**
+2. Clique em **+ Convidar**
+3. Insira o endereço de e-mail da pessoa
+4. Selecione uma função para o novo membro
+5. Clique em **Enviar convite**
-The invited person will receive an email with a link to join your workspace.
+A pessoa convidada receberá um e-mail com um link para ingressar no seu espaço de trabalho.
-### Using Invite Link
+### Usando o Link de Convite
-1. Go to **Settings → Members**
-2. Copy the workspace invite link
-3. Share the link with new team members
-4. They'll receive access once they sign up
+1. Vá para **Configurações → Membros**
+2. Copie o link de convite do espaço de trabalho
+3. Compartilhe o link com novos membros da equipe
+4. Eles terão acesso assim que se inscreverem
-## View and Manage Members
+## Ver e gerenciar membros
-### View All Members
+### Ver todos os membros
-Go to **Settings → Members** to see:
+Vá para **Configurações → Membros** para ver:
-* All active members
-* Pending invitations
+* Todos os membros ativos
+* Convites pendentes
-### Edit a Member's Profile
+### Editar o perfil de um membro
-Click on a member to open their profile page. As an admin, you can:
+Clique em um membro para abrir a página de perfil. Como administrador, você pode:
-* Edit their **name**
-* Update their **profile picture**
-* **Impersonate** their account (useful for troubleshooting)
-* **Delete** their account
+* Editar o **nome**
+* Atualizar a **foto do perfil**
+* **Assumir** a conta do membro (útil para solução de problemas)
+* **Excluir** a conta do membro
-### Change a Member's Role
+### Alterar a função de um membro
-On the member's profile page:
+Na página de perfil do membro:
-1. Open the **Permissions** tab
-2. View the currently assigned role
-3. Select a different role from the dropdown
-4. The change takes effect immediately
+1. Abra a aba **Permissões**
+2. Veja a função atualmente atribuída
+3. Selecione uma função diferente no menu suspenso
+4. A alteração entra em vigor imediatamente
-→ [Learn more about roles and permissions](/l/pt/user-guide/permissions-access/capabilities/permissions)
+→ [Saiba mais sobre funções e permissões](/l/pt/user-guide/permissions-access/capabilities/permissions)
-### Remove a Member
+### Remover um membro
-1. Click on the member to open their profile
-2. Click **Delete** to remove them from the workspace
+1. Clique no membro para abrir o perfil
+2. Clique em **Excluir** para remover do espaço de trabalho
- Removed members lose access immediately. Their data (records, notes, tasks) remains in the workspace.
+ Membros removidos perdem o acesso imediatamente. Os dados deles (registros, notas, tarefas) permanecem no espaço de trabalho.
- **Email sync is also removed.** If the deleted user was the only one who synced certain emails, those emails will be permanently removed from the workspace.
+ **A sincronização de e-mail também é removida.** Se o usuário excluído era o único que sincronizava determinados e-mails, esses e-mails serão removidos permanentemente do espaço de trabalho.
-## Pending Invitations
+## Convites pendentes
-Manage invitations that haven't been accepted:
+Gerencie convites que ainda não foram aceitos:
-* **Resend**: Send the invitation email again
-* **Cancel**: Revoke the invitation before it's accepted
+* **Reenviar**: Enviar o e-mail de convite novamente
+* **Cancelar**: Revogar o convite antes de ele ser aceito
-## Approved Access Domains
+## Domínios de Acesso Aprovado
-Allow team members to join automatically based on their email domain:
+Permita que membros da equipe ingressem automaticamente com base no domínio de e-mail:
-1. Go to **Settings → Domains**
-2. Add your company domain (e.g., `yourcompany.com`)
-3. Anyone with that email domain can join without an invitation
+1. Vá para **Configurações → Domínios**
+2. Adicione o domínio da sua empresa (por exemplo, `yourcompany.com`)
+3. Qualquer pessoa com esse domínio de e-mail pode ingressar sem convite
-## Related
+## Relacionados
-* [Permissions](/l/pt/user-guide/permissions-access/capabilities/permissions) — configure what each role can do
-* [Domains Settings](/l/pt/user-guide/settings/capabilities/domains-settings) — configure approved domains
+* [Permissões](/l/pt/user-guide/permissions-access/capabilities/permissions) — configure o que cada função pode fazer
+* [Configurações de domínios](/l/pt/user-guide/settings/capabilities/domains-settings) — configure domínios aprovados
diff --git a/packages/twenty-docs/l/pt/user-guide/settings/capabilities/profile-settings.mdx b/packages/twenty-docs/l/pt/user-guide/settings/capabilities/profile-settings.mdx
index febfa4a86f..c0fe258ec6 100644
--- a/packages/twenty-docs/l/pt/user-guide/settings/capabilities/profile-settings.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/settings/capabilities/profile-settings.mdx
@@ -1,43 +1,43 @@
---
-title: Profile Settings
-description: Manage your personal profile and security settings.
+title: Configurações de Perfil
+description: Gerencie seu perfil pessoal e as configurações de segurança.
---
-## Personal Information
+## Informações Pessoais
-### Name and Email
+### Nome e E-mail
-* **Display Name**: Update how your name appears to other workspace members
-* **Email Address**: Change your login email (requires verification)
-* **Profile Picture**: Upload a custom avatar or use your initials
+* **Nome de Exibição**: Atualize como seu nome aparece para outros membros do workspace
+* **Endereço de E-mail**: Altere seu e-mail de login (requer verificação)
+* **Foto do Perfil**: Carregue um avatar personalizado ou use suas iniciais
-## Security Settings
+## Configurações de Segurança
-### Two-Factor Authentication (2FA)
+### Autenticação de Dois Fatores (2FA)
-Enable 2FA to add an extra layer of security to your account:
+Ative o 2FA para adicionar uma camada extra de segurança à sua conta:
-1. Go to **Settings → Profile Settings**
-2. Click **Enable 2FA**
-3. Scan the QR code with your authenticator app
-4. Enter the verification code to confirm
+1. Vá para **Configurações → Configurações de Perfil**
+2. Clique em **Ativar 2FA**
+3. Escaneie o código QR com seu aplicativo autenticador
+4. Digite o código de verificação para confirmar
-### Password Management
+### Gerenciamento de Senhas
-* **Change Password**: Update your current password
-* **Password Requirements**: Must be at least 8 characters long
+* **Alterar Senha**: Atualize sua senha atual
+* **Requisitos de Senha**: Deve ter pelo menos 8 caracteres
-## Profile Management
+## Gerenciamento de Perfil
-### Delete Account
+### Excluir Conta
- Deleting your account will permanently remove your access to all workspaces. This action cannot be undone, you'll lose access to all workspaces where you're a member, and you should consider leaving individual workspaces instead if you only want to exit specific teams.
+ Excluir sua conta removerá permanentemente seu acesso a todos os workspaces. Essa ação não pode ser desfeita; você perderá o acesso a todos os workspaces onde é membro e deve considerar sair de workspaces individuais se apenas quiser sair de equipes específicas.
-To delete your account:
+Para excluir sua conta:
-1. Go to **Settings → Profile Settings**
-2. Scroll to **Danger Zone**
-3. Click **Delete Account**
-4. Confirm by typing your email address
+1. Vá para **Configurações → Configurações de Perfil**
+2. Role até **Zona de Perigo**
+3. Clique em **Excluir Conta**
+4. Confirme digitando seu endereço de e-mail
diff --git a/packages/twenty-docs/l/pt/user-guide/settings/capabilities/updates-settings.mdx b/packages/twenty-docs/l/pt/user-guide/settings/capabilities/updates-settings.mdx
new file mode 100644
index 0000000000..98c7606661
--- /dev/null
+++ b/packages/twenty-docs/l/pt/user-guide/settings/capabilities/updates-settings.mdx
@@ -0,0 +1,36 @@
+---
+title: Configurações de Atualizações
+description: Ative recursos de Acesso antecipado no Twenty.
+---
+
+## Sobre as Configurações de Atualizações
+
+A seção Atualizações permite ativar recursos de Acesso antecipado antes de estarem disponíveis para todos.
+
+## Recursos de Acesso antecipado
+
+Os recursos de Acesso antecipado são funcionalidades que ainda estão sendo testadas antes da disponibilidade geral.
+
+**Atualmente em Acesso antecipado:**
+
+* **Dashboards** — Relatórios e análises visuais
+
+### Como ativar os recursos de Acesso antecipado
+
+1. Vá para **Configurações → Atualizações**
+2. Navegue até a seção **Acesso antecipado**
+3. Encontre o recurso que você deseja ativar
+4. Ative a opção
+5. O recurso fica disponível imediatamente
+
+
+ Os recursos de Acesso antecipado podem mudar com base no feedback dos usuários. Seu feedback ajuda a melhorar o Twenty!
+
+
+## Comentários sobre os recursos
+
+Seu feedback ajuda a melhorar o Twenty:
+
+* Relate problemas com recursos de Acesso antecipado
+* Compartilhe como você está usando os novos recursos
+* Sugira melhorias no Discord da comunidade
diff --git a/packages/twenty-docs/l/pt/user-guide/settings/capabilities/workspace-settings.mdx b/packages/twenty-docs/l/pt/user-guide/settings/capabilities/workspace-settings.mdx
index f72f71a814..e3fe5d5c8e 100644
--- a/packages/twenty-docs/l/pt/user-guide/settings/capabilities/workspace-settings.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/settings/capabilities/workspace-settings.mdx
@@ -1,30 +1,30 @@
---
-title: Workspace Settings
-description: Customize your workspace name and branding.
+title: Configurações do Espaço de Trabalho
+description: Personalize o nome e a marca do seu espaço de trabalho.
---
Those are accessible under **Settings → General**.
-## Workspace Picture
+## Foto do Espaço de Trabalho
-* **Upload Logo**: Add a custom workspace logo
-* **Supported formats**: PNG, JPEG, and GIF files under 10MB
-* **Remove**: Delete the current workspace logo
+* **Carregar Logotipo**: Adicione um logotipo personalizado para o espaço de trabalho
+* **Formatos suportados**: Arquivos PNG, JPEG e GIF com menos de 10MB
+* **Remover**: Delete o logotipo atual do espaço de trabalho
-## Workspace Name
+## Nome do Espaço de Trabalho
-* **Name**: Change your workspace display name
-* This name appears to all workspace members
+* **Nome**: Altere o nome de exibição do seu espaço de trabalho
+* Este nome aparece para todos os membros do espaço de trabalho
-## Danger Zone
+## Zona de Perigo
- Deleting your workspace permanently removes all data and cannot be undone. All workspace data will be lost forever, all members will lose access immediately, and this action cannot be reversed.
+ Excluir seu espaço de trabalho remove permanentemente todos os dados e não pode ser desfeito. Todos os dados do espaço de trabalho serão perdidos para sempre, todos os membros perderão o acesso imediatamente, e esta ação não pode ser revertida.
-To delete your workspace:
+Para excluir seu espaço de trabalho:
-1. Click **Delete workspace** button
-2. Confirm the deletion when prompted
+1. Clique no botão **Excluir espaço de trabalho**
+2. Confirme a exclusão quando solicitado
-**Note**: Only workspace administrators can delete workspaces.
+**Nota**: Apenas administradores de espaço de trabalho podem excluir espaços de trabalho.
diff --git a/packages/twenty-docs/l/pt/user-guide/settings/how-tos/settings-faq.mdx b/packages/twenty-docs/l/pt/user-guide/settings/how-tos/settings-faq.mdx
index 19aa50e5a0..8021e0781d 100644
--- a/packages/twenty-docs/l/pt/user-guide/settings/how-tos/settings-faq.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/settings/how-tos/settings-faq.mdx
@@ -1,171 +1,171 @@
---
-title: Settings FAQ
-description: Frequently asked questions about Twenty settings.
+title: Configurações FAQ
+description: Perguntas frequentes sobre as configurações do Twenty.
image: /images/user-guide/setup/settings.png
---
-## Workspace Settings
+## Configurações do Espaço de Trabalho
-
- 1. Go to **Settings → General**
- 2. Find the Workspace Name field
- 3. Enter your new name
- 4. Changes save automatically
+
+ 1. Vá para **Configurações → Geral**
+ 2. Encontre o campo Nome do espaço de trabalho
+ 3. Digite o novo nome do espaço de trabalho
+ 4. As alterações são salvas automaticamente
-
- 1. Go to **Settings → General**
- 2. Click on the current logo or upload area
- 3. Select an image file (PNG, JPEG, or GIF under 10MB)
- 4. The logo updates immediately
+
+ 1. Vá para **Configurações → Geral**
+ 2. Clique no logotipo atual ou na área de upload
+ 3. Selecione um arquivo de imagem (PNG, JPEG ou GIF com menos de 10 MB)
+ 4. O logotipo é atualizado imediatamente
-
- Yes, you can create and be a member of multiple workspaces. Each workspace has its own data, settings, and subscription.
+
+ Sim, você pode criar e ser membro de vários espaços de trabalho. Cada espaço de trabalho tem seus próprios dados, configurações e assinatura.
-
- 1. Go to **Settings → General**
- 2. Scroll to Danger Zone
- 3. Click **Delete workspace**
- 4. Confirm the deletion
+
+ 1. Vá para **Configurações → Geral**
+ 2. Role até a Zona de Perigo
+ 3. Clique em **Excluir espaço de trabalho**
+ 4. Confirme a exclusão
- Note: This permanently deletes all data and cannot be undone.
+ Observação: isso exclui permanentemente todos os dados e não pode ser desfeito.
-
- Delete the workspaces you no longer need under **Settings → General → Delete workspace**.
+
+ Exclua os espaços de trabalho de que você não precisa em **Configurações → Geral → Excluir espaço de trabalho**.
- Do not delete your **account** (accessible under Settings → Profile): your account is shared among all your workspaces. Deleting your account removes access to ALL workspaces.
+ Não exclua sua **conta** (acessível em Configurações → Perfil): sua conta é compartilhada entre todos os seus espaços de trabalho. Excluir sua conta remove o acesso a TODOS os espaços de trabalho.
-
- If you want to temporarily disable your workspace (not permanently delete it), go to **Settings → Billing** and click **Cancel Plan**. Your data will be preserved for a grace period.
+
+ Se você quiser desativar temporariamente seu espaço de trabalho (e não excluí-lo permanentemente), vá para **Configurações → Cobrança** e clique em **Cancelar plano**. Seus dados serão preservados por um período de carência.
-## Profile Settings
+## Configurações de Perfil
-
- 1. Go to **Settings → Profile**
- 2. Find the Password section
- 3. Enter your current password
- 4. Enter your new password
- 5. Save changes
+
+ 1. Vá para **Configurações → Perfil**
+ 2. Encontre a seção Senha
+ 3. Digite sua senha atual
+ 4. Digite sua nova senha
+ 5. Salve as alterações
-
- 1. Go to **Settings → Profile**
- 2. Find the 2FA section
- 3. Click **Enable 2FA**
- 4. Scan the QR code with your authenticator app
- 5. Enter the verification code
+
+ 1. Vá para **Configurações → Perfil**
+ 2. Encontre a seção 2FA
+ 3. Clique em **Ativar 2FA**
+ 4. Escaneie o código QR com seu aplicativo autenticador
+ 5. Digite o código de verificação
-
- To change your email address, please reach out to [contact@twenty.com](mailto:contact@twenty.com).
+
+ Para alterar seu endereço de e-mail, entre em contato pelo [contact@twenty.com](mailto:contact@twenty.com).
-
- 1. Go to **Settings → Profile**
- 2. Scroll to Danger Zone
- 3. Click **Delete Account**
- 4. Confirm by typing your email
+
+ 1. Vá para **Configurações → Perfil**
+ 2. Role até a Zona de Perigo
+ 3. Clique em **Excluir Conta**
+ 4. Confirme digitando seu endereço de e-mail
- Note: This removes your access to all workspaces and deletes all emails synced from your connected accounts.
+ Observação: isso remove seu acesso a todos os espaços de trabalho e exclui todos os e-mails sincronizados das suas contas conectadas.
-## Experience Settings
+## Configurações da Experiência
-
- 1. Go to **Settings → Experience**
- 2. Find the Theme section
- 3. Select Light, Dark, or System
+
+ 1. Vá para **Configurações → Experiência**
+ 2. Encontre a seção Tema
+ 3. Selecione Claro, Escuro ou Sistema
-
- 1. Go to **Settings → Experience**
- 2. Find Date Format
- 3. Select your preferred format
- 4. Changes apply immediately
+
+ 1. Vá para **Configurações → Experiência**
+ 2. Encontre Formato de data
+ 3. Selecione o formato de sua preferência
+ 4. As alterações são aplicadas imediatamente
-
- 1. Go to **Settings → Experience**
- 2. Find Time Zone
- 3. Select your local time zone
- 4. All timestamps will adjust
+
+ 1. Vá para **Configurações → Experiência**
+ 2. Encontre o fuso horário
+ 3. Selecione seu fuso horário local
+ 4. Todos os carimbos de data e hora serão ajustados
-
- 1. Go to **Settings → Experience**
- 2. Find Language
- 3. Select from available languages
- 4. The interface updates to your selection
+
+ 1. Vá para **Configurações → Experiência**
+ 2. Encontre o idioma
+ 3. Selecione entre os idiomas disponíveis
+ 4. A interface é atualizada de acordo com sua seleção
-## Account Settings
+## Configurações da conta
-
- 1. Go to **Settings → Accounts**
- 2. Click **Add account**
- 3. Choose Google or Microsoft
- 4. Authorize access
- 5. Configure sync settings
+
+ 1. Vá para **Configurações → Contas**
+ 2. Clique em **Adicionar conta**
+ 3. Escolha Google ou Microsoft
+ 4. Autorize o acesso
+ 5. Configure as configurações de sincronização
-
- Yes, you can connect multiple email accounts. Go to **Settings → Accounts** and add additional accounts as needed.
+
+ Sim, você pode conectar várias contas de e-mail. Vá para **Configurações → Contas** e adicione contas adicionais conforme necessário.
-
- 1. Go to **Settings → Accounts**
- 2. Find the account to remove
- 3. Click **Disconnect**
- 4. Confirm the action
+
+ 1. Vá para **Configurações → Contas**
+ 2. Encontre a conta que você deseja remover
+ 3. Clique em **Desconectar**
+ 4. Confirme a ação
-## Domains
+## Domínios
-
- Yes! Go to **Settings → Domains** and click **Customize Domain**. You have two options:
+
+ Sim! Vá para **Configurações → Domínios** e clique em **Personalizar domínio**. Você tem duas opções:
- * **Subdomain**: Use a Twenty subdomain like `yourcompany.twenty.com`
- * **Custom domain**: Use your own domain like `crm.yourcompany.com` (requires DNS configuration)
+ * **Subdomínio**: Use um subdomínio do Twenty como `yourcompany.twenty.com`
+ * **Domínio personalizado**: Use seu próprio domínio, como `crm.yourcompany.com` (requer configuração de DNS)
- A subdomain is quick to set up, while a custom domain provides a fully branded experience for your team.
+ Um subdomínio é rápido de configurar, enquanto um domínio personalizado oferece uma experiência totalmente personalizada com a sua marca para a sua equipe.
-
- You can configure approved access domains so team members with company email addresses can automatically join your workspace. Go to **Settings → Domains** and add your company domain (e.g., `yourcompany.com`).
+
+ Você pode configurar domínios de acesso aprovados para que membros da equipe com endereços de e-mail da empresa possam ingressar automaticamente no seu espaço de trabalho. Vá para **Configurações → Domínios** e adicione o domínio da sua empresa (por exemplo, `yourcompany.com`).
-## Lab Features
+## Recursos de Acesso antecipado
-
- Lab features are experimental capabilities being tested before general release. They may change or be removed without notice.
+
+ Os recursos de Acesso antecipado são funcionalidades em teste antes do lançamento geral. Atualmente, apenas **Painéis** estão em Acesso antecipado. Eles podem mudar com base no feedback dos usuários.
-
- Lab features are functional but may have bugs or unexpected behavior. Use them cautiously in production environments.
+
+ Os recursos de Acesso antecipado são funcionais, mas podem mudar com base no feedback dos usuários. Eles são seguros para usar, mas podem evoluir antes da disponibilidade geral.
-
- 1. Go to **Settings → Releases → Lab**
- 2. Find the feature you want
- 3. Toggle it on
- 4. The feature becomes available immediately
+
+ 1. Vá para **Configurações → Atualizações → Acesso antecipado**
+ 2. Encontre o recurso que você deseja
+ 3. Ative a opção
+ 4. O recurso fica disponível imediatamente
diff --git a/packages/twenty-docs/l/pt/user-guide/settings/overview.mdx b/packages/twenty-docs/l/pt/user-guide/settings/overview.mdx
index f659288c4e..43b000b204 100644
--- a/packages/twenty-docs/l/pt/user-guide/settings/overview.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/settings/overview.mdx
@@ -1,67 +1,67 @@
---
-title: Settings
-description: Set up your Twenty workspace with essential configurations.
+title: Configurações
+description: Configure seu espaço de trabalho Twenty com configurações essenciais.
image: /images/user-guide/setup/settings.png
---
-
+
-## Initial Setup
+## Configuração Inicial
-When you first create your workspace, there are several key settings to configure.
+Ao criar seu espaço de trabalho pela primeira vez, há várias configurações importantes para definir.
-### Workspace Name and Logo
+### Nome e Logotipo do Espaço de Trabalho
-1. Go to **Settings → General**
-2. Update your workspace name
-3. Upload your company logo
-4. Save your changes
+1. Vá para **Configurações → Geral**
+2. Atualize o nome do seu espaço de trabalho
+3. Envie o logotipo da sua empresa
+4. Salve as alterações
-### Time Zone and Date Format
+### Fuso Horário e Formato de Data
-1. Go to **Settings → Experience**
-2. Select your time zone
-3. Choose your preferred date format
-4. Save your changes
+1. Vá para **Configurações → Experiência**
+2. Selecione seu fuso horário
+3. Escolha seu formato de data preferido
+4. Salve as alterações
-## Essential Configurations
+## Configurações Essenciais
-### Connect Email and Calendar
+### Conecte E-mail e Calendário
-Set up email and calendar sync:
+Configure a sincronização de e-mail e calendário:
-1. Go to **Settings → Accounts**
-2. Click **Add account**
-3. Connect your Google or Microsoft account
-4. Configure sync settings
+1. Vá para **Configurações → Contas**
+2. Clique em **Adicionar conta**
+3. Conecte sua conta do Google ou da Microsoft
+4. Configure as configurações de sincronização
-→ [Complete email & calendar setup guide](/l/pt/user-guide/calendar-emails/overview)
+→ [Guia completo de configuração de e-mail e calendário](/l/pt/user-guide/calendar-emails/overview)
-### Invite Your Team
+### Convide a sua equipa
-Add team members to your workspace:
+Adicione membros da equipa ao seu espaço de trabalho:
-1. Go to **Settings → Members**
-2. Click **+ Invite**
-3. Enter email addresses
-4. Assign appropriate roles
+1. Vá para **Configurações → Membros**
+2. Clique em **+ Convidar**
+3. Insira endereços de e-mail
+4. Atribua funções apropriadas
- Before inviting your team, check the default role under **Settings → Roles**. New members are automatically assigned this role when they join.
+ Antes de convidar a sua equipa, verifique a função padrão em **Configurações → Funções**. Novos membros recebem automaticamente essa função ao entrar.
-## Workspace Settings Checklist
+## Lista de Verificação das Configurações do Espaço de Trabalho
-* Workspace name and logo configured
-* Time zone and date format set
-* Email and calendar connected
-* Team members invited
-* Roles and permissions configured
+* Nome e logotipo do espaço de trabalho configurados
+* Fuso horário e formato de data definidos
+* Email e calendário conectados
+* Membros da equipe convidados
+* Funções e permissões configuradas
-## Next Steps
+## Próximos Passos
-* [Workspace settings](/l/pt/user-guide/settings/capabilities/workspace-settings)
-* [Profile settings](/l/pt/user-guide/settings/capabilities/profile-settings)
-* [Experience settings](/l/pt/user-guide/settings/capabilities/experience-settings)
+* [Configurações do espaço de trabalho](/l/pt/user-guide/settings/capabilities/workspace-settings)
+* [Configurações do perfil](/l/pt/user-guide/settings/capabilities/profile-settings)
+* [Configurações de experiência](/l/pt/user-guide/settings/capabilities/experience-settings)
diff --git a/packages/twenty-docs/l/pt/user-guide/views-pipelines/capabilities/calendar-view.mdx b/packages/twenty-docs/l/pt/user-guide/views-pipelines/capabilities/calendar-view.mdx
index 28d97c712f..d505ea3642 100644
--- a/packages/twenty-docs/l/pt/user-guide/views-pipelines/capabilities/calendar-view.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/views-pipelines/capabilities/calendar-view.mdx
@@ -1,46 +1,46 @@
---
-title: Calendar View
-description: Display records with date fields on a calendar.
+title: Visualização de calendário
+description: Exiba registros com campos de data em um calendário.
---
-## About Calendar View
+## Sobre a Visualização de calendário
-Calendar view displays your records on a calendar based on a date field. Each record appears as an event on the corresponding date.
+A visualização de calendário exibe seus registros em um calendário com base em um campo de data. Cada registro aparece como um evento na data correspondente.
-## Creating a Calendar View
+## Criando uma Visualização de calendário
-1. Navigate to an object with date fields
-2. Click the view dropdown → **+ Add view**
-3. Name your view and click **Create**
-4. Open the **Options** on the right
-5. Select **Calendar** as the layout
-6. Choose the **date field** to use for positioning records
-7. Click **Update view**
+1. Navegue até um objeto com campos de data
+2. Clique no menu suspenso de visualizações → **+ Adicionar visualização**
+3. Nomeie sua visualização e clique em **Criar**
+4. Abra as **Opções** à direita
+5. Selecione **Calendário** como o layout
+6. Escolha o **campo de data** a ser usado para posicionar os registros
+7. Clique em **Atualizar visualização**
-## Configuring the Calendar
+## Configurando o calendário
-### Choose the Date Field
+### Escolha o campo de data
-Under **Options**, select which date field determines where records appear on the calendar.
+Em **Opções**, selecione qual campo de data determina onde os registros aparecem no calendário.
-### Display Fields
+### Exibir campos
-Configure which fields show on each calendar event:
+Configure quais campos aparecem em cada evento do calendário:
-1. Click **Options → Fields**
-2. Toggle fields on/off
-3. Drag to reorder
+1. Clique em **Opções → Campos**
+2. Ativar/desativar campos
+3. Arraste para reordenar
-## Use Cases
+## Casos de uso
-* **Meetings and calls**: View upcoming appointments
-* **Deadlines**: Track due dates and close dates
-* **Events**: Plan and visualize scheduled activities
-* **Follow-ups**: See when tasks are due
+* **Reuniões e chamadas**: Visualize os próximos compromissos
+* **Prazos**: Acompanhe datas de vencimento e datas de fechamento
+* **Eventos**: Planeje e visualize atividades agendadas
+* **Acompanhamentos**: Veja quando as tarefas vencem
-## Related
+## Relacionados
-* [Views Overview](/l/pt/user-guide/views-pipelines/overview) — creating and managing views
-* [Filters and Sorting](/l/pt/user-guide/views-pipelines/capabilities/filters-and-sorting) — filtering calendar data
+* [Visão geral de visualizações](/l/pt/user-guide/views-pipelines/overview) — criação e gerenciamento de visualizações
+* [Filtros e ordenação](/l/pt/user-guide/views-pipelines/capabilities/filters-and-sorting) — filtrando dados do calendário
diff --git a/packages/twenty-docs/l/pt/user-guide/views-pipelines/capabilities/fields-and-columns.mdx b/packages/twenty-docs/l/pt/user-guide/views-pipelines/capabilities/fields-and-columns.mdx
index 4915392a71..d3f0e84847 100644
--- a/packages/twenty-docs/l/pt/user-guide/views-pipelines/capabilities/fields-and-columns.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/views-pipelines/capabilities/fields-and-columns.mdx
@@ -1,52 +1,52 @@
---
-title: Fields & Columns
-description: Choose which fields to display and how to organize them.
+title: Campos e Colunas
+description: Escolha quais campos exibir e como organizá-los.
---
-## Selecting Fields to Display
+## Selecionar Campos para Exibição
-Each view can show a different set of fields. Customize what's visible to focus on the information that matters.
+Cada visualização pode mostrar um conjunto diferente de campos. Personalize o que é visível para focar nas informações que importam.
-### Show or Hide Fields
+### Mostrar ou Ocultar Campos
-1. Click **Options** in the top right
-2. Click **Fields**
-3. Click the **eye icon** next to each field to show/hide it
+1. Clique em **Opções** no canto superior direito
+2. Clique em **Campos**
+3. Clique no **ícone de olho** ao lado de cada campo para mostrar/ocultar
-### Reorder Fields
+### Reordenar Campos
-Change the order fields appear in your view:
+Altere a ordem em que os campos aparecem na sua visualização:
-1. Click **Options → Fields**
-2. Drag fields up or down
-3. Changes save automatically
+1. Clique em **Opções → Campos**
+2. Arraste os campos para cima ou para baixo
+3. As alterações são salvas automaticamente
-## Field Display by View Type
+## Exibição de Campos por Tipo de Visualização
-### Table Views
+### Visualizações de Tabela
-* Fields appear as columns
-* Resize columns by dragging borders
+* Os campos aparecem como colunas
+* Redimensione as colunas arrastando as bordas
-### Kanban Views
+### Visualizações Kanban
-* Fields appear on cards
-* Reorder via Options → Fields
-* Use Compact view to hide all fields
+* Os campos aparecem nos cartões
+* Reordene em Opções → Campos
+* Use a visualização compacta para ocultar todos os campos
-### Calendar Views
+### Visualizações de Calendário
-* Selected fields show on calendar events
-* Configure via Options → Fields
+* Os campos selecionados aparecem nos eventos do calendário
+* Configure em Opções → Campos
-## Best Practices
+## Melhores Práticas
-* **Show only what's needed** — too many fields clutters the view
-* **Put important fields first** — most-used columns on the left
-* **Create multiple views** — different field sets for different purposes
-* **Use field visibility per view** — same object, different focus
+* **Mostre apenas o necessário** — muitos campos poluem a visualização
+* **Coloque os campos importantes primeiro** — colunas mais usadas à esquerda
+* **Crie várias visualizações** — conjuntos de campos diferentes para finalidades diferentes
+* **Use a visibilidade de campos por visualização** — mesmo objeto, foco diferente
-## Related
+## Relacionados
-* [Table Views](/l/pt/user-guide/views-pipelines/capabilities/table-views) — list view features
-* [Kanban Views](/l/pt/user-guide/views-pipelines/capabilities/kanban-views) — card-based views
+* [Visualizações de Tabela](/l/pt/user-guide/views-pipelines/capabilities/table-views) — recursos da visualização de lista
+* [Visualizações Kanban](/l/pt/user-guide/views-pipelines/capabilities/kanban-views) — visualizações baseadas em cartões
diff --git a/packages/twenty-docs/l/pt/user-guide/views-pipelines/capabilities/filters-and-sorting.mdx b/packages/twenty-docs/l/pt/user-guide/views-pipelines/capabilities/filters-and-sorting.mdx
index facf2657a5..36f6135770 100644
--- a/packages/twenty-docs/l/pt/user-guide/views-pipelines/capabilities/filters-and-sorting.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/views-pipelines/capabilities/filters-and-sorting.mdx
@@ -1,78 +1,78 @@
---
-title: Filters & Sorting
-description: Filter and sort records to find exactly what you need.
+title: Filtros e ordenação
+description: Filtre e ordene registros para encontrar exatamente o que você precisa.
---
-## Filtering Data
+## Filtrando dados
-Filters help you focus on specific records by showing only those that match your criteria.
+Os filtros ajudam você a focar em registros específicos, mostrando apenas aqueles que correspondem aos seus critérios.
-### Adding a Filter
+### Adicionando um filtro
-1. Click the **Filter** button in the toolbar
-2. Select the field to filter by
-3. Choose the operator (equals, contains, etc.)
-4. Enter the filter value
-5. Click **Apply**
+1. Clique no botão **Filtrar** na barra de ferramentas
+2. Selecione o campo pelo qual filtrar
+3. Escolha o operador (igual a, contém, etc.)
+4. Insira o valor do filtro
+5. Clique em **Aplicar**
-### Filter Operators
+### Operadores de filtro
-| Field Type | Available Operators |
-| ---------- | -------------------------------------------------- |
-| Text | Equals, Contains, Starts with, Ends with, Is empty |
-| Number | Equals, Greater than, Less than, Between, Is empty |
-| Date | Equals, Before, After, Between, Is empty |
-| Select | Equals, Is any of, Is empty |
-| Checkbox | Is true, Is false |
-| Relation | Equals, Is empty |
+| Tipo de campo | Operadores disponíveis |
+| ---------------- | ---------------------------------------------------- |
+| Texto | Igual a, Contém, Começa com, Termina com, Está vazio |
+| Número | Igual a, Maior que, Menor que, Entre, Está vazio |
+| Data | Igual a, Antes de, Depois de, Entre, Está vazio |
+| Selecionar | Igual a, É um dos, Está vazio |
+| Caixa de Seleção | É verdadeiro, É falso |
+| Relação | Igual a, Está vazio |
-### Multiple Filters
+### Vários filtros
-Combine multiple filters to narrow down results:
+Combine vários filtros para restringir os resultados:
-* All filters are applied with AND logic
-* Each additional filter further restricts results
+* Todos os filtros são aplicados com a lógica AND
+* Cada filtro adicional restringe ainda mais os resultados
-### Removing Filters
+### Removendo filtros
-* Click the **X** on individual filter chips
-* Click **Clear all** to remove all filters
+* Clique no **X** em cada chip de filtro
+* Clique em **Limpar tudo** para remover todos os filtros
-## Sorting Data
+## Ordenando dados
-Sorting determines the order records appear.
+A ordenação determina a ordem em que os registros aparecem.
-### Adding a Sort
+### Adicionando uma ordenação
-1. Click the **Sort** button in the toolbar
-2. Select the field to sort by
-3. Choose ascending (A-Z, 0-9) or descending (Z-A, 9-0)
-4. Click **Apply**
+1. Clique no botão **Ordenar** na barra de ferramentas
+2. Selecione o campo pelo qual ordenar
+3. Escolha crescente (A-Z, 0-9) ou decrescente (Z-A, 9-0)
+4. Clique em **Aplicar**
-### Multiple Sorts
+### Várias ordenações
-Add multiple sort levels:
+Adicione vários níveis de ordenação:
-* First sort is primary
-* Subsequent sorts apply within groups of equal values
+* A primeira ordenação é a primária
+* As ordenações subsequentes se aplicam dentro de grupos de valores iguais
-### Quick Column Sorting
+### Ordenação rápida por coluna
-Click any column header to sort:
+Clique no cabeçalho de uma coluna para ordenar:
-* First click: Ascending
-* Second click: Descending
-* Third click: Remove sort
+* Primeiro clique: Crescente
+* Segundo clique: Decrescente
+* Terceiro clique: Remover ordenação
-## Saving Filter and Sort Settings
+## Salvando as configurações de filtro e ordenação
-Filters and sorts are saved with the view:
+Filtros e ordenações são salvos com a visualização:
-1. Configure your filters and sorts
-2. Click **Save** to update the current view
-3. Or click **Save as new view** to create a variant
+1. Configure seus filtros e ordenações
+2. Clique em **Salvar** para atualizar a visualização atual
+3. Ou clique em **Salvar como nova visualização** para criar uma variante
-## Related
+## Relacionados
-* [Table Views](/l/pt/user-guide/views-pipelines/capabilities/table-views) — group by feature
-* [Views Overview](/l/pt/user-guide/views-pipelines/overview) — building and managing views
+* [Visualizações de Tabela](/l/pt/user-guide/views-pipelines/capabilities/table-views) — recurso Agrupar por
+* [Visão geral de visualizações](/l/pt/user-guide/views-pipelines/overview) — criação e gerenciamento de visualizações
diff --git a/packages/twenty-docs/l/pt/user-guide/views-pipelines/capabilities/kanban-views.mdx b/packages/twenty-docs/l/pt/user-guide/views-pipelines/capabilities/kanban-views.mdx
index fa616d2f3d..932e3025e1 100644
--- a/packages/twenty-docs/l/pt/user-guide/views-pipelines/capabilities/kanban-views.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/views-pipelines/capabilities/kanban-views.mdx
@@ -1,99 +1,99 @@
---
-title: Kanban Board Views
-description: Learn how to use Kanban views to visualize and manage your workflows.
+title: Visualizações do quadro Kanban
+description: Aprenda a usar as visualizações Kanban para visualizar e gerenciar seus fluxos de trabalho.
image: /images/user-guide/kanban-views/kanban.png
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-## About Kanban Views
+## Sobre Visualizações Kanban
-Kanban views visually map out process flows, where each column stands for a distinct stage and each card represents a record.
+As visualizações Kanban mapeiam visualmente os fluxos de processos, onde cada coluna representa um estágio distinto e cada cartão representa um registro.
-## Move Cards between Stages
+## Mover Cartões entre Estágios
-You can move each card between stages as it goes through your workflow by dragging and dropping. To proceed, hold your click on a card and move it to the next stage.
+Você pode mover cada cartão entre as etapas à medida que avança no seu fluxo de trabalho, arrastando e soltando. Para prosseguir, mantenha o clique em um cartão e mova-o para o próximo estágio.
-
+
-## Add and Delete Stages
+## Adicionar e excluir etapas
-You can tailor your workflow to suit your needs using stages, which represent a value in a Select Field:
+Você pode personalizar seu fluxo de trabalho para atender às suas necessidades usando estágios, que representam um valor em um Campo de Seleção:
-### Add Stages
+### Adicionar etapas
-To add a stage, access the Select field settings by navigating to Settings > Data Model, selecting your object, and then the field your Kanban board depends on.
+Para adicionar um estágio, acesse as configurações do campo de Seleção navegando para Configurações > Modelo de Dados, selecionando seu objeto e depois o campo do qual seu quadro Kanban depende.
-
+
-### Remove Stages
+### Remover Estágios
-To remove a stage, hover the stage name or the `⋮` icon, click `Edit from settings` in the Select field settings, and then click **Delete** next to the relevant stage.
+Para remover uma etapa, passe o mouse sobre o nome da etapa ou o ícone `⋮`, clique em `Editar das configurações` nas configurações do campo de seleção e, em seguida, clique em **Excluir** ao lado da etapa relevante.
-## Display Fields
+## Exibir campos
-You can configure your Kanban board to display some fields and hide others. To hide a field, click on **Options** on the top right, then on **Fields** to bring up the list of options. Look for the field needed in the Hidden Fields section and click on the eye button to display the field.
+Você pode configurar seu quadro Kanban para exibir alguns campos e ocultar outros. Para ocultar um campo, clique em **Opções** no canto superior direito, depois em **Campos** para abrir a lista de opções. Procure o campo necessário na seção Campos ocultos e clique no ícone de olho para exibir o campo.
-You can also rearrange the order of fields by holding down the field name and dragging it to where you want it.
+Você também pode reorganizar a ordem dos campos mantendo pressionado o nome do campo e arrastando-o para onde quiser.
-## Compact View
+## Vista Compacta
-You can hide all the fields and get an overview of all records at a glance. To enable:
+Você pode ocultar todos os campos e obter uma visão geral de todos os registros em um relance. Para ativar:
-1. Click **Options** on the top right
-2. Turn on the toggle for **Compact view**
+1. Clique em **Opções** no canto superior direito
+2. Ative a opção **Visualização compacta**
-## Column Aggregations
+## Agregações por coluna
-Each column in a Kanban view can display aggregated values at the top, helping you understand your data at a glance.
+Cada coluna em uma visualização Kanban pode exibir valores agregados na parte superior, ajudando você a entender seus dados em um relance.
-### Available Aggregations
+### Agregações disponíveis
-| Aggregation | Description |
-| ----------- | --------------------------------------------- |
-| **Count** | Number of records in the column |
-| **Sum** | Total of a numeric field (e.g., deal amounts) |
-| **Average** | Average value of a numeric field |
-| **Min** | Lowest value |
-| **Max** | Highest value |
+| Agregação | Descrição |
+| ------------ | ------------------------------------------------------------- |
+| **Contagem** | Número de registros na coluna |
+| **Soma** | Total de um campo numérico (por exemplo, valores de negócios) |
+| **Média** | Valor médio de um campo numérico |
+| **Mínimo** | Menor valor |
+| **Máximo** | Maior valor |
-### Configuring Aggregations
+### Configurando agregações
-1. Click on the number displayed next to the Stage value, at the top of a column
-2. Select the aggregation type
-3. Choose the field to aggregate
+1. Clique no número exibido ao lado do valor da etapa, na parte superior de uma coluna
+2. Selecione o tipo de agregação
+3. Escolha o campo a agregar
-**Example:** Show total deal value per stage by aggregating the Amount field with Sum.
+**Exemplo:** Mostre o valor total dos negócios por etapa agregando o campo Valor com Soma.
-## When to Use Kanban Views
+## Quando usar visualizações Kanban
-Kanban views are ideal for:
+As visualizações Kanban são ideais para:
-* **Sales pipelines**: Track deals through stages from lead to close
-* **Project management**: Monitor tasks through workflow states
-* **Recruitment**: Track candidates through hiring stages
-* **Any staged process**: Visualize any workflow with defined stages
+* **Funis de vendas**: Acompanhe os negócios pelas etapas, do lead ao fechamento
+* **Gestão de projetos**: Monitore tarefas por meio dos estados do fluxo de trabalho
+* **Recrutamento**: Acompanhe candidatos pelas etapas de contratação
+* **Qualquer processo em etapas**: Visualize qualquer fluxo de trabalho com etapas definidas
-## Best Practices
+## Melhores Práticas
-### Organize Your Stages
+### Organize suas etapas
-* **Limit stages**: 5-7 stages is ideal for visibility
-* **Clear naming**: Use descriptive stage names
-* **Logical order**: Arrange stages in process order
+* **Limite as etapas**: 5–7 etapas são ideais para visibilidade
+* **Nomenclatura clara**: Use nomes descritivos para as etapas
+* **Ordem lógica**: Organize as etapas na ordem do processo
-### Optimize Card Display
+### Otimize a exibição dos cartões
-* **Show key fields**: Display only the most important information
-* **Use compact view**: For high-level overviews
-* **Color coding**: Use stage colors to quickly identify status
+* **Mostre campos-chave**: Exiba apenas as informações mais importantes
+* **Use a visualização compacta**: Para visões gerais de alto nível
+* **Codificação por cores**: Use cores de etapa para identificar rapidamente o status
-### Maintain Data Quality
+### Mantenha a qualidade dos dados
-* **Update regularly**: Keep cards moving through stages
-* **Archive completed**: Move closed items out of active view
-* **Review stale cards**: Follow up on cards stuck in stages
+* **Atualize regularmente**: Mantenha os cartões avançando pelas etapas
+* **Arquive os concluídos**: Mova os itens fechados para fora da visualização ativa
+* **Revise cartões parados**: Faça acompanhamento de cartões presos nas etapas
diff --git a/packages/twenty-docs/l/pt/user-guide/views-pipelines/capabilities/table-views.mdx b/packages/twenty-docs/l/pt/user-guide/views-pipelines/capabilities/table-views.mdx
index ac72f40ea1..4abcc5d238 100644
--- a/packages/twenty-docs/l/pt/user-guide/views-pipelines/capabilities/table-views.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/views-pipelines/capabilities/table-views.mdx
@@ -1,64 +1,64 @@
---
-title: Table Views
-description: Display your data in a spreadsheet-like list format.
+title: Visualizações de Tabela
+description: Exiba seus dados em um formato de lista semelhante a uma planilha.
---
-## About Table Views
+## Sobre as Visualizações de Tabela
-Table views display records in rows with customizable columns—like a spreadsheet. This is the default view type for most objects.
+As visualizações de tabela exibem registros em linhas com colunas personalizáveis—como uma planilha. Este é o tipo de visualização padrão para a maioria dos objetos.
-## Features
+## Recursos
-### Column Configuration
+### Configuração de colunas
-* Show or hide columns (fields)
-* Resize column widths
-* Reorder columns by dragging
+* Mostrar ou ocultar colunas (campos)
+* Redimensionar a largura das colunas
+* Reordenar colunas arrastando
-### Group By a Select Field
+### Agrupar por um campo de seleção
-Organize records into collapsible groups based on a field of select type.
+Organize os registros em grupos recolhíveis com base em um campo de seleção.
-1. Click **Options**
-2. Select **Group**
-3. Choose a Select field
-4. Configure group order under **Options → Group → Sort**:
- * **Alphabetical** or **Reverse alphabetical**
- * **Manual order**: Drag groups under "Visible groups" to reorder
- * Click the **eye icon** next to a group to hide it
+1. Clique em **Opções**
+2. Selecione **Agrupar**
+3. Escolha um campo de seleção
+4. Configure a ordem dos grupos em **Opções → Agrupar → Ordenar**:
+ * **Alfabética** ou **Alfabética inversa**
+ * **Ordem manual**: arraste os grupos em "Grupos visíveis" para reordenar
+ * Clique no **ícone de olho** ao lado de um grupo para ocultá-lo
-**Use cases:**
+**Casos de uso:**
-* Group Company by Type
-* Group Opportunities by Stage
-* Group Tasks by Status
+* Agrupar empresas por tipo
+* Agrupar oportunidades por etapa
+* Agrupar tarefas por estado
- **For best performance, limit to 10-15 visible groups per view.** If you need more groups, consider using a Dashboard instead.
+ **Para melhor desempenho, limite a 10-15 grupos visíveis por visualização.** Se precisar de mais grupos, considere usar um Painel.
-### Column Widths
+### Largura das colunas
-Resize columns to show more or less content:
+Redimensione as colunas para mostrar mais ou menos conteúdo:
-1. Hover between two column headers
-2. Click and drag the column border
-3. Release to set the new width
+1. Passe o cursor entre dois cabeçalhos de coluna
+2. Clique e arraste a borda da coluna
+3. Solte para definir a nova largura
-## When to Use Table Views
+## Quando usar visualizações de tabela
-Table views work best for:
+As visualizações de tabela funcionam melhor para:
-* **Browsing large datasets** — scan many records quickly
-* **Data entry** — edit multiple records efficiently
-* **Detailed analysis** — see many fields at once
-* **Sorting and filtering** — find specific records
+* **Navegar por grandes conjuntos de dados** — examinar muitos registros rapidamente
+* **Inserção de dados** — editar vários registros com eficiência
+* **Análise detalhada** — ver muitos campos de uma vez
+* **Classificação e filtragem** — encontrar registros específicos
-## Related
+## Relacionados
-* [Fields and Columns](/l/pt/user-guide/views-pipelines/capabilities/fields-and-columns) — configuring which fields to display
-* [Filters and Sorting](/l/pt/user-guide/views-pipelines/capabilities/filters-and-sorting) — narrowing down records
+* [Campos e colunas](/l/pt/user-guide/views-pipelines/capabilities/fields-and-columns) — configurando quais campos exibir
+* [Filtros e ordenação](/l/pt/user-guide/views-pipelines/capabilities/filters-and-sorting) — restringindo os registros
diff --git a/packages/twenty-docs/l/pt/user-guide/views-pipelines/capabilities/view-settings.mdx b/packages/twenty-docs/l/pt/user-guide/views-pipelines/capabilities/view-settings.mdx
index b02a3aa368..1d52b51bc3 100644
--- a/packages/twenty-docs/l/pt/user-guide/views-pipelines/capabilities/view-settings.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/views-pipelines/capabilities/view-settings.mdx
@@ -1,74 +1,74 @@
---
-title: View Settings
-description: Manage view visibility, naming, icons, and organization.
+title: Configurações de Vista
+description: Gerencie a visibilidade, os nomes, os ícones e a organização das visualizações.
---
-## View Visibility
+## Visibilidade da visualização
-Control who can see your custom views.
+Controle quem pode ver suas visualizações personalizadas.
-### Visibility Options
+### Opções de visibilidade
-| Setting | Who Can See |
-| ------------- | --------------------- |
-| **Workspace** | All workspace members |
-| **Unlisted** | Only you |
+| Configuração | Quem pode ver |
+| ---------------------- | -------------------------------------- |
+| **Espaço de trabalho** | Todos os membros do espaço de trabalho |
+| **Não listado** | Apenas você |
-### Changing Visibility
+### Alterar a visibilidade
-1. Open the view
-2. Click **Options → Visibility**
-3. Select **Workspace** or **Unlisted**
+1. Abra a visualização
+2. Clique em **Opções → Visibilidade**
+3. Selecione **Espaço de trabalho** ou **Não listado**
- The default "All [Object Name]" views cannot have their visibility changed.
+ As visualizações padrão "Todos(as) [Nome do objeto]" não podem ter sua visibilidade alterada.
-## Rename a View
+## Renomear uma visualização
-1. Open the view dropdown
-2. Click the **⋮** menu next to the view
-3. Select **Edit**
-4. Enter the new name
+1. Abra o menu suspenso de visualizações
+2. Clique no menu **⋮** ao lado da visualização
+3. Selecione **Editar**
+4. Insira o novo nome
-## Change View Icon
+## Alterar o ícone da visualização
-1. Open the view dropdown
-2. Click the **⋮** menu next to the view
-3. Select **Edit**
-4. Click the icon to change it
+1. Abra o menu suspenso de visualizações
+2. Clique no menu **⋮** ao lado da visualização
+3. Selecione **Editar**
+4. Clique no ícone para alterá-lo
-## Reorder Views
+## Reordenar visualizações
-Change the order views appear in the dropdown:
+Altere a ordem em que as visualizações aparecem no menu suspenso:
-1. Open the view dropdown
-2. Drag views by their handle
-3. Drop in the desired position
-4. Order saves automatically
+1. Abra o menu suspenso de visualizações
+2. Arraste as visualizações pela alça
+3. Solte na posição desejada
+4. A ordem é salva automaticamente
-## Favorites
+## Favoritos
-Pin frequently used views for quick access:
+Fixe visualizações usadas com frequência para acesso rápido:
-1. Open the view dropdown
-2. Click the **⋮** menu next to a view
-3. Select **Add to favorites**
+1. Abra o menu suspenso de visualizações
+2. Clique no menu **⋮** ao lado de uma visualização
+3. Selecione **Adicionar aos favoritos**
-Favorited views appear in a dedicated section for easy access.
+As visualizações favoritas aparecem em uma seção dedicada para facilitar o acesso.
-## Delete a View
+## Excluir uma visualização
-1. Open the view dropdown
-2. Click the **⋮** menu next to the view
-3. Select **Delete**
-4. Confirm deletion
+1. Abra o menu suspenso de visualizações
+2. Clique no menu **⋮** ao lado da visualização
+3. Selecione **Excluir**
+4. Confirme a exclusão
- Deleted views cannot be recovered.
+ Visualizações excluídas não podem ser recuperadas.
-## Related
+## Relacionados
-* [Views Overview](/l/pt/user-guide/views-pipelines/overview) — creating views
-* [How to Restrict Access](/l/pt/user-guide/views-pipelines/how-tos/restrict-access-to-your-view) — step-by-step guide
+* [Visão geral de visualizações](/l/pt/user-guide/views-pipelines/overview) — criação de visualizações
+* [Como restringir o acesso](/l/pt/user-guide/views-pipelines/how-tos/restrict-access-to-your-view) — guia passo a passo
diff --git a/packages/twenty-docs/l/pt/user-guide/views-pipelines/how-tos/create-a-calendar-view-for-tasks-due.mdx b/packages/twenty-docs/l/pt/user-guide/views-pipelines/how-tos/create-a-calendar-view-for-tasks-due.mdx
index ed95016ec5..35b84be443 100644
--- a/packages/twenty-docs/l/pt/user-guide/views-pipelines/how-tos/create-a-calendar-view-for-tasks-due.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/views-pipelines/how-tos/create-a-calendar-view-for-tasks-due.mdx
@@ -1,61 +1,61 @@
---
-title: Create a Calendar View for Tasks Due
-description: Visualize your tasks and deadlines on a calendar.
+title: Crie uma visualização de calendário para tarefas com vencimento
+description: Visualize suas tarefas e prazos em um calendário.
---
-## Prerequisites
+## Pré-requisitos
-Your Tasks object needs a **Due Date** field (Date or Date & Time type).
+Seu objeto Tasks precisa de um campo **Data de vencimento** (tipo Data ou Data e hora).
-## Steps
+## Etapas
-1. Navigate to **Tasks**
-2. Click the view dropdown → **+ Add view**
-3. Name your view (e.g., "Tasks Calendar")
-4. Click **Create**
-5. Click **Options** and select **Calendar** as the layout
-6. Choose **Due Date** as the date field
-7. Click **Save**
+1. Navegue até **Tasks**
+2. Clique no menu suspenso de visualizações → **+ Adicionar visualização**
+3. Nomeie sua visualização (por exemplo, "Calendário de tarefas")
+4. Clique em **Criar**
+5. Clique em **Opções** e selecione **Calendário** como o layout
+6. Escolha **Data de vencimento** como o campo de data
+7. Clique em **Salvar**
-## Configure Your Calendar
+## Configure seu calendário
-### Display Fields on Events
+### Exiba campos nos eventos
-1. Click **Options → Fields**
-2. Click the **eye icon** to show/hide fields
-3. Drag to reorder
+1. Clique em **Opções → Campos**
+2. Clique no **ícone de olho** para mostrar/ocultar campos
+3. Arraste para reordenar
-Recommended fields to display:
+Campos recomendados para exibir:
-* **Title** — task name
-* **Assignee** — who's responsible
-* **Status** — current progress
+* **Título** — nome da tarefa
+* **Responsável** — quem é o responsável
+* **Status** — progresso atual
-### Filter Your Calendar
+### Filtre seu calendário
-Create focused views:
+Crie visualizações focadas:
-* **My Tasks**: Filter by Assignee = Me
-* **This Week**: Filter by Due Date = This week
-* **Overdue**: Filter by Due Date < Today, Status ≠ Done
+* **Minhas Tarefas**: Filtrar por Responsável = Eu
+* **Esta semana**: Filtrar por Data de Vencimento = Esta semana
+* **Em atraso**: Filtrar por Data de Vencimento < Hoje, Estado ≠ Concluído
-## Other Calendar Use Cases
+## Outros casos de uso do calendário
-| Object | Date Field | Purpose |
-| ------------- | ---------- | ------------------------- |
-| Opportunities | Close Date | Track expected closes |
-| Custom Events | Event Date | Plan activities |
-| Projects | Deadline | Monitor project timelines |
+| Objeto | Campo de Data | Finalidade |
+| ---------------------- | -------------- | ------------------------------------ |
+| Oportunidades | Data de Fecho | Acompanhar fechos esperados |
+| Eventos personalizados | Data do Evento | Planear atividades |
+| Projetos | Prazo | Monitorizar cronogramas dos projetos |
-## Tips
+## Dicas
-* **Review weekly**: Start each week by checking your calendar view
-* **Combine with table view**: Use calendar for overview, table for details
-* **Set visibility**: Keep personal task calendars as Unlisted
+* **Reveja semanalmente**: Comece cada semana por verificar a sua visualização de calendário
+* **Combine com a visualização de tabela**: Utilize o calendário para a visão geral e a tabela para os detalhes
+* **Defina a visibilidade**: Mantenha os calendários de tarefas pessoais como Não listados
-## Related
+## Relacionados
-* [Calendar View](/l/pt/user-guide/views-pipelines/capabilities/calendar-view) — all calendar features
-* [Filters and Sorting](/l/pt/user-guide/views-pipelines/capabilities/filters-and-sorting) — filter your calendar
+* [Visualização de Calendário](/l/pt/user-guide/views-pipelines/capabilities/calendar-view) — todos os recursos do calendário
+* [Filtros e ordenação](/l/pt/user-guide/views-pipelines/capabilities/filters-and-sorting) — filtre o seu calendário
diff --git a/packages/twenty-docs/l/pt/user-guide/views-pipelines/how-tos/create-a-kanban-view-for-projects.mdx b/packages/twenty-docs/l/pt/user-guide/views-pipelines/how-tos/create-a-kanban-view-for-projects.mdx
index 4626ff154d..ce0ce99bcb 100644
--- a/packages/twenty-docs/l/pt/user-guide/views-pipelines/how-tos/create-a-kanban-view-for-projects.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/views-pipelines/how-tos/create-a-kanban-view-for-projects.mdx
@@ -1,80 +1,80 @@
---
-title: Create a Kanban View for Projects
-description: Track projects through stages using a visual board.
+title: Crie uma visualização Kanban para projetos
+description: Acompanhe projetos por etapas usando um quadro visual.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-Use a Kanban view to visualize your projects (or any object with stages) as cards moving through columns.
+Use uma visualização Kanban para visualizar os seus projetos (ou qualquer objeto com etapas) como cartões que se movem pelas colunas.
-
+
-## Prerequisites
+## Pré-requisitos
-Your object needs a **Select field** to use as columns (e.g., Status, Stage, Phase).
+O seu objeto precisa de um **campo Select** para usar como colunas (por exemplo, Estado, Etapa, Fase).
-If you don't have one:
+Se não tiver um:
-1. Go to **Settings → Data Model**
-2. Select your object
-3. Add a Select field with your stage options
+1. Vá a **Definições → Modelo de Dados**
+2. Selecione o seu objeto
+3. Adicione um campo Select com as suas opções de etapas
-## Steps
+## Etapas
-1. Navigate to your object (e.g., Projects, Tasks)
-2. Click the view dropdown → **+ Add view**
-3. Name your view (e.g., "Project Board")
-4. Click **Create**
-5. Click **Options** and select **Kanban** as the layout
-6. The view uses your Select field for columns automatically
-7. Click **Save**
+1. Aceda ao seu objeto (por exemplo, Projetos, Tarefas)
+2. Clique no menu suspenso de visualizações → **+ Adicionar visualização**
+3. Nomeie a sua visualização (por exemplo, "Quadro de projetos")
+4. Clique em **Criar**
+5. Clique em **Opções** e selecione **Kanban** como o layout
+6. A visualização usa automaticamente o seu campo Select para as colunas
+7. Clique em **Salvar**
-## Configure Your Board
+## Configure o seu quadro
-### Show Key Fields on Cards
+### Mostrar campos principais nos cartões
-1. Click **Options → Fields**
-2. Find fields in the "Hidden Fields" section
-3. Click the **eye icon** to display them on cards
-4. Drag to reorder
+1. Clique em **Opções → Campos**
+2. Procure campos na secção "Campos Ocultos"
+3. Clique no **ícone de olho** para os mostrar nos cartões
+4. Arraste para reordenar
-### Enable Compact View
+### Ativar visualização compacta
-For a high-level overview:
+Para uma visão geral de alto nível:
-1. Click **Options**
-2. Turn on **Compact view**
+1. Clique em **Opções**
+2. Ative a opção **Visualização compacta**
-Cards show only the record name.
+Os cartões mostram apenas o nome do registo.
-### Add Aggregations
+### Adicionar agregações
-Show counts or totals at the top of each column:
+Mostre contagens ou totais no topo de cada coluna:
-1. Click the number next to a column name
-2. Select an aggregation (Count, Sum, etc.)
-3. Choose a field if needed
+1. Clique no número ao lado do nome de uma coluna
+2. Selecione uma agregação (Contagem, Soma, etc.)
+3. Escolha um campo, se necessário
-## Moving Cards
+## Mover cartões
-Drag and drop cards between columns to update their status.
+Arraste e solte os cartões entre colunas para atualizar o seu estado.
-
+
-## Example: Task Board
+## Exemplo: Quadro de tarefas
-| Column (Status) | Cards |
-| --------------- | ----------------- |
-| **To Do** | New tasks |
-| **In Progress** | Active work |
-| **Review** | Awaiting approval |
-| **Done** | Completed |
+| Coluna (Estado) | Cartões |
+| ---------------- | -------------------- |
+| **A Fazer** | Novas tarefas |
+| **Em andamento** | Trabalho ativo |
+| **Revisão** | A aguardar aprovação |
+| **Concluído** | Concluído |
-## Related
+## Relacionados
-* [Kanban Views](/l/pt/user-guide/views-pipelines/capabilities/kanban-views) — aggregations, compact view, stages
-* [How to Set Up a Sales Pipeline](/l/pt/user-guide/views-pipelines/how-tos/set-up-a-sales-pipeline) — Kanban for Opportunities
+* [Visualizações Kanban](/l/pt/user-guide/views-pipelines/capabilities/kanban-views) — agregações, visualização compacta, etapas
+* [Como configurar um pipeline de vendas](/l/pt/user-guide/views-pipelines/how-tos/set-up-a-sales-pipeline) — Kanban para oportunidades
diff --git a/packages/twenty-docs/l/pt/user-guide/views-pipelines/how-tos/create-a-table-view-with-grouping.mdx b/packages/twenty-docs/l/pt/user-guide/views-pipelines/how-tos/create-a-table-view-with-grouping.mdx
index a36931fa45..4d77ac7477 100644
--- a/packages/twenty-docs/l/pt/user-guide/views-pipelines/how-tos/create-a-table-view-with-grouping.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/views-pipelines/how-tos/create-a-table-view-with-grouping.mdx
@@ -1,51 +1,51 @@
---
-title: Create a Table View with Grouping
-description: Organize your records into collapsible groups by field value.
+title: Criar uma visualização de tabela com agrupamento
+description: Organize seus registros em grupos recolhíveis com base no valor do campo.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-Group your table view by a Select field to organize records into collapsible sections.
+Agrupe sua visualização de tabela por um campo de seleção para organizar registros em seções recolhíveis.
-## Steps
+## Etapas
-1. Navigate to the object (People, Companies, etc.)
-2. Click the view dropdown → **+ Add view**
-3. Name your view (e.g., "Companies by Type")
-4. Click **Create**
-5. Click **Options → Group**
-6. Choose a Select field to group by
-7. Click **Save**
+1. Navegue até o objeto (Pessoas, Empresas, etc.)
+2. Clique no menu suspenso de visualizações → **+ Adicionar visualização**
+3. Nomeie sua visualização (por exemplo, "Empresas por tipo")
+4. Clique em **Criar**
+5. Clique em **Opções → Agrupar**
+6. Escolha um campo de seleção para agrupar
+7. Clique em **Salvar**
-## Configure Group Order
+## Configurar ordem dos grupos
-Under **Options → Group → Sort**, choose how groups are ordered:
+Em **Opções → Agrupar → Ordenação**, escolha como os grupos são ordenados:
-| Option | Description |
-| ------------------------ | --------------------------------------------- |
-| **Alphabetical** | A to Z |
-| **Reverse alphabetical** | Z to A |
-| **Manual order** | Drag groups to reorder under "Visible groups" |
+| Opção | Descrição |
+| ---------------------- | ----------------------------------------------------- |
+| **Alfabética** | De A a Z |
+| **Alfabética inversa** | De Z a A |
+| **Ordem manual** | Arraste os grupos para reordenar em "Grupos visíveis" |
-Click the **eye icon** next to a group to hide it from the view.
+Clique no **ícone de olho** ao lado de um grupo para ocultá-lo da visualização.
- **For best performance, limit to 10-15 visible groups.** If you need more, consider using a Dashboard instead.
+ **Para melhor desempenho, limite a 10-15 grupos visíveis.** Se precisar de mais, considere usar um Painel.
-## Example: Companies by Industry
+## Exemplo: Empresas por indústria
-1. Go to **Companies**
-2. Create a new view named "By Industry"
-3. Click **Options → Group**
-4. Select the **Industry** field
-5. Save
+1. Vá para **Empresas**
+2. Crie uma nova visualização chamada "Por indústria"
+3. Clique em **Opções → Agrupar**
+4. Selecione o campo **Indústria**
+5. Salvar
-Now your companies are organized by industry, making it easy to focus on one segment at a time.
+Agora suas empresas estão organizadas por indústria, facilitando focar em um segmento por vez.
-## Related
+## Relacionados
-* [Table Views](/l/pt/user-guide/views-pipelines/capabilities/table-views) — all table view features
-* [Filters and Sorting](/l/pt/user-guide/views-pipelines/capabilities/filters-and-sorting) — combine grouping with filters
+* [Visualizações de Tabela](/l/pt/user-guide/views-pipelines/capabilities/table-views) — todos os recursos da visualização de tabela
+* [Filtros e ordenação](/l/pt/user-guide/views-pipelines/capabilities/filters-and-sorting) — combine o agrupamento com filtros
diff --git a/packages/twenty-docs/l/pt/user-guide/views-pipelines/how-tos/restrict-access-to-your-view.mdx b/packages/twenty-docs/l/pt/user-guide/views-pipelines/how-tos/restrict-access-to-your-view.mdx
index ddccd324fe..32be6f8eed 100644
--- a/packages/twenty-docs/l/pt/user-guide/views-pipelines/how-tos/restrict-access-to-your-view.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/views-pipelines/how-tos/restrict-access-to-your-view.mdx
@@ -1,32 +1,32 @@
---
-title: Restrict Access to Your View
-description: Control who can see your custom views.
+title: Restrinja o acesso à sua visualização
+description: Controle quem pode ver suas visualizações personalizadas.
---
-Each view (except the default "All [Object Name]" views) has its own visibility setting.
+Cada visualização (exceto as visualizações padrão "Todos(as) [Nome do objeto]") tem sua própria configuração de visibilidade.
-## Steps
+## Etapas
-1. Open the view you want to restrict
-2. Click **Options** in the top right
-3. Click **Visibility**
-4. Select **Unlisted**
+1. Abra a visualização que deseja restringir
+2. Clique em **Opções** no canto superior direito
+3. Clique em **Visibilidade**
+4. Selecione **Não listado**
-Your view is now visible only to you.
+Sua visualização agora está visível apenas para você.
-## Visibility Options
+## Opções de visibilidade
-| Setting | Who Can See |
-| ------------- | --------------------- |
-| **Workspace** | All workspace members |
-| **Unlisted** | Only you |
+| Configuração | Quem pode ver |
+| ---------------------- | -------------------------------------- |
+| **Espaço de trabalho** | Todos os membros do espaço de trabalho |
+| **Não listado** | Apenas você |
-## Notes
+## Notas
-* The default "All [Object Name]" views cannot be made unlisted
-* Unlisted views don't appear in other users' view dropdowns
-* You can change visibility back to Workspace at any time
+* As visualizações padrão "Todos(as) [Nome do objeto]" não podem ser definidas como não listadas
+* Visualizações não listadas não aparecem nos menus suspensos de visualização de outros usuários
+* Você pode alterar a visibilidade de volta para Espaço de trabalho a qualquer momento
-## Related
+## Relacionados
-* [View Settings](/l/pt/user-guide/views-pipelines/capabilities/view-settings) — all view configuration options
+* [Configurações de visualização](/l/pt/user-guide/views-pipelines/capabilities/view-settings) — todas as opções de configuração de visualização
diff --git a/packages/twenty-docs/l/pt/user-guide/views-pipelines/how-tos/set-up-a-sales-pipeline.mdx b/packages/twenty-docs/l/pt/user-guide/views-pipelines/how-tos/set-up-a-sales-pipeline.mdx
index fe4f2cfd6a..40ab081d75 100644
--- a/packages/twenty-docs/l/pt/user-guide/views-pipelines/how-tos/set-up-a-sales-pipeline.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/views-pipelines/how-tos/set-up-a-sales-pipeline.mdx
@@ -1,120 +1,120 @@
---
-title: Set Up a Sales Pipeline
-description: Configure your sales pipeline to track opportunities through stages.
+title: Configurar um Pipeline de Vendas
+description: Configure seu pipeline de vendas para acompanhar as oportunidades ao longo das etapas.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-A sales pipeline in Twenty is a Kanban view of your Opportunities object, where each column represents a stage in your sales process.
+Um pipeline de vendas no Twenty é uma visualização Kanban do seu objeto Oportunidades, em que cada coluna representa uma etapa do seu processo de vendas.
-## Step 1: Configure Your Stages
+## Etapa 1: Configure Suas Etapas
-Stages are defined in the Opportunities object's **Stage** field.
+As etapas são definidas no campo **Stage** do objeto Oportunidades.
-1. Go to **Settings → Data Model**
-2. Select **Opportunities**
-3. Find and click the **Stage** field
-4. Add, remove, or rename stages to match your process
+1. Vá para **Configurações → Modelo de Dados**
+2. Selecione **Oportunidades**
+3. Encontre e clique no campo **Stage**
+4. Adicione, remova ou renomeie etapas para corresponder ao seu processo
-
+
-### Recommended Stages
+### Etapas Recomendadas
-| Stage | Purpose |
-| --------------- | ----------------------------------- |
-| **New** | Fresh opportunities just identified |
-| **Qualified** | Confirmed as a good fit |
-| **Meeting** | Engaged in discussions |
-| **Proposal** | Proposal sent |
-| **Negotiation** | Working on terms |
-| **Closed Won** | Deal successful |
-| **Closed Lost** | Deal unsuccessful |
+| Etapa | Finalidade |
+| --------------------- | --------------------------------- |
+| **Novo** | Oportunidades recém-identificadas |
+| **Qualificado** | Confirmado como boa adequação |
+| **Reunião** | Em discussões |
+| **Proposta** | Proposta enviada |
+| **Negociação** | Trabalhando nos termos |
+| **Fechado - Ganho** | Negócio bem-sucedido |
+| **Fechado - Perdido** | Negócio mal-sucedido |
- **5-7 stages is optimal.** Too many stages makes the pipeline hard to scan; too few loses visibility into deal progress.
+ **5-7 etapas é o ideal.** Etapas demais tornam o pipeline difícil de escanear; poucas demais reduzem a visibilidade do progresso dos negócios.
-## Step 2: Create a Pipeline View
+## Etapa 2: Crie uma Visualização de Pipeline
-1. Go to **Opportunities**
-2. Click the view dropdown → **+ Add view**
-3. Name it "Sales Pipeline"
-4. Click **Create**
-5. Open **Options** and select **Kanban** as the layout
+1. Vá para **Oportunidades**
+2. Clique no menu suspenso de visualizações → **+ Adicionar visualização**
+3. Dê o nome de "Pipeline de Vendas"
+4. Clique em **Criar**
+5. Abra **Opções** e selecione **Kanban** como o layout
-The view automatically uses the Stage field for columns.
+A visualização usa automaticamente o campo Stage para as colunas.
-## Step 3: Configure Your View
+## Etapa 3: Configure Sua Visualização
-### Show Key Fields
+### Mostrar Campos Principais
-1. Click **Options → Fields**
-2. Look for fields in the "Hidden Fields" section
-3. Click the **eye icon** to display: Company, Amount, Close Date, Owner
+1. Clique em **Opções → Campos**
+2. Procure campos na seção "Campos Ocultos"
+3. Clique no **ícone de olho** para exibir: Empresa, Valor, Data de Fechamento, Responsável
-### Enable Aggregations
+### Ativar Agregações
-Show totals at the top of each column:
+Mostrar totais no topo de cada coluna:
-1. Click the number displayed next to a Stage name at the top of a column
-2. Select the aggregation type (Count, Sum, Average, etc.)
-3. Choose the field to aggregate (e.g., Amount)
+1. Clique no número exibido ao lado do nome da etapa no topo de uma coluna
+2. Selecione o tipo de agregação (Contagem, Soma, Média, etc.)
+3. Escolha o campo a agregar (por exemplo, Valor)
-**Example:** Show total deal value per stage by aggregating Amount with Sum.
+**Exemplo:** Mostre o valor total dos negócios por etapa agregando o campo Valor com Soma.
-### Use Compact View (Optional)
+### Usar Visualização Compacta (Opcional)
-For a high-level overview with minimal card content:
+Para uma visão geral de alto nível com conteúdo mínimo nos cartões:
-1. Click **Options**
-2. Turn on the toggle for **Compact view**
+1. Clique em **Opções**
+2. Ative a opção **Visualização compacta**
-## Step 4: Create Personal and Team Views
+## Etapa 4: Crie Visualizações Pessoais e de Equipe
-### "My Pipeline"
+### "Meu Pipeline"
-* **Filter**: Owner = Me
-* **Visibility**: Unlisted (personal view)
+* **Filtro**: Responsável = Eu
+* **Visibilidade**: Não listada (visualização pessoal)
-### "Team Pipeline"
+### "Pipeline da Equipe"
-* **Filter**: None (show all)
-* **Visibility**: Workspace (shared view)
+* **Filtro**: Nenhum (mostrar tudo)
+* **Visibilidade**: Espaço de trabalho (visualização compartilhada)
-### "Closing This Month"
+### "Fechando Este Mês"
-* **Type**: Table
-* **Filter**: Close Date = This month, Stage ≠ Closed Won, Stage ≠ Closed Lost
-* **Sort**: Close Date ascending
+* **Tipo**: Tabela
+* **Filtro**: Data de Fechamento = Este mês, Etapa ≠ Fechado - Ganho, Etapa ≠ Fechado - Perdido
+* **Ordenação**: Data de Fechamento ascendente
-## Working with Opportunities
+## Trabalhando com Oportunidades
-### Creating Opportunities
+### Criando Oportunidades
-* Click **+ New** in the Opportunities view
-* Or click **+** in a specific stage column
+* Clique em **+ Novo** na visualização de Oportunidades
+* Ou clique em **+** na coluna de uma etapa específica
-### Moving Through Stages
+### Avançando pelas Etapas
-Drag and drop opportunity cards between columns to update their stage.
+Arraste e solte os cartões de oportunidade entre colunas para atualizar sua etapa.
-
+
-## Best Practices
+## Melhores Práticas
-### Pipeline Hygiene
+### Higiene do Pipeline
-* Update deals daily as they progress
-* Move or close stale deals promptly
-* Keep close dates realistic
+* Atualize os negócios diariamente conforme eles avançam
+* Mova ou feche rapidamente os negócios estagnados
+* Mantenha as datas de fechamento realistas
-### Stage Discipline
+### Disciplina de Etapas
-* Define clear criteria for each stage
-* Move deals promptly when criteria are met
-* Don't let deals sit in stages too long
+* Defina critérios claros para cada etapa
+* Mova os negócios prontamente quando os critérios forem atendidos
+* Não deixe os negócios permanecerem tempo demais nas etapas
-## Related
+## Relacionados
-* [Kanban Views](/l/pt/user-guide/views-pipelines/capabilities/kanban-views) — aggregations and compact view
-* [Filters and Sorting](/l/pt/user-guide/views-pipelines/capabilities/filters-and-sorting) — creating filtered views
+* [Visualizações Kanban](/l/pt/user-guide/views-pipelines/capabilities/kanban-views) — agregações e visualização compacta
+* [Filtros e Ordenação](/l/pt/user-guide/views-pipelines/capabilities/filters-and-sorting) — criando visualizações filtradas
diff --git a/packages/twenty-docs/l/pt/user-guide/views-pipelines/how-tos/show-expected-amount-in-pipeline.mdx b/packages/twenty-docs/l/pt/user-guide/views-pipelines/how-tos/show-expected-amount-in-pipeline.mdx
index e321029156..e4dcee431c 100644
--- a/packages/twenty-docs/l/pt/user-guide/views-pipelines/how-tos/show-expected-amount-in-pipeline.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/views-pipelines/how-tos/show-expected-amount-in-pipeline.mdx
@@ -1,149 +1,149 @@
---
-title: Show Expected Amount in Your Pipeline
-description: Calculate and display weighted deal values based on stage probability.
+title: Mostrar o Valor Esperado no seu pipeline
+description: Calcule e exiba valores ponderados de negócios com base na probabilidade da etapa.
---
-The Expected Amount is a calculated value: **Amount × Probability**. This helps you forecast revenue by weighting deals based on how likely they are to close.
+O Valor Esperado é um valor calculado: **Amount × Probability**. Isso ajuda você a prever a receita, ponderando os negócios com base na probabilidade de fechamento.
- This is an example of creating [Formula Fields](/l/pt/user-guide/workflows/how-tos/crm-automations/formula-fields) using workflows.
+ Este é um exemplo de criação de [Campos de fórmula](/l/pt/user-guide/workflows/how-tos/crm-automations/formula-fields) usando fluxos de trabalho.
-This guide walks you through setting up the custom fields and workflows needed to calculate and display expected amounts in your pipeline.
+Este guia orienta você na configuração dos campos personalizados e fluxos de trabalho necessários para calcular e exibir valores esperados no seu pipeline.
-## Step 1: Create Custom Fields
+## Etapa 1: Criar campos personalizados
-You need two custom fields on the Opportunities object.
+Você precisa de dois campos personalizados no objeto Oportunidades.
-### Create the Probability Field
+### Crie o campo Probability
-1. Go to **Settings → Data Model → Opportunities**
-2. Click **+ Add Field**
-3. Configure:
- * **Name**: Probability
- * **Type**: Number
- * **Description**: Stage-based probability (0-100%)
-4. Click **Save**
+1. Acesse **Configurações → Modelo de Dados → Oportunidades**
+2. Clique em **+ Adicionar campo**
+3. Configurar:
+ * **Nome**: Probability
+ * **Tipo**: Número
+ * **Descrição**: Probabilidade baseada na etapa (0-100%)
+4. Clique em **Salvar**
-### Create the Expected Amount Field
+### Crie o campo Expected Amount
-1. Click **+ Add Field**
-2. Configure:
- * **Name**: Expected Amount
- * **Type**: Currency
- * **Description**: Calculated: Amount × Probability
-3. Click **Save**
+1. Clique em **+ Adicionar campo**
+2. Configurar:
+ * **Nome**: Expected Amount
+ * **Tipo**: Moeda
+ * **Descrição**: Calculado: Amount × Probability
+3. Clique em **Salvar**
-### Optional: Make Fields Read-Only for Users
+### Opcional: tornar os campos somente leitura para os usuários
-If you don't want users manually editing these calculated fields:
+Se você não quiser que os usuários editem manualmente esses campos calculados:
-1. Go to **Settings → Roles**
-2. Select the role to configure
-3. Find the Opportunities object
-4. Set **Probability** and **Expected Amount** fields to read-only
+1. Vá para **Configurações → Funções**
+2. Selecione a função a configurar
+3. Encontre o objeto Oportunidades
+4. Defina os campos **Probability** e **Expected Amount** como somente leitura
-This ensures only the workflows can update these values.
+Isso garante que apenas os fluxos de trabalho possam atualizar esses valores.
-## Step 2: Create Workflow #1 — Update Probability on Stage Change
+## Etapa 2: Criar o fluxo de trabalho nº 1 — Atualizar Probability na alteração de etapa
-This workflow automatically sets the Probability when an opportunity moves to a new stage.
+Este fluxo de trabalho define automaticamente o campo Probability quando uma oportunidade é movida para uma nova etapa.
-### Create the Workflow
+### Criar o fluxo de trabalho
-1. Go to **Workflows**
-2. Click **+ New Workflow**
-3. Name it "Update Probability on Stage Change"
+1. Acesse **Fluxos de trabalho**
+2. Clique em **+ Novo fluxo de trabalho**
+3. Nomeie como "Update Probability on Stage Change"
-### Configure the Trigger
+### Configurar o gatilho
-1. Add a **Record Created or Updated** trigger
-2. Select **Opportunities** as the object
-3. Filter on: **Stage** field is updated
+1. Adicione um gatilho **Registro criado ou atualizado**
+2. Selecione **Oportunidades** como o objeto
+3. Filtre por: o campo **Stage** é atualizado
-### Add Branches for Each Stage
+### Adicione ramificações para cada etapa
-Create a branch for each stage with its probability:
+Crie uma ramificação para cada etapa com sua probabilidade:
-| Stage | Probability |
-| ----------- | ----------- |
-| New | 10% |
-| Qualified | 25% |
-| Meeting | 40% |
-| Proposal | 60% |
-| Negotiation | 80% |
-| Closed Won | 100% |
-| Closed Lost | 0% |
+| Etapa | Probabilidade |
+| ----------- | ------------- |
+| Novo | 10% |
+| Qualificado | 25% |
+| Meeting | 40% |
+| Proposal | 60% |
+| Negotiation | 80% |
+| Closed Won | 100% |
+| Closed Lost | 0% |
- To create a new branch, right click on the workflow canvas and click **New action**. Then, link this action to the previous node by dragging the arrow from the previous node to this new action.
+ Para criar uma nova ramificação, clique com o botão direito na tela do fluxo de trabalho e clique em **Nova ação**. Em seguida, vincule essa ação ao nó anterior arrastando a seta do nó anterior para esta nova ação.
-For each stage:
+Para cada etapa:
-1. Add a **Filter** node: Stage = [stage name]
-2. Add an **Update Record** action:
- * Record: The triggering Opportunity
- * Field: Probability
- * Value: [probability for that stage]
+1. Adicione um nó **Filtro**: Stage = [nome da etapa]
+2. Adicione uma ação **Atualizar registro**:
+ * Registro: a Oportunidade que acionou
+ * Campo: Probability
+ * Valor: [probabilidade para essa etapa]
-### Calculate Expected Amount
+### Calcular o Valor Esperado
-After the branches rejoin:
+Depois que as ramificações se unirem:
-1. Add a **Filter** node: Amount is not empty
-2. Add an **Update Record** action:
- * Record: The triggering Opportunity
- * Field: Expected Amount
- * Value: Amount × Probability
+1. Adicione um nó **Filtro**: Amount não está vazio
+2. Adicione uma ação **Atualizar registro**:
+ * Registro: a Oportunidade que acionou
+ * Campo: Expected Amount
+ * Valor: Amount × Probability
-## Step 3: Create Workflow #2 — Recalculate on Amount Change
+## Etapa 3: Criar o fluxo de trabalho nº 2 — Recalcular na alteração de Amount
-This workflow updates the Expected Amount when the deal Amount changes.
+Este fluxo de trabalho atualiza o campo Expected Amount quando o Amount do negócio é alterado.
-### Create the Workflow
+### Criar o fluxo de trabalho
-1. Go to **Workflows**
-2. Click **+ New Workflow**
-3. Name it "Recalculate Expected Amount on Amount Change"
+1. Acesse **Fluxos de trabalho**
+2. Clique em **+ Novo fluxo de trabalho**
+3. Nomeie como "Recalculate Expected Amount on Amount Change"
-### Configure the Trigger
+### Configurar o gatilho
-1. Add a **Record Created or Updated** trigger
-2. Select **Opportunities** as the object
-3. Filter on: **Amount** field is updated
+1. Adicione um gatilho **Registro criado ou atualizado**
+2. Selecione **Oportunidades** como o objeto
+3. Filtre por: o campo **Amount** é atualizado
-### Add the Logic
+### Adicione a lógica
-1. Add a **Filter** node: Amount is not empty
-2. Add an **Update Record** action:
- * Record: The triggering Opportunity
- * Field: Expected Amount
- * Value: Amount × Probability
+1. Adicione um nó **Filtro**: Amount não está vazio
+2. Adicione uma ação **Atualizar registro**:
+ * Registro: a Oportunidade que acionou
+ * Campo: Expected Amount
+ * Valor: Amount × Probability
-## Step 4: Display in Your Pipeline
+## Etapa 4: Exibir no seu pipeline
-Now show the Expected Amount totals in your Kanban view:
+Agora mostre os totais de Expected Amount na sua visualização Kanban:
-1. Open your **Sales Pipeline** Kanban view
-2. Click the **number** next to any Stage name at the top of a column
-3. Select **Sum**
-4. Choose **Expected Amount**
+1. Abra a visualização Kanban do seu **Pipeline de Vendas**
+2. Clique no **número** ao lado de qualquer nome de Stage no topo de uma coluna
+3. Selecione **Soma**
+4. Escolha **Expected Amount**
-Each column now shows the total weighted pipeline value for that stage.
+Cada coluna agora mostra o valor total ponderado do pipeline para essa etapa.
-## Summary
+## Resumo
-| Component | Purpose |
-| ------------------------- | ------------------------------------------------------------------------- |
-| **Probability field** | Stores the stage-based win probability |
-| **Expected Amount field** | Stores Amount × Probability |
-| **Workflow #1** | Updates Probability when Stage changes, then recalculates Expected Amount |
-| **Workflow #2** | Recalculates Expected Amount when Amount changes |
-| **Aggregation** | Displays Sum of Expected Amount per stage |
+| Componente | Finalidade |
+| -------------------------- | --------------------------------------------------------------------------------- |
+| **Campo Probability** | Armazena a probabilidade de ganho baseada na etapa |
+| **Campo Expected Amount** | Armazena Amount × Probability |
+| **Fluxo de trabalho nº 1** | Atualiza Probability quando a Stage muda e, em seguida, recalcula Expected Amount |
+| **Fluxo de trabalho nº 2** | Recalcula Expected Amount quando Amount muda |
+| **Agregação** | Exibe a soma de Expected Amount por etapa |
-## Related
+## Relacionados
-* [Formula Fields](/l/pt/user-guide/workflows/how-tos/crm-automations/formula-fields) — create calculated fields using workflows
-* [Kanban Views](/l/pt/user-guide/views-pipelines/capabilities/kanban-views) — column aggregations
-* [How to Create Custom Fields](/l/pt/user-guide/data-model/how-tos/create-custom-fields) — field configuration
+* [Campos de fórmula](/l/pt/user-guide/workflows/how-tos/crm-automations/formula-fields) — crie campos calculados usando fluxos de trabalho
+* [Visualizações de Kanban](/l/pt/user-guide/views-pipelines/capabilities/kanban-views) — agregações por coluna
+* [Como criar campos personalizados](/l/pt/user-guide/data-model/how-tos/create-custom-fields) — configuração de campos
diff --git a/packages/twenty-docs/l/pt/user-guide/views-pipelines/how-tos/track-time-in-stage.mdx b/packages/twenty-docs/l/pt/user-guide/views-pipelines/how-tos/track-time-in-stage.mdx
index 4278b75d15..264b3b803f 100644
--- a/packages/twenty-docs/l/pt/user-guide/views-pipelines/how-tos/track-time-in-stage.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/views-pipelines/how-tos/track-time-in-stage.mdx
@@ -1,104 +1,104 @@
---
-title: Track How Long Opportunities Stay in Each Stage
-description: Monitor deal velocity by tracking when opportunities enter each stage.
+title: Acompanhe por quanto tempo as oportunidades permanecem em cada etapa.
+description: Monitore a velocidade do negócio acompanhando quando as oportunidades entram em cada etapa.
---
- This is an example of creating [Formula Fields](/l/pt/user-guide/workflows/how-tos/crm-automations/formula-fields) using workflows — specifically date calculations.
+ Este é um exemplo de criação de [Campos de fórmula](/l/pt/user-guide/workflows/how-tos/crm-automations/formula-fields) usando fluxos de trabalho — especificamente cálculos de datas.
-Tracking when opportunities enter each stage helps you identify bottlenecks and measure deal velocity.
+Acompanhar quando as oportunidades entram em cada etapa ajuda a identificar gargalos e medir a velocidade do negócio.
-This guide walks you through setting up custom fields and a workflow to automatically record when an opportunity moves to each stage, and calculate how many days it spent in the previous stage.
+Este guia orienta você na configuração de campos personalizados e de um fluxo de trabalho para registrar automaticamente quando uma oportunidade passa para cada etapa e calcular quantos dias ela passou na etapa anterior.
-## Step 1: Create Custom Fields
+## Etapa 1: Criar campos personalizados
-You need two types of fields for each stage:
+Você precisa de dois tipos de campos para cada etapa:
-* **Date & Time fields**: Record when the opportunity entered each stage
-* **Number fields**: Store how many days the opportunity spent in each stage
+* **Campos de Data e hora**: registrar quando a oportunidade entrou em cada etapa
+* **Campos de Número**: armazenar quantos dias a oportunidade passou em cada etapa
-### Create the "Last Entered" Fields
+### Criar os campos "Última entrada"
-1. Go to **Settings → Data Model → Opportunities**
-2. For each stage, click **+ Add Field** and configure:
- * **Name**: Last Entered [Stage Name] (e.g., "Last Entered New", "Last Entered Qualified")
- * **Type**: Date & Time
- * **Description**: Timestamp when opportunity entered this stage
-3. Click **Save**
+1. Acesse **Configurações → Modelo de Dados → Oportunidades**
+2. Para cada etapa, clique em **+ Adicionar campo** e configure:
+ * **Nome**: Última entrada em [Nome da etapa] (por exemplo, "Última entrada em Novo", "Última entrada em Qualificado")
+ * **Tipo**: Data e hora
+ * **Descrição**: Carimbo de data/hora de quando a oportunidade entrou nesta etapa
+3. Clique em **Salvar**
-Create these fields:
+Crie estes campos:
-* Last Entered New
-* Last Entered Qualified
-* Last Entered Meeting
-* Last Entered Proposal
-* Last Entered Negotiation
-* Last Entered Closed Won
-* Last Entered Closed Lost
+* Última entrada em Novo
+* Última entrada em Qualificado
+* Última entrada em Reunião
+* Última entrada em Proposta
+* Última entrada em Negociação
+* Última entrada em Fechado Ganho
+* Última entrada em Fechado Perdido
-### Create the "Days in Stage" Fields
+### Criar os campos "Dias na etapa"
-1. For each stage, click **+ Add Field** and configure:
- * **Name**: Days in [Stage Name] (e.g., "Days in New", "Days in Qualified")
- * **Type**: Number
- * **Description**: Number of days spent in this stage
-2. Click **Save**
+1. Para cada etapa, clique em **+ Adicionar campo** e configure:
+ * **Nome**: Dias em [Nome da etapa] (por exemplo, "Dias em Novo", "Dias em Qualificado")
+ * **Tipo**: Número
+ * **Descrição**: Número de dias passados nesta etapa
+2. Clique em **Salvar**
-Create these fields:
+Crie estes campos:
-* Days in New
-* Days in Qualified
-* Days in Meeting
-* Days in Proposal
-* Days in Negotiation
+* Dias em Novo
+* Dias em Qualificado
+* Dias em Reunião
+* Dias em Proposta
+* Dias em Negociação
- You don't need "Days in" fields for Closed Won and Closed Lost since those are final stages.
+ Você não precisa de campos "Dias em" para Fechado Ganho e Fechado Perdido, pois são etapas finais.
-### Optional: Make Fields Read-Only
+### Opcional: tornar os campos somente leitura
-If you don't want users manually editing these calculated fields:
+Se você não quiser que os usuários editem manualmente esses campos calculados:
-1. Go to **Settings → Roles**
-2. Select the role to configure
-3. Find the Opportunities object
-4. Set the "Last Entered" and "Days in" fields to read-only
+1. Vá para **Configurações → Funções**
+2. Selecione a função a configurar
+3. Encontre o objeto Oportunidades
+4. Defina os campos "Última entrada" e "Dias em" como somente leitura
-## Step 2: Create the Workflow
+## Etapa 2: Criar o fluxo de trabalho
-This single workflow handles both tasks:
+Este único fluxo de trabalho trata das duas tarefas:
-* Records the timestamp when entering a new stage
-* Calculates days spent in the previous stage
+* Registra o carimbo de data/hora ao entrar em uma nova etapa
+* Calcula os dias passados na etapa anterior
-### Create the Workflow
+### Criar o fluxo de trabalho
-1. Go to **Workflows**
-2. Click **+ New Workflow**
-3. Name it "Track Stage Time"
+1. Acesse **Fluxos de trabalho**
+2. Clique em **+ Novo fluxo de trabalho**
+3. Dê o nome "Acompanhar tempo por etapa"
-### Configure the Trigger
+### Configurar o gatilho
-1. Add a **Record Updated** trigger
-2. Select **Opportunities** as the object
-3. Filter on: **Stage** field is updated
+1. Adicione um gatilho **Registro atualizado**
+2. Selecione **Oportunidades** como o objeto
+3. Filtrar em: o campo **Fase** é atualizado
-### Add Branches for Each Stage
+### Adicionar ramificações para cada fase
- To create a new branch, right click on the workflow canvas and click **New action**. Then, link this action to the previous node by dragging the arrow from the previous node to this new action.
+ Para criar uma nova ramificação, clique com o botão direito no canvas do workflow e clique em **Nova ação**. Em seguida, vincule esta ação ao nó anterior arrastando a seta do nó anterior para esta nova ação.
---
-**Branch 1: Stage = New (first stage)**
+**Ramificação 1: Fase = Novo (primeira fase)**
-Since this is the first stage, we only record the entry timestamp—no previous stage to calculate.
+Como esta é a primeira fase, registramos apenas o carimbo de data e hora de entrada — não há fase anterior para calcular.
-1. Add a **Filter** node: Stage = New
-2. Add a **Code** action:
+1. Adicione um nó de **Filtro**: Fase = Novo
+2. Adicione uma ação de **Código**:
```javascript
export const main = async (): Promise => {
@@ -106,19 +106,19 @@ export const main = async (): Promise => {
};
```
-3. Add an **Update Record** action:
- * Record: The triggering Opportunity
- * Field: Last Entered New
- * Value: `now` from Code node
+3. Adicione uma ação de **Atualizar registro**:
+ * Registro: A Oportunidade disparadora
+ * Campo: Última entrada em Novo
+ * Valor: `now` do nó de Código
---
-**Branch 2: Stage = Qualified**
+**Ramificação 2: Fase = Qualificado**
-When moving to Qualified, record entry time AND calculate days spent in New.
+Ao mover para Qualificado, registre o momento de entrada E calcule os dias passados em Novo.
-1. Add a **Filter** node: Stage = Qualified
-2. Add a **Code** action:
+1. Adicione um nó de **Filtro**: Fase = Qualificado
+2. Adicione uma ação de **Código**:
```javascript
export const main = async (params: {
@@ -138,21 +138,21 @@ export const main = async (params: {
};
```
-3. Configure the Code node input: map `lastEnteredPreviousStage` to the **Last Entered New** field
-4. Add an **Update Record** action:
- * Record: The triggering Opportunity
- * Fields to update:
- * Last Entered Qualified = `now`
- * Days in New = `daysInPreviousStage`
+3. Configure a entrada do nó de Código: mapeie `lastEnteredPreviousStage` para o campo **Última entrada em Novo**
+4. Adicione uma ação de **Atualizar registro**:
+ * Registro: A Oportunidade disparadora
+ * Campos a atualizar:
+ * Última entrada em Qualificado = `now`
+ * Dias em Novo = `daysInPreviousStage`
---
-**Branch 3: Stage = Meeting**
+**Ramificação 3: Fase = Reunião**
-When moving to Meeting, record entry time AND calculate days spent in Qualified.
+Ao mover para Reunião, registre o momento de entrada E calcule os dias passados em Qualificado.
-1. Add a **Filter** node: Stage = Meeting
-2. Add a **Code** action:
+1. Adicione um nó de **Filtro**: Fase = Reunião
+2. Adicione uma ação de **Código**:
```javascript
export const main = async (params: {
@@ -172,60 +172,60 @@ export const main = async (params: {
};
```
-3. Configure the Code node input: map `lastEnteredPreviousStage` to the **Last Entered Qualified** field
-4. Add an **Update Record** action:
- * Record: The triggering Opportunity
- * Fields to update:
- * Last Entered Meeting = `now`
- * Days in Qualified = `daysInPreviousStage`
+3. Configure a entrada do nó de Código: mapeie `lastEnteredPreviousStage` para o campo **Última entrada em Qualificado**
+4. Adicione uma ação de **Atualizar registro**:
+ * Registro: A Oportunidade disparadora
+ * Campos a atualizar:
+ * Última entrada em Reunião = `now`
+ * Dias em Qualificado = `daysInPreviousStage`
---
-**Continue for remaining stages:**
+**Continue para as fases restantes:**
-| Stage | Records | Calculates |
-| ----------- | ------------------------ | ------------------- |
-| Proposal | Last Entered Proposal | Days in Meeting |
-| Negotiation | Last Entered Negotiation | Days in Proposal |
-| Closed Won | Last Entered Closed Won | Days in Negotiation |
-| Closed Lost | Last Entered Closed Lost | Days in Negotiation |
+| Etapa | Registra | Calcula |
+| ----------------- | --------------------------------- | ------------------ |
+| Proposta | Última entrada em Proposta | Dias em Reunião |
+| Negociação | Última entrada em Negociação | Dias em Proposta |
+| Fechado - Ganho | Última entrada em Fechado Ganho | Dias em Negociação |
+| Fechado - Perdido | Última entrada em Fechado Perdido | Dias em Negociação |
-The branches do not need to rejoin—each runs independently when its stage condition is met.
+As ramificações não precisam se reunir — cada uma é executada independentemente quando a condição da sua fase é atendida.
-## Step 3: Analyze Time in Stage
+## Etapa 3: Analisar o tempo na fase
-With timestamps and day counts recorded, you can now analyze deal velocity.
+Com carimbos de data e hora e contagens de dias registrados, você pode agora analisar a velocidade dos negócios.
-### Create a "Slow Deals" View
+### Criar uma visualização "Negócios lentos"
-1. Create a Table view of Opportunities
-2. Add columns: Name, Stage, Days in [previous stage], Amount
-3. Sort by "Days in" field (descending)
-4. Filter by Stage to focus on one stage at a time
+1. Crie uma visualização de Tabela de Oportunidades
+2. Adicione colunas: Nome, Fase, Dias em [fase anterior], Valor
+3. Classifique pelo campo "Dias em" (descendente)
+4. Filtre por Fase para focar em uma fase por vez
-Deals at the top spent the most time in the previous stage.
+Os negócios no topo passaram mais tempo na fase anterior.
-### Use Aggregations
+### Use agregações
-In your pipeline Kanban view:
+Na sua visualização Kanban do pipeline:
-1. Click the number next to a Stage name
-2. Select **Average**
-3. Choose a "Days in" field
+1. Clique no número ao lado do nome de uma Fase
+2. Selecione **Média**
+3. Escolha um campo "Dias em"
-This shows the average time deals spend in each stage.
+Isso mostra o tempo médio que os negócios passam em cada fase.
-## Summary
+## Resumo
-| Component | Purpose |
-| ------------------------ | ------------------------------------------------- |
-| **Last Entered fields** | Store when opportunity entered each stage |
-| **Days in fields** | Store how many days spent in each stage |
-| **Workflow** | Records timestamp AND calculates days in one pass |
-| **Views & Aggregations** | Analyze deal velocity and identify bottlenecks |
+| Componente | Finalidade |
+| ------------------------------ | ----------------------------------------------------------------- |
+| **Campos "Última entrada em"** | Armazena quando a oportunidade entrou em cada fase |
+| **Campos "Dias em"** | Armazena quantos dias foram passados em cada fase |
+| **Workflow** | Registra o carimbo de data e hora E calcula os dias de uma só vez |
+| **Visualizações e agregações** | Analise a velocidade dos negócios e identifique gargalos |
-## Related
+## Relacionados
-* [Workflows](/l/pt/user-guide/workflows/overview) — automation basics
-* [How to Create Custom Fields](/l/pt/user-guide/data-model/how-tos/create-custom-fields) — field configuration
-* [Kanban Views](/l/pt/user-guide/views-pipelines/capabilities/kanban-views) — aggregations
+* [Workflows](/l/pt/user-guide/workflows/overview) — noções básicas de automação
+* [Como criar campos personalizados](/l/pt/user-guide/data-model/how-tos/create-custom-fields) — configuração de campos
+* [Visualizações de Kanban](/l/pt/user-guide/views-pipelines/capabilities/kanban-views) — agregações
diff --git a/packages/twenty-docs/l/pt/user-guide/views-pipelines/overview.mdx b/packages/twenty-docs/l/pt/user-guide/views-pipelines/overview.mdx
index 891b45859f..c14acc4093 100644
--- a/packages/twenty-docs/l/pt/user-guide/views-pipelines/overview.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/views-pipelines/overview.mdx
@@ -1,137 +1,137 @@
---
-title: Views & Pipelines
-description: Learn how to create and manage views in Twenty.
+title: Visualizações e pipelines
+description: Aprenda a criar e gerenciar visualizações no Twenty.
image: /images/user-guide/table-views/table.png
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-
+
-## Understanding Views
+## Compreendendo as visualizações
-Views are saved configurations that determine how your data is displayed. Each view can have its own:
+As visualizações são configurações salvas que determinam como seus dados são exibidos. Cada visualização pode ter:
-* **Layout**: Table, Kanban, or Calendar
-* **Filters**: Which records to show
-* **Sorting**: How records are ordered
-* **Fields**: Which columns are visible
+* **Layout**: Tabela, Kanban ou Calendário
+* **Filtros**: quais registros mostrar
+* **Ordenação**: como os registros são ordenados
+* **Campos**: quais colunas ficam visíveis
-## View Types
+## Tipos de visualização
-### Table View
+### Visualização de tabela
-The default spreadsheet-like view showing records in rows with customizable columns.
+A visualização padrão, semelhante a uma planilha, que mostra registros em linhas com colunas personalizáveis.
-### Kanban View
+### Visualização de Kanban
-A visual board view where records appear as cards organized by stages. Ideal for:
+Uma visualização em quadro onde os registros aparecem como cartões organizados por etapas. Ideal para:
-* Sales pipelines
-* Project tracking
-* Any workflow with defined stages
+* Pipelines de vendas
+* Acompanhamento de projetos
+* Qualquer fluxo de trabalho com etapas definidas
-### Calendar View
+### Visualização de calendário
-Display records with date fields on a calendar. Perfect for:
+Exiba registros com campos de data em um calendário. Perfeito para:
-* Meetings and events
-* Deadlines and due dates
-* Time-based planning
+* Reuniões e eventos
+* Prazos e datas de vencimento
+* Planejamento baseado em tempo
-## Creating a View
+## Criando uma Visualização
-There are two ways to create a new view.
+Existem duas maneiras de criar uma nova visualização.
-### Use the View Dropdown Menu
+### Use o menu suspenso de visualizações
-1. Navigate to any object (People, Companies, etc.)
-2. Click the view name at the top left (shows current view with a dropdown arrow)
-3. Click **+ Add view**
-4. Name your view and click **Create**
-5. Choose a layout (Table, Kanban, or Calendar) under **Options**
-6. Add filters and sorting as needed
-7. Select which fields to display and reorder them
-8. Click **Save**
+1. Navegue até qualquer objeto (Pessoas, Empresas, etc.)
+2. Clique no nome da visualização no canto superior esquerdo (mostra a visualização atual com uma seta de menu suspenso)
+3. Clique em **+ Adicionar visualização**
+4. Nomeie sua visualização e clique em **Criar**
+5. Escolha um layout (Tabela, Kanban ou Calendário) em **Opções**
+6. Adicione filtros e ordenação conforme necessário
+7. Selecione quais campos exibir e reordene-os
+8. Clique em **Salvar**
-
+
-### Start by editting an existing view
+### Comece editando uma visualização existente
-1. Navigate to any object (People, Companies, etc.)
-2. Choose a layout (Table, Kanban, or Calendar) under **Options** or Add filters and sorting as needed
-3. Click on **Save as new view**
-4. Name your view and click **Create**
-5. Keep editing your new view
-6. Click on **Update view** to save your additional configurations
+1. Navegue até qualquer objeto (Pessoas, Empresas, etc.)
+2. Escolha um layout (Tabela, Kanban ou Calendário) em **Opções** ou adicione filtros e ordenação conforme necessário
+3. Clique em **Salvar como nova visualização**
+4. Nomeie sua visualização e clique em **Criar**
+5. Continue editando sua nova visualização
+6. Clique em **Atualizar visualização** para salvar suas configurações adicionais
-
+
-## Managing Views
+## Gerenciar visualizações
-### Edit a View
+### Editar uma visualização
-1. Select the view from the dropdown
-2. Make your changes (filters, sorting, columns)
-3. Click **Save** to update the view
+1. Selecione a visualização no menu suspenso
+2. Faça suas alterações (filtros, ordenação, colunas)
+3. Clique em **Salvar** para atualizar a visualização
-### Rename a View or Change Its Icon
+### Renomear uma visualização ou alterar seu ícone
-1. Open the view dropdown
-2. Click the **⋮** menu next to the view name
-3. Select **Edit**
-4. Change the name or icon
-5. Click **Save**
+1. Abra o menu suspenso de visualizações
+2. Clique no menu **⋮** ao lado do nome da visualização
+3. Selecione **Editar**
+4. Altere o nome ou o ícone
+5. Clique em **Salvar**
-### Reorder Views
+### Reordenar visualizações
-1. Open the view dropdown
-2. Click and drag a view by its handle
-3. Drop it in the desired position
-4. The new order is saved automatically
+1. Abra o menu suspenso de visualizações
+2. Clique e arraste uma visualização pela sua alça
+3. Solte na posição desejada
+4. A nova ordem é salva automaticamente
-### Add to Favorites
+### Adicionar aos favoritos
-Pin frequently used views for quick access:
+Fixe visualizações usadas com frequência para acesso rápido:
-1. Open the view dropdown
-2. Click the **⋮** menu next to a view
-3. Select **Add to favorites**
-4. The view appears in your favorites section
+1. Abra o menu suspenso de visualizações
+2. Clique no menu **⋮** ao lado de uma visualização
+3. Selecione **Adicionar aos favoritos**
+4. A visualização aparece na sua seção de favoritos
-### Delete a View
+### Excluir uma visualização
-1. Select the view to delete
-2. Click the view dropdown
-3. Click the **⋮** menu next to the view
-4. Select **Delete**
-5. Confirm deletion
+1. Selecione a visualização a ser excluída
+2. Clique no menu suspenso de visualizações
+3. Clique no menu **⋮** ao lado da visualização
+4. Selecione **Excluir**
+5. Confirme a exclusão
- Deleted views cannot be recovered. Make sure you want to remove it before confirming.
+ Visualizações excluídas não podem ser recuperadas. Certifique-se de que deseja removê-la antes de confirmar.
-## View Visibility
+## Visibilidade da visualização
-Each view (except the default "All [Object Name]" views) has its own visibility setting.
+Cada visualização (exceto as visualizações padrão "Todos(as) [Nome do objeto]") tem sua própria configuração de visibilidade.
-To change visibility:
+Para alterar a visibilidade:
-1. Open the view
-2. Click **Options → Visibility**
-3. Choose:
- * **Workspace**: Visible to all workspace members
- * **Unlisted**: Visible only to you
+1. Abra a visualização
+2. Clique em **Opções → Visibilidade**
+3. Escolha:
+ * **Espaço de trabalho**: visível para todos os membros do espaço de trabalho
+ * **Não listada**: visível apenas para você
- The default "All [Object Name]" views cannot have their visibility changed.
+ As visualizações padrão "Todos(as) [Nome do objeto]" não podem ter sua visibilidade alterada.
-## Next Steps
+## Próximos Passos
-* [Table Views](/l/pt/user-guide/views-pipelines/capabilities/table-views)
-* [Kanban Views](/l/pt/user-guide/views-pipelines/capabilities/kanban-views)
-* [Filters and Sorting](/l/pt/user-guide/views-pipelines/capabilities/filters-and-sorting)
-* [View Settings](/l/pt/user-guide/views-pipelines/capabilities/view-settings)
+* [Visualizações de Tabela](/l/pt/user-guide/views-pipelines/capabilities/table-views)
+* [Visualizações de Kanban](/l/pt/user-guide/views-pipelines/capabilities/kanban-views)
+* [Filtros e ordenação](/l/pt/user-guide/views-pipelines/capabilities/filters-and-sorting)
+* [Configurações de visualização](/l/pt/user-guide/views-pipelines/capabilities/view-settings)
diff --git a/packages/twenty-docs/l/pt/user-guide/workflows/capabilities/send-emails-from-workflows.mdx b/packages/twenty-docs/l/pt/user-guide/workflows/capabilities/send-emails-from-workflows.mdx
index fd9d341609..ebbbb6ec0f 100644
--- a/packages/twenty-docs/l/pt/user-guide/workflows/capabilities/send-emails-from-workflows.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/workflows/capabilities/send-emails-from-workflows.mdx
@@ -1,46 +1,46 @@
---
-title: Send Emails from Workflows
-description: Send personalized emails automatically using workflow actions.
+title: Enviar e-mails a partir de Fluxos de Trabalho
+description: Envie e-mails personalizados automaticamente usando ações de Fluxos de Trabalho.
image: /images/user-guide/workflows/workflow.png
---
-Automatically send emails when specific events occur in your CRM—welcome new contacts, follow up on opportunities, or notify team members.
+Envie e-mails automaticamente quando eventos específicos ocorrerem no seu CRM — dê boas-vindas a novos contatos, faça acompanhamento de oportunidades ou notifique membros da equipe.
-## Prerequisites
+## Pré-requisitos
-Before you can send emails from workflows:
+Antes de enviar e-mails a partir de fluxos de trabalho:
-1. Connect an email account under **Settings → Accounts**
-2. Ensure the account has sending permissions enabled
+1. Conecte uma conta de e-mail em **Configurações → Contas**
+2. Garanta que a conta tenha as permissões de envio ativadas
-## Basic Email Workflow
+## Fluxo de Trabalho de E-mail Básico
-### Example: Welcome Email for New Contacts
+### Exemplo: E-mail de boas-vindas para novos contatos
-**Goal**: Send a welcome email when a new person is added to the CRM.
+**Objetivo**: Enviar um e-mail de boas-vindas quando uma nova pessoa for adicionada ao CRM.
-**Setup**:
+**Configuração**:
-1. **Create workflow**: Go to **Settings → Workflows** and click **+ New Workflow**
+1. **Criar fluxo de trabalho**: Vá até **Configurações → Fluxos de Trabalho** e clique em **+ Novo Fluxo de Trabalho**
-2. **Add trigger**: Select **Record is Created** → **People**
+2. **Adicionar gatilho**: Selecione **Registro é Criado** → **Pessoas**
-3. **Add Send Email action**:
- * Click **+** to add an action
- * Select **Send Email**
- * Configure the email:
+3. **Adicionar ação Enviar E-mail**:
+ * Clique em **+** para adicionar uma ação
+ * Selecione **Enviar E-mail**
+ * Configure o e-mail:
-| Field | Value |
+| Campo | Valor |
| ----------- | -------------------------------------- |
-| **To** | `{{trigger.object.email}}` |
-| **Subject** | `Welcome to {{Your Company Name}}` |
-| **Body** | `Hi {{trigger.object.firstName}}, ...` |
+| **Para** | `{{trigger.object.email}}` |
+| **Assunto** | `Bem-vindo ao {{Your Company Name}}` |
+| **Corpo** | `Hi {{trigger.object.firstName}}, ...` |
-4. **Test and activate**: Test with a sample record, then activate
+4. **Testar e ativar**: Teste com um registro de exemplo e, em seguida, ative
-## Using Variables in Emails
+## Usando variáveis em e-mails
-Reference data from previous steps using `{{variable}}` syntax:
+Referencie dados de etapas anteriores usando a sintaxe `{{variable}}`:
```text
Hi {{trigger.object.firstName}},
@@ -53,97 +53,116 @@ Best regards,
The Team
```
-### Available Variables from Triggers
+### Variáveis disponíveis dos gatilhos
-| Trigger Type | Common Variables |
-| -------------------------- | -------------------------------------- |
-| **Record Created/Updated** | `{{trigger.object.fieldName}}` |
-| **Manual** | `{{trigger.selectedRecord.fieldName}}` |
-| **Webhook** | `{{trigger.body.fieldName}}` |
+| Tipo de Trigger | Variáveis comuns |
+| ------------------------------ | -------------------------------------- |
+| **Registro Criado/Atualizado** | `{{trigger.object.fieldName}}` |
+| **Manual** | `{{trigger.selectedRecord.fieldName}}` |
+| **Webhook** | `{{trigger.body.fieldName}}` |
-## Advanced: Conditional Emails
+## Avançado: E-mails condicionais
-### Example: Different Emails Based on Lead Source
+### Exemplo: E-mails diferentes com base na origem do lead
-**Goal**: Send different welcome emails based on where the lead came from.
+**Objetivo**: Enviar e-mails de boas-vindas diferentes com base na origem do lead.
-**Setup**:
+**Configuração**:
-1. **Trigger**: Record is Created (People)
+1. **Gatilho**: Registro é Criado (Pessoas)
-2. **Add Filter action**:
- * Condition: `{{trigger.object.source}}` equals `"Website"`
- * If true → continue to website welcome email
+2. **Adicionar ação de Filtro**:
+ * Condição: `{{trigger.object.source}}` é igual a `"Website"`
+ * Se verdadeiro → continue para o e-mail de boas-vindas do site
-3. **Branch for other sources**:
- * Create parallel branches for different sources
- * Each branch has its own Send Email action
+3. **Ramificação para outras origens**:
+ * Crie ramificações paralelas para origens diferentes
+ * Cada ramificação tem sua própria ação Enviar E-mail
-## Sending Emails to Multiple Recipients
+## Envio de e-mails para vários destinatários
-### Example: Notify Team When Deal Closes
+### Exemplo: Notificar a equipe quando o negócio for fechado
-**Goal**: Email the sales rep and their manager when an opportunity is won.
+**Objetivo**: Enviar e-mail ao representante de vendas e ao seu gerente quando uma oportunidade for ganha.
-**Setup**:
+**Configuração**:
-1. **Trigger**: Record is Updated (Opportunities, Stage = "Closed Won")
+1. **Gatilho**: Registro é Atualizado (Oportunidades, Estágio = "Closed Won")
-2. **Search Records**: Find the opportunity owner's manager
+2. **Pesquisar Registros**: Encontre o gerente do proprietário da oportunidade
-3. **Send Email #1**: To opportunity owner
- * To: `{{trigger.object.owner.email}}`
- * Subject: `Congratulations on closing {{trigger.object.name}}!`
+3. **Enviar E-mail nº 1**: Para o proprietário da oportunidade
+ * Para: `{{trigger.object.owner.email}}`
+ * Assunto: `Congratulations on closing {{trigger.object.name}}!`
-4. **Send Email #2**: To manager
- * To: `{{searchRecords.manager.email}}`
- * Subject: `Deal Won: {{trigger.object.name}}`
+4. **Enviar E-mail nº 2**: Para o gerente
+ * Para: `{{searchRecords.manager.email}}`
+ * Assunto: `Deal Won: {{trigger.object.name}}`
-## Scheduled Follow-up Emails
+## E-mails de acompanhamento agendados
-### Example: Follow Up 3 Days After Meeting
+### Exemplo: Acompanhar 3 dias após a reunião
-**Goal**: Send a follow-up email 3 days after a meeting is logged.
+**Objetivo**: Enviar um e-mail de acompanhamento 3 dias após o registro de uma reunião.
-**Setup**:
+**Configuração**:
-1. **Trigger**: Record is Created (Activities, Type = "Meeting")
+1. **Gatilho**: Registro é Criado (Atividades, Tipo = "Reunião")
-2. **Delay action**: Wait 3 days
+2. **Ação de atraso**: Aguarde 3 dias
-3. **Send Email**:
- * To: Meeting attendee
- * Subject: Following up on our conversation
- * Body: Reference meeting details from trigger
+3. **Enviar E-mail**:
+ * Para: Participante da reunião
+ * Assunto: Acompanhamento da nossa conversa
+ * Corpo: Referencie detalhes da reunião a partir do gatilho
-## Best Practices
+## Anexos de e-mail
-### Email Content
+Você pode anexar arquivos a e-mails enviados a partir de fluxos de trabalho. O anexo é um arquivo estático que você faz upload ao configurar o fluxo de trabalho.
-* Keep subject lines concise and relevant
-* Personalize with recipient's name
-* Include a clear call to action
-* Test emails before activating
+### Como adicionar um anexo
-### Deliverability
+1. Na ação **Enviar e-mail**, clique no botão **Anexos**
+2. Clique para fazer upload de um arquivo do seu computador
+3. O arquivo será anexado a todos os e-mails enviados por esta ação
-* Don't send too many emails too quickly
-* Use professional email signatures
-* Avoid spam trigger words
-* Ensure unsubscribe options for marketing emails
+### Casos de Uso Comuns
-### Troubleshooting
-
-* Verify email account is connected and active
-* Check recipient email address is valid
-* Review workflow runs for error messages
-* Test with your own email address first
+| Caso de uso | Arquivo de exemplo |
+| ----------------------------- | --------------------------------------- |
+| **E-mails de boas-vindas** | Brochura da empresa (PDF) |
+| **Sequências de integração** | Guia de primeiros passos |
+| **Acompanhamentos de Vendas** | Catálogo de produtos ou lista de preços |
+| **Confirmações de evento** | Detalhes ou agenda do evento |
- **Coming soon**: Email attachments will be available in Q1 2026.
+ Os anexos são estáticos — o mesmo arquivo é enviado a todos os destinatários. Para documentos dinâmicos (como cotações personalizadas), gere e anexe arquivos usando uma [Função sem servidor](/l/pt/user-guide/workflows/how-tos/connect-to-other-tools/generate-pdf-from-twenty).
-## Related
+## Melhores Práticas
-* [Workflow Triggers](/l/pt/user-guide/workflows/capabilities/workflow-triggers)
-* [Workflow Actions](/l/pt/user-guide/workflows/capabilities/workflow-actions)
+### Conteúdo do e-mail
+
+* Mantenha as linhas de assunto concisas e relevantes
+* Personalize com o nome do destinatário
+* Inclua uma chamada para ação clara
+* Teste os e-mails antes de ativar
+
+### Entregabilidade
+
+* Não envie muitos e-mails muito rapidamente
+* Use assinaturas de e-mail profissionais
+* Evite palavras que acionem spam
+* Garanta opções de cancelamento de inscrição para e-mails de marketing
+
+### Resolução de Problemas
+
+* Verifique se a conta de e-mail está conectada e ativa
+* Verifique se o endereço de e-mail do destinatário é válido
+* Revise as execuções do fluxo de trabalho em busca de mensagens de erro
+* Teste primeiro com o seu próprio endereço de e-mail
+
+## Relacionados
+
+* [Gatilhos de Fluxo de Trabalho](/l/pt/user-guide/workflows/capabilities/workflow-triggers)
+* [Ações de Fluxo de Trabalho](/l/pt/user-guide/workflows/capabilities/workflow-actions)
diff --git a/packages/twenty-docs/l/pt/user-guide/workflows/capabilities/use-branches-in-workflows.mdx b/packages/twenty-docs/l/pt/user-guide/workflows/capabilities/use-branches-in-workflows.mdx
index a19d8a85f9..778c609a81 100644
--- a/packages/twenty-docs/l/pt/user-guide/workflows/capabilities/use-branches-in-workflows.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/workflows/capabilities/use-branches-in-workflows.mdx
@@ -1,90 +1,90 @@
---
-title: Use Branches in Workflows
-description: Understand how branches work and how to control which path is executed.
+title: Use ramificações em fluxos de trabalho
+description: Entenda como as ramificações funcionam e como controlar qual caminho é executado.
---
-## How Branches Work
+## Como as ramificações funcionam
-In the workflow editor, you can create multiple paths (branches) going out from a single node. This allows you to build complex automations with different outcomes.
+No editor de fluxos de trabalho, você pode criar vários caminhos (ramificações) saindo de um único nó. Isso permite criar automações complexas com resultados diferentes.
-**Important**: When a workflow runs, **all branches execute in parallel by default**. There is no built-in "if/else" logic to choose one branch over another—every path will run simultaneously.
+**Importante**: Quando um fluxo de trabalho é executado, **todas as ramificações são executadas em paralelo por padrão**. Não há lógica "if/else" integrada para escolher uma ramificação em vez de outra — todos os caminhos serão executados simultaneamente.
-## Controlling Which Branch Runs
+## Controlando qual ramificação é executada
-To execute only one branch based on specific conditions, **add a Filter node at the beginning of each branch**.
+Para executar apenas uma ramificação com base em condições específicas, **adicione um nó Filter no início de cada ramificação**.
-### Example Setup
+### Exemplo de configuração
-1. Create your workflow with multiple branches from a single node
-2. Add a **Filter** node as the first step in each branch
-3. Set conditions on each Filter to determine when that branch should continue
-4. Only the branch(es) whose Filter conditions are met will proceed
+1. Crie seu fluxo de trabalho com várias ramificações a partir de um único nó
+2. Adicione um nó **Filter** como a primeira etapa de cada ramificação
+3. Defina condições em cada Filter para determinar quando essa ramificação deve continuar
+4. Somente as ramificações cujas condições do Filter forem atendidas prosseguirão
-### How Filters Work
+### Como funcionam os nós Filter
-* If the Filter condition is **met**: The branch continues executing
-* If the Filter condition is **not met**: The branch stops at the Filter node
+* Se a condição do Filter for **atendida**: A ramificação continua em execução
+* Se a condição do Filter **não for atendida**: A ramificação para no nó Filter
-This effectively creates conditional logic where only the appropriate branch runs based on your data.
+Isso efetivamente cria uma lógica condicional em que apenas a ramificação apropriada é executada com base nos seus dados.
-## Example: Route by Deal Size
+## Exemplo: Roteamento por tamanho do negócio
-**Scenario**: When a deal is closed, send different notifications based on deal size.
+**Cenário**: Quando um negócio é fechado, envie notificações diferentes com base no tamanho do negócio.
-1. **Trigger**: Opportunity updated (Stage = Closed Won)
-2. **Branch 1**: Filter for Amount > $10,000 → Send Slack message to #big-deals
-3. **Branch 2**: Filter for Amount ≤ $10,000 → Send email to sales manager
+1. **Gatilho**: Oportunidade atualizada (Estágio = Closed Won)
+2. **Ramificação 1**: Filter para Amount > $10,000 → Enviar mensagem no Slack para #big-deals
+3. **Ramificação 2**: Filter para Amount ≤ $10,000 → Enviar e-mail para o gerente de vendas
-Both branches start, but only the one matching the deal amount will continue past its Filter.
+Ambas as ramificações iniciam, mas somente aquela que corresponder ao valor do negócio continuará além do seu Filter.
-## Creating Branches
+## Criando ramificações
- To create a new branch from an existing step, click the **+** button on the step and add your action. You can add multiple branches by clicking **+** multiple times.
+ Para criar uma nova ramificação a partir de uma etapa existente, clique no botão **+** na etapa e adicione sua ação. Você pode adicionar várias ramificações clicando em **+** várias vezes.
-1. In the workflow editor, select the step you want to branch from
-2. Click the **+** button to add an action
-3. This creates one branch
-4. Click **+** again on the same step to create additional branches
-5. Each branch can have its own sequence of actions
+1. No editor de fluxos de trabalho, selecione a etapa a partir da qual deseja ramificar
+2. Clique no botão **+** para adicionar uma ação
+3. Isso cria uma ramificação
+4. Clique em **+** novamente na mesma etapa para criar ramificações adicionais
+5. Cada ramificação pode ter sua própria sequência de ações
-## Merging Branches Back Together
+## Unindo ramificações novamente
-After parallel branches complete their work, you can merge them back into a single path:
+Depois que as ramificações paralelas concluírem seu trabalho, você pode uní-las novamente em um único caminho:
-1. Complete your branched actions
-2. Add a new step that should run after all branches
-3. Drag a connection from the last step of each branch to this new step
-4. The merged step waits for all connected branches to complete before executing
+1. Conclua suas ações ramificadas
+2. Adicione uma nova etapa que deve ser executada após todas as ramificações
+3. Arraste uma conexão da última etapa de cada ramificação para essa nova etapa
+4. A etapa unificada aguarda todas as ramificações conectadas concluírem antes de ser executada
-### Example: Process Then Notify
+### Exemplo: Processar e depois notificar
```
-Trigger
+Gatilho
│
- ├── Branch A: Update Customer Record
+ ├── Ramificação A: Atualizar registro do cliente
│
- └── Branch B: Create Support Ticket
+ └── Ramificação B: Criar ticket de suporte
↘ ↙
- Merged Step: Send Confirmation Email
+ Etapa unificada: Enviar e-mail de confirmação
```
-The confirmation email sends only after both the customer update and ticket creation are done.
+O e-mail de confirmação é enviado somente depois que a atualização do cliente e a criação do ticket forem concluídas.
-## Best Practices
+## Melhores Práticas
-* Always use **Filter nodes** at the start of branches when you want conditional execution
-* Keep branch conditions **mutually exclusive** to avoid duplicate actions
-* Test your workflows with different data to ensure the correct branches run
-* **Rename branch steps** descriptively so it's clear what each path does
-* **Merge branches** when you need a final action after parallel processing
+* Sempre use **nós Filter** no início das ramificações quando quiser execução condicional
+* Mantenha as condições das ramificações **mutuamente exclusivas** para evitar ações duplicadas
+* Teste seus fluxos de trabalho com dados diferentes para garantir que as ramificações corretas sejam executadas
+* **Renomeie as etapas das ramificações** de forma descritiva para que fique claro o que cada caminho faz
+* **Una as ramificações** quando precisar de uma ação final após o processamento em paralelo
-## Related
+## Relacionados
-* [Workflows FAQ](/l/pt/user-guide/workflows/how-tos/need-more-help/workflows-faq) — answers about parallel execution
-* [Workflow Actions](/l/pt/user-guide/workflows/capabilities/workflow-actions) — available actions for branches
+* [Perguntas frequentes sobre fluxos de trabalho](/l/pt/user-guide/workflows/how-tos/need-more-help/workflows-faq) — respostas sobre execução paralela
+* [Ações de Fluxo de Trabalho](/l/pt/user-guide/workflows/capabilities/workflow-actions) — ações disponíveis para ramificações
diff --git a/packages/twenty-docs/l/pt/user-guide/workflows/capabilities/use-iterator.mdx b/packages/twenty-docs/l/pt/user-guide/workflows/capabilities/use-iterator.mdx
index 5a1da9485d..5bb466dde1 100644
--- a/packages/twenty-docs/l/pt/user-guide/workflows/capabilities/use-iterator.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/workflows/capabilities/use-iterator.mdx
@@ -1,92 +1,88 @@
---
-title: Use Iterator
-description: Loop through arrays of records to perform actions on each item.
+title: Usar Iterador
+description: Percorra arrays de registos para executar ações em cada item.
image: /images/user-guide/workflows/workflow.png
---
-Iterator lets you loop through an array of records and perform actions on each one. It's essential for workflows that need to process multiple records returned by Search Records or received via webhooks.
+O Iterador permite percorrer um array de registos e executar ações em cada um. É essencial para fluxos de trabalho que precisam de processar vários registos devolvidos por Pesquisar Registos ou recebidos via Webhooks.
-
- Iterator is currently in beta. Activate it under **Settings → Releases → Lab**.
-
+## Quando usar o Iterador
-## When to Use Iterator
+| Cenário | Exemplo |
+| ------------------------------------ | ------------------------------------------------ |
+| **Processar resultados da pesquisa** | Enviar e-mail a cada pessoa encontrada |
+| **Lidar com arrays de Webhooks** | Criar registos para cada item por ordem |
+| **Atualizações em massa** | Atualizar vários registos com valores calculados |
+| **Notificações** | Alertar várias pessoas sobre um evento |
-| Scenario | Example |
-| -------------------------- | ---------------------------------------------- |
-| **Process search results** | Send email to each person found |
-| **Handle webhook arrays** | Create records for each item in order |
-| **Bulk updates** | Update multiple records with calculated values |
-| **Notifications** | Alert multiple people about an event |
+## Compreender o Iterador
-## Understanding Iterator
+O Iterador espera um **array** como entrada. Em seguida:
-Iterator expects an **array** as input. It then:
+1. Obtém o primeiro item do array
+2. Executa todas as ações dentro do Iterador com esse item
+3. Passa para o item seguinte
+4. Repete até que todos os itens sejam processados
-1. Takes the first item from the array
-2. Runs all actions inside the iterator with that item
-3. Moves to the next item
-4. Repeats until all items are processed
+## Configuração básica
-## Basic Setup
+### Exemplo: Enviar e-mail a todos nos resultados da pesquisa
-### Example: Email Everyone in Search Results
+**Objetivo**: Encontrar todos os contactos numa empresa específica e enviar a cada um um e-mail personalizado.
-**Goal**: Find all contacts in a specific company and send each one a personalized email.
+### Etapa 1: Pesquisar registos
-### Step 1: Search for Records
+1. Adicione a ação **Pesquisar Registos**
+2. Objeto: **Pessoas**
+3. Filtro: Empresa igual a "Acme Inc"
+4. Isto devolve um array de pessoas
-1. Add **Search Records** action
-2. Object: **People**
-3. Filter: Company equals "Acme Inc"
-4. This returns an array of people
+### Etapa 2: Verificar se existem resultados
-### Step 2: Check Results Exist
+1. Adicione a ação **Filtro**
+2. Condição: `{{searchRecords.length}}` é maior do que 0
+3. Isto evita erros do Iterador em resultados vazios
-1. Add **Filter** action
-2. Condition: `{{searchRecords.length}}` is greater than 0
-3. This prevents Iterator errors on empty results
+### Etapa 3: Adicionar um Iterador
-### Step 3: Add Iterator
+1. Adicione a ação **Iterador**
+2. Entrada do array: selecione `{{searchRecords}}`
+3. Isto cria um ciclo
-1. Add **Iterator** action
-2. Array input: Select `{{searchRecords}}`
-3. This creates a loop
+### Etapa 4: Adicionar ações dentro do Iterador
-### Step 4: Add Actions Inside Iterator
+As ações colocadas após o Iterador são executadas para cada item:
-Actions placed after Iterator run for each item:
+1. Adicione a ação **Enviar e-mail** (dentro do Iterador)
+2. Para: `{{iterator.currentItem.email}}`
+3. Assunto: Olá `{{iterator.currentItem.firstName}}`!
+4. Corpo: Mensagem personalizada utilizando os campos do item atual
-1. Add **Send Email** action (inside iterator)
-2. To: `{{iterator.currentItem.email}}`
-3. Subject: Hello `{{iterator.currentItem.firstName}}`!
-4. Body: Personalized message using current item fields
+### Resultado
-### Result
+Se Pesquisar Registos devolver 5 pessoas, o Iterador:
-If Search Records returns 5 people, the Iterator:
+* Envia e-mail para a pessoa 1
+* Envia e-mail para a pessoa 2
+* ... continua para todas as 5
-* Sends email to person 1
-* Sends email to person 2
-* ... continues for all 5
+## Aceder aos dados do item atual
-## Accessing Current Item Data
+Dentro do Iterador, use `{{iterator.currentItem}}` para aceder ao registo atual:
-Inside Iterator, use `{{iterator.currentItem}}` to access the current record:
+| Variável | Descrição |
+| --------------------------------------- | ------------------------------- |
+| `{{iterator.currentItem}}` | Todo o objeto do registo atual |
+| `{{iterator.currentItem.id}}` | ID do registo |
+| `{{iterator.currentItem.email}}` | Campo de e-mail |
+| `{{iterator.currentItem.company.name}}` | Nome da empresa relacionada |
+| `{{iterator.index}}` | Posição atual no array (base 0) |
-| Variable | Description |
-| --------------------------------------- | ----------------------------------- |
-| `{{iterator.currentItem}}` | The entire current record object |
-| `{{iterator.currentItem.id}}` | Record ID |
-| `{{iterator.currentItem.email}}` | Email field |
-| `{{iterator.currentItem.company.name}}` | Related company name |
-| `{{iterator.index}}` | Current position in array (0-based) |
+## Padrões comuns
-## Common Patterns
+### Atualizar vários registos
-### Update Multiple Records
-
-**Goal**: Mark all overdue tasks as "Late"
+**Objetivo**: Marcar todas as tarefas em atraso como "Late"
```
1. Search Records (Tasks, Due Date < Today, Status ≠ Completed)
@@ -98,9 +94,9 @@ Inside Iterator, use `{{iterator.currentItem}}` to access the current record:
- Status: Late
```
-### Create Records from Array
+### Criar registos a partir de um array
-**Goal**: Webhook receives order with multiple items, create a record for each
+**Objetivo**: O Webhook recebe um pedido com vários itens, criar um registo para cada um
```
1. Webhook Trigger (receives items array)
@@ -113,9 +109,9 @@ Inside Iterator, use `{{iterator.currentItem}}` to access the current record:
- Related Order: {{trigger.body.orderId}}
```
-### Conditional Processing Inside Loop
+### Processamento condicional dentro do ciclo
-**Goal**: Only send email to contacts with valid emails
+**Objetivo**: Enviar e-mail apenas para contactos com e-mails válidos
```
1. Search Records (People)
@@ -125,56 +121,56 @@ Inside Iterator, use `{{iterator.currentItem}}` to access the current record:
- To: {{iterator.currentItem.email}}
```
-## Troubleshooting
+## Resolução de Problemas
-### "Iterator expects an array"
+### "O Iterador espera um array"
-**Cause**: You passed a single record instead of an array.
+**Causa**: Passou um único registo em vez de um array.
-**Fix**: Make sure you're passing the result of Search Records or an array field, not a single record.
+**Correção**: Certifique-se de que está a passar o resultado de Pesquisar Registos ou um campo do tipo array, e não um único registo.
```
✅ Correct: {{searchRecords}}
❌ Wrong: {{searchRecords[0]}}
```
-### Iterator Doesn't Run
+### O Iterador não é executado
-**Cause**: The array is empty.
+**Causa**: O array está vazio.
-**Fix**: Add a Filter before Iterator to check array length:
+**Correção**: Adicione um Filtro antes do Iterador para verificar o tamanho do array:
```
Filter: {{searchRecords.length}} > 0
```
-### Actions Run Too Many Times
+### Ações executadas vezes demais
-**Cause**: Search Records returned more records than expected.
+**Causa**: Pesquisar Registos devolveu mais registos do que o esperado.
-**Fix**:
+**Correção**:
-* Add more specific filters to Search Records
-* Set a limit on Search Records (max 200)
-* Add Filter inside Iterator for additional conditions
+* Adicione filtros mais específicos a Pesquisar Registos
+* Defina um limite em Pesquisar Registos (máx. 200)
+* Adicione um Filtro dentro do Iterador para condições adicionais
-## Performance Considerations
+## Considerações de desempenho
-* **Credit usage**: Each iteration consumes credits for its actions
-* **Time**: Large arrays take longer to process
-* **Limits**: Consider batching very large operations
-* **Rate limits**: External API calls may hit rate limits with many iterations
+* **Utilização de créditos**: Cada iteração consome créditos pelas suas ações
+* **Tempo**: Arrays grandes demoram mais a processar
+* **Limites**: Considere agrupar em lotes operações muito grandes
+* **Limites de taxa**: Chamadas a APIs externas podem atingir limites de taxa com muitas iterações
-## Best Practices
+## Melhores Práticas
-1. **Always check array length** before Iterator to avoid errors
-2. **Add filters inside loops** when not all items need processing
-3. **Rename your Iterator step** to describe what it's looping through
-4. **Test with small arrays** before processing large datasets
-5. **Monitor workflow runs** to ensure iterations complete as expected
+1. **Verifique sempre o tamanho do array** antes do Iterador para evitar erros
+2. **Adicione filtros dentro dos ciclos** quando nem todos os itens precisam de processamento
+3. **Renomeie a etapa do seu Iterador** para descrever o que está a percorrer
+4. **Teste com arrays pequenos** antes de processar conjuntos de dados grandes
+5. **Monitorize as execuções dos fluxos de trabalho** para garantir que as iterações se concluam conforme o esperado
-## Related
+## Relacionados
-* [Workflow Actions](/l/pt/user-guide/workflows/capabilities/workflow-actions)
-* [How to Use Branches](/l/pt/user-guide/workflows/capabilities/use-branches-in-workflows)
-* [Workflows FAQ](/l/pt/user-guide/workflows/how-tos/need-more-help/workflows-faq)
+* [Ações de Fluxo de Trabalho](/l/pt/user-guide/workflows/capabilities/workflow-actions)
+* [Como usar ramificações](/l/pt/user-guide/workflows/capabilities/use-branches-in-workflows)
+* [FAQ de Fluxos de Trabalho](/l/pt/user-guide/workflows/how-tos/need-more-help/workflows-faq)
diff --git a/packages/twenty-docs/l/pt/user-guide/workflows/capabilities/workflow-actions.mdx b/packages/twenty-docs/l/pt/user-guide/workflows/capabilities/workflow-actions.mdx
index 11afe518c2..e0f340e229 100644
--- a/packages/twenty-docs/l/pt/user-guide/workflows/capabilities/workflow-actions.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/workflows/capabilities/workflow-actions.mdx
@@ -1,311 +1,311 @@
---
-title: Workflow Actions
-description: Learn about the actions available in Twenty workflows.
+title: Ações de Fluxo de Trabalho
+description: Saiba mais sobre as ações disponíveis nos fluxos de trabalho do Twenty.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-## About Actions
+## Sobre as Ações
-Actions define what happens after a trigger fires. You can chain multiple actions together to build complex automations.
+As ações definem o que acontece após um gatilho ser acionado. Você pode encadear várias ações para criar automações complexas.
- * Use the variable picker (click the `(x+)` icon) to browse available data from previous steps
- * Hover over any input field to see which step a variable comes from — helpful when the same field (e.g., ID) exists in multiple previous steps
- * Give each action a descriptive name for easier maintenance
+ * Use o seletor de variáveis (clique no ícone `(x+)`) para explorar os dados disponíveis de etapas anteriores
+ * Passe o cursor sobre qualquer campo de entrada para ver de qual etapa uma variável vem — útil quando o mesmo campo (por exemplo, ID) existe em várias etapas anteriores
+ * Dê a cada ação um nome descritivo para facilitar a manutenção
-## Record Actions
+## Ações em Registros
-### Create a Record
+### Criar um Registro
-Adds a new record to a selected object.
+Adiciona um novo registro a um objeto selecionado.
-**Configuration**:
+**Configuração**:
-* Select the target object
-* Fill out the required and optional fields
-* Use data from previous steps or input values manually to populate fields
+* Selecione o objeto alvo
+* Preencha os campos obrigatórios e opcionais
+* Use dados de etapas anteriores ou insira valores manualmente para preencher os campos
-**Output**: The newly created record data is available for use in subsequent steps.
+**Saída**: Os dados do registro recém-criado estão disponíveis para uso em etapas subsequentes.
-### Update Record
+### Atualizar Registro
-Modifies an existing record in a selected object.
+Modifica um registro existente em um objeto selecionado.
-**Configuration**:
+**Configuração**:
-* Select the target object
-* Choose the specific record to update.
- * You can either choose a fixed record, using the drop down menu displaying all available records.
- * Or you can have the record dynamically selected, by designating a record found in a previous step, using the `(x+)`. You cannot search for the record based on different criteria at this stage. If you've not yet identified the record, add a `Search Record` step before this `Update Record` step.
-* Select fields to modify and enter new values
+* Selecione o objeto alvo
+* Escolha o registro específico para atualizar.
+ * Você pode escolher um registro fixo, usando o menu suspenso que exibe todos os registros disponíveis.
+ * Ou você pode fazer com que o registro seja selecionado dinamicamente, designando um registro encontrado em uma etapa anterior, usando o `(x+)`. Você não pode pesquisar o registro com base em critérios diferentes nesta etapa. Se você ainda não identificou o registro, adicione uma etapa `Search Record` antes desta etapa `Update Record`.
+* Selecione campos para modificar e insira novos valores
-**Output**: The updated record data is available for use in subsequent steps.
+**Saída**: Os dados do registro atualizado estão disponíveis para uso em etapas subsequentes.
-### Delete Record
+### Excluir Registro
-Removes a record from a selected object.
+Remove um registro de um objeto selecionado.
-**Configuration**:
+**Configuração**:
-* Select the target object
-* Choose the specific record to delete
+* Selecione o objeto alvo
+* Escolha o registro específico para excluir
-**Output**: The deleted record data remains available for use in subsequent steps.
+**Saída**: Os dados do registro excluído permanecem disponíveis para uso em etapas subsequentes.
-### Search Records
+### Pesquisar Registros
-Finds records within a selected object using filter conditions.
+Encontra registros dentro de um objeto selecionado usando condições de filtro.
-**Configuration**:
+**Configuração**:
-* Select the object to search
-* Set filter criteria to narrow results
-* Configure sorting and limits
+* Selecione o objeto para pesquisar
+* Defina critérios de filtro para restringir os resultados
+* Configurar ordenação e limites
-**Output**: Returns matching records that can be used in subsequent steps.
+**Saída**: Retorna registros correspondentes que podem ser usados em etapas subsequentes.
- **Limit**: Search Records returns a maximum of **200 records**. If you need to process more, add specific filters to reduce results or use scheduled workflows to process in batches.
+ **Limite**: Search Records retorna no máximo **200 registros**. Se você precisar processar mais, adicione filtros específicos para reduzir os resultados ou use fluxos de trabalho agendados para processar em lotes.
-**Best Practice**: Use [branches](/l/pt/user-guide/workflows/capabilities/workflow-branches) after Search Records to handle "found" vs "not found" scenarios.
+**Melhor prática**: Use [ramificações](/l/pt/user-guide/workflows/capabilities/workflow-branches) após Search Records para lidar com os cenários "encontrado" vs "não encontrado".
### Upsert Record
-Creates a new record or updates an existing one based on matching criteria. This is useful when you're not sure if a record already exists.
+Cria um novo registro ou atualiza um existente com base em critérios de correspondência. Isso é útil quando você não tem certeza se um registro já existe.
-**Configuration**:
+**Configuração**:
-* Select the target object
-* Note which fields can be used for matching: email for People, domain for Companies, ID for any object, or any field marked as Unique. You'll need to populate at least one of these below.
-* Fill out the field values. Do not forget to populate at least one of the unique identifiers.
+* Selecione o objeto alvo
+* Observe quais campos podem ser usados para correspondência: e-mail para Pessoas, domínio para Empresas, ID para qualquer objeto ou qualquer campo marcado como Único. Você precisará preencher pelo menos um destes abaixo.
+* Preencha os valores dos campos. Não se esqueça de preencher pelo menos um dos identificadores únicos.
- **Matching usually works even better when adding only one unique identifier.** For example, the screenshot below will match companies based on their domain. The ID is not necessarily needed.
+ **A correspondência geralmente funciona ainda melhor ao adicionar apenas um identificador único.** Por exemplo, a captura de tela abaixo fará a correspondência de empresas com base no domínio delas. O ID não é necessariamente obrigatório.
-* Use data from previous steps to populate fields
+* Use dados de etapas anteriores para preencher os campos
-**How it works**:
+**Como Funciona**:
-1. Searches for a record matching your criteria
-2. If found → updates the existing record
-3. If not found → creates a new record
+1. Procura um registro que corresponda aos seus critérios
+2. Se encontrado → atualiza o registro existente
+3. Se não encontrado → cria um novo registro
-**Output**: The created or updated record data is available for use in subsequent steps.
+**Saída**: Os dados do registro criado ou atualizado estão disponíveis para uso em etapas subsequentes.
-## Flow Actions
+## Ações de Fluxo
-### Iterator
+### Iterador
-**Loops through an array of records** returned from a previous step, allowing you to perform actions on each record individually.
+**Percorre um array de registros** retornados de uma etapa anterior, permitindo que você execute ações em cada registro individualmente.
-**Configuration**:
+**Configuração**:
-* Select the array of records from a previous step (e.g., results from Search Records, from a Manual trigger with Bulk availability, from a code node)
-* Define the actions to perform on each record in the loop.
+* Selecione o array de registros de uma etapa anterior (por exemplo, resultados de Search Records, de um gatilho Manual com Bulk, de um nó de código)
+* Defina as ações a serem realizadas em cada registro no loop.
- - You can add several actions within an iterator.
- - When using branches inside an iterator, make sure the last step of each branch connects back to the iterator to close the loop.
+ - Você pode adicionar várias ações dentro de um iterador.
+ - Ao usar ramificações dentro de um iterador, certifique-se de que a última etapa de cada ramificação se conecte de volta ao iterador para fechar o loop.
-* Access `Current Item` Fields: to use fields from the record currently being processed, click on the **Iterator** step, then select **Current item**. The list of available fields from that record will be displayed and can be selected for use in subsequent actions.
+* Acesse os campos de `Current Item`: para usar campos do registro que está sendo processado no momento, clique na etapa **Iterator** e, em seguida, selecione **Current item**. A lista de campos disponíveis desse registro será exibida e poderá ser selecionada para uso em ações subsequentes.
-
+
-### Filter
+### Filtro
-Filters records based on specified conditions, allowing only records that meet the criteria to pass through.
+Filtra registros com base em condições especificadas, permitindo que apenas os registros que atendam aos critérios passem.
-**Configuration**:
+**Configuração**:
-* Select the record to filter
-* Define filter conditions and criteria
-* Configure which records should pass through to subsequent steps
+* Selecione o registro a ser filtrado
+* Defina condições e critérios de filtro
+* Configure quais registros devem passar para as etapas subsequentes
- 1. **Output**: Filter nodes don't return data—they act as gates. If the conditions are met, the workflow continues. If not, the workflow stops at that branch.
- 2. The `IS` operator can be used with numeric fields. It performs as an `EQUAL`.
+ 1. **Saída**: Nós de filtro não retornam dados — eles atuam como portões. Se as condições forem atendidas, o fluxo de trabalho continua. Caso contrário, o fluxo de trabalho para nessa ramificação.
+ 2. O operador `IS` pode ser usado com campos numéricos. Ele funciona como um `EQUAL`.
-### Delay
+### Atraso
-Pauses workflow execution for a specified duration or until a specific date/time.
+Pausa a execução do fluxo de trabalho por uma duração especificada ou até uma data/hora específica.
-**Delay Types**:
+**Tipos de Atraso**:
-| Type | Description |
-| ------------------ | ------------------------------------------------------------------ |
-| **Duration** | Wait for a specific amount of time (days, hours, minutes, seconds) |
-| **Scheduled Date** | Wait until a specific date and time |
+| Tipo | Descrição |
+| ------------------- | ----------------------------------------------------------------------- |
+| **Duração** | Aguarda um período específico de tempo (dias, horas, minutos, segundos) |
+| **Data Programada** | Aguarda até uma data e hora específicas |
-**Configuration for Duration**:
+**Configuração para Duração**:
-* Set days, hours, minutes, and/or seconds
-* Combine multiple units (e.g., 2 days and 4 hours)
+* Defina dias, horas, minutos e/ou segundos
+* Combine várias unidades (por exemplo, 2 dias e 4 horas)
-**Configuration for Scheduled Date**:
+**Configuração para Data Programada**:
-* Select a date and time
-* Can reference a date field from a previous step (e.g., follow up 3 days after a meeting)
+* Selecione uma data e hora
+* Pode referenciar um campo de data de uma etapa anterior (por exemplo, fazer um acompanhamento 3 dias após uma reunião)
-**Use cases**:
+**Casos de uso**:
-* Wait 24 hours before sending a follow-up email
-* Pause until an opportunity's close date
-* Schedule actions for business hours
+* Aguarde 24 horas antes de enviar um e-mail de acompanhamento
+* Aguarde até a data de fechamento de uma oportunidade
+* Agende ações para o horário comercial
- The scheduled date cannot be in the past. If a date field from a previous step is used and the date has already passed, the workflow will fail.
+ A data programada não pode estar no passado. Se for usado um campo de data de uma etapa anterior e a data já tiver passado, o fluxo de trabalho falhará.
-**Limits & Credits**:
+**Limites e Créditos**:
-* **No maximum duration limit**—you can set delays of minutes, days, weeks, or longer
-* **1 credit consumed** when the Delay node executes, regardless of duration
-* **No credits consumed** while waiting—a 5-minute delay costs the same as a 5-day delay
+* **Sem limite máximo de duração** — você pode definir atrasos de minutos, dias, semanas ou mais longos
+* **1 crédito consumido** quando o nó de Atraso é executado, independentemente da duração
+* **Nenhum crédito consumido** durante a espera — um atraso de 5 minutos custa o mesmo que um atraso de 5 dias
-## Communication Actions
+## Ações de Comunicação
-### Send Email
+### Enviar Email
-Sends an email from your workflow. This is great for templated group emails. Emails will look like the ones you send from your mailbox.
-Not suited for newsletters (which require richer formatting) or automated email sequences.
+Envia um email a partir do seu fluxo de trabalho. Isso é ótimo para e-mails de grupo com modelos. Os e-mails terão a mesma aparência dos que você envia da sua caixa de correio.
+Não é adequado para newsletters (que exigem formatação mais rica) ou sequências automáticas de e-mails.
-**Prerequisites**: Add an email account in Settings → Accounts
+**Pré-requisitos**: Adicione uma conta de e-mail em Configurações → Contas
-**Configuration**:
+**Configuração**:
-* Select the sender email account
+* Selecione a conta de e-mail do remetente
- You can only send emails from mailboxes synced to your own Twenty account. Sending from other team members' mailboxes (e.g., the account owner's email) is on the roadmap.
+ Você só pode enviar e-mails de caixas de correio sincronizadas com a sua própria conta Twenty. O envio a partir das caixas de correio de outros membros da equipe (por exemplo, o e-mail do proprietário da conta) está no roadmap.
-For all the following steps, you can reference variables from previous steps for personalization.
+Para todas as etapas a seguir, você pode referenciar variáveis de etapas anteriores para personalização.
-* Enter recipient email address.
+* Insira o endereço de email do destinatário.
- Only one recipient is possible at the moment.
+ No momento, é possível apenas um destinatário.
-* Set subject line.
-* Compose message body. You can format links, create numbered list, bullet point lists, add attachments.
+* Defina o assunto.
+* Componha o corpo da mensagem. Você pode formatar links, criar listas numeradas, listas com marcadores e adicionar anexos.
- Adding HTML signatures is not possible at the moment.
+ Adicionar assinaturas em HTML não é possível no momento.
-### Form
+### Formulário
-Prompts a form during workflow execution to collect user input. The responses can then be used in subsequent steps to create records, send emails, or execute any other action based on the input.
+Apresenta um formulário durante a execução do fluxo de trabalho para coletar a entrada do usuário. As respostas podem então ser usadas em etapas subsequentes para criar registros, enviar e-mails ou executar qualquer outra ação com base na entrada.
- **Forms are designed for manual triggers only**. For workflows with other triggers (Record Created, Updated, etc.), forms are only accessible via the workflow run interface, which is not the expected user experience. A notifications center will be released in 2026 to properly support forms in automated workflows.
+ **Os formulários são projetados apenas para gatilhos manuais**. Para fluxos de trabalho com outros gatilhos (Registro Criado, Atualizado, etc.), os formulários só são acessíveis via a interface de execução do fluxo de trabalho, o que não é a experiência esperada do usuário. Um centro de notificações será lançado em 2026 para suportar adequadamente os formulários em fluxos de trabalho automatizados.
-**Configuration**:
+**Configuração**:
-* Configure the fields that users will be asked to fill. For each field, choose
- * a type among text, number, date, a given record, a select field. Select fields from all objects are available.
- * a label
- * a default value under `Placeholder` (optional)
-* Edit the form title
+* Configure os campos que os usuários deverão preencher. Para cada campo, escolha
+ * um tipo entre texto, número, data, um determinado registro, um campo de seleção. Campos de seleção de todos os objetos estão disponíveis.
+ * um rótulo
+ * um valor padrão em `Placeholder` (opcional)
+* Edite o título do formulário
-**Output**: Form responses are available for use in subsequent steps.
+**Saída**: Respostas do formulário estão disponíveis para uso em etapas subsequentes.
-**Example**: The "Quick Lead" workflow is available by default in all workspaces, available anywhere in the Command Menu `Cmd + K`.
+**Exemplo**: O fluxo de trabalho "Quick Lead" está disponível por padrão em todos os espaços de trabalho, disponível em qualquer lugar no Menu de Comando `Cmd + K`.
-**How to fill the form**:
+**Como preencher o formulário**:
-* Trigger your manual workflow from the command menu `Cmd K`
-* Fill the form that is displayed in the side panel and click `Submit`.
+* Acione seu fluxo de trabalho manual a partir do menu de comando `Cmd K`
+* Preencha o formulário exibido no painel lateral e clique em `Submit`.
- The fields cannot be made mandatory.
+ Os campos não podem ser tornados obrigatórios.
-
+
-## Integration Actions
+## Ações de Integração
-### Code
+### Código
-Runs custom JavaScript within your workflow.
+Executa JavaScript personalizado dentro do seu fluxo de trabalho.
-**Configuration**:
+**Configuração**:
-* Access variables from previous steps. You can edit the variables names dynamically.
+* Acesse variáveis de etapas anteriores. Você pode editar os nomes das variáveis dinamicamente.
-
+
-* Write JavaScript code in the editor
-* Return variables for use in subsequent steps
-* Test code directly in the step
+* Escreva o código JavaScript no editor
+* Retorne variáveis para uso em etapas subsequentes
+* Teste o código diretamente na etapa
- If you need to use external API keys in your code, you must input them directly in the function body. You cannot configure API keys elsewhere and reference them in the serverless function.
+ Se você precisar usar chaves de API externas em seu código, deverá inseri-las diretamente no corpo da função. Você não pode configurar chaves de API em outro lugar e referenciá-las na função serverless.
- **Working with arrays?** Arrays from external systems or previous steps may come as strings. See [How to handle arrays in Code actions](/l/pt/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions) for the solution.
+ **Trabalhando com arrays?** Arrays de sistemas externos ou de etapas anteriores podem vir como strings. Veja [Como lidar com arrays em ações de código](/l/pt/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions) para a solução.
- Click the square icon at the top right of the code editor to display it in full screen — helpful since the default editor width is limited.
+ Clique no ícone quadrado no canto superior direito do editor de código para exibi-lo em tela cheia — útil, já que a largura padrão do editor é limitada.
-### HTTP Request
+### Requisição HTTP
-Sends a request to an external API as part of your workflow.
+Envia uma solicitação para uma API externa como parte do seu fluxo de trabalho.
-**Configuration**:
+**Configuração**:
-* Enter the API endpoint URL. Using parameters from previous steps is possible.
-* Select HTTP method (GET, POST, PUT, PATCH, DELETE)
-* Add required headers and values
-* Provide sample response for structure preview
+* Insira a URL do endpoint da API. É possível usar parâmetros de etapas anteriores.
+* Selecione o método HTTP (GET, POST, PUT, PATCH, DELETE)
+* Adicione cabeçalhos e valores obrigatórios
+* Forneça resposta de amostra para visualização da estrutura
-## AI Actions
+## Ações de IA
-### AI Agent - Coming Soon
+### Agente de IA - Em breve
-Runs an AI agent within your workflow to perform intelligent tasks.
+Executa um agente de IA dentro do seu fluxo de trabalho para realizar tarefas inteligentes.
-**Configuration**:
+**Configuração**:
-* **Agent**: Select an existing AI agent or use the default agent
-* **Prompt**: Write the instruction for the AI agent
-* Reference variables from previous steps in the prompt
+* **Agente**: Selecione um agente de IA existente ou use o agente padrão
+* **Prompt**: Escreva a instrução para o agente de IA
+* Referencie variáveis de etapas anteriores no prompt
-**What AI Agents can do**:
+**O que os Agentes de IA podem fazer**:
-* Analyze and summarize data
-* Classify or categorize records
-* Generate text content
-* Make decisions based on data
-* Interact with your CRM data using tools
+* Analisar e resumir dados
+* Classificar ou categorizar registros
+* Gerar conteúdo de texto
+* Tomar decisões com base em dados
+* Interagir com seus dados de CRM usando ferramentas
-**Output**: The AI agent's response is available for use in subsequent steps. If the agent has a structured output schema, the response will follow that format.
+**Saída**: A resposta do agente de IA está disponível para uso em etapas subsequentes. Se o agente tiver um esquema de saída estruturado, a resposta seguirá esse formato.
- AI Agent actions consume workflow credits based on the AI model used. See [Workflow Credits](/l/pt/user-guide/workflows/capabilities/workflow-credits) for details.
+ As ações do Agente de IA consomem créditos de fluxo de trabalho com base no modelo de IA usado. Veja [Créditos de Fluxo de Trabalho](/l/pt/user-guide/workflows/capabilities/workflow-credits) para obter detalhes.
- AI agents respect role-based permissions. You can assign specific roles to agents under **Settings → Roles** to control what data they can access. See [Permissions](/l/pt/user-guide/permissions-access/capabilities/permissions) for details.
+ Os agentes de IA respeitam permissões baseadas em funções. Você pode atribuir funções específicas aos agentes em **Configurações → Funções** para controlar a quais dados eles podem acessar. Veja [Permissões](/l/pt/user-guide/permissions-access/capabilities/permissions) para obter detalhes.
diff --git a/packages/twenty-docs/l/pt/user-guide/workflows/capabilities/workflow-branches.mdx b/packages/twenty-docs/l/pt/user-guide/workflows/capabilities/workflow-branches.mdx
index 7ec31dd374..8eddf44db9 100644
--- a/packages/twenty-docs/l/pt/user-guide/workflows/capabilities/workflow-branches.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/workflows/capabilities/workflow-branches.mdx
@@ -1,66 +1,66 @@
---
-title: Workflow Branches
-description: Create parallel paths and conditional logic in your workflows.
+title: Ramificações de Fluxo de Trabalho
+description: Crie caminhos paralelos e lógica condicional em seus fluxos de trabalho.
---
-Branches allow you to split your workflow into multiple paths that can run simultaneously or conditionally based on your data.
+As ramificações permitem dividir seu fluxo de trabalho em vários caminhos que podem ser executados simultaneamente ou condicionalmente com base em seus dados.
-## How Branches Work
+## Como as Ramificações Funcionam
-When you create multiple connections from a single node, each path becomes a branch. By default, **all branches execute in parallel**—they don't wait for each other.
+Quando você cria várias conexões a partir de um único nó, cada caminho se torna uma ramificação. Por padrão, **todas as ramificações são executadas em paralelo**—elas não esperam umas pelas outras.
-## Creating Branches
+## Criando Ramificações
-### Add a New Branch
+### Adicionar uma Nova Ramificação
-1. **Right-click on the main canvas** of the workflow (not on an existing node)
-2. Click **Add node**
-3. Choose the node type for your new branch
-4. Drag an arrow from the bottom of the previous step to the top of this new action
-5. Repeat to add more branches from the same node
+1. **Clique com o botão direito na tela principal** do fluxo de trabalho (não em um nó existente)
+2. Clique em **Adicionar nó**
+3. Escolha o tipo de nó para sua nova ramificação
+4. Arraste uma seta da parte inferior da etapa anterior para o topo desta nova ação
+5. Repita para adicionar mais ramificações a partir do mesmo nó
- Each branch is independent. Adding a branch doesn't affect other existing paths from that node.
+ Cada ramificação é independente. Adicionar uma ramificação não afeta outros caminhos existentes desse nó.
-### Visual Layout
+### Layout Visual
-Branches appear as parallel paths in the workflow editor. You can drag nodes to rearrange the visual layout without affecting execution.
+As ramificações aparecem como caminhos paralelos no editor de fluxo de trabalho. Você pode arrastar nós para reorganizar o layout visual sem afetar a execução.
-## Conditional Branches
+## Ramificações Condicionais
-Since all branches run by default, use **Filter** nodes to control which paths actually execute:
+Como todas as ramificações são executadas por padrão, use nós **Filtro** para controlar quais caminhos realmente serão executados:
-| Branch | Filter Condition | Action |
-| ------ | --------------------- | -------------------------- |
-| A | Stage = "Won" | Send congratulations email |
-| B | Stage = "Lost" | Create follow-up task |
-| C | Stage = "Negotiation" | Notify manager |
+| Ramificação | Condição de Filtro | Ação |
+| ----------- | -------------------- | ------------------------------ |
+| A | Etapa = "Ganha" | Enviar e-mail de parabéns |
+| B | Etapa = "Perdida" | Criar tarefa de acompanhamento |
+| C | Etapa = "Negociação" | Notificar o gerente |
-1. Create branches from your trigger or action
-2. Add a **Filter** node as the first step of each branch
-3. Configure each filter with mutually exclusive conditions
-4. Add your actions after each filter
+1. Crie ramificações a partir do seu gatilho ou ação
+2. Adicione um nó **Filtro** como a primeira etapa de cada ramificação
+3. Configure cada filtro com condições mutuamente exclusivas
+4. Adicione suas ações após cada filtro
-Only the branch(es) where the filter condition is met will continue executing.
+Apenas as ramificações em que a condição do filtro for atendida continuarão a ser executadas.
-## Merging Branches
+## Mesclando Ramificações
-**Branches don't automatically merge.** Each branch runs independently until it ends. You have full flexibility in how you handle this:
+**As ramificações não se mesclam automaticamente.** Cada ramificação é executada de forma independente até terminar. Você tem total flexibilidade em como lidar com isso:
-* **Option 1: Keep branches separate**
- Each branch handles its own follow-up actions independently. This is the simplest approach when branches don't need to converge.
+* **Opção 1: Manter ramificações separadas**
+ Cada ramificação lida com suas próprias ações de acompanhamento de forma independente. Esta é a abordagem mais simples quando as ramificações não precisam convergir.
-* **Option 2: Merge branches manually**
- When creating your workflow, you can manually connect multiple branches to the same downstream action. Simply drag arrows from the end of each branch to a common node.
+* **Opção 2: Mesclar ramificações manualmente**
+ Ao criar seu fluxo de trabalho, você pode conectar manualmente várias ramificações à mesma ação subsequente. Basta arrastar setas do final de cada ramificação para um nó comum.
- While you can use a [Delay](/l/pt/user-guide/workflows/capabilities/workflow-actions#delay) node to pause execution, it's not currently configurable to wait "until another branch ends."
+ Embora você possa usar um nó [Atraso](/l/pt/user-guide/workflows/capabilities/workflow-actions#delay) para pausar a execução, atualmente não é possível configurá-lo para esperar "até que outra ramificação termine".
-## Related
+## Relacionados
-* [How to Use Branches in Workflows](/l/pt/user-guide/workflows/capabilities/use-branches-in-workflows) - Step-by-step guide
-* [Workflow Actions](/l/pt/user-guide/workflows/capabilities/workflow-actions) - Available actions including Filter
+* [Como usar ramificações em Fluxos de Trabalho](/l/pt/user-guide/workflows/capabilities/use-branches-in-workflows) - Guia passo a passo
+* [Ações de Fluxo de Trabalho](/l/pt/user-guide/workflows/capabilities/workflow-actions) - Ações disponíveis, incluindo Filtro
diff --git a/packages/twenty-docs/l/pt/user-guide/workflows/capabilities/workflow-credits.mdx b/packages/twenty-docs/l/pt/user-guide/workflows/capabilities/workflow-credits.mdx
index 437aee5822..91c6fbffa3 100644
--- a/packages/twenty-docs/l/pt/user-guide/workflows/capabilities/workflow-credits.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/workflows/capabilities/workflow-credits.mdx
@@ -1,76 +1,76 @@
---
-title: Workflow Credits
-description: Understand workflow credit consumption and management.
+title: Créditos de Fluxo de Trabalho
+description: Entenda o consumo e o gerenciamento de créditos de fluxo de trabalho.
---
-Workflow credits power your automations in Twenty. Understanding how they work helps you optimize costs and manage your automation budget effectively.
+Os créditos de fluxo de trabalho alimentam suas automações no Twenty. Entender como eles funcionam ajuda você a otimizar custos e gerenciar seu orçamento de automação de maneira eficaz.
-## Credit Allocation
+## Alocação de créditos
-Workflow credits are allocated based on your billing cycle, not your plan tier:
+Os créditos de fluxo de trabalho são alocados com base no seu ciclo de faturamento, não no seu nível de plano:
-| Billing Cycle | Credits |
-| ------------------------ | --------------------------- |
-| **Monthly subscription** | 5 million credits per month |
-| **Yearly subscription** | 50 million credits per year |
+| Ciclo de faturamento | Créditos |
+| --------------------- | ------------------------------ |
+| **Assinatura mensal** | 5 milhões de créditos por mês |
+| **Assinatura anual** | 50 milhões de créditos por ano |
- 5 million monthly credits are generous for standard automations. Most teams won't exceed this limit with typical workflow usage. Additional credits are primarily needed for advanced Code actions and AI-powered workflows.
+ 5 milhões de créditos mensais são generosos para automações padrão. A maioria das equipes não excederá esse limite com o uso típico de fluxos de trabalho. Créditos adicionais são necessários principalmente para ações de Code avançadas e fluxos de trabalho com tecnologia de IA.
-## How Credit Consumption Works
+## Como Funciona o Consumo de Créditos
-Credits are consumed when workflows execute, not when you create them. Each workflow action consumes credits based on its complexity:
+Os créditos são consumidos quando os fluxos de trabalho são executados, não quando você os cria. Cada ação de fluxo de trabalho consome créditos com base em sua complexidade:
-### Credit Consumption by Action Type
+### Consumo de Créditos por Tipo de Ação
-* **Basic internal operations**: Very low credit consumption
- * Search Records
- * Create Record
- * Update Record
- * Delete Record
- * Form actions
+* **Operações internas básicas**: Consumo de créditos muito baixo
+ * Pesquisar Registros
+ * Criar Registro
+ * Atualizar Registro
+ * Excluir Registro
+ * Ações de formulário
-* **Complex operations**: Higher credit consumption
- * Code actions (JavaScript execution)
- * HTTP Requests to external services
+* **Operações complexas**: Maior consumo de créditos
+ * Ações de código (execução de JavaScript)
+ * Solicitações HTTP para serviços externos
-* **AI features**: Higher credit consumption
- * AI Agent actions consume credits based on the AI model used
- * More complex prompts and longer outputs use more credits
+* **Recursos de IA**: Maior consumo de créditos
+ * As ações do Agente de IA consomem créditos com base no modelo de IA usado
+ * Prompts mais complexos e saídas mais longas consomem mais créditos
-* **Delay actions**: Minimal credit consumption
- * The Delay node consumes **1 credit** when it executes
- * **No credits are consumed** during the wait period
- * A 5-minute delay costs the same as a 5-day delay
+* **Ações de Delay**: Consumo mínimo de créditos
+ * O nó Delay consome **1 crédito** quando é executado
+ * **Nenhum crédito é consumido** durante o período de espera
+ * Um atraso de 5 minutos custa o mesmo que um atraso de 5 dias
-### Real-Time Deduction
+### Dedução em Tempo Real
-Credits are deducted in real-time as workflows execute. This means:
+Os créditos são deduzidos em tempo real à medida que os fluxos de trabalho são executados. Isso significa:
-* Draft workflows don't consume credits
-* Only active, running workflows use your credit allocation
-* Failed workflows still consume credits for completed steps
+* Fluxos de trabalho em rascunho não consomem créditos
+* Apenas fluxos de trabalho ativos e em execução usam sua alocação de crédito
+* Fluxos de trabalho com falha ainda consomem créditos para etapas concluídas
-## Managing Credits
+## Gerenciamento de Créditos
-### Check Credit Usage
+### Verificar Uso de Créditos
-1. Go to **Settings → Billing**
-2. View your current credit consumption and remaining balance
-3. Monitor usage patterns to optimize your workflows
+1. Vá para **Configurações → Faturamento**
+2. Veja o seu consumo atual de créditos e o saldo restante
+3. Monitore padrões de uso para otimizar seus fluxos de trabalho
-### Purchasing Additional Credits
+### Compra de Créditos Adicionais
-If you need more credits beyond your plan allocation:
+Se você precisar de mais créditos além da alocação do seu plano:
-1. Go to **Settings → Billing**
-2. Click on the option to purchase additional credits. Packages of different sizes are available.
-3. Credits are added to your current balance
+1. Vá para **Configurações → Faturamento**
+2. Clique na opção para comprar créditos adicionais. Pacotes de diferentes tamanhos estão disponíveis.
+3. Os créditos são adicionados ao seu saldo atual
-## Best Practices
+## Melhores Práticas
-* **Batch Processing**: Use bulk operations and Iterator actions efficiently
-* **Manual Trigger Optimization**: For manual triggers, choose `Bulk` availability to process multiple records in a single workflow run
-* Optimize Code actions for efficiency
-* Batch operations to reduce individual action calls
+* **Processamento em Lote**: Use operações em massa e ações de Iterador de forma eficiente
+* **Otimização de Gatilhos Manuais**: Para gatilhos manuais, escolha a disponibilidade `Em Massa` para processar vários registros em uma única execução de fluxo de trabalho
+* Otimize as ações de código para eficiência
+* Operações em lote para reduzir chamadas de ação individual
diff --git a/packages/twenty-docs/l/pt/user-guide/workflows/capabilities/workflow-runs.mdx b/packages/twenty-docs/l/pt/user-guide/workflows/capabilities/workflow-runs.mdx
index 686cec5369..7c0f7d6ebf 100644
--- a/packages/twenty-docs/l/pt/user-guide/workflows/capabilities/workflow-runs.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/workflows/capabilities/workflow-runs.mdx
@@ -1,92 +1,92 @@
---
-title: Workflow Runs
-description: Monitor and manage workflow executions.
+title: Execuções de Workflow
+description: Monitore e gerencie as execuções de fluxos de trabalho.
image: /images/user-guide/workflows/workflow.png
---
-## About Runs
+## Sobre Execuções
-A **Run** is a record of a workflow execution. Every time a workflow is triggered—whether by a record event, schedule, manual action, or webhook—a new run is created.
+Uma **Execução** é um registro de uma execução de fluxo de trabalho. Sempre que um fluxo de trabalho é acionado — seja por um evento de registro, agendamento, ação manual ou webhook — uma nova execução é criada.
-## Viewing Runs
+## Visualizando Execuções
-### From the Workflow Editor
+### No Editor de Fluxo de Trabalho
-1. Open the workflow you want to monitor
-2. Click the **Runs** panel on the right side
-3. See a list of recent runs with their status
+1. Abra o fluxo de trabalho que você deseja monitorar
+2. Clique no painel **Execuções** no lado direito
+3. Veja uma lista de execuções recentes com seus status
-### From the Workflow Runs View
+### Na Visualização de Execuções de Fluxo de Trabalho
-1. Go to **Workflow Runs** in the sidebar
-2. View runs across all workflows
-3. Filter by status, workflow, or date
+1. Vá para **Execuções de Fluxo de Trabalho** na barra lateral
+2. Veja execuções em todos os fluxos de trabalho
+3. Filtre por status, fluxo de trabalho ou data
-## Run Statuses
+## Status das Execuções
-| Status | Description |
-| ------------- | ------------------------------------------------------------------------ |
-| **Running** | Workflow is currently executing |
-| **Completed** | Workflow finished successfully |
-| **Failed** | Workflow encountered an error and stopped |
-| **Waiting** | Workflow is paused (e.g., waiting for a Delay action or Form submission) |
+| Estado | Descrição |
+| -------------- | ---------------------------------------------------------------------------------------------------------- |
+| **Executando** | O fluxo de trabalho está em execução no momento |
+| **Concluído** | O fluxo de trabalho foi concluído com êxito |
+| **Falhou** | O fluxo de trabalho encontrou um erro e foi interrompido |
+| **Aguardando** | O fluxo de trabalho está em pausa (por exemplo, aguardando uma ação de Atraso ou o envio de um Formulário) |
-## Run Details
+## Detalhes da Execução
-Click on any run to see:
+Clique em qualquer execução para ver:
-* **Status**: Current state of the run
-* **Started at**: When the run began
-* **Duration**: How long the run took
-* **Trigger data**: The input that started the workflow
-* **Step outputs**: Data returned by each step
-* **Error messages**: If the run failed, what went wrong
+* **Status**: Estado atual da execução
+* **Iniciado em**: Quando a execução começou
+* **Duração**: Quanto tempo a execução levou
+* **Dados do gatilho**: A entrada que iniciou o fluxo de trabalho
+* **Saídas das etapas**: Dados retornados por cada etapa
+* **Mensagens de erro**: Se a execução falhou, o que deu errado
-## Step-by-Step Execution
+## Execução passo a passo
-Each run shows the progression through your workflow:
+Cada execução mostra o progresso ao longo do seu fluxo de trabalho:
-1. See which steps completed successfully
-2. Identify where failures occurred
-3. View the data passed between steps
-4. Debug issues by examining step inputs and outputs
+1. Veja quais etapas foram concluídas com êxito
+2. Identifique onde ocorreram falhas
+3. Veja os dados passados entre as etapas
+4. Depure problemas examinando as entradas e saídas das etapas
-## Error Handling
+## Tratamento de Erros
-When a run fails:
+Quando uma execução falha:
-1. Open the failed run
-2. Find the step that caused the failure
-3. Check the error message for details
-4. Common issues:
- * Missing required fields
- * Invalid data format
- * External API errors
- * Permission issues
+1. Abra a execução com falha
+2. Encontre a etapa que causou a falha
+3. Verifique a mensagem de erro para obter detalhes
+4. Problemas comuns:
+ * Campos obrigatórios ausentes
+ * Formato de dados inválido
+ * Erros de API externa
+ * Problemas de permissão
-## Re-running Workflows
+## Reexecutando fluxos de trabalho
-If a run fails, you can:
+Se uma execução falhar, você pode:
-* Fix the underlying issue and wait for the next trigger
-* For manual workflows, trigger again with the same or updated data
-* Review the workflow logic to prevent future failures
+* Corrija o problema subjacente e aguarde o próximo gatilho
+* Para fluxos de trabalho manuais, acione novamente com os mesmos dados ou dados atualizados
+* Revise a lógica do fluxo de trabalho para evitar falhas futuras
-## Performance Tips
+## Dicas de desempenho
-### Managing Run History
+### Gerenciando o histórico de execuções
-* Runs are retained for historical reference
-* Very old runs may be archived automatically
-* Export run data if you need to keep records
+* As execuções são mantidas para referência histórica
+* Execuções muito antigas podem ser arquivadas automaticamente
+* Exporte os dados da execução se precisar manter registros
-### Monitoring Best Practices
+### Melhores práticas de monitoramento
-* Check runs regularly after activating new workflows
-* Review failed runs to identify patterns
+* Verifique as execuções regularmente após ativar novos fluxos de trabalho
+* Revise as execuções com falha para identificar padrões
-## Related
+## Relacionados
-* [Workflow Triggers](/l/pt/user-guide/workflows/capabilities/workflow-triggers)
-* [Workflow Actions](/l/pt/user-guide/workflows/capabilities/workflow-actions)
-* [Workflow Troubleshooting](/l/pt/user-guide/workflows/how-tos/need-more-help/workflow-troubleshooting)
+* [Gatilhos de Fluxo de Trabalho](/l/pt/user-guide/workflows/capabilities/workflow-triggers)
+* [Ações de Fluxo de Trabalho](/l/pt/user-guide/workflows/capabilities/workflow-actions)
+* [Solução de Problemas de Fluxo de Trabalho](/l/pt/user-guide/workflows/how-tos/need-more-help/workflow-troubleshooting)
diff --git a/packages/twenty-docs/l/pt/user-guide/workflows/capabilities/workflow-triggers.mdx b/packages/twenty-docs/l/pt/user-guide/workflows/capabilities/workflow-triggers.mdx
index cddde2a3b2..94eaf327b3 100644
--- a/packages/twenty-docs/l/pt/user-guide/workflows/capabilities/workflow-triggers.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/workflows/capabilities/workflow-triggers.mdx
@@ -1,136 +1,136 @@
---
-title: Workflow Triggers
-description: Learn about the different triggers that start your workflows.
+title: Gatilhos de Fluxo de Trabalho
+description: Conheça os diferentes gatilhos que iniciam os seus fluxos de trabalho.
---
-## About Triggers
+## Sobre os Gatilhos
-Workflows always start with a single trigger that defines when the automation should run.
+Os fluxos de trabalho sempre começam com um único gatilho que define quando a automação deve ser executada.
- **Advanced objects are supported!** Beyond standard CRM objects (People, Companies, Opportunities), you can also trigger workflows and perform actions on:
+ **Objetos avançados são suportados!** Além dos objetos padrão de CRM (Pessoas, Empresas, Oportunidades), você também pode acionar fluxos de trabalho e executar ações em:
- * Workspace Members
- * Calendar Events
- * Messages (Emails)
- * Tasks, Notes, and many other system objects
+ * Membros do Workspace
+ * Eventos de Calendário
+ * Mensagens (E-mails)
+ * Tarefas, Notas e muitos outros objetos do sistema
- This opens up powerful automations like notifying team members when calendar events are created, or processing incoming emails automatically.
+ Isso possibilita automações poderosas, como notificar membros da equipe quando eventos de calendário são criados ou processar automaticamente e-mails recebidos.
-## Record is Created
+## Registro é Criado
-Starts the workflow when a new record is created in a selected object (People, Companies, Opportunities, or any custom object).
+Inicia o fluxo de trabalho quando um novo registro é criado em um objeto selecionado (Pessoas, Empresas, Oportunidades ou qualquer objeto personalizado).
-**Configuration**: Select the object type to monitor for new records.
+**Configuração**: Selecione o tipo de objeto para monitorar novos registros.
- * This trigger is great for records created by csv, mailbox and calendar synchronization, API.
- * **It is not recommended for records created manually**: with this trigger, workflows start as soon as the record is created. Since Twenty UI offers auto-save on the fly (there is not an edit mode and then a validation to save records), the workflow will be triggered before the user inputs all the fields.
- To trigger this workflow on records created manually, it is recommended to use the trigger `Record is created or updated` instead.
+ * Este gatilho é ótimo para registros criados por CSV, sincronização de caixa de correio e calendário, API.
+ * **Não é recomendado para registros criados manualmente**: com este gatilho, os fluxos de trabalho começam assim que o registro é criado. Como o Twenty UI oferece salvamento automático em tempo real (não há um modo de edição e depois uma validação para salvar registros), o fluxo de trabalho será acionado antes que o usuário preencha todos os campos.
+ Para acionar este fluxo de trabalho em registros criados manualmente, recomenda-se usar o gatilho `Record is created or updated`.
-## Record is Updated
+## Registro é Atualizado
-Starts the workflow when changes are made to an existing record.
+Inicia o fluxo de trabalho quando alterações são feitas em um registro existente.
-**Configuration**:
+**Configuração**:
-* Select the object type
-* Optionally specify which fields to monitor for changes
+* Selecione o tipo de objeto
+* Opcionalmente, especifique quais campos monitorar para alterações
-## Record is Updated or Created
+## Registro é Atualizado ou Criado
-Starts the workflow when a record is either created or updated in a selected object.
+Inicia o fluxo de trabalho quando um registro é criado ou atualizado em um objeto selecionado.
-**Why This Matters**: This trigger is particularly helpful because records created via different methods behave differently:
+**Por que isto é importante**: Este gatilho é particularmente útil porque registros criados por métodos diferentes se comportam de maneira diferente:
-* **API/CSV imports**: Records are created with all fields populated immediately
-* **Manual creation**: Records are created first, then fields are added in subsequent updates
+* **Importações API/CSV**: Registros são criados com todos os campos preenchidos imediatamente
+* **Criação manual**: Registros são criados primeiro, depois os campos são adicionados em atualizações subsequentes
-**Configuration**:
+**Configuração**:
-* Select the object type to monitor
-* Optionally specify which fields to monitor for changes
-* The workflow will trigger both on initial creation and any subsequent updates
+* Selecione o tipo de objeto para monitorar
+* Opcionalmente, especifique quais campos monitorar para alterações
+* O fluxo de trabalho será acionado tanto na criação inicial quanto em quaisquer atualizações subsequentes
-## Record is Deleted
+## Registro é Excluído
-Starts the workflow when a record is removed from an object.
+Inicia o fluxo de trabalho quando um registro é removido de um objeto.
-**Configuration**: Select the object type to monitor for deletions.
+**Configuração**: Selecione o tipo de objeto para monitorar exclusões.
-## Manual Trigger
+## Gatilho Manual
-Starts the workflow when triggered by a user action. This trigger can be accessed through the `Cmd+K` menu or via a custom button that will be displayed in the top navbar after selecting record(s).
+Inicia o fluxo de trabalho quando acionado por uma ação do usuário. Este gatilho pode ser acessado pelo menu `Cmd+K` ou por um botão personalizado que será exibido na barra de navegação superior após selecionar um ou mais registros.
-**Availability Configuration**:
-Choose how the workflow should handle record selection:
+**Configuração de Disponibilidade**:
+Escolha como o fluxo de trabalho deve lidar com a seleção de registros:
-* **Global**: No record is required to trigger this workflow. The workflow is triggered from the command menu `Cmd + K` anywhere (from any object) and does not use record(s) as input.
+* **Global**: Nenhum registro é necessário para acionar este fluxo de trabalho. O fluxo de trabalho é acionado a partir do menu de comando `Cmd + K` em qualquer lugar (de qualquer objeto) e não usa registros como entrada.
-* **Single**: The selected record(s) will be passed to your workflow. This is configured for a given object. Several records can be selected before triggering the workflow. The workflow will run from beginning to end as many times as there are records selected.
+* **Único**: O(s) registro(s) selecionado(s) será(ão) passado(s) para o seu fluxo de trabalho. Está configurado para um determinado objeto. Vários registros podem ser selecionados antes de acionar o fluxo de trabalho. O fluxo de trabalho será executado do início ao fim tantas vezes quanto houver registros selecionados.
- **Soft limit: 100 runs/minute**. Beyond this, workflows remain in "Not Started" status and are processed gradually—either by a background job or when another workflow enters the queue. This means you can select more than 100 records with a Single trigger; execution will just be slower.
+ **Limite flexível: 100 execuções/minuto**. Além disso, os fluxos de trabalho permanecem com o status "Not Started" e são processados gradualmente — seja por uma tarefa em segundo plano ou quando outro fluxo de trabalho entra na fila. Isso significa que você pode selecionar mais de 100 registros com um gatilho único; a execução será apenas mais lenta.
-* **Bulk**: The selected record(s) will be passed to your workflow. This is configured for a given object. Several records can be selected before triggering the workflow. The workflow will run once, providing the entire list of records as input. This means the workflow needs to contain an [Iterator action](/l/pt/user-guide/workflows/capabilities/workflow-actions#iterator).
+* **Em Massa**: O(s) registro(s) selecionado(s) será(ão) passado(s) para o seu fluxo de trabalho. Está configurado para um determinado objeto. Vários registros podem ser selecionados antes de acionar o fluxo de trabalho. O fluxo de trabalho será executado uma vez, fornecendo a lista completa de registros como entrada. Isso significa que o fluxo de trabalho precisa conter uma [ação de iterador](/l/pt/user-guide/workflows/capabilities/workflow-actions#iterator).
- This is more advanced, and best for people who want to optimize the number of workflow runs.
+ Isto é mais avançado e é melhor para pessoas que desejam otimizar o número de execuções de fluxo de trabalho.
-**Additional Configuration**:
+**Configuração Adicional**:
-* Select the target object (for Single and Bulk availability)
-* Choose a command icon for the workflow trigger
-* Configure navbar placement (Pinned or Not Pinned)
+* Selecione o objeto alvo (para disponibilidade Única e em Massa)
+* Escolha um ícone de comando para acionar o fluxo de trabalho
+* Configure o local da barra de navegação (Fixado ou Não Fixado)
-**Access Methods**:
+**Métodos de Acesso**:
-* `Cmd+K` menu to find and launch manual workflows
-* Custom button in the top navbar (if configured)
+* `Cmd+K` menu para encontrar e iniciar fluxos de trabalho manuais
+* Botão personalizado na barra de navegação superior (se configurado)
-## Time-Based Trigger: On a Schedule
+## Gatilho baseado em tempo: Em um cronograma
-Starts the workflow on a recurring basis you define.
+Inicia o fluxo de trabalho em uma base recorrente que você define.
-**Configuration**:
+**Configuração**:
-* Select time unit (minutes, hours, days)
-* Enter a value or use custom cron expressions for advanced scheduling
+* Selecione a unidade de tempo (minutos, horas, dias)
+* Insira um valor ou utilize expressões cron personalizadas para agendamentos avançados
- **Timezone**: Scheduled workflows run in **UTC**. When setting hours for daily schedules, convert your local time to UTC.
+ **Fuso horário**: Fluxos de trabalho agendados são executados em **UTC**. Ao definir horários para agendamentos diários, converta seu horário local para UTC.
-## External Trigger: Webhook
+## Gatilho Externo: Webhook
-Starts the workflow when a GET or POST request is received from an external service.
+Inicia o fluxo de trabalho quando uma solicitação GET ou POST é recebida de um serviço externo.
-**Configuration**:
+**Configuração**:
-* The workflow provides a unique webhook URL—copy this and add it to your external system as the endpoint to call.
-* For POST requests, define the expected body structure so Twenty knows what data to expect. Add here the fields you will receive that will be needed below in your workflow.
-* Configure authentication (coming soon).
+* O fluxo de trabalho fornece uma URL de webhook exclusiva — copie-a e adicione-a ao seu sistema externo como o endpoint a ser chamado.
+* Para requisições POST, defina a estrutura de corpo esperada para que o Twenty saiba quais dados esperar. Adicione aqui os campos que você receberá e que serão necessários abaixo no seu fluxo de trabalho.
+* Configure a autenticação (em breve).
-## Choosing the Right Trigger
+## Escolhendo o Gatilho Correto
-| Use Case | Recommended Trigger |
-| --------------------------- | ---------------------------- |
-| New leads need processing | Record is Created |
-| Data changes need sync | Record is Updated |
-| Import/manual data handling | Record is Updated or Created |
-| Cleanup after deletion | Record is Deleted |
-| User-initiated action | Launch Manually |
-| Recurring reports | On a Schedule |
-| External integration | Webhook or On a Schedule |
+| Caso de uso | Gatilho recomendado |
+| --------------------------------------------- | ------------------------------- |
+| Novos leads precisam de processamento | Registro é Criado |
+| Alterações de dados precisam de sincronização | Registro é Atualizado |
+| Importação/manipulação manual de dados | Registro é Atualizado ou Criado |
+| Limpeza após exclusão | Registro é Excluído |
+| Ação iniciada pelo usuário | Iniciar Manualmente |
+| Relatórios recorrentes | Agendamento |
+| Integração externa | Webhook ou Em um cronograma |
diff --git a/packages/twenty-docs/l/pt/user-guide/workflows/capabilities/workflow-versions.mdx b/packages/twenty-docs/l/pt/user-guide/workflows/capabilities/workflow-versions.mdx
index 90dd74c73e..fa8b184cfe 100644
--- a/packages/twenty-docs/l/pt/user-guide/workflows/capabilities/workflow-versions.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/workflows/capabilities/workflow-versions.mdx
@@ -1,85 +1,85 @@
---
-title: Workflow Versions
-description: Manage workflow versions and drafts.
+title: Versões de Workflow
+description: Gerenciar versões e rascunhos de workflow.
image: /images/user-guide/workflows/workflow.png
---
-## About Versions
+## Sobre versões
-Every time you activate a workflow, a new version is created. This allows you to track changes over time and revert to previous configurations if needed.
+Sempre que você ativa um workflow, uma nova versão é criada. Isso permite acompanhar as alterações ao longo do tempo e reverter para configurações anteriores, se necessário.
-## Version Statuses
+## Status das versões
-| Status | Description |
-| --------------- | -------------------------------------- |
-| **Draft** | Being edited, not yet published |
-| **Active** | Live version responding to triggers |
-| **Deactivated** | Previously active but manually stopped |
-| **Archived** | Past versions kept for history |
+| Estado | Descrição |
+| -------------- | ------------------------------------------------- |
+| **Rascunho** | Sendo editado, ainda não publicado |
+| **Ativo** | Versão ao vivo respondendo a gatilhos |
+| **Desativado** | Anteriormente ativo, mas interrompido manualmente |
+| **Arquivado** | Versões passadas mantidas para histórico |
-## Working with Drafts
+## Trabalhando com rascunhos
-When you edit an active workflow, your changes are saved as a **draft**. The active version continues to run while you work on updates.
+Ao editar um workflow ativo, as alterações são salvas como um **rascunho**. A versão ativa continua em execução enquanto você trabalha nas atualizações.
-Once you're done editing, you can:
+Quando terminar de editar, você pode:
-* **Activate**: Publish the draft as the new active version (the previous version is archived)
-* **Discard**: Delete the draft and keep the current active version
+* **Ativar**: Publicar o rascunho como a nova versão ativa (a versão anterior é arquivada)
+* **Descartar**: Excluir o rascunho e manter a versão ativa atual
-## Version History
+## Histórico de Versões
-### Viewing Past Versions
+### Visualizando versões anteriores
-1. Open the workflow
-2. Click the **Versions** tab
-3. See all previous versions with timestamps
+1. Abra o workflow
+2. Clique na aba **Versões**
+3. Veja todas as versões anteriores com carimbos de data e hora
-### Restoring a Version
+### Restaurando uma versão
-1. Find the version you want to restore
-2. Click **Use as draft**
-3. The version is copied to a new draft
-4. Make any necessary updates
-5. Activate when ready
+1. Encontre a versão que deseja restaurar
+2. Clique em **Usar como rascunho**
+3. A versão é copiada para um novo rascunho
+4. Faça as atualizações necessárias
+5. Ative quando estiver pronto
-## Best Practices
+## Melhores Práticas
-### Version Management
+### Gerenciamento de versões
-* Activate only when ready for production
-* Keep meaningful changes between versions
-* Document major changes in workflow names or descriptions
-* Test in draft mode before activating
+* Ative somente quando estiver pronto para produção
+* Mantenha mudanças relevantes entre versões
+* Documente mudanças importantes em nomes ou descrições de workflows
+* Teste no modo de rascunho antes de ativar
-### Reverting Changes
+### Revertendo alterações
-* If a new version causes issues, restore the previous version
-* Use the version history to track what changed
-* Always test restored versions before activating
+* Se uma nova versão causar problemas, restaure a versão anterior
+* Use o histórico de versões para acompanhar o que mudou
+* Sempre teste versões restauradas antes de ativar
-## Common Workflows
+## Workflows comuns
-### Quick Edit
+### Edição rápida
-1. Make minor changes to an active workflow
-2. Test in draft mode
-3. Activate the new version
+1. Faça pequenas alterações em um workflow ativo
+2. Teste no modo de rascunho
+3. Ative a nova versão
-### Major Revision
+### Revisão importante
-1. Use the previous version as a starting point
-2. Make significant changes in draft
-3. Thoroughly test all scenarios
-4. Activate when confident
+1. Use a versão anterior como ponto de partida
+2. Faça alterações significativas no rascunho
+3. Teste minuciosamente todos os cenários
+4. Ative quando estiver confiante
-### Rollback
+### Reversão
-1. Identify the issue with the current version
-2. Find the last working version in history
-3. Click **Use as draft**
-4. Activate to restore the old behavior
+1. Identifique o problema na versão atual
+2. Encontre a última versão funcional no histórico
+3. Clique em **Usar como rascunho**
+4. Ative para restaurar o comportamento anterior
-## Related
+## Relacionados
-* [Getting Started with Workflows](/l/pt/user-guide/workflows/overview)
-* [Workflow Runs](/l/pt/user-guide/workflows/capabilities/workflow-runs)
+* [Primeiros passos com Workflows](/l/pt/user-guide/workflows/overview)
+* [Execuções de Workflows](/l/pt/user-guide/workflows/capabilities/workflow-runs)
diff --git a/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions.mdx b/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions.mdx
index bbc096202f..78bf9d44f4 100644
--- a/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions.mdx
@@ -1,24 +1,24 @@
---
-title: Handle Arrays in Code Actions
-description: Learn how to properly handle array inputs in workflow Code actions.
+title: Tratar arrays em ações de Código
+description: Aprenda a tratar corretamente entradas de array em ações de Código em fluxos de trabalho.
---
-When working with arrays in Code actions, you may encounter two common challenges:
+Ao trabalhar com arrays em ações de Código, você pode encontrar dois desafios comuns:
-1. **Arrays passed as strings** — data from external systems or previous steps arrives as a string instead of an actual array
-2. **Can't select individual items** — you can only select the entire array, not specific fields within it
+1. **Arrays passados como strings** — dados de sistemas externos ou de etapas anteriores chegam como uma string em vez de um array real
+2. **Não é possível selecionar itens individualmente** — você só consegue selecionar o array inteiro, não campos específicos dentro dele
-Both can be solved with a Code node.
+Ambos podem ser resolvidos com um nó de Código.
-## Parsing Arrays from Strings
+## Analisar arrays a partir de strings
-Arrays are often passed between workflow steps as strings or JSON rather than native arrays. This happens when:
+Com frequência, arrays são passados entre etapas do fluxo de trabalho como strings ou JSON, em vez de arrays nativos. Isso acontece quando:
-* Receiving data from external APIs via HTTP Request
-* Processing webhook payloads
-* Passing data between workflow steps
+* Recebendo dados de APIs externas via HTTP Request
+* Processando payloads de webhooks
+* Transmitindo dados entre etapas do fluxo de trabalho
-**Solution**: Add this pattern at the start of your Code action:
+**Solução**: Adicione este padrão no início da sua ação de Código:
```javascript
export const main = async (params: {
@@ -39,13 +39,13 @@ export const main = async (params: {
};
```
-The key line `typeof users === "string" ? JSON.parse(users) : users` checks if the input is a string, parses it if needed, or uses it directly if it's already an array.
+A linha chave `typeof users === "string" ? JSON.parse(users) : users` verifica se a entrada é uma string, faz o parse se necessário ou a utiliza diretamente se já for um array.
-## Extracting Individual Fields from Arrays
+## Extraindo campos individuais de arrays
-A webhook might return an array like `answers: [...]`, but in subsequent workflow steps you can only select the **entire array** — not individual items within it.
+Um webhook pode retornar um array como `answers: [...]`, mas, nas etapas seguintes do fluxo de trabalho, você só consegue selecionar o **array inteiro** — não itens individuais dentro dele.
-**Solution**: Add a Code node to extract specific fields and return them as a structured object:
+**Solução**: Adicione um nó de Código para extrair campos específicos e retorná-los como um objeto estruturado:
```javascript
export const main = async (params: {
@@ -71,12 +71,12 @@ export const main = async (params: {
};
```
-The Code node returns a structured object instead of an array. In subsequent steps, you can now select individual fields like `answer.firstname` and `answer.name` from the variable picker.
+O nó de Código retorna um objeto estruturado em vez de um array. Nas etapas subsequentes, agora você pode selecionar campos individuais como `answer.firstname` e `answer.name` no seletor de variáveis.
- We're actively working on making array handling easier in future updates.
+ Estamos trabalhando ativamente para tornar o tratamento de arrays mais fácil em atualizações futuras.
- Click the square icon at the top right of the code editor to display it in full screen — helpful since the default editor width is limited.
+ Clique no ícone quadrado no canto superior direito do editor de código para exibi-lo em tela cheia — útil, já que a largura padrão do editor é limitada.
diff --git a/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/connect-to-other-tools/bring-product-data-in-twenty.mdx b/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/connect-to-other-tools/bring-product-data-in-twenty.mdx
index 73edcdfc03..9dd4c04d11 100644
--- a/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/connect-to-other-tools/bring-product-data-in-twenty.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/connect-to-other-tools/bring-product-data-in-twenty.mdx
@@ -1,31 +1,31 @@
---
-title: Bring Product Data into Twenty
-description: Sync product catalog data from a data warehouse into your CRM on a schedule.
+title: Traga dados de produtos para o Twenty
+description: Sincronize, de forma agendada, os dados do catálogo de produtos do seu armazém de dados para o seu CRM.
---
-Use this pattern to keep Twenty in sync with product data from your data warehouse (e.g., Snowflake, BigQuery, PostgreSQL).
+Use este padrão para manter o Twenty sincronizado com os dados de produtos do seu armazém de dados (por exemplo, Snowflake, BigQuery, PostgreSQL).
-## Workflow Structure
+## Estrutura do Fluxo de Trabalho
-1. **Trigger**: On a Schedule
-2. **Code**: Query your data warehouse
-3. **Code** (optional): Format data as array
-4. **Iterator**: Loop through each product
-5. **Upsert Record**: Create or update in Twenty
+1. **Gatilho**: De forma agendada
+2. **Código**: Consultar seu armazém de dados
+3. **Código** (opcional): Formatar os dados como array
+4. **Iterador**: Percorrer cada produto
+5. **Inserir/atualizar registro**: Criar ou atualizar no Twenty
-## Step 1: Schedule the Trigger
+## Etapa 1: Agendar o gatilho
-Set the workflow to run at a frequency matching your data freshness needs:
+Defina o fluxo de trabalho para executar em uma frequência que atenda às suas necessidades de atualização dos dados:
-* Every 5 minutes for near real-time sync
-* Every hour for less critical data
-* Daily for batch updates
+* A cada 5 minutos para sincronização quase em tempo real
+* A cada hora para dados menos críticos
+* Diariamente para atualizações em lote
-## Step 2: Query Your Data Warehouse
+## Etapa 2: Consultar seu armazém de dados
-Add a **Code** action to fetch recent data:
+Adicione uma ação de **Código** para buscar dados recentes:
```javascript
export const main = async () => {
@@ -54,14 +54,14 @@ export const main = async () => {
```
- Filter by `updated_at >= last X minutes` to retrieve only recently changed records. This keeps the sync efficient.
+ Filtre por `updated_at >= last X minutes` para recuperar apenas registros alterados recentemente. Isso mantém a sincronização eficiente.
-## Step 3: Format Data (Optional)
+## Etapa 3: Formatar os dados (opcional)
-If your warehouse returns data in a format that needs transformation, add another **Code** action. Common transformations include type conversions, field renaming, and data cleanup.
+Se o seu armazém de dados retornar dados em um formato que precise de transformação, adicione outra ação de **Código**. Transformações comuns incluem conversões de tipo, renomeação de campos e limpeza de dados.
-### Example: User Data with Boolean and Status Fields
+### Exemplo: Dados de usuário com campos booleanos e de status
```javascript
export const main = async (params: {
@@ -86,7 +86,7 @@ export const main = async (params: {
};
```
-### Example: Product Data with Type Conversions
+### Exemplo: Dados de produto com conversões de tipo
```javascript
export const main = async (params: { products: any }) => {
@@ -107,7 +107,7 @@ export const main = async (params: { products: any }) => {
};
```
-### Example: Date and Currency Formatting
+### Exemplo: Formatação de data e moeda
```javascript
export const main = async (params: { deals: any }) => {
@@ -131,52 +131,52 @@ export const main = async (params: { deals: any }) => {
};
```
-### Common Transformations
+### Transformações comuns
-| Source Format | Target Format | Code |
-| -------------------- | ---------------- | ---------------------------------------- |
-| `"true"` / `"false"` | `true` / `false` | `v === true \|\| v === "true"` |
-| `"123.45"` | `123.45` | `parseFloat(value)` |
-| `"active"` | `"ACTIVE"` | `value.toUpperCase()` |
-| `1704067200` (Unix) | ISO date | `new Date(v * 1000).toISOString()` |
-| `"$1,234.56"` | `1234.56` | `parseFloat(v.replace(/[^0-9.-]/g, ""))` |
-| `null` / `undefined` | `""` | `value \|\| ""` |
+| Formato de origem | Formato de destino | Código |
+| -------------------- | ------------------ | ---------------------------------------- |
+| `"true"` / `"false"` | `true` / `false` | `v === true \|\| v === "true"` |
+| `"123.45"` | `123.45` | `parseFloat(value)` |
+| `"active"` | `"ACTIVE"` | `value.toUpperCase()` |
+| `1704067200` (Unix) | Data ISO | `new Date(v * 1000).toISOString()` |
+| `"$1,234.56"` | `1234.56` | `parseFloat(v.replace(/[^0-9.-]/g, ""))` |
+| `null` / `undefined` | `""` | `value \|\| ""` |
-## Step 4: Iterate Through Products
+## Etapa 4: Iterar pelos produtos
-Add an **Iterator** action:
+Adicione uma ação de **Iterador**:
-* Input: `{{code.products}}`
+* Entrada: `{{code.products}}`
-This loops through each product in the array.
+Isso percorre cada produto no array.
-## Step 5: Upsert Each Record
+## Etapa 5: Inserir/atualizar cada registro
-Inside the iterator, add an **Upsert Record** action:
+Dentro do iterador, adicione uma ação de **Inserir/atualizar registro**:
-| Setting | Value |
-| ------------ | -------------------------------------- |
-| **Object** | Your custom Product object |
-| **Match by** | External ID or SKU (unique identifier) |
-| **Name** | `{{iterator.item.name}}` |
-| **SKU** | `{{iterator.item.sku}}` |
-| **Price** | `{{iterator.item.price}}` |
+| Configuração | Valor |
+| ----------------------- | --------------------------------------- |
+| **Objeto** | Seu objeto Produto personalizado |
+| **Correspondência por** | ID externo ou SKU (identificador único) |
+| **Nome** | `{{iterator.item.name}}` |
+| **SKU** | `{{iterator.item.sku}}` |
+| **Preço** | `{{iterator.item.price}}` |
- Use **Upsert** (update or create) instead of building separate branches for create vs. update. It's faster to build and easier to debug.
+ Use **inserir/atualizar** (atualizar ou criar) em vez de construir ramificações separadas para criação vs. atualização. É mais rápido de construir e mais fácil de depurar.
-## Example Use Cases
+## Casos de uso de exemplo
-| Source | Data |
-| ----------------------- | ----------------------------------- |
-| **ERP system** | Product catalog, pricing, inventory |
-| **E-commerce platform** | Orders, customers, product updates |
-| **Data warehouse** | Aggregated metrics, enriched data |
-| **Inventory system** | Stock levels, reorder alerts |
+| Fonte | Data |
+| ---------------------------- | ------------------------------------------- |
+| **Sistema ERP** | Catálogo de produtos, preços, inventário |
+| **Plataforma de e-commerce** | Pedidos, clientes, atualizações de produtos |
+| **Armazém de dados** | Métricas agregadas, dados enriquecidos |
+| **Sistema de inventário** | Níveis de estoque, alertas de reposição |
-## Related
+## Relacionados
-* [Workflow Triggers](/l/pt/user-guide/workflows/capabilities/workflow-triggers)
-* [Workflow Actions](/l/pt/user-guide/workflows/capabilities/workflow-actions)
-* [Handle Arrays in Code Actions](/l/pt/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions)
+* [Gatilhos de Fluxo de Trabalho](/l/pt/user-guide/workflows/capabilities/workflow-triggers)
+* [Ações de Fluxo de Trabalho](/l/pt/user-guide/workflows/capabilities/workflow-actions)
+* [Lidar com arrays em ações de código](/l/pt/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions)
diff --git a/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/connect-to-other-tools/bring-typeform-submissions-in-twenty.mdx b/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/connect-to-other-tools/bring-typeform-submissions-in-twenty.mdx
index 7258e81dea..374f29b1e2 100644
--- a/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/connect-to-other-tools/bring-typeform-submissions-in-twenty.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/connect-to-other-tools/bring-typeform-submissions-in-twenty.mdx
@@ -1,27 +1,27 @@
---
-title: Bring Typeform Submissions into Twenty
-description: Handle Typeform's webhook payload to create leads from form submissions.
+title: Importar envios do Typeform para o Twenty
+description: Trate a carga útil de webhook do Typeform para criar leads a partir de envios de formulários.
---
-For standard webhook setup, see [Set Up a Webhook Trigger](/l/pt/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger). This article covers the specific handling required for Typeform's custom payload structure.
+Para a configuração padrão de webhook, consulte [Configurar um gatilho de Webhook](/l/pt/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger). Este artigo aborda o tratamento específico necessário para a estrutura de carga útil personalizada do Typeform.
-### Step 1: Create a Webhook Workflow
+### Etapa 1: Criar um fluxo de trabalho de Webhook
-1. Go to **Settings → Workflows**
-2. Click **+ New Workflow**
-3. Select **Webhook** as the trigger
-4. Copy the webhook URL
+1. Vá para **Configurações → Fluxos de trabalho**
+2. Clique em **+ Novo fluxo de trabalho**
+3. Selecione **Webhook** como o gatilho
+4. Copie a URL do webhook
-### Step 2: Configure Typeform
+### Etapa 2: Configurar o Typeform
-1. In Typeform, open your form
-2. Go to **Connect → Webhooks**
-3. Paste your Twenty webhook URL
-4. Save
+1. No Typeform, abra seu formulário
+2. Vá para **Connect → Webhooks**
+3. Cole a URL do webhook do Twenty
+4. Salvar
-### Step 3: Understand the Typeform Payload
+### Etapa 3: Entender a carga útil do Typeform
-Typeform sends a nested JSON structure. Here's a simplified example:
+O Typeform envia uma estrutura JSON aninhada. Aqui está um exemplo simplificado:
```json
{
@@ -60,15 +60,15 @@ Typeform sends a nested JSON structure. Here's a simplified example:
}
```
-Key things to note:
+Pontos importantes a observar:
-* Form data is nested under `form_response`
-* **Answers are returned as an array**, not as named fields
-* Each answer includes the field type and title for reference
+* Os dados do formulário estão aninhados em `form_response`
+* **As respostas são retornadas como um array**, não como campos nomeados
+* Cada resposta inclui o tipo e o título do campo para referência
-### Step 4: Extract Fields from the Answers Array
+### Etapa 4: Extrair campos do array de respostas
-Since `answers` is an array, you can only select the entire array in subsequent steps — not individual fields. Add a **Code** action to extract the fields you need:
+Como `answers` é um array, você só pode selecionar o array inteiro nas etapas subsequentes — não campos individuais. Adicione uma ação de **Código** para extrair os campos necessários:
```javascript
export const main = async (params: {
@@ -100,31 +100,31 @@ export const main = async (params: {
};
```
-Now in subsequent steps, you can select `contact.firstName`, `contact.email`, etc. from the variable picker.
+Nas etapas subsequentes, agora você pode selecionar campos individuais como `contact.firstName` e `contact.email` no seletor de variáveis.
- For more details on handling arrays in Code actions, see [Handle Arrays in Code Actions](/l/pt/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions).
+ Para mais detalhes sobre como lidar com arrays, consulte [Tratar arrays em ações de código](/l/pt/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions).
-### Step 5: Create the Record
+### Etapa 5: Criar o registro
-Add a **Create Record** action:
+Adicione a ação **Criar registro**:
-| Field | Value |
-| -------------- | ---------------------------------------------------- |
-| **Object** | People |
-| **First Name** | `{{code.contact.firstName}}` |
-| **Last Name** | `{{code.contact.lastName}}` |
-| **Email** | `{{code.contact.email}}` |
-| **Company** | Search or create based on `{{code.contact.company}}` |
+| Campo | Valor |
+| ----------- | --------------------------------------------------------- |
+| **Objeto** | Pessoas |
+| **Nome** | `{{code.contact.firstName}}` |
+| **Apelido** | `{{code.contact.lastName}}` |
+| **Email** | `{{code.contact.email}}` |
+| **Empresa** | Pesquisar ou criar com base em `{{code.contact.company}}` |
-### Step 6: Test and Activate
+### Etapa 6: Testar e ativar
-1. Submit a test response in Typeform
-2. Check the workflow run to verify data was captured
-3. Activate the workflow
+1. Envie uma resposta de teste no Typeform
+2. Verifique a execução do fluxo de trabalho para verificar se os dados foram capturados
+3. Ative o fluxo de trabalho
-## Related
+## Relacionados
-* [Set Up a Webhook Trigger](/l/pt/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger)
-* [Handle Arrays in Code Actions](/l/pt/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions)
+* [Configurar um gatilho de Webhook](/l/pt/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger)
+* [Lidar com arrays em ações de código](/l/pt/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions)
diff --git a/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/connect-to-other-tools/generate-pdf-from-twenty.mdx b/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/connect-to-other-tools/generate-pdf-from-twenty.mdx
new file mode 100644
index 0000000000..685b31b940
--- /dev/null
+++ b/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/connect-to-other-tools/generate-pdf-from-twenty.mdx
@@ -0,0 +1,228 @@
+---
+title: Gerar um PDF a partir do Twenty
+description: Crie um fluxo de trabalho para gerar e anexar um PDF (como um orçamento) a um registo.
+---
+
+Gere automaticamente ou obtenha um PDF e anexe-o a um registo no Twenty. Isto é normalmente utilizado para criar orçamentos, faturas ou relatórios que estão associados a Empresas, Oportunidades ou outros objetos.
+
+## Visão Geral
+
+Este fluxo de trabalho utiliza um **Gatilho Manual** para que os utilizadores possam gerar um PDF a pedido para qualquer registo selecionado. Uma **Função serverless** trata de:
+
+1. Transferir o PDF a partir de um URL (de um serviço de geração de PDF)
+2. Carregar o ficheiro para o Twenty
+3. Criar um Anexo ligado ao registo
+
+## Pré-requisitos
+
+Antes de configurar o fluxo de trabalho:
+
+1. **Crie uma Chave de API**: Vá a **Definições → APIs** e crie uma nova chave de API. Vai precisar deste token para a função serverless.
+2. **Configure um serviço de geração de PDF** (opcional): Se quiser gerar PDFs dinamicamente (por exemplo, orçamentos), utilize um serviço como o Carbone, o PDFMonkey ou o DocuSeal para criar o PDF e obter um URL de transferência.
+
+## Configuração passo a passo
+
+### Etapa 1: Configurar o gatilho
+
+1. Vá a **Fluxos de Trabalho** e crie um novo fluxo de trabalho
+2. Selecione **Gatilho Manual**
+3. Escolha o objeto ao qual pretende anexar PDFs (por exemplo, **Empresa** ou **Oportunidade**)
+
+
+ Com um Gatilho Manual, os utilizadores podem executar este fluxo de trabalho utilizando um botão que aparece no canto superior direito quando um registo é selecionado, para gerar e anexar um PDF.
+
+
+### Passo 2: Adicionar uma Função serverless
+
+1. Adicione a ação **Função serverless**
+2. Crie uma nova função com o código abaixo
+3. Configure os parâmetros de entrada
+
+#### Parâmetros de Entrada
+
+| Parâmetro | Valor |
+| ----------- | ----------------------- |
+| `companyId` | `{{trigger.object.id}}` |
+
+
+ Se estiver a anexar a um objeto diferente (Pessoa, Oportunidade, etc.), renomeie o parâmetro em conformidade (por exemplo, `personId`, `opportunityId`) e atualize a função serverless.
+
+
+#### Código da Função serverless
+
+```typescript
+export const main = async (
+ params: { companyId: string },
+) => {
+ const { companyId } = params;
+
+ // Replace with your Twenty GraphQL endpoint
+ // Cloud: https://api.twenty.com/graphql
+ // Self-hosted: https://your-domain.com/graphql
+ const graphqlEndpoint = 'https://api.twenty.com/graphql';
+
+ // Replace with your API key from Settings → APIs
+ const authToken = 'YOUR_API_KEY';
+
+ // Replace with your PDF URL
+ // This could be from a PDF generation service or a static URL
+ const pdfUrl = 'https://your-pdf-service.com/generated-quote.pdf';
+ const filename = 'quote.pdf';
+
+ // Step 1: Download the PDF file
+ const pdfResponse = await fetch(pdfUrl);
+
+ if (!pdfResponse.ok) {
+ throw new Error(`Failed to download PDF: ${pdfResponse.status}`);
+ }
+
+ const pdfBlob = await pdfResponse.blob();
+ const pdfFile = new File([pdfBlob], filename, { type: 'application/pdf' });
+
+ // Step 2: Upload the file via GraphQL multipart upload
+ const uploadMutation = `
+ mutation UploadFile($file: Upload!, $fileFolder: FileFolder) {
+ uploadFile(file: $file, fileFolder: $fileFolder) {
+ path
+ }
+ }
+ `;
+
+ const uploadForm = new FormData();
+ uploadForm.append('operations', JSON.stringify({
+ query: uploadMutation,
+ variables: { file: null, fileFolder: 'Attachment' },
+ }));
+ uploadForm.append('map', JSON.stringify({ '0': ['variables.file'] }));
+ uploadForm.append('0', pdfFile);
+
+ const uploadResponse = await fetch(graphqlEndpoint, {
+ method: 'POST',
+ headers: { Authorization: `Bearer ${authToken}` },
+ body: uploadForm,
+ });
+
+ const uploadResult = await uploadResponse.json();
+
+ if (uploadResult.errors?.length) {
+ throw new Error(`Upload failed: ${uploadResult.errors[0].message}`);
+ }
+
+ const filePath = uploadResult.data?.uploadFile?.path;
+
+ if (!filePath) {
+ throw new Error('No file path returned from upload');
+ }
+
+ // Step 3: Create the attachment linked to the company
+ const attachmentMutation = `
+ mutation CreateAttachment($data: AttachmentCreateInput!) {
+ createAttachment(data: $data) {
+ id
+ name
+ }
+ }
+ `;
+
+ const attachmentResponse = await fetch(graphqlEndpoint, {
+ method: 'POST',
+ headers: {
+ Authorization: `Bearer ${authToken}`,
+ 'Content-Type': 'application/json',
+ },
+ body: JSON.stringify({
+ query: attachmentMutation,
+ variables: {
+ data: {
+ name: filename,
+ fullPath: filePath,
+ companyId,
+ },
+ },
+ }),
+ });
+
+ const attachmentResult = await attachmentResponse.json();
+
+ if (attachmentResult.errors?.length) {
+ throw new Error(`Attachment creation failed: ${attachmentResult.errors[0].message}`);
+ }
+
+ return attachmentResult.data?.createAttachment;
+};
+```
+
+### Passo 3: Personalizar para o seu caso de utilização
+
+#### Para anexar a um objeto diferente
+
+Substitua `companyId` pelo campo apropriado:
+
+| Objeto | Nome do Campo |
+| -------------------- | -------------------- |
+| Empresa | `companyId` |
+| Pessoa | `personId` |
+| Oportunidade | `opportunityId` |
+| Objeto personalizado | `yourCustomObjectId` |
+
+Atualize tanto o parâmetro da função como o objeto `variables.data` na mutação de anexo.
+
+#### Para utilizar um URL de PDF dinâmico
+
+Se utilizar um serviço de geração de PDF, pode:
+
+1. Primeiro, faça uma ação de Pedido HTTP para gerar o PDF
+2. Passe o URL do PDF devolvido para a função serverless como parâmetro
+
+```typescript
+export const main = async (
+ params: { companyId: string; pdfUrl: string; filename: string },
+) => {
+ const { companyId, pdfUrl, filename } = params;
+ // ... rest of the function
+};
+```
+
+### Etapa 4: Testar e ativar
+
+1. Guarde o fluxo de trabalho
+2. Aceda a um registo de Empresa
+3. Clique no menu **⋮** e selecione o seu fluxo de trabalho
+4. Verifique a secção **Anexos** no registo para confirmar que o PDF foi anexado
+5. Ative o fluxo de trabalho
+
+## Combinar com Serviços de Geração de PDF
+
+Para criar orçamentos ou faturas dinâmicos:
+
+### Exemplo: Gerar Orçamento → Anexar PDF
+
+| Etapa | Ação | Finalidade |
+| ----- | ------------------------ | ------------------------------------------------------ |
+| 1 | Gatilho Manual (Empresa) | O utilizador inicia num registo |
+| 2 | Pesquisar Registo | Obter detalhes da Oportunidade ou dos itens de linha |
+| 3 | Requisição HTTP | Chamar a API de geração de PDF com os dados do registo |
+| 4 | Função serverless | Transferir e anexar o PDF gerado |
+
+### Serviços Populares de Geração de PDF
+
+* **Carbone** - Geração de documentos baseada em modelos
+* **PDFMonkey** - Criação dinâmica de PDF a partir de modelos
+* **DocuSeal** - Plataforma de automatização de documentos
+* **Documint** - Geração de documentos orientada a API
+
+Cada serviço fornece uma API que devolve um URL de PDF, que pode depois passar para a função serverless.
+
+## Resolução de Problemas
+
+| Problema | Solução |
+| --------------------------- | ---------------------------------------------------------------------------- |
+| "Falha ao transferir PDF" | Verifique se o URL do PDF é acessível e devolve um PDF válido |
+| "Falha ao carregar" | Verifique se a sua chave de API é válida e tem permissões de escrita |
+| "Falha na criação do anexo" | Garanta que o nome do campo de ID do objeto corresponde ao objeto de destino |
+
+## Relacionados
+
+* [Gatilhos de Fluxo de Trabalho](/l/pt/user-guide/workflows/capabilities/workflow-triggers)
+* [Funções serverless](/l/pt/user-guide/workflows/capabilities/workflow-actions#serverless-function)
+* [Gerar um Orçamento ou Fatura a partir do Twenty](/l/pt/user-guide/workflows/how-tos/connect-to-other-tools/generate-quote-or-invoice-from-twenty)
diff --git a/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/connect-to-other-tools/generate-quote-or-invoice-from-twenty.mdx b/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/connect-to-other-tools/generate-quote-or-invoice-from-twenty.mdx
index 696ebfcecc..e8efb122ea 100644
--- a/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/connect-to-other-tools/generate-quote-or-invoice-from-twenty.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/connect-to-other-tools/generate-quote-or-invoice-from-twenty.mdx
@@ -1,52 +1,52 @@
---
-title: Generate a Quote or Invoice from Twenty
-description: Automatically create invoices in external tools when deals close.
+title: Gerar um orçamento ou fatura no Twenty
+description: Crie faturas automaticamente em ferramentas externas quando os negócios forem fechados.
---
-Automatically send deal data to your invoicing system (Stripe, QuickBooks, Xero, etc.) when an opportunity is won.
+Envie automaticamente os dados do negócio para o seu sistema de faturação (Stripe, QuickBooks, Xero, etc.) quando uma oportunidade é ganha.
-## Workflow Structure
+## Estrutura do Fluxo de Trabalho
-1. **Trigger**: Record is Updated (Opportunity)
-2. **Filter**: Stage = Closed Won
-3. **Search Record**: Get Company details
-4. **Code** (optional): Format payload
-5. **HTTP Request**: Send to invoicing system
+1. **Gatilho**: Registo é atualizado (Oportunidade)
+2. **Filtro**: Etapa = Closed Won
+3. **Pesquisar Registo**: Obter detalhes da empresa
+4. **Código** (opcional): Formatar o payload
+5. **Pedido HTTP**: Enviar para o sistema de faturação
-## Step 1: Set Up the Trigger
+## Etapa 1: Configurar o Gatilho
-1. Create a new workflow
-2. Select **Record is Updated** trigger
-3. Choose **Opportunity** as the object
+1. Crie um novo fluxo de trabalho
+2. Selecione o gatilho **Registo é atualizado**
+3. Escolha **Oportunidade** como o objeto
-## Step 2: Filter for Closed Won
+## Etapa 2: Filtrar por Closed Won
-Add a **Filter** action to only continue when the deal is won:
+Adicione uma ação de **Filtro** para só continuar quando o negócio for ganho:
-| Setting | Value |
-| ------------- | --------------------------------- |
-| **Field** | Stage |
-| **Condition** | Equals |
-| **Value** | `CLOSED_WON` (or your stage name) |
+| Configuração | Valor |
+| ------------ | ------------------------------------- |
+| **Campo** | Etapa |
+| **Condição** | Igual a |
+| **Valor** | `CLOSED_WON` (ou o nome da sua etapa) |
- The trigger fires on any Opportunity update. The Filter ensures the workflow only continues when the stage changes to Closed Won.
+ O gatilho é acionado em qualquer atualização de Oportunidade. O Filtro garante que o fluxo de trabalho só continue quando a etapa mudar para Closed Won.
-## Step 3: Get Company Details
+## Etapa 3: Obter detalhes da empresa
-The Opportunity record may not include all Company fields you need for the invoice. Add a **Search Record** action:
+O registo de Oportunidade pode não incluir todos os campos da Empresa de que precisa para a fatura. Adicione uma ação de **Pesquisar Registo**:
-| Setting | Value |
-| ------------ | ---------------------------------------- |
-| **Object** | Company |
-| **Match by** | ID equals `{{trigger.object.companyId}}` |
+| Configuração | Valor |
+| ----------------------- | ----------------------------------------- |
+| **Objeto** | Empresa |
+| **Correspondência por** | ID igual a `{{trigger.object.companyId}}` |
-This retrieves the full Company record with billing address, tax ID, etc.
+Isto obtém o registo completo da Empresa com morada de faturação, NIF, etc.
-## Step 4: Format the Payload (Optional)
+## Etapa 4: Formatar o Payload (Opcional)
-If your invoicing system expects a specific format, add a **Code** action:
+Se o seu sistema de faturação esperar um formato específico, adicione uma ação de **Código**:
```javascript
export const main = async (params: {
@@ -84,18 +84,18 @@ export const main = async (params: {
};
```
-## Step 5: Send to Invoicing System
+## Etapa 5: Enviar para o Sistema de Faturação
-Add an **HTTP Request** action:
+Adicione uma ação de **Pedido HTTP**:
-| Setting | Value |
-| ----------- | ----------------------------------------- |
-| **Method** | POST |
-| **URL** | Your invoicing API endpoint |
-| **Headers** | `Authorization: Bearer YOUR_API_KEY` |
-| **Body** | `{{code.invoice}}` or map fields directly |
+| Configuração | Valor |
+| -------------- | -------------------------------------------------------------- |
+| **Método** | POST |
+| **URL** | O endpoint da API do seu sistema de faturação |
+| **Cabeçalhos** | `Authorization: Bearer YOUR_API_KEY` |
+| **Corpo** | `{{code.invoice}}` ou faça o mapeamento dos campos diretamente |
-### Example: Stripe Invoice
+### Exemplo: Fatura Stripe
```
POST https://api.stripe.com/v1/invoices
@@ -109,7 +109,7 @@ Body:
days_until_due: 30
```
-### Example: QuickBooks Invoice
+### Exemplo: Fatura QuickBooks
```
POST https://quickbooks.api.intuit.com/v3/company/{realmId}/invoice
@@ -120,24 +120,25 @@ Headers:
Body: {{code.invoice}}
```
-## Complete Workflow Summary
+## Resumo Completo do Fluxo de Trabalho
-| Step | Action | Purpose |
-| ---- | ----------------------- | ------------------------------------ |
-| 1 | Trigger: Record Updated | Fires when any Opportunity changes |
-| 2 | Filter | Only proceed if Stage = Closed Won |
-| 3 | Search Record | Get full Company details for billing |
-| 4 | Code | Format data for invoicing API |
-| 5 | HTTP Request | Create invoice in external system |
+| Etapa | Ação | Finalidade |
+| ----- | --------------------------- | -------------------------------------------------- |
+| 1 | Gatilho: Registo atualizado | Dispara quando qualquer Oportunidade é alterada |
+| 2 | Filtro | Só prossiga se Etapa = Closed Won |
+| 3 | Pesquisar Registo | Obter detalhes completos da Empresa para faturação |
+| 4 | Código | Formatar dados para a API de faturação |
+| 5 | Requisição HTTP | Criar fatura no sistema externo |
-## Tips
+## Dicas
-* **Store external IDs**: Save the invoice ID returned by the API back to the Opportunity using an **Update Record** action
-* **Error handling**: Add a branch to send a notification if the HTTP request fails
-* **Test first**: Use your invoicing system's sandbox/test mode before going live
+* **Armazene IDs externos**: Guarde o ID da fatura retornado pela API na Oportunidade usando uma ação de **Atualizar Registo**
+* **Tratamento de erros**: Adicione uma ramificação para enviar uma notificação se o pedido HTTP falhar
+* **Teste primeiro**: Use o modo sandbox/de teste do seu sistema de faturação antes de ir para produção
-## Related
+## Relacionados
-* [Workflow Triggers](/l/pt/user-guide/workflows/capabilities/workflow-triggers)
-* [Workflow Actions](/l/pt/user-guide/workflows/capabilities/workflow-actions)
-* [Closed Won Automations](/l/pt/user-guide/workflows/how-tos/crm-automations/closed-won-automations)
+* [Gerar um PDF a partir do Twenty](/l/pt/user-guide/workflows/how-tos/connect-to-other-tools/generate-pdf-from-twenty) — anexar PDFs gerados aos registros
+* [Gatilhos de Fluxo de Trabalho](/l/pt/user-guide/workflows/capabilities/workflow-triggers)
+* [Ações de Fluxo de Trabalho](/l/pt/user-guide/workflows/capabilities/workflow-actions)
+* [Automações de Closed Won](/l/pt/user-guide/workflows/how-tos/crm-automations/closed-won-automations)
diff --git a/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx b/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx
index 547a48e4f4..086b732edc 100644
--- a/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx
@@ -1,44 +1,44 @@
---
-title: Set Up a Webhook Trigger
-description: Receive data from external services to trigger workflows.
+title: Configurar um gatilho de Webhook
+description: Receba dados de serviços externos para acionar fluxos de trabalho.
image: /images/user-guide/workflows/workflow.png
---
-Webhook triggers allow external services to start your workflows by sending data to a unique URL. Use them to connect forms, third-party apps, and custom integrations.
+Gatilhos de Webhook permitem que serviços externos iniciem seus fluxos de trabalho enviando dados para uma URL exclusiva. Use-os para conectar formulários, aplicativos de terceiros e integrações personalizadas.
-## When to Use Webhooks
+## Quando usar Webhooks
-| Use Case | Example |
-| ----------------------- | --------------------------------------- |
-| **Web forms** | Contact form submissions create leads |
-| **Third-party apps** | Stripe payment → create customer record |
-| **Custom integrations** | Your app → Twenty automation |
-| **No-code tools** | Zapier, Make, n8n connections |
+| Caso de uso | Exemplo |
+| ------------------------------ | ----------------------------------------------- |
+| **Formulários da web** | Envios de formulários de contato geram leads |
+| **Aplicativos de terceiros** | Pagamento no Stripe → criar registro de cliente |
+| **Integrações personalizadas** | Seu aplicativo → automação no Twenty |
+| **Ferramentas no-code** | Conexões com Zapier, Make, n8n |
-## Step-by-Step Setup
+## Configuração passo a passo
-### Step 1: Create the Workflow
+### Etapa 1: Criar o fluxo de trabalho
-1. Go to **Settings → Workflows**
-2. Click **+ New Workflow**
-3. Name it (e.g., "Website Form Submission")
+1. Vá para **Configurações → Fluxos de trabalho**
+2. Clique em **+ Novo fluxo de trabalho**
+3. Dê um nome (por exemplo, "Envio de formulário do site")
-### Step 2: Configure the Webhook Trigger
+### Etapa 2: Configurar o gatilho de Webhook
-1. Click on the trigger block
-2. Select **Webhook**
-3. You'll receive a unique webhook URL like:
+1. Clique no bloco de gatilho
+2. Selecione **Webhook**
+3. Você receberá uma URL de webhook exclusiva, como:
```
https://api.twenty.com/webhooks/workflow/abc123...
```
-4. Copy this URL—you'll need it for your external service
+4. Copie esta URL—você vai precisar dela no seu serviço externo
-### Step 3: Define Expected Data Structure
+### Etapa 3: Definir a estrutura de dados esperada
-For **POST** requests, define the expected body structure:
+Para solicitações **POST**, defina a estrutura esperada do corpo:
-1. Click **Define expected body**
-2. Enter a sample JSON that matches what your service will send:
+1. Clique em **Definir corpo esperado**
+2. Insira um JSON de exemplo que corresponda ao que o seu serviço enviará:
```json
{
@@ -50,30 +50,30 @@ For **POST** requests, define the expected body structure:
}
```
-3. Click **Save**—this creates variables you can use in subsequent steps
+3. Clique em **Salvar**—isso cria variáveis que você pode usar nas etapas subsequentes
-### Step 4: Add Actions
+### Etapa 4: Adicionar ações
-Now add actions that use the webhook data:
+Agora adicione ações que usem os dados do webhook:
-**Example: Create a Person record**
+**Exemplo: Criar um registro de Pessoa**
-1. Add **Create Record** action
-2. Select **People** object
-3. Map fields:
+1. Adicione a ação **Criar registro**
+2. Selecione o objeto **Pessoas**
+3. Mapeie os campos:
-| Field | Value |
-| ---------- | ---------------------------------------------------- |
-| First Name | `{{trigger.body.firstName}}` |
-| Last Name | `{{trigger.body.lastName}}` |
-| Email | `{{trigger.body.email}}` |
-| Company | Search or create based on `{{trigger.body.company}}` |
+| Campo | Valor |
+| --------- | --------------------------------------------------------- |
+| Nome | `{{trigger.body.firstName}}` |
+| Sobrenome | `{{trigger.body.lastName}}` |
+| E-mail | `{{trigger.body.email}}` |
+| Empresa | Pesquisar ou criar com base em `{{trigger.body.company}}` |
-### Step 5: Test the Webhook
+### Etapa 5: Testar o Webhook
-Before activating, test your webhook:
+Antes de ativar, teste o seu webhook:
-**Using cURL**:
+**Usando cURL**:
```bash
curl -X POST https://api.twenty.com/webhooks/workflow/abc123... \
@@ -81,22 +81,22 @@ curl -X POST https://api.twenty.com/webhooks/workflow/abc123... \
-d '{"firstName":"Test","lastName":"User","email":"test@example.com"}'
```
-**Using Postman or similar**:
+**Usando o Postman ou similar**:
-1. Create a POST request to your webhook URL
-2. Set Content-Type header to `application/json`
-3. Add your test JSON body
-4. Send and check workflow runs
+1. Crie uma solicitação POST para a sua URL de webhook
+2. Defina o cabeçalho Content-Type como `application/json`
+3. Adicione o corpo JSON de teste
+4. Envie e verifique as execuções do fluxo de trabalho
-### Step 6: Activate
+### Etapa 6: Ativar
-Once tested, click **Activate** to make the workflow live.
+Depois de testar, clique em **Ativar** para ativar o fluxo de trabalho.
-## Handling Different Data Structures
+## Como lidar com diferentes estruturas de dados
-### Nested Data
+### Dados aninhados
-If your webhook sends nested data:
+Se o seu webhook enviar dados aninhados:
```json
{
@@ -108,11 +108,11 @@ If your webhook sends nested data:
}
```
-Reference with: `{{trigger.body.contact.email}}`
+Referencie com: `{{trigger.body.contact.email}}`
### Arrays
-If data includes arrays:
+Se os dados incluírem arrays:
```json
{
@@ -123,11 +123,11 @@ If data includes arrays:
}
```
-How you handle arrays depends on your use case:
+Como você lida com arrays depende do seu caso de uso:
-**Unknown number of items → Use Iterator**
+**Número desconhecido de itens → Use Iterator**
-If you need to process each item in the array (e.g., create a record for each), add a **Code** action to parse the array, then use **Iterator**:
+Se você precisar processar cada item no array (por exemplo, criar um registro para cada), adicione uma ação **Code** para analisar o array e, em seguida, use **Iterator**:
```javascript
export const main = async (params: { items: any }) => {
@@ -138,11 +138,11 @@ export const main = async (params: { items: any }) => {
};
```
-Then use Iterator to loop through: `{{code.items}}`
+Em seguida, use Iterator para percorrer: `{{code.items}}`
-**Known/specific fields → Extract to named fields**
+**Campos conhecidos/específicos → Extraia para campos nomeados**
-If the array contains specific fields you want to access individually (e.g., form answers where position 0 is always "first name", position 1 is always "last name"), add a **Code** action to extract them:
+Se o array contiver campos específicos aos quais você deseja acessar individualmente (por exemplo, respostas de formulário em que a posição 0 é sempre "nome", a posição 1 é sempre "sobrenome"), adicione uma ação **Code** para extraí-los:
```javascript
export const main = async (params: { items: any }) => {
@@ -159,13 +159,13 @@ export const main = async (params: { items: any }) => {
};
```
-Now you can select `product.name` and `product.qty` individually in subsequent steps.
+Agora você pode selecionar `product.name` e `product.qty` individualmente nas etapas subsequentes.
- For more details on handling arrays, see [Handle Arrays in Code Actions](/l/pt/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions).
+ Para mais detalhes sobre como lidar com arrays, consulte [Tratar arrays em ações de código](/l/pt/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions).
-## Related
+## Relacionados
-* [Workflow Triggers](/l/pt/user-guide/workflows/capabilities/workflow-triggers)
-* [Workflow Actions](/l/pt/user-guide/workflows/capabilities/workflow-actions)
+* [Gatilhos de Fluxo de Trabalho](/l/pt/user-guide/workflows/capabilities/workflow-triggers)
+* [Ações de Fluxo de Trabalho](/l/pt/user-guide/workflows/capabilities/workflow-actions)
diff --git a/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/crm-automations/closed-won-automations.mdx b/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/crm-automations/closed-won-automations.mdx
index 8f36dc82c5..e664e029d6 100644
--- a/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/crm-automations/closed-won-automations.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/crm-automations/closed-won-automations.mdx
@@ -1,85 +1,85 @@
---
-title: Closed Won Automations
-description: Automate post-win activities when opportunities close.
+title: Automatizações para Closed Won
+description: Automatize as atividades pós-ganho quando as oportunidades forem encerradas.
---
-When a deal closes, multiple things need to happen: update company status, notify team members, create onboarding tasks. Automate all of this with a single workflow.
+Quando um negócio é encerrado, várias coisas precisam acontecer: atualizar o status da empresa, notificar os membros da equipe, criar tarefas de onboarding. Automatize tudo isso com um único fluxo de trabalho.
-## The Problem
+## O Problema
-When an opportunity moves to "Closed Won":
+Quando uma oportunidade passa para "Closed Won":
-* Company type needs to change from "Prospect" to "Customer"
-* Onboarding tasks need to be created
-* Customer success team needs to be notified
-* Sales rep needs confirmation
+* O tipo de empresa precisa mudar de "Prospect" para "Customer"
+* Tarefas de onboarding precisam ser criadas
+* A equipe de Customer Success precisa ser notificada
+* O representante de vendas precisa de confirmação
-Doing this manually is time-consuming and error-prone.
+Fazer isso manualmente consome tempo e é suscetível a erros.
-## The Solution
+## A Solução
-Create a workflow that handles all post-win activities automatically.
+Crie um fluxo de trabalho que trate automaticamente todas as atividades pós-ganho.
-## Complete Workflow Setup
+## Configuração Completa do Fluxo de Trabalho
-### Step 1: Create the Workflow
+### Etapa 1: Criar o fluxo de trabalho
-1. Go to **Settings → Workflows**
-2. Click **+ New Workflow**
-3. Name it "Deal Won - Post-Win Automation"
+1. Vá para **Configurações → Fluxos de trabalho**
+2. Clique em **+ Novo fluxo de trabalho**
+3. Nomeie como "Deal Won - Post-Win Automation"
-### Step 2: Configure the Trigger
+### Etapa 2: Configurar o gatilho
-1. Select **Record is Updated**
-2. Choose **Opportunities**
-3. Under "Fields to monitor", select **Stage**
+1. Selecione **Record is Updated**
+2. Escolha **Oportunidades**
+3. Em "Campos para monitorar", selecione **Estágio**
-### Step 3: Add Stage Filter
+### Etapa 3: Adicionar filtro de estágio
-1. Add **Filter** action
-2. Condition: `{{trigger.object.stage}}` equals "Closed Won"
+1. Adicione a ação **Filtro**
+2. Condição: `{{trigger.object.stage}}` é igual a "Closed Won"
-### Step 4: Update Company Type
+### Etapa 4: Atualizar o tipo de empresa
-1. Add **Update Record** action
-2. Configure:
+1. Adicione a ação **Atualizar registro**
+2. Configurar:
-| Field | Value |
-| ------------------- | ------------------------------- |
-| **Object** | Companies |
-| **Record** | `{{trigger.object.company.id}}` |
-| **Type** | Customer |
-| **First Deal Date** | `{{trigger.object.closedAt}}` |
-| **Account Owner** | `{{trigger.object.owner.id}}` |
+| Campo | Valor |
+| ---------------------------- | ------------------------------- |
+| **Objeto** | Empresas |
+| **Registro** | `{{trigger.object.company.id}}` |
+| **Tipo** | Cliente |
+| **Data do primeiro negócio** | `{{trigger.object.closedAt}}` |
+| **Proprietário da Conta** | `{{trigger.object.owner.id}}` |
-### Step 5: Create Onboarding Task
+### Etapa 5: Criar tarefa de onboarding
-1. Add **Create Record** action
-2. Configure:
+1. Adicione a ação **Criar registro**
+2. Configurar:
-| Field | Value |
-| ----------------------- | ---------------------------------------------------------------------------------------------------- |
-| **Object** | Tasks |
-| **Title** | `Onboarding: {{trigger.object.name}}` |
-| **Assignee** | Customer Success team member |
-| **Due Date** | 3 days from now |
-| **Priority** | High |
-| **Related Company** | `{{trigger.object.company.id}}` |
-| **Related Opportunity** | `{{trigger.object.id}}` |
-| **Description** | `New customer onboarding for {{trigger.object.company.name}}. Deal value: {{trigger.object.amount}}` |
+| Campo | Valor |
+| ---------------------------- | -------------------------------------------------------------------------------------------------------------- |
+| **Objeto** | Tarefas |
+| **Título** | `Onboarding: {{trigger.object.name}}` |
+| **Responsável** | Membro da equipe de Customer Success |
+| **Data de vencimento** | Daqui a 3 dias |
+| **Prioridade** | Alta |
+| **Empresa relacionada** | `{{trigger.object.company.id}}` |
+| **Oportunidade relacionada** | `{{trigger.object.id}}` |
+| **Descrição** | `Onboarding de novo cliente para {{trigger.object.company.name}}. Valor do negócio: {{trigger.object.amount}}` |
-### Step 6: Notify Customer Success
+### Etapa 6: Notificar Customer Success
-1. Add **Send Email** action
-2. Configure:
+1. Adicione a ação **Enviar e-mail**
+2. Configurar:
-| Field | Value |
+| Campo | Valor |
| ----------- | -------------------------------------------------- |
-| **To** | customer-success@yourcompany.com |
-| **Subject** | `🎉 New Customer: {{trigger.object.company.name}}` |
-| **Body** | See example below |
+| **Para** | customer-success@yourcompany.com |
+| **Assunto** | `🎉 New Customer: {{trigger.object.company.name}}` |
+| **Corpo** | Veja o exemplo abaixo |
-**Email body example**:
+**Exemplo de corpo do e-mail**:
```
Hi CS Team,
@@ -97,44 +97,44 @@ An onboarding task has been created automatically.
Let's give them a great start!
```
-### Step 7: Confirm to Sales Rep
+### Etapa 7: Confirmar para o representante de vendas
-1. Add another **Send Email** action
-2. Configure:
+1. Adicione outra ação **Enviar e-mail**
+2. Configurar:
-| Field | Value |
-| ----------- | -------------------------------------------------------------------------------------------------------------------- |
-| **To** | `{{trigger.object.owner.email}}` |
-| **Subject** | `✅ Deal Closed: {{trigger.object.name}}` |
-| **Body** | Congratulations! Your deal has been processed. The customer success team has been notified and onboarding has begun. |
+| Campo | Valor |
+| ----------- | -------------------------------------------------------------------------------------------------------------- |
+| **Para** | `{{trigger.object.owner.email}}` |
+| **Assunto** | `✅ Deal Closed: {{trigger.object.name}}` |
+| **Corpo** | Parabéns! Seu negócio foi processado. A equipe de Customer Success foi notificada e o onboarding foi iniciado. |
-### Step 8: Test and Activate
+### Etapa 8: Testar e ativar
-1. Test by moving a test opportunity to "Closed Won"
-2. Verify:
- * Company type changed to "Customer"
- * Onboarding task created
- * CS team received email
- * Sales rep received confirmation
-3. Activate when ready
+1. Teste movendo uma oportunidade de teste para "Closed Won"
+2. Verificar:
+ * Tipo de empresa alterado para "Customer"
+ * Tarefa de onboarding criada
+ * A equipe de CS recebeu o e-mail
+ * O representante de vendas recebeu a confirmação
+3. Ative quando estiver pronto
-## Handling Closed Lost
+## Tratamento de Closed Lost
-Create a similar workflow for lost deals:
+Crie um fluxo de trabalho semelhante para negócios perdidos:
-### Trigger
+### Disparador
-* Record is Updated (Opportunities, Stage = "Closed Lost")
+* Registro é atualizado (Oportunidades, Estágio = "Closed Lost")
-### Actions
+### Ações
-1. **Create Record**: Task for "Lost Deal Analysis"
-2. **Update Record**: Add lost reason to company record
-3. **Send Email**: Notify manager of lost deal
+1. **Criar registro**: Tarefa para "Análise de negócio perdido"
+2. **Atualizar registro**: Adicionar o motivo da perda ao registro da empresa
+3. **Enviar e-mail**: Notificar o gerente sobre o negócio perdido
-## Advanced: Multi-Step Onboarding
+## Avançado: Onboarding em várias etapas
-For complex onboarding, create multiple tasks:
+Para um onboarding complexo, crie várias tarefas:
```javascript
export const main = async (params) => {
@@ -149,31 +149,31 @@ export const main = async (params) => {
};
```
-Use **Iterator** to create each task from the array.
+Use **Iterator** para criar cada tarefa a partir do array.
-## Customization Ideas
+## Ideias de personalização
-### Keep your other tools up-to-date
+### Mantenha suas outras ferramentas atualizadas
-* Create customer in billing system with an **HTTP Request**
+* Crie o cliente no sistema de faturamento com uma **Requisição HTTP**
-### Conditional Actions
+### Ações condicionais
-Use **Filter** actions to:
+Use ações **Filtro** para:
-* Different onboarding for enterprise vs SMB
-* Different assignees based on region
-* Skip notifications for small deals
+* Onboarding diferente para enterprise vs. SMB
+* Responsáveis diferentes com base na região
+* Ignorar notificações para negócios pequenos
-### Include Deal Details
+### Incluir detalhes do negócio
-Use **Code** action to format:
+Use a ação **Código** para formatar:
-* Deal summary documents
-* Handoff notes for CS team
-* Custom onboarding checklists
+* Documentos de resumo do negócio
+* Notas de repasse para a equipe de CS
+* Checklists de onboarding personalizadas
-## Related
+## Relacionados
-* [Workflow Actions](/l/pt/user-guide/workflows/capabilities/workflow-actions)
-* [Send Emails from Workflows](/l/pt/user-guide/workflows/capabilities/send-emails-from-workflows)
+* [Ações de Fluxo de Trabalho](/l/pt/user-guide/workflows/capabilities/workflow-actions)
+* [Enviar e-mails a partir de Fluxos de Trabalho](/l/pt/user-guide/workflows/capabilities/send-emails-from-workflows)
diff --git a/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/crm-automations/detect-stale-opportunities.mdx b/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/crm-automations/detect-stale-opportunities.mdx
index e8369fc9ff..8a6aa14283 100644
--- a/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/crm-automations/detect-stale-opportunities.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/crm-automations/detect-stale-opportunities.mdx
@@ -1,56 +1,56 @@
---
-title: Detect Stale Opportunities
-description: Automatically notify managers when opportunities haven't been updated.
+title: Detectar oportunidades estagnadas
+description: Notifique automaticamente os gestores quando as oportunidades não tiverem sido atualizadas.
---
-Keep your pipeline healthy by alerting managers when opportunities go stale. This workflow checks for opportunities that haven't been updated in a specified number of days.
+Mantenha o seu pipeline saudável alertando os gestores quando as oportunidades ficarem estagnadas. Este fluxo de trabalho verifica oportunidades que não foram atualizadas há um número específico de dias.
-## The Problem
+## O Problema
-Opportunities sitting without updates lead to:
+Oportunidades sem atualizações levam a:
-* Deals going cold
-* Unreliable forecasts
-* Lost revenue
+* Negócios a arrefecer
+* Previsões pouco fiáveis
+* Perda de receita
-## The Solution
+## A Solução
-Create a scheduled workflow that finds stale opportunities and emails their managers.
+Crie um fluxo de trabalho agendado que encontre oportunidades estagnadas e envie e-mails aos respetivos gestores.
-## Step-by-Step Setup
+## Configuração passo a passo
-### Step 1: Create the Workflow
+### Etapa 1: Criar o fluxo de trabalho
-1. Go to **Settings → Workflows**
-2. Click **+ New Workflow**
-3. Name it "Stale Opportunity Alert"
+1. Vá para **Configurações → Fluxos de trabalho**
+2. Clique em **+ Novo fluxo de trabalho**
+3. Dê o nome "Alerta de Oportunidade Estagnada"
-### Step 2: Configure the Trigger
+### Etapa 2: Configurar o gatilho
-1. Select **On a Schedule**
-2. Set to run daily (e.g., every day at 8 AM)
+1. Selecione **Agendado**
+2. Defina para executar diariamente (por exemplo, todos os dias às 08:00)
-### Step 3: Search for Stale Opportunities
+### Etapa 3: Pesquisar oportunidades estagnadas
-1. Add **Search Records** action
-2. Configure:
+1. Adicione a ação **Pesquisar Registos**
+2. Configurar:
-| Field | Value |
-| ---------- | ----------------------------------------------- |
-| **Object** | Opportunities |
-| **Filter** | Updated At is before (today - 7 days) |
-| **Filter** | Stage is not "Closed Won" AND not "Closed Lost" |
-| **Limit** | 100 |
+| Campo | Valor |
+| ---------- | --------------------------------------------- |
+| **Objeto** | Oportunidades |
+| **Filtro** | Atualizado em é anterior a (hoje - 7 dias) |
+| **Filtro** | Fase não é "Closed Won" E não é "Closed Lost" |
+| **Limite** | 100 |
-### Step 4: Check If Any Found
+### Etapa 4: Verificar se algum foi encontrado
-1. Add **Filter** action
-2. Condition: `{{searchRecords.length}}` is greater than 0
-3. If no stale opportunities, the workflow stops here
+1. Adicione a ação **Filtro**
+2. Condição: `{{searchRecords.length}}` é maior do que 0
+3. Se não houver oportunidades estagnadas, o fluxo de trabalho termina aqui
-### Step 5: Format the Alert (Code Action)
+### Etapa 5: Formatar o alerta (Ação de Código)
-Add a **Code** action to format the email:
+Adicione uma ação de **Código** para formatar o e-mail:
```javascript
export const main = async (params) => {
@@ -88,49 +88,49 @@ export const main = async (params) => {
};
```
-### Step 6: Send Alert Email
+### Etapa 6: Enviar e-mail de alerta
-Add **Send Email** action:
+Adicione a ação **Enviar e-mail**:
-| Field | Value |
-| ----------- | ----------------------------------------------------------- |
-| **To** | sales-manager@yourcompany.com |
-| **Subject** | `🚨 {{code.totalCount}} Stale Opportunities Need Attention` |
-| **Body** | `{{code.summary}}` |
+| Campo | Valor |
+| ----------- | --------------------------------------------------------------------- |
+| **Para** | sales-manager@yourcompany.com |
+| **Assunto** | `🚨 {{code.totalCount}} oportunidades estagnadas precisam de atenção` |
+| **Corpo** | `{{code.summary}}` |
-### Step 7: Test and Activate
+### Etapa 7: Testar e ativar
-1. Click **Test** to run the workflow
-2. Check that the email contains the right data
-3. Activate when ready
+1. Clique em **Testar** para executar o fluxo de trabalho
+2. Verifique se o e-mail contém os dados corretos
+3. Ative quando estiver pronto
-## Customization Options
+## Opções de personalização
-### Change Staleness Threshold
+### Alterar o limite de estagnação
-Modify the Search Records filter to change from 7 days to your preferred period:
+Modifique o filtro de Pesquisar Registos para alterar de 7 dias para o período da sua preferência:
-* 3 days for high-velocity sales
-* 14 days for enterprise deals
-* 30 days for long sales cycles
+* 3 dias para vendas de alto ritmo
+* 14 dias para negócios empresariais
+* 30 dias para ciclos de vendas longos
-### Alert Individual Reps
+### Alertar representantes individualmente
-Instead of one manager email, use **Iterator** to send personalized emails to each rep about their own stale deals.
+Em vez de um e-mail único para o gestor, use **Iterator** para enviar e-mails personalizados a cada representante sobre os seus próprios negócios estagnados.
-### Add Escalation
+### Adicionar escalonamento
-Create multiple workflows with increasing severity:
+Crie vários fluxos de trabalho com gravidade crescente:
-1. Day 7: Email to rep
-2. Day 14: Email to rep + manager
-3. Day 21: Create task for manager to intervene
+1. Dia 7: E-mail para o representante
+2. Dia 14: E-mail para o representante + gestor
+3. Dia 21: Criar tarefa para o gestor intervir
-### Include in Slack
+### Incluir no Slack
-Use **HTTP Request** to post to a Slack webhook instead of or in addition to email.
+Use **HTTP Request** para enviar para um webhook do Slack em vez de ou além do e-mail.
-## Related
+## Relacionados
-* [Workflow Actions](/l/pt/user-guide/workflows/capabilities/workflow-actions)
-* [Send Emails from Workflows](/l/pt/user-guide/workflows/capabilities/send-emails-from-workflows)
+* [Ações de Fluxo de Trabalho](/l/pt/user-guide/workflows/capabilities/workflow-actions)
+* [Enviar e-mails a partir de Fluxos de Trabalho](/l/pt/user-guide/workflows/capabilities/send-emails-from-workflows)
diff --git a/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/crm-automations/display-number-of-emails-received.mdx b/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/crm-automations/display-number-of-emails-received.mdx
index b7ff6ea725..81f111a4f6 100644
--- a/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/crm-automations/display-number-of-emails-received.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/crm-automations/display-number-of-emails-received.mdx
@@ -1,74 +1,74 @@
---
-title: Display Number of Emails Received
-description: Create a workflow to automatically count and display the number of emails received from each contact.
+title: Exibir o número de e-mails recebidos
+description: Crie um fluxo de trabalho para contar e exibir automaticamente o número de e-mails recebidos de cada contato.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-## Overview
+## Visão Geral
-This workflow triggers every time a new email is received and updates a custom field on the Person record with the total count of emails from that sender.
+Esse fluxo de trabalho é acionado sempre que um novo e-mail é recebido e atualiza um campo personalizado no registro de Pessoa com a contagem total de e-mails desse remetente.
-## Prerequisites
+## Pré-requisitos
-Before setting up this workflow, create a custom field on the **People** object:
+Antes de configurar esse fluxo de trabalho, crie um campo personalizado no objeto **Pessoas**:
-1. Go to **Settings → Data Model → People**
-2. Add a new **Number** field
-3. Name it something like "Number of emails received from this person"
+1. Vá para **Configurações → Modelo de Dados → Pessoas**
+2. Adicione um novo campo **Número**
+3. Dê a ele um nome como "Número de e-mails recebidos desta pessoa"
-## Step-by-Step Setup
+## Configuração passo a passo
-
+
-### Step 1: Configure the Trigger
+### Etapa 1: Configurar o gatilho
-1. Go to **Workflows** and create a new workflow
-2. Select **Record is Created** as the trigger
-3. Choose **Message Participants** (available under Advanced objects)
+1. Vá para **Fluxos de Trabalho** e crie um novo fluxo de trabalho
+2. Selecione **Registro é criado** como o gatilho
+3. Escolha **Participantes da Mensagem** (disponível em Objetos avançados)
- A Message Participant is a combination of a message ID and a person ID, creating one unique record per message. This is easier to track than Messages directly because we can access the `handle` field, which contains the sender's (or recipient's) email address.
+ Um Participante da Mensagem é a combinação de um ID de mensagem e um ID de pessoa, criando um registro exclusivo por mensagem. Isso é mais fácil de acompanhar do que Mensagens diretamente porque podemos acessar o campo `handle`, que contém o endereço de e-mail do remetente (ou do destinatário).
-### Step 2: Filter on Role
+### Etapa 2: Filtrar por função
-1. Add a **Filter** action
-2. Set the condition: **Role** equals **FROM**
+1. Adicione a ação **Filtro**
+2. Defina a condição: **Role** igual a **FROM**
-This ensures you only count messages sent by this person, not messages sent to them.
+Isso garante que você conte apenas as mensagens enviadas por essa pessoa, e não as mensagens enviadas para ela.
-### Step 3: Search All Message Participants with Same Handle
+### Etapa 3: Pesquisar todos os Participantes da Mensagem com o mesmo handle
-1. Add a **Search Records** action
-2. Select **Message Participants** as the object
-3. Add filters: **Handle** equals the handle from the trigger (the sender's email address) and **Role** equals **FROM**
-4. Increase the **Limit** from 1 to **200** (the maximum)
+1. Adicione a ação **Pesquisar Registros**
+2. Selecione **Participantes da Mensagem** como o objeto
+3. Adicione filtros: **Handle** igual ao handle do gatilho (o endereço de e-mail do remetente) e **Role** igual a **FROM**
+4. Aumente o **Limite** de 1 para **200** (o máximo)
-This finds all messages from this email address to get the total count.
+Isso encontra todas as mensagens desse endereço de e-mail para obter a contagem total.
- The Search Records action is limited to returning 200 records maximum. However, since you're only using the `totalCount` value (not the individual records), this step will return the total number of emails sent by this person.
+ A ação Pesquisar Registros é limitada a retornar no máximo 200 registros. No entanto, como você está usando apenas o valor `totalCount` (não os registros individuais), esta etapa retornará o número total de e-mails enviados por essa pessoa.
-### Step 4: Update the Person Record with a Create or Update Record action
+### Etapa 4: Atualizar o registro de Pessoa com uma ação Criar ou Atualizar Registro
-1. Add a **Create or Update Record** action
+1. Adicione a ação **Criar ou Atualizar Registro**
- Use **Upsert Record** instead of **Update Record** here. This lets you identify the person by their email address (the `handle` field) rather than requiring a record ID from a previous step.
+ Use **Upsert Record** em vez de **Update Record** aqui. Isso permite identificar a pessoa pelo endereço de e-mail dela (o campo `handle`), em vez de exigir um ID de registro de uma etapa anterior.
-2. Select **People** as the object
-3. Find the person by matching their email to the `handle` from the Message Participant
-4. Set your custom "Number of emails received" field to `{{searchRecords.totalCount}}`
+2. Selecione **Pessoas** como o objeto
+3. Encontre a pessoa cujo e-mail corresponde ao `handle` do Participante da Mensagem
+4. Defina seu campo personalizado "Número de e-mails recebidos" como `{{searchRecords.totalCount}}`
-The `totalCount` value from the Search Records action represents the total number of emails received from this person.
+O valor `totalCount` da ação Pesquisar Registros representa o número total de e-mails recebidos dessa pessoa.
-## Related
+## Relacionados
-* [Workflow Actions](/l/pt/user-guide/workflows/capabilities/workflow-actions)
-* [Create Custom Fields](/l/pt/user-guide/data-model/how-tos/customize-your-data-model)
-* [Search Records Action](/l/pt/user-guide/workflows/capabilities/workflow-actions#search-records)
+* [Ações de Fluxo de Trabalho](/l/pt/user-guide/workflows/capabilities/workflow-actions)
+* [Criar campos personalizados](/l/pt/user-guide/data-model/how-tos/customize-your-data-model)
+* [Ação Pesquisar Registros](/l/pt/user-guide/workflows/capabilities/workflow-actions#search-records)
diff --git a/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx b/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx
index e6a5d9af9b..64ea0c60ca 100644
--- a/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx
@@ -1,130 +1,130 @@
---
-title: Display Related Record Data
-description: Show data from related records (e.g., Company info on Opportunities) using workflows.
+title: Apresentar dados de registos relacionados
+description: Mostrar dados de registos relacionados (por exemplo, informações da Empresa em Oportunidades) usando fluxos de trabalho.
---
-Display data from related records directly on your records — for example, show the employee count from a Company on its Opportunities. This workflow workaround is useful until nested fields are natively available.
+Apresente dados de registos relacionados diretamente nos seus registos — por exemplo, mostre o número de funcionários de uma Empresa nas suas Oportunidades. Esta solução alternativa com fluxos de trabalho é útil até que os campos aninhados estejam disponíveis nativamente.
-## Common Use Cases
+## Casos de Uso Comuns
-| Source | Destination | Fields to Copy |
-| ----------- | ----------- | ------------------------------- |
-| Company | Opportunity | Industry, Company Size, ARR |
-| Person | Opportunity | Email, Phone, Title |
-| Opportunity | Company | Last Deal Amount, Last Won Date |
+| Fonte | Destino | Campos a Copiar |
+| ------------ | ------------ | ------------------------------------------------------- |
+| Empresa | Oportunidade | Setor, Tamanho da Empresa, ARR |
+| Pessoa | Oportunidade | Email, Telefone, Cargo |
+| Oportunidade | Empresa | Valor do Último Negócio, Data do Último Negócio Ganhado |
-## Basic Field Copy
+## Cópia Básica de Campo
-### Example: Copy Contact Email to Opportunity
+### Exemplo: Copiar Email do Contacto para a Oportunidade
-**Goal**: When setting a Point of Contact on an opportunity, copy their email to the opportunity for easy access.
+**Objetivo**: Ao definir um Ponto de Contacto numa oportunidade, copiar o email dessa pessoa para a oportunidade para acesso facilitado.
-### Prerequisite
+### Pré-requisito
-Create the destination fields in **Settings → Data Model → Opportunities** before building the workflow:
+Crie os campos de destino em **Definições → Modelo de Dados → Oportunidades** antes de construir o fluxo de trabalho:
-* Contact Email (type: Email)
-* Contact Phone (type: Phone)
+* Email do Contacto (tipo: Email)
+* Telefone do Contacto (tipo: Telefone)
-### Setup
+### Configuração
-1. **Trigger**: Record is Updated (Opportunities, Point of Contact field)
+1. **Gatilho**: Registo é atualizado (Oportunidades, campo Ponto de Contacto)
-2. **Filter**: Check that Point of Contact is not empty
+2. **Filtro**: Verificar que o Ponto de Contacto não está vazio
-3. **Search Records**: Find the linked person
- * Object: People
- * Filter: ID equals `{{trigger.object.pointOfContact.id}}`
+3. **Pesquisar Registos**: Encontrar a pessoa associada
+ * Objeto: Pessoas
+ * Filtro: ID igual a `{{trigger.object.pointOfContact.id}}`
-4. **Update Record**:
- * Object: Opportunities
- * Record: `{{trigger.object.id}}`
- * Contact Email: `{{searchRecords[0].email}}`
- * Contact Phone: `{{searchRecords[0].phone}}`
+4. **Atualizar Registo**:
+ * Objeto: Oportunidades
+ * Registo: `{{trigger.object.id}}`
+ * Email do Contacto: `{{searchRecords[0].email}}`
+ * Telefone do Contacto: `{{searchRecords[0].phone}}`
-## Copy Multiple Fields
+## Copiar Vários Campos
-### Example: Sync Company Info to All Related Opportunities
+### Exemplo: Sincronizar Informações da Empresa com Todas as Oportunidades Relacionadas
-**Goal**: When company details change, update all related opportunities.
+**Objetivo**: Quando os detalhes da empresa mudarem, atualizar todas as oportunidades relacionadas.
-### Setup
+### Configuração
-1. **Trigger**: Record is Updated (Companies)
- * Fields: Industry, Company Size, Annual Revenue
+1. **Gatilho**: Registo é atualizado (Empresas)
+ * Campos: Setor, Tamanho da Empresa, Receita Anual
-2. **Search Records**: Find all opportunities for this company
- * Object: Opportunities
- * Filter: Company ID equals `{{trigger.object.id}}`
+2. **Pesquisar Registos**: Encontrar todas as oportunidades desta empresa
+ * Objeto: Oportunidades
+ * Filtro: ID da Empresa igual a `{{trigger.object.id}}`
-3. **Iterator**: Loop through each opportunity
+3. **Iterador**: Percorrer cada oportunidade
-4. **Update Record** (inside iterator):
- * Object: Opportunities
- * Record: `{{iterator.currentItem.id}}`
- * Company Industry: `{{trigger.object.industry}}`
- * Company Size: `{{trigger.object.companySize}}`
- * Company ARR: `{{trigger.object.annualRevenue}}`
+4. **Atualizar Registo** (dentro do iterador):
+ * Objeto: Oportunidades
+ * Registo: `{{iterator.currentItem.id}}`
+ * Setor da Empresa: `{{trigger.object.industry}}`
+ * Tamanho da Empresa: `{{trigger.object.companySize}}`
+ * ARR da Empresa: `{{trigger.object.annualRevenue}}`
-## Copy on Record Creation
+## Copiar na Criação do Registo
-### Example: Pre-fill Opportunity with Company Data
+### Exemplo: Preencher a Oportunidade com Dados da Empresa
-**Goal**: When creating an opportunity linked to a company, automatically copy key company info.
+**Objetivo**: Ao criar uma oportunidade vinculada a uma empresa, copiar automaticamente as informações principais da empresa.
-### Prerequisite
+### Pré-requisito
-Create the destination fields in **Settings → Data Model → Opportunities**:
+Crie os campos de destino em **Definições → Modelo de Dados → Oportunidades**:
-* Company Industry (type: Text)
-* Company Size (type: Number)
+* Setor da Empresa (tipo: Texto)
+* Tamanho da Empresa (tipo: Número)
-### Setup
+### Configuração
-1. **Trigger**: Record is Created (Opportunities)
- * Filter: Company is not empty
+1. **Gatilho**: Registo é criado (Oportunidades)
+ * Filtro: Empresa não está vazia
-2. **Search Records**: Get the linked company's details
- * Object: Companies
- * Filter: ID equals `{{trigger.object.company.id}}`
+2. **Pesquisar Registos**: Obter os detalhes da empresa associada
+ * Objeto: Empresas
+ * Filtro: ID igual a `{{trigger.object.company.id}}`
-3. **Update Record**:
- * Object: Opportunities
- * Record: `{{trigger.object.id}}`
- * Company Industry: `{{searchRecords[0].industry}}`
- * Company Size: `{{searchRecords[0].employees}}`
+3. **Atualizar Registo**:
+ * Objeto: Oportunidades
+ * Registo: `{{trigger.object.id}}`
+ * Setor da Empresa: `{{searchRecords[0].industry}}`
+ * Tamanho da Empresa: `{{searchRecords[0].employees}}`
- **Tasks and Notes limitation**: Relations on Tasks and Notes are hardcoded as many-to-many and are not yet available in workflow triggers or actions. To access these relations, use the [API](/l/pt/developers/extend/capabilities/apis) instead.
+ **Limitação de Tarefas e Notas**: As relações em Tarefas e Notas são pré-definidas como muitos-para-muitos e ainda não estão disponíveis em gatilhos ou ações de fluxos de trabalho. Para aceder a estas relações, use a [API](/l/pt/developers/extend/capabilities/apis).
-## Bidirectional Sync
+## Sincronização Bidirecional
-### Example: Keep Primary Contact in Sync
+### Exemplo: Manter o Contacto Principal Sincronizado
-**Goal**: When a company's primary contact changes, update the contact. When a person becomes primary, update the company.
+**Objetivo**: Quando o contacto principal de uma empresa mudar, atualizar o contacto. Quando uma pessoa se tornar principal, atualizar a empresa.
-### Workflow 1: Company → Person
+### Fluxo de Trabalho 1: Empresa → Pessoa
-1. **Trigger**: Record is Updated (Companies, Primary Contact field)
-2. **Update Record**: Set person's "Is Primary Contact" to true
-3. **Search Records**: Find previous primary contact
-4. **Update Record**: Set previous contact's "Is Primary Contact" to false
+1. **Gatilho**: Registo é atualizado (Empresas, campo Contacto Principal)
+2. **Atualizar Registo**: Definir "É Contacto Principal" da pessoa como verdadeiro
+3. **Pesquisar Registos**: Encontrar o contacto principal anterior
+4. **Atualizar Registo**: Definir "É Contacto Principal" do contacto anterior como falso
-### Workflow 2: Person → Company
+### Fluxo de Trabalho 2: Pessoa → Empresa
-1. **Trigger**: Record is Updated (People, Is Primary Contact = true)
-2. **Update Record**: Set company's Primary Contact to this person
+1. **Gatilho**: Registo é atualizado (Pessoas, É Contacto Principal = verdadeiro)
+2. **Atualizar Registo**: Definir o Contacto Principal da empresa para esta pessoa
- Be careful with bidirectional syncs to avoid infinite loops. Use filters to check if the value actually changed before updating.
+ Tenha cuidado com sincronizações bidirecionais para evitar ciclos infinitos. Use filtros para verificar se o valor realmente mudou antes de atualizar.
-## Using Code for Complex Mapping
+## Usar Código para Mapeamento Complexo
-### Example: Transform Data During Copy
+### Exemplo: Transformar Dados Durante a Cópia
-**Goal**: Copy and format phone number from person to opportunity.
+**Objetivo**: Copiar e formatar o número de telefone da pessoa para a oportunidade.
```javascript
export const main = async (params) => {
@@ -144,27 +144,27 @@ export const main = async (params) => {
};
```
-## Best Practices
+## Melhores Práticas
-### Avoid Loops
+### Evitar Ciclos
-* Don't create workflows that trigger each other endlessly
-* Use specific field conditions
-* Add checks to see if value actually changed
+* Não crie fluxos de trabalho que disparem uns aos outros indefinidamente
+* Use condições específicas de campo
+* Adicione verificações para ver se o valor realmente mudou
-### Handle Missing Data
+### Tratar Dados em Falta
-* Always check if source record exists before copying
-* Provide default values for optional fields
-* Use filters to skip when source field is empty
+* Verifique sempre se o registo de origem existe antes de copiar
+* Forneça valores predefinidos para campos opcionais
+* Use filtros para ignorar quando o campo de origem estiver vazio
-### Performance
+### Desempenho
-* Batch updates when copying to many records
-* Use scheduled workflows for bulk sync operations
-* Consider using Iterator for multiple record updates
+* Agrupe atualizações ao copiar para muitos registos
+* Use fluxos de trabalho agendados para operações de sincronização em massa
+* Considere usar o Iterador para atualizações de múltiplos registos
-## Related
+## Relacionados
-* [Workflow Actions](/l/pt/user-guide/workflows/capabilities/workflow-actions)
-* [Workflow Triggers](/l/pt/user-guide/workflows/capabilities/workflow-triggers)
+* [Ações de Fluxo de Trabalho](/l/pt/user-guide/workflows/capabilities/workflow-actions)
+* [Gatilhos de Fluxo de Trabalho](/l/pt/user-guide/workflows/capabilities/workflow-triggers)
diff --git a/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/crm-automations/formula-fields.mdx b/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/crm-automations/formula-fields.mdx
index 248c9faf55..c6eec59b97 100644
--- a/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/crm-automations/formula-fields.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/crm-automations/formula-fields.mdx
@@ -1,37 +1,37 @@
---
-title: Formula Fields
-description: Create formula fields using workflows until native support is available.
+title: Campos de Fórmula
+description: Crie campos de fórmula usando fluxos de trabalho até que o suporte nativo esteja disponível.
---
-Twenty doesn't yet support native formula fields yet (coming in 2026), but you can achieve the same result using workflows. This workaround lets you automatically calculate and populate field values—from simple concatenations to complex business logic.
+A Twenty ainda não oferece suporte nativo a campos de fórmula (chegando em 2026), mas você pode obter o mesmo resultado usando fluxos de trabalho. Esta solução alternativa permite calcular e preencher automaticamente os valores dos campos — de concatenações simples a lógica de negócios complexa.
-## Common Use Cases
+## Casos de Uso Comuns
-| Use Case | Formula Example |
-| ------------------- | --------------------------------- |
-| **Full name** | First Name + " " + Last Name |
-| **Expected amount** | Amount × Probability |
-| **Days until due** | Due Date - Today |
-| **Days in stage** | Today - Stage Entry Date |
-| **Lead score** | Points based on multiple criteria |
+| Caso de uso | Exemplo de fórmula |
+| ------------------------- | ----------------------------------- |
+| **Nome completo** | Nome + " " + Sobrenome |
+| **Valor esperado** | Valor × Probabilidade |
+| **Dias até o vencimento** | Data de vencimento - hoje |
+| **Dias na etapa** | Hoje - Data de entrada na etapa |
+| **Pontuação de lead** | Pontos com base em vários critérios |
- For a complete example of tracking time in pipeline stages, see [Track How Long Opportunities Stay in Each Stage](/l/pt/user-guide/views-pipelines/how-tos/track-time-in-stage).
+ Para um exemplo completo de rastreamento do tempo nas etapas do pipeline, consulte [Acompanhar por quanto tempo as oportunidades permanecem em cada etapa](/l/pt/user-guide/views-pipelines/how-tos/track-time-in-stage).
-## Basic Formula: Concatenation
+## Fórmula básica: Concatenação
-### Example: Auto-Fill Full Name
+### Exemplo: Preencher automaticamente o nome completo
-**Goal**: Automatically combine first and last name into a full name field.
+**Objetivo**: Combinar automaticamente nome e sobrenome em um campo de nome completo.
-### Setup
+### Configuração
-1. **Trigger**: Record is Updated or Created (People)
+1. **Gatilho**: Registro é atualizado ou criado (Pessoas)
-2. **Filter**: Check that first name or last name changed
+2. **Filtro**: Verifique se o nome ou o sobrenome foi alterado
-3. **Code action**:
+3. **Ação de código**:
```javascript
export const main = async (params) => {
@@ -45,21 +45,21 @@ export const main = async (params) => {
};
```
-4. **Update Record**: Set Full Name to `{{code.fullName}}`
+4. **Atualizar registro**: Definir Nome completo como `{{code.fullName}}`
-## Numeric Formula: Expected Amount
+## Fórmula numérica: Valor esperado
-### Example: Calculate Expected Revenue
+### Exemplo: Calcular a receita esperada
-**Goal**: Multiply opportunity amount by probability to get expected amount.
+**Objetivo**: Multiplicar o valor da oportunidade pela probabilidade para obter o valor esperado.
-See [How to Show Expected Amount in Pipeline](/l/pt/user-guide/views-pipelines/how-tos/show-expected-amount-in-pipeline) for the complete workflow.
+Consulte [Como mostrar o valor esperado no pipeline](/l/pt/user-guide/views-pipelines/how-tos/show-expected-amount-in-pipeline) para o fluxo de trabalho completo.
-### Quick Setup
+### Configuração rápida
-1. **Trigger**: Record is Updated (Opportunities, Amount OR Probability field)
+1. **Gatilho**: Registro é atualizado (Oportunidades, campo Valor OU Probabilidade)
-2. **Code action**:
+2. **Ação de código**:
```javascript
export const main = async (params) => {
@@ -71,19 +71,19 @@ export const main = async (params) => {
};
```
-3. **Update Record**: Set Expected Amount to `{{code.expectedAmount}}`
+3. **Atualizar registro**: Definir Valor esperado como `{{code.expectedAmount}}`
-## Date Formula: Days Calculation
+## Fórmula de data: Cálculo de dias
-### Example: Days Until Task Due
+### Exemplo: Dias até o vencimento da tarefa
-**Goal**: Calculate how many days remain until a task's due date.
+**Objetivo**: Calcular quantos dias faltam até a data de vencimento de uma tarefa.
-### Setup
+### Configuração
-1. **Trigger**: Record is Updated or Created (Tasks, Due Date field)
+1. **Gatilho**: Registro é atualizado ou criado (Tarefas, campo Data de vencimento)
-2. **Code action**:
+2. **Ação de código**:
```javascript
export const main = async (params) => {
@@ -102,23 +102,23 @@ export const main = async (params) => {
};
```
-3. **Update Record**: Set Days Until Due to `{{code.daysUntilDue}}`
+3. **Atualizar registro**: Definir Dias até o vencimento como `{{code.daysUntilDue}}`
- Negative values indicate overdue tasks. You can use this field to filter or sort tasks by urgency.
+ Valores negativos indicam tarefas em atraso. Você pode usar este campo para filtrar ou classificar tarefas por urgência.
-## Conditional Formula: Lead Score
+## Fórmula condicional: Pontuação de lead
-### Example: Calculate Lead Score Based on Criteria
+### Exemplo: Calcular a pontuação de lead com base em critérios
-**Goal**: Score leads based on company size, industry, and engagement.
+**Objetivo**: Pontuar leads com base no porte da empresa, setor e engajamento.
-### Setup
+### Configuração
-1. **Trigger**: Record is Updated (People or Companies)
+1. **Gatilho**: Registro é atualizado (Pessoas ou Empresas)
-2. **Code action**:
+2. **Ação de código**:
```javascript
export const main = async (params) => {
@@ -147,19 +147,19 @@ export const main = async (params) => {
};
```
-3. **Update Record**: Set Lead Score to `{{code.leadScore}}`
+3. **Atualizar registro**: Definir Pontuação de lead como `{{code.leadScore}}`
-## Text Formula: Domain Extraction
+## Fórmula de texto: Extração de domínio
-### Example: Extract Domain from Email
+### Exemplo: Extrair domínio do e-mail
-**Goal**: Automatically extract and store the email domain.
+**Objetivo**: Extrair e armazenar automaticamente o domínio do e-mail.
-### Setup
+### Configuração
-1. **Trigger**: Record is Updated (People, Email field)
+1. **Gatilho**: Registro é atualizado (Pessoas, campo E-mail)
-2. **Code action**:
+2. **Ação de código**:
```javascript
export const main = async (params) => {
@@ -173,30 +173,30 @@ export const main = async (params) => {
};
```
-3. **Update Record**: Set Domain field to `{{code.domain}}`
+3. **Atualizar registro**: Definir o campo Domínio como `{{code.domain}}`
-## Best Practices
+## Melhores Práticas
-### Performance
+### Desempenho
-* Only trigger on relevant field changes
-* Use filters to skip records that don't need calculation
-* Avoid complex calculations in high-volume workflows
+* Acione apenas em alterações de campos relevantes
+* Use filtros para ignorar registros que não precisam de cálculo
+* Evite cálculos complexos em fluxos de trabalho de alto volume
-### Error Handling
+### Tratamento de Erros
-* Check for null/undefined values before calculations
-* Use default values when data is missing
-* Return clear error messages when calculations fail
+* Verifique valores null/undefined antes dos cálculos
+* Use valores padrão quando faltarem dados
+* Retorne mensagens de erro claras quando os cálculos falharem
-### Testing
+### Testes
-* Test with edge cases (empty fields, zero values)
-* Verify calculations manually before activating
-* Monitor workflow runs for unexpected results
+* Teste com casos extremos (campos vazios, valores zero)
+* Verifique os cálculos manualmente antes de ativar
+* Monitore as execuções de fluxos de trabalho para resultados inesperados
-## Related
+## Relacionados
-* [How to Show Expected Amount in Pipeline](/l/pt/user-guide/views-pipelines/how-tos/show-expected-amount-in-pipeline)
-* [How to Track Time in Stage](/l/pt/user-guide/views-pipelines/how-tos/track-time-in-stage)
-* [Workflow Actions](/l/pt/user-guide/workflows/capabilities/workflow-actions)
+* [Como mostrar o valor esperado no pipeline](/l/pt/user-guide/views-pipelines/how-tos/show-expected-amount-in-pipeline)
+* [Como acompanhar o tempo na etapa](/l/pt/user-guide/views-pipelines/how-tos/track-time-in-stage)
+* [Ações de Fluxo de Trabalho](/l/pt/user-guide/workflows/capabilities/workflow-actions)
diff --git a/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/crm-automations/notify-teammates-of-note-to-review.mdx b/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/crm-automations/notify-teammates-of-note-to-review.mdx
new file mode 100644
index 0000000000..bd25eb3de7
--- /dev/null
+++ b/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/crm-automations/notify-teammates-of-note-to-review.mdx
@@ -0,0 +1,127 @@
+---
+title: Notificar colegas de equipe sobre uma nota para revisão
+description: Envie notificações automáticas por e-mail ao atribuir um colega para revisar uma nota.
+---
+
+import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
+
+
+ **Marcar colegas diretamente nas notas ainda não é suportado.** Esse recurso está planejado para o segundo semestre de 2026. Enquanto isso, este fluxo de trabalho oferece uma solução alternativa prática.
+
+
+## O desafio
+
+Você quer marcar um colega em uma nota para que receba uma notificação para revisá-la. Hoje, a Twenty não oferece suporte a @mentions em notas ou tarefas.
+
+## A solução alternativa
+
+Em vez de marcar no texto da nota, você pode:
+
+1. Crie um campo de relação **Revisor** no objeto Notas
+2. Atribua o revisor ao criar ou editar a nota
+3. Um fluxo de trabalho envia automaticamente um e-mail ao revisor com um link para a nota
+
+
+ **Limitação**: Esta abordagem permite atribuir um revisor por campo. Se você precisar notificar várias pessoas, crie campos de relação adicionais (por exemplo, Revisor 1, Revisor 2). Isso não escala bem se você precisar marcar muitos colaboradores de uma só vez.
+
+
+## Configuração passo a passo
+
+### Etapa 1: Criar o campo Revisor
+
+
+
+1. Vá para **Configurações → Modelo de Dados → Notas**
+2. Clique em **Adicionar campo**
+3. Configurar:
+
+| Configuração | Valor |
+| ---------------------- | ---------------------------------------------- |
+| **Nome** | Revisor |
+| **Tipo** | Relação |
+| **Objeto Relacionado** | Membro do Workspace |
+| **Tipo de Relação** | Muitas Notas → Um Membro do Espaço de Trabalho |
+
+4. Salve o campo
+
+### Etapa 2: Criar o fluxo de trabalho
+
+
+
+#### Criar o gatilho do fluxo de trabalho
+
+1. Vá para a visualização principal e crie um novo fluxo de trabalho
+2. Selecione **Registro atualizado** como o gatilho
+3. Escolha **Nota** como o objeto e especifique o campo Revisor.
+4. Isso será acionado sempre que o revisor de uma nota for atualizado.
+
+#### Adicione um filtro para verificar se o revisor acabou de ser atribuído
+
+Adicione uma ação de **Filtro** para garantir que o fluxo de trabalho só continue quando um revisor for atribuído:
+
+| Condição | Valor |
+| ----------- | -------------- |
+| **Revisor** | não está vazio |
+
+#### Pesquisar o Membro do Espaço de Trabalho
+
+1. Adicione uma ação **Pesquisar Registros**
+2. Selecione **Membro do Espaço de Trabalho** (em Objetos Avançados)
+3. Adicione um filtro:
+
+| Condição | Valor |
+| -------- | ------------------------------- |
+| **ID** | é igual a `{{note.reviewerId}}` |
+
+Isso recupera o registro completo do membro do espaço de trabalho, incluindo seu endereço de e-mail e nome.
+
+#### Enviar o e-mail de notificação
+
+1. Adicione uma ação **Enviar e-mail**
+2. Configurar:
+
+| Campo | Valor |
+| ----------- | -------------------------------------------------------------------------------- |
+| **Para** | Registro de pesquisa → Primeiro Membro do Espaço de Trabalho → E-mail do usuário |
+| **Assunto** | Uma nota precisa da sua revisão |
+| **Corpo** | Veja o exemplo abaixo |
+
+**Exemplo de corpo do e-mail:**
+
+```text
+Hi {{searchRecord.firstWorkspaceMember.name.firstName}},
+
+You've been assigned to review a note.
+
+View the note here:
+https://yourSubDomain.twenty.com/object/note/{{recordIsUpdated.id}}
+
+Best,
+Twenty
+```
+
+
+ Substitua `yourSubDomain` pelo subdomínio real do seu espaço de trabalho Twenty.
+
+
+#### Testar e ativar
+
+1. Clique em **Testar** para executar o fluxo de trabalho manualmente
+2. Crie ou edite uma nota e atribua um revisor
+3. Verifique a caixa de entrada do revisor para o e-mail de notificação
+4. Ative o fluxo de trabalho
+
+## Uso
+
+Depois de configurado, sua equipe pode usar este fluxo de trabalho:
+
+1. Criando uma nova nota (ou editando uma existente)
+2. Selecionando um colega no campo **Revisor**
+3. O colega recebe automaticamente um e-mail com um link direto para a nota
+
+## Relacionados
+
+* [Gatilhos de Fluxo de Trabalho](/l/pt/user-guide/workflows/capabilities/workflow-triggers)
+* [Enviar e-mails a partir de Fluxos de Trabalho](/l/pt/user-guide/workflows/capabilities/send-emails-from-workflows)
+* [Criar campos personalizados](/l/pt/user-guide/data-model/how-tos/create-custom-fields)
+* [Criar campos de relação](/l/pt/user-guide/data-model/how-tos/create-relation-fields)
diff --git a/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/crm-automations/send-email-alerts-with-tasks-due.mdx b/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/crm-automations/send-email-alerts-with-tasks-due.mdx
index b9b0b6d2fb..9729964ed8 100644
--- a/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/crm-automations/send-email-alerts-with-tasks-due.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/crm-automations/send-email-alerts-with-tasks-due.mdx
@@ -1,56 +1,56 @@
---
-title: Send Email Alerts with Tasks Due
-description: Automatically notify team members about their upcoming or overdue tasks.
+title: Enviar alertas por e-mail sobre tarefas com vencimento
+description: Notifique automaticamente os membros da equipe sobre suas tarefas próximas ou em atraso.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-Send daily email reminders to each team member about their tasks due today.
+Envie lembretes diários por e-mail para cada membro da equipe sobre suas tarefas com vencimento hoje.
-## Overview
+## Visão Geral
-This workflow runs on a schedule and:
+Este fluxo de trabalho é executado conforme um cronograma e:
-1. Fetches all workspace members
-2. Loops through each member
-3. Finds their tasks due today
-4. Formats and sends a personalized email
+1. Busca todos os membros do espaço de trabalho
+2. Percorre cada membro
+3. Localiza suas tarefas com vencimento hoje
+4. Formata e envia um e-mail personalizado
-## Step-by-Step Setup
+## Configuração passo a passo
-
+
-### Step 1: Configure the Trigger
+### Etapa 1: Configurar o gatilho
-1. Go to **Settings → Workflows** and create a new workflow
-2. Select **On a Schedule** as the trigger
-3. Use a cron expression for daily at 8:00 AM: `0 8 * * *`
+1. Vá até **Configurações → Fluxos de Trabalho** e crie um novo fluxo de trabalho
+2. Selecione **Agendado** como o gatilho
+3. Use uma expressão cron para executar diariamente às 8:00: `0 8 * * *`
-### Step 2: Search for All Workspace Members
+### Etapa 2: Pesquisar todos os membros do espaço de trabalho
-1. Add a **Search Records** action
-2. Select **Workspace Members** (under advanced objects)
-3. No filters needed — this returns all members
+1. Adicione a ação **Pesquisar Registros**
+2. Selecione **Membros do Espaço de Trabalho** (em objetos avançados)
+3. Não são necessários filtros — isso retorna todos os membros
-### Step 3: Add an Iterator
+### Etapa 3: Adicionar um Iterador
-1. Add an **Iterator** action
-2. Set the input array to the workspace members from the previous step
-3. All actions inside the iterator will run once per member
+1. Adicione a ação **Iterador**
+2. Defina o array de entrada como os membros do espaço de trabalho da etapa anterior
+3. Todas as ações dentro do iterador serão executadas uma vez por membro
-### Step 4: Search for Tasks Due Today (Inside Iterator)
+### Etapa 4: Pesquisar tarefas com vencimento hoje (dentro do iterador)
-1. Inside the iterator, add a **Search Records** action
-2. Select **Tasks** as the object
-3. Add filters:
- * **Assignee** = current workspace member (from the iterator)
- * **Due Date** = today
+1. Dentro do iterador, adicione a ação **Pesquisar Registros**
+2. Selecione **Tarefas** como o objeto
+3. Adicione filtros:
+ * **Responsável** = membro atual do espaço de trabalho (do iterador)
+ * **Data de vencimento** = hoje
-### Step 5: Format Tasks into Email Body (Inside Iterator)
+### Etapa 5: Formatar as tarefas no corpo do e-mail (dentro do iterador)
-Add a **Code** action to format the tasks into a readable list with links:
+Adicione uma ação **Código** para formatar as tarefas em uma lista legível com links:
```javascript
export const main = async (params: {
@@ -79,28 +79,28 @@ export const main = async (params: {
```
- Replace `yourSubDomain` with your actual Twenty workspace subdomain.
+ Substitua `yourSubDomain` pelo subdomínio real do seu espaço de trabalho Twenty.
-### Step 6: Send Email (Inside Iterator)
+### Etapa 6: Enviar E-mail (dentro do iterador)
-1. Add a **Send Email** action (still inside the iterator)
-2. Configure:
+1. Adicione a ação **Enviar E-mail** (ainda dentro do iterador)
+2. Configurar:
-| Field | Value |
-| ----------- | --------------------------------------------------------------- |
-| **To** | `{{iterator.currentItem.userEmail}}` (workspace member's email) |
-| **Subject** | Your Tasks Due Today |
-| **Body** | `{{code.formattedTasks}}` |
+| Campo | Valor |
+| ----------- | ----------------------------------------------------------------------------- |
+| **Para** | `{{iterator.currentItem.userEmail}}` (e-mail do membro do espaço de trabalho) |
+| **Assunto** | Suas tarefas com vencimento hoje |
+| **Corpo** | `{{code.formattedTasks}}` |
-### Step 7: Test and Activate
+### Etapa 7: Testar e ativar
-1. Click **Test** to run the workflow manually
-2. Check inboxes for the emails
-3. Activate the workflow
+1. Clique em **Testar** para executar o fluxo de trabalho manualmente
+2. Verifique as caixas de entrada para os e-mails
+3. Ative o fluxo de trabalho
-## Related
+## Relacionados
-* [Workflow Actions](/l/pt/user-guide/workflows/capabilities/workflow-actions)
-* [Send Emails from Workflows](/l/pt/user-guide/workflows/capabilities/send-emails-from-workflows)
-* [Handle Arrays in Code Actions](/l/pt/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions)
+* [Ações de Fluxo de Trabalho](/l/pt/user-guide/workflows/capabilities/workflow-actions)
+* [Enviar e-mails a partir de Fluxos de Trabalho](/l/pt/user-guide/workflows/capabilities/send-emails-from-workflows)
+* [Lidar com arrays em ações de código](/l/pt/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions)
diff --git a/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/need-more-help/professional-services.mdx b/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/need-more-help/professional-services.mdx
index 674ca6229f..7a184939d1 100644
--- a/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/need-more-help/professional-services.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/need-more-help/professional-services.mdx
@@ -1,29 +1,29 @@
---
-title: Professional Services
-description: Get professional help building complex workflows and automations from Twenty's team and certified partners.
+title: Serviços Profissionais
+description: Obtenha ajuda profissional para construir fluxos de trabalho complexos e automações com a equipe do Twenty e parceiros certificados.
---
-## When Do You Need Professional Help?
+## Quando Você Precisa de Ajuda Profissional?
-Consider professional services for:
+Considere serviços profissionais para:
-* Complex multi-system integrations
-* Advanced business logic and automation rules
-* Large-scale data processing workflows
-* Custom API development
-* Team training and workflow optimization
-* When you don't have internal resources
+* Integrações complexas de múltiplos sistemas
+* Lógica de negócios avançada e regras de automação
+* Fluxos de trabalho de processamento de dados em larga escala
+* Desenvolvimento de API personalizado
+* Treinamento de equipe e otimização de fluxo de trabalho
+* Quando você não tem recursos internos
-## Service Options
+## Opções de Serviço
-### Onboarding Packs
+### Pacotes de Integração
-Get help from our core team with our 4-hour [Onboarding packs](https://twenty.com/onboarding-packages):
+Obtenha ajuda de nossa equipe principal com nossos pacotes de [Integração](https://twenty.com/onboarding-packages) de 4 horas:
-* **Workflow Creation**: Build custom workflows for your business processes
-* **Data Model Design**: Optimize your data structure for workflow automation
-* **Data Migration**: Import existing data with proper workflow integration
+* **Criação de Fluxos de Trabalho**: Construa fluxos de trabalho personalizados para seus processos de negócios
+* **Design do Modelo de Dados**: Otimize sua estrutura de dados para automação de fluxo de trabalho
+* **Migração de Dados**: Importe dados existentes com integração adequada de fluxo de trabalho
-### Implementation Partners
+### Parceiros de Implementação
-Work with certified partners for advanced customizations. Contact us at contact@twenty.com to connect with our [implementation partners](https://twenty.com/partners).
+Trabalhe com parceiros certificados para personalizações avançadas. Contate-nos em contact@twenty.com para conectar-se com nossos [parceiros de implementação](https://twenty.com/partners).
diff --git a/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/need-more-help/workflow-troubleshooting.mdx b/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/need-more-help/workflow-troubleshooting.mdx
index b243fc4acb..2d2ba25de6 100644
--- a/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/need-more-help/workflow-troubleshooting.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/need-more-help/workflow-troubleshooting.mdx
@@ -1,170 +1,170 @@
---
-title: Workflow Troubleshooting
-description: Common workflow issues and how to resolve them.
+title: Solução de Problemas do Workflow
+description: Problemas comuns de fluxos de trabalho e como resolvê-los.
---
-## Common Issues and Solutions
+## Problemas Comuns e Soluções
-### Workflow Not Triggering
+### Workflow Não Dispara
-**Symptoms**: Your workflow doesn't run when you expect it to.
+**Sintomas**: Seu fluxo de trabalho não é executado quando você espera.
-**Possible Causes**:
+**Possíveis causas**:
-1. **Workflow not activated**: Ensure the workflow is set to "Active" not "Draft"
-2. **Trigger conditions not met**: Verify the trigger matches your expected event
-3. **Field not monitored**: For "Record is Updated" triggers, ensure the specific field is being watched
-4. **Permissions**: Check you have permission to run workflows
+1. **Fluxo de trabalho não ativado**: Garanta que o fluxo de trabalho esteja definido como "Active", não "Draft"
+2. **Condições do gatilho não atendidas**: Verifique se o gatilho corresponde ao evento esperado
+3. **Campo não monitorado**: Para gatilhos "Record is Updated", garanta que o campo específico esteja sendo monitorado
+4. **Permissões**: Verifique se você tem permissão para executar fluxos de trabalho
-**Solutions**:
+**Soluções**:
-* Verify workflow status in the workflow list
-* Test with the specific action you expect to trigger it
-* Review trigger configuration
-* Contact your admin about permissions
+* Verifique o status do fluxo de trabalho na lista de fluxos de trabalho
+* Teste com a ação específica que você espera que o dispare
+* Revise a configuração do gatilho
+* Entre em contato com o seu administrador sobre permissões
-### Workflow Triggers Too Early (Empty Fields)
+### Gatilhos do fluxo de trabalho ocorrem cedo demais (campos vazios)
-**Symptoms**: When manually creating a record in the UI, your workflow triggers before you've had time to fill in all the fields. The workflow runs with mostly empty field values.
+**Sintomas**: Ao criar um registro manualmente na interface do usuário (UI), o seu fluxo de trabalho é acionado antes de você ter tempo de preencher todos os campos. O fluxo de trabalho é executado com a maioria dos campos vazios.
-**Why this happens**: Twenty saves everything in real-time — there's no separate "edit" vs "read" mode. When you create a record, it's saved immediately, triggering the "Record is created" event before you can fill in additional fields.
+**Por que isso acontece**: Twenty salva tudo em tempo real — não há um modo separado de "edit" vs "read". Quando você cria um registro, ele é salvo imediatamente, acionando o evento "Record is created" antes de você preencher os campos adicionais.
-**When "Record is created" works well**:
+**Quando "Record is created" funciona bem**:
-* Records created via API calls (fields are populated in a single request)
-* Records created via import
-* Automated record creation from other workflows
+* Registros criados por chamadas de API (os campos são preenchidos em uma única requisição)
+* Registros criados por importação
+* Criação automática de registros a partir de outros fluxos de trabalho
-**Solution**: For records created manually in the UI, use **"Record is created or updated"** as your trigger instead. This way:
+**Solução**: Para registros criados manualmente na UI, use **"Record is created or updated"** como seu gatilho em vez disso. Dessa forma:
-* The workflow triggers after the user has finished filling in and saving the fields
-* You get the complete data rather than empty values
+* O fluxo de trabalho é acionado depois que o usuário termina de preencher e salvar os campos
+* Você obtém os dados completos em vez de valores vazios
- If you only want the workflow to run once per record, add a Filter action to check a field like `createdAt equals updatedAt` (first save) or use a custom checkbox field to track if the workflow has already run.
+ Se você quer que o fluxo de trabalho seja executado apenas uma vez por registro, adicione uma ação Filter para verificar um campo como `createdAt equals updatedAt` (primeiro salvamento) ou use um campo de caixa de seleção personalizado para acompanhar se o fluxo de trabalho já foi executado.
-### Actions Failing
+### Ações com falha
-**Symptoms**: Workflow runs but some actions fail.
+**Sintomas**: O fluxo de trabalho é executado, mas algumas ações falham.
-**Possible Causes**:
+**Possíveis causas**:
-1. **Missing data**: Required fields are empty
-2. **Invalid references**: Variables from previous steps don't exist
-3. **API errors**: External services returning errors
-4. **Permission issues**: Action requires permissions you don't have
+1. **Dados ausentes**: Campos obrigatórios estão vazios
+2. **Referências inválidas**: Variáveis de etapas anteriores não existem
+3. **Erros de API**: Serviços externos retornando erros
+4. **Problemas de permissão**: A ação requer permissões que você não possui
-**Solutions**:
+**Soluções**:
-* Check the workflow run details for error messages
-* Verify all required fields have values
-* Test API connections independently
-* Review role permissions
+* Verifique os detalhes da execução do fluxo de trabalho em busca de mensagens de erro
+* Verifique se todos os campos obrigatórios têm valores
+* Teste as conexões de API de forma independente
+* Revise as permissões de função
-### HTTP Request Errors
+### Erros de requisição HTTP
-**Symptoms**: HTTP Request actions fail or return unexpected results.
+**Sintomas**: Ações de requisição HTTP falham ou retornam resultados inesperados.
-**Common Error Codes**:
+**Códigos de erro comuns**:
-* **400**: Bad request - check your request body format
-* **401**: Unauthorized - verify API key
-* **403**: Forbidden - check API permissions
-* **404**: Not found - verify endpoint URL
-* **429**: Too many requests - implement rate limiting
-* **500**: Server error - external service issue
+* **400**: Solicitação inválida - verifique o formato do corpo da requisição
+* **401**: Não autorizado - verifique a chave da API
+* **403**: Proibido - verifique as permissões da API
+* **404**: Não encontrado - verifique a URL do endpoint
+* **429**: Muitas requisições - implemente limitação de taxa
+* **500**: Erro do servidor - problema no serviço externo
-**Solutions**:
+**Soluções**:
-* Verify API endpoint URL
-* Check authentication headers
-* Test the API call outside of Twenty first
-* Add error handling in Code actions
+* Verifique a URL do endpoint da API
+* Verifique os cabeçalhos de autenticação
+* Teste a chamada de API primeiro fora do Twenty
+* Adicione tratamento de erros em Ações de Código
-### Code Action Errors
+### Erros em Ações de Código
-**Symptoms**: JavaScript code fails to execute.
+**Sintomas**: O código JavaScript não é executado.
-**Common Issues**:
+**Problemas comuns**:
-1. **Syntax errors**: Typos or invalid JavaScript
-2. **Undefined variables**: Referencing variables that don't exist
-3. **Type errors**: Operations on wrong data types
-4. **Timeouts**: Code taking too long to execute
+1. **Erros de sintaxe**: Erros de digitação ou JavaScript inválido
+2. **Variáveis indefinidas**: Referenciando variáveis que não existem
+3. **Erros de tipo**: Operações com tipos de dados incorretos
+4. **Tempo limite excedido**: Código demorando muito para executar
-**Solutions**:
+**Soluções**:
-* Use the built-in code editor validation
-* Test code logic in a JavaScript console first
-* Add console.log statements for debugging
-* Simplify complex operations
+* Use a validação integrada do editor de código
+* Teste a lógica do código primeiro em um console JavaScript
+* Adicione instruções console.log para depuração
+* Simplifique operações complexas
-### Email Not Sending
+### E-mail não enviado
-**Symptoms**: Send Email action doesn't deliver emails.
+**Sintomas**: A ação Send Email não entrega os e-mails.
-**Possible Causes**:
+**Possíveis causas**:
-1. **No email account connected**: Check Settings → Accounts
-2. **Invalid email address**: Recipient email is malformed
-3. **Sending limits**: Email provider rate limits reached
-4. **Spam filters**: Emails being blocked
+1. **Nenhuma conta de e-mail conectada**: Verifique Configurações → Contas
+2. **Endereço de e-mail inválido**: O e-mail do destinatário está com formato inválido
+3. **Limites de envio**: Limites de taxa do provedor de e-mail atingidos
+4. **Filtros de spam**: E-mails sendo bloqueados
-**Solutions**:
+**Soluções**:
-* Verify email account connection
-* Validate recipient email addresses
-* Check email provider limits
-* Review email content for spam triggers
+* Verifique a conexão da conta de e-mail
+* Valide os endereços de e-mail dos destinatários
+* Verifique os limites do provedor de e-mail
+* Revise o conteúdo do e-mail para gatilhos de spam
-## Debugging Workflows
+## Depuração de fluxos de trabalho
-### Using Workflow Runs
+### Usando execuções de fluxo de trabalho
-1. Go to the workflow editor
-2. Open the **Runs** panel
-3. Find the failed run
-4. Click to see step-by-step details
-5. Review error messages and output data
+1. Vá para o editor de fluxo de trabalho
+2. Abra o painel **Runs**
+3. Encontre a execução com falha
+4. Clique para ver os detalhes passo a passo
+5. Revise as mensagens de erro e os dados de saída
-### Testing Individual Steps
+### Testando etapas individuais
-1. For Code actions, use the **Test** button
-2. For HTTP requests, test the endpoint separately
-3. Create test records to trigger workflows
-4. Use manual triggers for controlled testing
+1. Para Ações de Código, use o botão **Test**
+2. Para requisições HTTP, teste o endpoint separadamente
+3. Crie registros de teste para acionar fluxos de trabalho
+4. Use gatilhos manuais para testes controlados
-### Common Debugging Patterns
+### Padrões comuns de depuração
-**Add logging**:
-Use Code actions to log intermediate values for debugging.
+**Adicione logs**:
+Use Ações de Código para registrar valores intermediários para depuração.
-**Isolate steps**:
-Test each step independently to identify failures.
+**Isole etapas**:
+Teste cada etapa de forma independente para identificar falhas.
-**Check data flow**:
-Verify that each step receives the expected input data.
+**Verifique o fluxo de dados**:
+Confirme que cada etapa recebe os dados de entrada esperados.
-## Best Practices to Avoid Issues
+## Boas práticas para evitar problemas
-### Before Activation
+### Antes da ativação
-* Test thoroughly in draft mode
-* Validate all API connections
-* Review trigger conditions carefully
-* Document expected behavior
+* Teste cuidadosamente no modo de rascunho
+* Valide todas as conexões de API
+* Revise cuidadosamente as condições do gatilho
+* Documente o comportamento esperado
-### During Development
+### Durante o desenvolvimento
-* Use descriptive step names
-* Add comments in Code actions
-* Test with realistic data
-* Plan for edge cases
+* Use nomes descritivos para as etapas
+* Adicione comentários nas Ações de Código
+* Teste com dados realistas
+* Planeje casos-limite
-### After Activation
+### Após a ativação
-* Monitor initial runs closely
-* Set up alerts for failures
-* Review run history regularly
-* Keep workflows simple when possible
+* Monitore de perto as execuções iniciais
+* Configure alertas para falhas
+* Revise regularmente o histórico de execuções
+* Mantenha os fluxos de trabalho simples quando possível
diff --git a/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/need-more-help/workflows-faq.mdx b/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/need-more-help/workflows-faq.mdx
index cdc2cf3918..6780c7f6cb 100644
--- a/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/need-more-help/workflows-faq.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/need-more-help/workflows-faq.mdx
@@ -1,254 +1,254 @@
---
-title: Workflows FAQ
-description: Frequently asked questions about workflows in Twenty.
+title: Perguntas frequentes sobre fluxos de trabalho
+description: Perguntas frequentes sobre fluxos de trabalho na Twenty.
---
-
- This is likely a permissions issue. You need access to workflows to create and activate them.
+
+ Isso provavelmente é um problema de permissões. Você precisa de acesso a fluxos de trabalho para criá-los e ativá-los.
- **Solution**: Contact your workspace administrator to grant you workflow access under **Settings → Roles**.
+ **Solução**: Entre em contato com o administrador do seu espaço de trabalho para conceder acesso a fluxos de trabalho em **Configurações → Funções**.
- If you don't see the Workflows section at all in your sidebar, this confirms it's a permissions issue.
+ Se você não vê a seção de fluxos de trabalho na sua barra lateral, isso confirma que é um problema de permissões.
-
- Manual workflows only appear in the navbar if properly configured:
+
+ Fluxos de trabalho manuais só aparecem na barra de navegação se estiverem corretamente configurados:
- 1. The workflow must be **activated** (not in draft mode)
- 2. The navbar placement must be set to **Pinned**
- 3. For Single/Bulk triggers, you must be on the correct object page
+ 1. O fluxo de trabalho deve estar **ativado** (não em modo rascunho)
+ 2. A posição na barra de navegação deve estar definida como **Pinned**
+ 3. Para gatilhos Single/Bulk, você deve estar na página do objeto correta
- **To check**: Open the workflow → click the trigger → verify "Navbar placement" is set to "Pinned".
+ **Para verificar**: Abra o fluxo de trabalho → clique no gatilho → verifique se "Navbar placement" está definido como "Pinned".
- You can always access manual workflows via **Cmd + K** (or **Ctrl + K**) regardless of navbar settings.
+ Você sempre pode acessar fluxos de trabalho manuais via **Cmd + K** (ou **Ctrl + K**), independentemente das configurações da barra de navegação.
-
- | Type | Records Required | Workflow Runs |
- | ---- | ---------------- | ------------- |
+
+ | Tipo | Registros necessários | Execuções de Workflow |
+ | ---- | --------------------- | --------------------- |
- \| **Global** | None | Once, no record input |
- \| **Single** | One or more selected | Once per selected record |
- \| **Bulk** | One or more selected | Once, with all records as array |
+ \| **Global** | Nenhum | Uma vez, sem entrada de registro |
+ \| **Single** | Um ou mais selecionados | Uma vez por registro selecionado |
+ \| **Bulk** | Um ou mais selecionados | Uma vez, com todos os registros como array |
- * **Global**: Use when the workflow doesn't need any record context (e.g., generate a report)
- * **Single**: Use when you want to process each selected record independently (e.g., send individual emails)
- * **Bulk**: Use when you need to process records together or optimize credit usage (requires Iterator action)
+ * **Global**: Use quando o fluxo de trabalho não precisa de nenhum contexto de registro (por exemplo, gerar um relatório)
+ * **Single**: Use quando você quer processar cada registro selecionado de forma independente (por exemplo, enviar e-mails individuais)
+ * **Bulk**: Use quando você precisa processar registros em conjunto ou otimizar o uso de créditos (requer a ação Iterator)
- See [Workflow Triggers](/l/pt/user-guide/workflows/capabilities/workflow-triggers) for details.
+ Veja [Gatilhos de Fluxo de Trabalho](/l/pt/user-guide/workflows/capabilities/workflow-triggers) para obter detalhes.
-
- An explicit If/Else node is not yet available but is on our roadmap.
+
+ Um nó If/Else explícito ainda não está disponível, mas está em nosso roadmap.
- **Current workaround**: Create multiple branches from your step, each starting with a **Filter** action:
+ **Solução alternativa atual**: Crie várias ramificações a partir da sua etapa, cada uma começando com uma ação **Filter**:
```
- Step 1
+ Etapa 1
│
- ├── Branch A: Filter (condition = true) → Actions...
+ ├── Ramificação A: Filter (condition = true) → Ações...
│
- └── Branch B: Filter (condition = false) → Actions...
+ └── Ramificação B: Filter (condition = false) → Ações...
```
- Only the branch where the filter condition passes will execute its subsequent actions.
+ Apenas a ramificação em que a condição do filtro for atendida executará suas ações subsequentes.
- See [How to Use Branches](/l/pt/user-guide/workflows/capabilities/workflow-branches) for a step-by-step guide.
+ Veja [Como usar ramificações](/l/pt/user-guide/workflows/capabilities/workflow-branches) para um guia passo a passo.
-
- **Yes**, branches run in parallel by default.
+
+ **Sim**, as ramificações são executadas em paralelo por padrão.
- If you want only one branch to execute:
+ Se você quiser que apenas uma ramificação seja executada:
- * Add a **Filter** action at the start of each branch
- * Set opposite conditions (e.g., Branch A: status = "Open", Branch B: status ≠ "Open")
+ * Adicione uma ação **Filter** no início de cada ramificação
+ * Defina condições opostas (por exemplo, Ramificação A: status = "Open", Ramificação B: status ≠ "Open")
- Branches that fail their filter condition stop executing, while others continue.
+ Ramificações que não atendem à sua condição de filtro param de executar, enquanto as outras continuam.
-
- **Yes**. After your parallel branches complete, you can add a step that both branches connect to.
+
+ **Sim**. Após a conclusão das ramificações em paralelo, você pode adicionar uma etapa à qual ambas as ramificações se conectam.
- In the workflow editor:
+ No editor de fluxo de trabalho:
- 1. Complete your branched actions
- 2. Add a new step after the branches
- 3. Drag connections from the end of each branch to this new step
+ 1. Conclua suas ações ramificadas
+ 2. Adicione uma nova etapa após as ramificações
+ 3. Arraste conexões do final de cada ramificação para essa nova etapa
- The merged step will execute after all connected branches complete.
+ A etapa mesclada será executada após a conclusão de todas as ramificações conectadas.
-
- **Search Records returns a maximum of 200 records.**
+
+ **Search Records retorna no máximo 200 registros.**
- If you need to process more:
+ Se você precisar processar mais:
- * Add more specific filters to reduce results
- * Use scheduled workflows to process in batches
- * Consider using the API for bulk operations
+ * Adicione filtros mais específicos para reduzir os resultados
+ * Use fluxos de trabalho agendados para processar em lotes
+ * Considere usar a API para operações em massa
- For most workflows, 200 records is sufficient. If you regularly hit this limit, consider restructuring your automation.
+ Para a maioria dos fluxos de trabalho, 200 registros são suficientes. Se você atingir esse limite regularmente, considere reestruturar sua automação.
-
- **Not yet.** CC and BCC fields for the Send Email action are on our roadmap.
+
+ **Ainda não.** Os campos CC e BCC para a ação Send Email estão em nosso roadmap.
- **Current workaround**: Add multiple Send Email actions to send to additional recipients, or use an HTTP Request to send via an external email service that supports CC.
+ **Solução alternativa atual**: Adicione várias ações Send Email para enviar a destinatários adicionais, ou use um HTTP Request para enviar por meio de um serviço de e-mail externo que dê suporte a CC.
-
- Every action produces output data that can be used in subsequent steps.
+
+ Cada ação produz dados de saída que podem ser usados em etapas subsequentes.
- **To reference previous step data**:
+ **Para referenciar dados de etapas anteriores**:
- * Use the variable picker when configuring a field
- * Or type `{{stepName.fieldName}}` directly
+ * Use o seletor de variáveis ao configurar um campo
+ * Ou digite `{{stepName.fieldName}}` diretamente
- **Examples**:
+ **Exemplos**:
- * Trigger data: `{{trigger.object.email}}`
- * Search results: `{{searchRecords[0].name}}`
- * Code output: `{{code.calculatedValue}}`
+ * Dados do gatilho: `{{trigger.object.email}}`
+ * Resultados da pesquisa: `{{searchRecords[0].name}}`
+ * Saída do código: `{{code.calculatedValue}}`
- Hover over any field in the action configuration to see available variables from previous steps.
+ Passe o mouse sobre qualquer campo na configuração da ação para ver as variáveis disponíveis das etapas anteriores.
-
- **Iterator requires an array input.** Common issues:
+
+ **Iterator requer uma entrada do tipo array.** Problemas comuns:
- 1. **Input is not an array**: Ensure you're passing results from Search Records or another action that returns an array
- 2. **Array is empty**: Add a filter before Iterator to check `{{searchRecords.length}} > 0`
- 3. **Wrong variable selected**: Make sure you select the array itself, not a single record
+ 1. **A entrada não é um array**: garanta que você está passando resultados de Search Records ou outra ação que retorne um array
+ 2. **O array está vazio**: adicione um filtro antes do Iterator para verificar `{{searchRecords.length}} > 0`
+ 3. **Variável errada selecionada**: certifique-se de selecionar o próprio array, não um único registro
- **Correct setup**:
+ **Configuração correta**:
- 1. Search Records (returns array)
+ 1. Search Records (retorna um array)
2. Filter: length > 0
- 3. Iterator: select `{{searchRecords}}`
- 4. Actions inside iterator use `{{iterator.currentItem.fieldName}}`
+ 3. Iterator: selecione `{{searchRecords}}`
+ 4. Ações dentro do Iterator usam `{{iterator.currentItem.fieldName}}`
-
- Code actions (serverless functions) have a **default timeout of 5 minutes** (300 seconds).
+
+ As ações Code (funções serverless) têm um **tempo limite padrão de 5 minutos** (300 segundos).
- The maximum configurable timeout is **15 minutes** (900 seconds).
+ O tempo limite máximo configurável é de **15 minutos** (900 segundos).
- If your code exceeds this limit, the action will fail with a timeout error.
+ Se seu código exceder esse limite, a ação falhará com um erro de tempo limite.
- **Tips to avoid timeouts**:
+ **Dicas para evitar estouros de tempo**:
- * Break large operations into smaller chunks using Iterator
- * Avoid heavy computations; use external services via HTTP Request for intensive processing
- * Optimize your code to reduce execution time
- * If you need longer processing, consider using scheduled workflows that process data in batches
+ * Divida operações grandes em partes menores usando o Iterator
+ * Evite computações pesadas; use serviços externos via HTTP Request para processamento intensivo
+ * Otimize seu código para reduzir o tempo de execução
+ * Se você precisar de um processamento mais longo, considere usar fluxos de trabalho agendados que processem dados em lotes
-
- Workflow runs show the execution history and help you debug issues.
+
+ As execuções de fluxo de trabalho mostram o histórico de execução e ajudam você a depurar problemas.
- **Access runs**:
+ **Acessar execuções**:
- * In workflow editor → **Runs** panel on the right
- * Or go to **Workflow Runs** in the sidebar
+ * No editor de fluxo de trabalho → painel **Execuções** à direita
+ * Ou vá para **Execuções de Fluxo de Trabalho** na barra lateral
- **Understanding a run**:
+ **Entendendo uma execução**:
- * **Status**: Running, Completed, Failed, Waiting
- * **Steps**: See which steps executed and their output
- * **Errors**: Click failed steps to see error messages
- * **Data**: View input/output data at each step
+ * **Status**: Em execução, Concluída, Falhou, Aguardando
+ * **Etapas**: Veja quais etapas foram executadas e suas saídas
+ * **Erros**: Clique nas etapas com falha para ver as mensagens de erro
+ * **Dados**: Veja os dados de entrada/saída em cada etapa
- See [Workflow Runs](/l/pt/user-guide/workflows/capabilities/workflow-runs) for details.
+ Veja [Execuções de Fluxo de Trabalho](/l/pt/user-guide/workflows/capabilities/workflow-runs) para obter detalhes.
-
- Workflow runs might be failing immediately due to rate limits.
+
+ As execuções de fluxo de trabalho podem estar falhando imediatamente devido a limites de taxa.
- **Hard limit: 5,000 runs per hour per workspace.**
+ **Limite rígido: 5.000 execuções por hora por espaço de trabalho.**
- If you exceed this limit, workflows are immediately marked as failed and won't appear in your runs list as expected.
+ Se você exceder esse limite, os fluxos de trabalho são marcados imediatamente como falhos e não aparecerão na sua lista de execuções como esperado.
- **Common scenarios that hit this limit**:
+ **Cenários comuns que atingem esse limite**:
- * Selecting more than 5,000 records with a Single manual trigger
- * Multiple workflows running simultaneously across your workspace
- * High-frequency automated triggers (e.g., Record Updated on a busy object)
+ * Selecionar mais de 5.000 registros com um gatilho manual Single
+ * Vários fluxos de trabalho executando simultaneamente em todo o seu espaço de trabalho
+ * Gatilhos automatizados de alta frequência (por exemplo, Record Updated em um objeto movimentado)
- **Solutions**:
+ **Soluções**:
- * Use **Bulk** triggers instead of Single to process many records in one run
- * Space out large batch operations
- * Use filters to reduce trigger frequency
- * Schedule heavy workflows during off-peak hours
+ * Use gatilhos **Bulk** em vez de Single para processar muitos registros em uma única execução
+ * Espace operações em lotes grandes
+ * Use filtros para reduzir a frequência dos gatilhos
+ * Agende fluxos de trabalho pesados fora do horário de pico
-
- Twenty has two rate limits to ensure system stability:
+
+ A Twenty tem dois limites de taxa para garantir a estabilidade do sistema:
- | Limit | Value | Behavior |
- | ----- | ----- | -------- |
+ | Limite | Valor | Comportamento |
+ | ------ | ----- | ------------- |
- \| **Soft limit** | 100 runs/minute | Runs queue in "Not Started" status, processed gradually |
- \| **Hard limit** | 5,000 runs/hour | Runs immediately fail |
+ \| **Limite flexível** | 100 execuções/minuto | Execuções entram na fila com status "Not Started", processadas gradualmente |
+ \| **Limite rígido** | 5.000 execuções/hora | Execuções falham imediatamente |
- **Soft limit (100/min)**: Your workflows won't fail—they just wait in the queue and are processed over time. You can trigger more than 100 records; execution will be slower.
+ **Limite flexível (100/min)**: Seus fluxos de trabalho não falharão — eles apenas aguardam na fila e são processados ao longo do tempo. Você pode acionar mais de 100 registros; a execução será mais lenta.
- **Hard limit (5,000/hr)**: This applies to your entire workspace. If all your workflows combined exceed 5,000 runs in an hour, additional runs will fail immediately.
+ **Limite rígido (5.000/h)**: Isso se aplica a todo o seu espaço de trabalho. Se todos os seus fluxos de trabalho combinados excederem 5.000 execuções em uma hora, execuções adicionais falharão imediatamente.
- **Tips to stay within limits**:
+ **Dicas para permanecer dentro dos limites**:
- * Use Bulk triggers with Iterator instead of Single triggers for large batches
- * Combine related automations into fewer workflows
- * Use scheduled workflows to spread load over time
+ * Use gatilhos Bulk com Iterator em vez de gatilhos Single para grandes lotes
+ * Combine automações relacionadas em menos fluxos de trabalho
+ * Use fluxos de trabalho agendados para distribuir a carga ao longo do tempo
-
- **No, there is no automatic retry functionality at the moment.**
+
+ **Não, no momento não há funcionalidade de nova tentativa automática.**
- If a workflow run fails, you'll need to:
+ Se uma execução de fluxo de trabalho falhar, você precisará:
- 1. Review the error in **Settings → Workflows → [Your Workflow] → Runs**
- 2. Fix the issue (data, configuration, or external service)
- 3. Manually trigger the workflow again on the affected record(s)
+ 1. Revise o erro em **Configurações → Fluxos de trabalho → [Seu Fluxo de Trabalho] → Execuções**
+ 2. Corrija o problema (dados, configuração ou serviço externo)
+ 3. Dispare manualmente o fluxo de trabalho novamente no(s) registro(s) afetado(s)
- **Tips to reduce failures**:
+ **Dicas para reduzir falhas**:
- * Add **Filter** nodes to validate data before actions
- * Use **Search Records** to check if related records exist
- * Test thoroughly with a few records before bulk operations
+ * Adicione nós **Filter** para validar dados antes das ações
+ * Use **Search Records** para verificar se existem registros relacionados
+ * Teste profundamente com alguns registros antes de operações em massa
- Automatic retry functionality is on our roadmap for a future release.
+ A funcionalidade de nova tentativa automática está em nosso roadmap para uma versão futura.
-
- **Yes, if your workflows are triggered by record creation or updates.**
+
+ **Sim, se seus fluxos de trabalho forem acionados por criação ou atualização de registros.**
- When you import data via CSV, each record created or updated can trigger workflows. A large import (thousands of records) could:
+ Quando você importa dados via CSV, cada registro criado ou atualizado pode acionar fluxos de trabalho. Uma importação grande (milhares de registros) pode:
- * Hit the 5,000 runs/hour limit
- * Consume significant workflow credits
- * Send unexpected emails or notifications
- * Create duplicate tasks or records
+ * Atingir o limite de 5.000 execuções/hora
+ * Consumir uma quantidade significativa de créditos de fluxo de trabalho
+ * Enviar e-mails ou notificações inesperadas
+ * Criar tarefas ou registros duplicados
- **Before a mass import**:
+ **Antes de uma importação em massa**:
- 1. Go to **Settings → Workflows**
- 2. Identify workflows triggered by the object you're importing
- 3. **Deactivate** them temporarily
- 4. Run your CSV import
- 5. **Reactivate** the workflows when done
+ 1. Vá para **Configurações → Fluxos de trabalho**
+ 2. Identifique os fluxos de trabalho acionados pelo objeto que você está importando
+ 3. **Desative**-os temporariamente
+ 4. Execute sua importação CSV
+ 5. **Reative** os fluxos de trabalho quando terminar
- **Alternative**: If you need the workflows to run on imported data, import in smaller batches to stay within rate limits.
+ **Alternativa**: Se você precisar que os fluxos de trabalho sejam executados nos dados importados, importe em lotes menores para permanecer dentro dos limites de taxa.
-
- If your workflow canvas looks messy with nodes scattered around, you can automatically organize it:
+
+ Se sua tela de fluxo de trabalho estiver desorganizada com nós espalhados, você pode organizá-la automaticamente:
- 1. Right-click anywhere on the workflow canvas
- 2. Click **Tidy up workflow**
+ 1. Clique com o botão direito em qualquer lugar na tela do fluxo de trabalho
+ 2. Clique em **Tidy up workflow**
- This will automatically rearrange all nodes into a clean, organized layout.
+ Isso reorganizará automaticamente todos os nós em um layout limpo e organizado.
diff --git a/packages/twenty-docs/l/pt/user-guide/workflows/overview.mdx b/packages/twenty-docs/l/pt/user-guide/workflows/overview.mdx
index 201dba3ee6..9d549e29a5 100644
--- a/packages/twenty-docs/l/pt/user-guide/workflows/overview.mdx
+++ b/packages/twenty-docs/l/pt/user-guide/workflows/overview.mdx
@@ -1,80 +1,80 @@
---
-title: Workflows
-description: Learn how to build automations in Twenty.
+title: Fluxos de trabalho
+description: Aprenda a criar automações no Twenty.
image: /images/user-guide/workflows/workflow.png
---
-
+
-## Why Workflows Matter
+## Por que Workflows Importam
-Twenty was built to bring maximum flexibility to its users. Rather than forcing you to adapt your business processes to rigid, pre-built features, workflows enable you to build automations that create the CRM that best supports your unique business use cases.
+Twenty foi criado para trazer flexibilidade máxima aos seus usuários. Em vez de forçá-lo a adaptar seus processos de negócios a recursos rígidos e pré-construídos, os workflows permitem que você crie automações que criem o CRM que melhor apoie seus casos de uso de negócios exclusivos.
-Workflows are Twenty's in-app feature for building these automations. They give you the building blocks to create exactly what your business needs, when it needs it.
+Workflows são o recurso interno de Twenty para criar essas automações. Eles oferecem os blocos de construção para criar exatamente o que seu negócio precisa, quando precisa.
-## What can I do with workflows?
+## O que posso fazer com workflows?
-We recommend building automations for two main purposes:
+Recomendamos a construção de automações para dois principais propósitos:
-1. **Internal automations to facilitate your team's day-to-day**: Reduce the amount of manual entries and repetitive tasks that slow down your team.
-2. **Bring data in and out of Twenty**: Connect Twenty via API calls and webhooks to your database and other tools.
+1. **Automações internas para facilitar o dia a dia da sua equipe**: Reduza a quantidade de entradas manuais e tarefas repetitivas que retardam sua equipe.
+2. **Traga dados para dentro e para fora do Twenty**: Conecte-se ao Twenty por meio de chamadas de API e webhooks para seu banco de dados e outras ferramentas.
-## Building Your First Workflow
+## Criando seu primeiro fluxo de trabalho
-### Step 1: Create a New Workflow
+### Etapa 1: Criar um novo fluxo de trabalho
-1. Go to **Workflows** accessible below the other objects
-2. Click **+ New Record**
-3. Give your workflow a name
+1. Vá para **Workflows**, localizado abaixo dos outros objetos
+2. Clique em **+ New Record**
+3. Dê um nome ao seu fluxo de trabalho
-### Step 2: Add a Trigger
+### Etapa 2: Adicionar um gatilho
-Every workflow starts with a trigger. Choose from:
+Todo fluxo de trabalho começa com um gatilho. Escolha entre:
-* **Record events**: When a record is created, updated, or deleted
-* **Schedule**: Run at specific times (daily, weekly, etc.)
-* **Manual**: Triggered by a user action
-* **Webhook**: Triggered by a webhook
+* **Eventos de registro**: Quando um registro é criado, atualizado ou excluído
+* **Agendamento**: Executar em horários específicos (diariamente, semanalmente, etc.)
+* **Manual**: Acionado por uma ação do usuário
+* **Webhook**: Acionado por um webhook
-### Step 3: Add Actions
+### Etapa 3: Adicionar ações
-After your trigger, add one or more actions:
+Após o gatilho, adicione uma ou mais ações:
-* **Create Record**: Add new records to any object
-* **Update Record**: Modify existing record data
-* **Delete Record**: Remove records from objects
-* **Search Records**: Find records matching criteria
-* **Upsert Record**: Create or update based on matching criteria
-* **Iterator**: Loop through arrays of records
-* **Filter**: Control which records proceed
-* **Delay**: Wait before continuing (duration or scheduled date)
-* **Send Email**: Send emails via your connected account
-* **Code**: Run custom JavaScript
-* **HTTP Request**: Call external APIs
-* **Form**: Get inputs from users within Twenty UI at the time of execution
-* **AI Agent** (Coming soon): Run intelligent AI tasks
+* **Criar registro**: Adicionar novos registros a qualquer objeto
+* **Atualizar registro**: Modificar os dados do registro existente
+* **Excluir registro**: Remover registros de objetos
+* **Pesquisar registros**: Encontrar registros que correspondam aos critérios
+* **Inserir/atualizar registro**: Criar ou atualizar com base em critérios de correspondência
+* **Iterador**: Percorrer arrays de registros
+* **Filtro**: Controlar quais registros prosseguem
+* **Atraso**: Aguardar antes de continuar (duração ou data agendada)
+* **Enviar e-mail**: Enviar e-mails via sua conta conectada
+* **Código**: Executar JavaScript personalizado
+* **Solicitação HTTP**: Chamar APIs externas
+* **Formulário**: Obter entradas de usuários na interface do Twenty no momento da execução
+* **Agente de IA** (Em breve): Executar tarefas de IA inteligentes
-### Step 4: Test and Activate
+### Etapa 4: Testar e ativar
-1. Use the **Test** button to run your workflow with sample data
-2. Review the results to ensure it works as expected
-3. Toggle the workflow **Active** when ready
+1. Use o botão **Test** para executar seu fluxo de trabalho com dados de exemplo
+2. Revise os resultados para garantir que funcione como esperado
+3. Alterne o fluxo de trabalho para **Active** quando estiver pronto
-## Workflow Best Practices
+## Melhores Práticas de Workflows
-* **Edit step names**: Rename your workflow steps to clearly describe what each one does. This helps with maintenance and makes it easier to hand off to coworkers
-* **Leverage previous step data**: You can use fields from records returned by any previous step in your workflow
-* **Start simple**: Begin with basic workflows and add complexity over time as you become more comfortable with the system
-* **Plan before building**: Map out your workflow logic before you start building to avoid getting stuck halfway through
+* **Editar nomes de etapas**: Renomeie as etapas do seu Workflow para descrever claramente o que cada uma faz. Isso ajuda na manutenção e facilita a transferência para colegas
+* **Aproveitar dados de etapas anteriores**: Você pode usar campos de registros retornados por qualquer etapa anterior no seu Workflow
+* **Comece simples**: Inicie com Workflows básicos e adicione complexidade ao longo do tempo à medida que se sentir mais confortável com o sistema
+* **Planeje antes de construir**: Mapeie a lógica do seu Workflow antes de começar a construir para evitar ficar preso no meio do caminho
-## Next Steps
+## Próximos Passos
-* [Workflow Triggers](/l/pt/user-guide/workflows/capabilities/workflow-triggers)
-* [Workflow Actions](/l/pt/user-guide/workflows/capabilities/workflow-actions)
-* [CRM Automations](/l/pt/user-guide/workflows/how-tos/crm-automations/closed-won-automations)
+* [Gatilhos de Fluxo de Trabalho](/l/pt/user-guide/workflows/capabilities/workflow-triggers)
+* [Ações de Fluxo de Trabalho](/l/pt/user-guide/workflows/capabilities/workflow-actions)
+* [Automações de CRM](/l/pt/user-guide/workflows/how-tos/crm-automations/closed-won-automations)
diff --git a/packages/twenty-docs/l/zh/developers/contribute/capabilities/backend-development/best-practices-server.mdx b/packages/twenty-docs/l/zh/developers/contribute/capabilities/backend-development/best-practices-server.mdx
index d8f5c5ea7c..32d21599ee 100644
--- a/packages/twenty-docs/l/zh/developers/contribute/capabilities/backend-development/best-practices-server.mdx
+++ b/packages/twenty-docs/l/zh/developers/contribute/capabilities/backend-development/best-practices-server.mdx
@@ -1,22 +1,22 @@
---
-title: Best Practices
+title: 最佳实践
---
-This document outlines the best practices you should follow when working on the backend.
+本文档概述了当您在后端工作时应遵循的最佳实践。
-## Follow a modular approach
+## 遵循模块化方法
-The backend follows a modular approach, which is a fundamental principle when working with NestJS. Make sure you break down your code into reusable modules to maintain a clean and organized codebase.
-Each module should encapsulate a particular feature or functionality and have a well-defined scope. This modular approach enables clear separation of concerns and removes unnecessary complexities.
+后端遵循模块化方法,这是使用 NestJS 的基本原则。 确保将代码分解为可重用的模块,以保持代码库的清晰和有序。
+每个模块应封装特定的功能或特性,并具有明确的范围。 这种模块化方法使关注点分离更加清晰,并消除了不必要的复杂性。
-## Expose services to use in modules
+## 将服务暴露以供模块使用
-Always create services that have a clear and single responsibility, which enhances code readability and maintainability. Name the services descriptively and consistently.
+始终创建具有明确单一职责的服务,这有助于提高代码的可读性和可维护性。 以具有描述性且一致的方式为服务命名。
-You should also expose services that you want to use in other modules. Exposing services to other modules is possible through NestJS's powerful dependency injection system, and promotes loose coupling between components.
+您还应该公开希望在其他模块中使用的服务。 通过 NestJS 强大的依赖注入系统,可以实现向其他模块公开服务,并促进组件间的松耦合。
-## Avoid using `any` type
+## 避免使用 `any` 类型
-When you declare a variable as `any`, TypeScript's type checker doesn't perform any type checking, making it possible to assign any type of values to the variable. TypeScript uses type inference to determine the type of variable based on the value. By declaring it as `any`, TypeScript can no longer infer the type. This makes it hard to catch type-related errors during development, leading to runtime errors and makes the code less maintainable, less reliable, and harder to understand for others.
+当您将变量声明为 `any` 类型时,TypeScript 的类型检查器不会进行任何类型检查,使得可以将任何类型的值赋给该变量。 TypeScript 使用类型推断,根据值来确定变量的类型。 若声明为 `any`,TypeScript 将无法再推断其类型。 这使开发过程中难以捕捉到与类型相关的错误,导致运行时错误,使代码维护性更差,可靠性更低,且更难以被他人理解。
-This is why everything should have a type. So if you create a new object with a first name and last name, you should create an interface or type that contains a first name and last name that defines the shape of the object you are manipulating.
+因此,一切都应该有一个类型。 因此,如果您创建包含名字和姓氏的新对象,应该创建一个包含名字和姓氏的接口或类型,以定义您正在操作的对象的形状。
diff --git a/packages/twenty-docs/l/zh/developers/contribute/capabilities/backend-development/custom-objects.mdx b/packages/twenty-docs/l/zh/developers/contribute/capabilities/backend-development/custom-objects.mdx
index 7feec7a639..07e57e541e 100644
--- a/packages/twenty-docs/l/zh/developers/contribute/capabilities/backend-development/custom-objects.mdx
+++ b/packages/twenty-docs/l/zh/developers/contribute/capabilities/backend-development/custom-objects.mdx
@@ -1,39 +1,39 @@
---
-title: Custom Objects
+title: 自定义对象
---
-Objects are structures that allow you to store data (records, attributes, and values) specific to an organization. Twenty provides both standard and custom objects.
+对象是存储特定于组织的数据(记录、属性和值)的结构。 Twenty 提供标准对象和自定义对象。
-Standard objects are in-built objects with a set of attributes available for all users. Examples of standard objects in Twenty include Company and Person. Standard objects have standard fields that are also available for all Twenty users, like Company.displayName.
+标准对象是为所有用户提供特定属性的内置对象。 Twenty 的标准对象示例包括“公司”和“人员”。 标准对象具有对所有 Twenty 用户可用的标准字段,如 Company.displayName。
-Custom objects are objects that you can create to store information that is unique to your organization. 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.
+自定义对象是您可以创建的对象,用于存储专属于您组织的信息。 它们不是内置的;您可以创建和自定义自定义对象来保存标准对象不适合存储的信息。
-## High-level schema
+## 高级模式
-
+
-## How it works
+## 工作原理
-Custom objects come from metadata tables that determine the shape, name, and type of the objects. All this information is present in the metadata schema database, consisting of tables:
+自定义对象来自确定对象形状、名称和类型的元数据表。 所有这些信息都存在于元数据模式数据库中,由表组成:
-* **DataSource**: Details where the data is present.
-* **Object**: Describes the object and links to a DataSource.
-* **Field**: Outlines an Object's fields and connects to the Object.
+* **DataSource**:说明数据所在的详细信息。
+* **Object**:描述对象并链接到数据源。
+* **Field**:列出对象的字段并连接到对象。
-To add a custom object, the workspaceMember will query the /metadata API. This updates the metadata accordingly and computes a GraphQL schema based on the metadata, storing it in a GQL cache for later use.
+要添加自定义对象,工作空间成员将查询 /metadata API。 这将相应地更新元数据,并根据元数据计算 GraphQL 架构,将其存储在 GQL 缓存中以备后用。
-
+
-To fetch data, the process involves making queries through the /graphql endpoint and passing them through the Query Resolver.
+要获取数据,流程涉及通过 /graphql 端点进行查询并通过查询解析器传递。
-
+
diff --git a/packages/twenty-docs/l/zh/developers/contribute/capabilities/backend-development/feature-flags.mdx b/packages/twenty-docs/l/zh/developers/contribute/capabilities/backend-development/feature-flags.mdx
index a261cfec3c..9c171914af 100644
--- a/packages/twenty-docs/l/zh/developers/contribute/capabilities/backend-development/feature-flags.mdx
+++ b/packages/twenty-docs/l/zh/developers/contribute/capabilities/backend-development/feature-flags.mdx
@@ -1,12 +1,12 @@
---
-title: Feature Flags
+title: 功能标志
---
-Feature flags are used to hide experimental features. For Twenty, they are set on workspace level and not on a user level.
+功能标志用于隐藏实验性功能。 对于 Twenty,它们是在工作区级别设置的,而不是在用户级别。
-## Adding a new feature flag
+## 添加新的功能标志
-In `FeatureFlagKey.ts` add the feature flag:
+在 `FeatureFlagKey.ts` 中添加功能标志:
```ts
type FeatureFlagKey =
@@ -14,7 +14,7 @@ type FeatureFlagKey =
| ...;
```
-Also add it to the enum in `feature-flag.entity.ts`:
+还要将其添加到 `feature-flag.entity.ts` 中的枚举:
```ts
enum FeatureFlagKeys {
@@ -23,7 +23,7 @@ enum FeatureFlagKeys {
}
```
-To apply a feature flag on a **backend** feature use:
+要在 **后端** 功能上应用功能标志,请使用:
```ts
@Gate({
@@ -31,16 +31,16 @@ 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
+## 配置部署的功能标志
-Change the corresponding record in the Table `core.featureFlag`:
+更改 Table `core.featureFlag` 中的相应记录:
-| id | key | workspaceId | value |
-| ------ | ------------------------ | ----------- | ------ |
-| Random | `IS_FEATURENAME_ENABLED` | WorkspaceID | `true` |
+| iD | 键 | workspaceId | 值 |
+| -- | ------------------------ | ----------- | --- |
+| 随机 | `IS_FEATURENAME_ENABLED` | 工作区 ID | `真` |
diff --git a/packages/twenty-docs/l/zh/developers/contribute/capabilities/backend-development/folder-architecture-server.mdx b/packages/twenty-docs/l/zh/developers/contribute/capabilities/backend-development/folder-architecture-server.mdx
index 233d92ac8a..4e875d6c74 100644
--- a/packages/twenty-docs/l/zh/developers/contribute/capabilities/backend-development/folder-architecture-server.mdx
+++ b/packages/twenty-docs/l/zh/developers/contribute/capabilities/backend-development/folder-architecture-server.mdx
@@ -1,125 +1,125 @@
---
-title: Folder Architecture
-info: A detailed look into our server folder architecture
+title: 文件夹架构
+info: 详细了解我们的服务器文件夹架构
---
-The backend directory structure is as follows:
+后端目录结构如下:
```
server
- └───ability
- └───constants
- └───core
- └───database
- └───decorators
- └───filters
- └───guards
- └───health
- └───integrations
- └───metadata
- └───workspace
- └───utils
+ └───能力
+ └───常量
+ └───核心
+ └───数据库
+ └───装饰器
+ └───过滤器
+ └───守卫
+ └───健康
+ └───集成
+ └───元数据
+ └───工作空间
+ └───工具
```
-## Ability
+## 能力
-Defines permissions and includes handlers for each entity.
+定义权限并为每个实体提供处理程序。
-## Decorators
+## 装饰器
-Defines custom decorators in NestJS for added functionality.
+为增强功能在NestJS中定义自定义装饰器。
-See [custom decorators](https://docs.nestjs.com/custom-decorators) for more details.
+有关更多详细信息,请参阅[自定义装饰器](https://docs.nestjs.com/custom-decorators)。
-## Filters
+## 过滤器
-Includes exception filters to handle exceptions that might occur in GraphQL endpoints.
+包含异常过滤器,以处理可能在GraphQL端点中出现的异常。
-## Guards
+## 守卫
-See [guards](https://docs.nestjs.com/guards) for more details.
+有关更多详细信息,请参见[守卫](https://docs.nestjs.com/guards)。
-## Health
+## 健康
-Includes a publicly available REST API (healthz) that returns a JSON to confirm whether the database is working as expected.
+包含一个公开可用的REST API(healthz),返回JSON以确认数据库是否按预期工作。
-## Metadata
+## 元数据
-Defines custom objects and makes available a GraphQL API (graphql/metadata).
+定义自定义对象并提供GraphQL API(graphql/metadata)。
-## Workspace
+## 工作区
-Generates and serves custom GraphQL schema based on the metadata.
+生成并提供基于元数据的自定义GraphQL架构。
-### Workspace Directory Structure
+### 工作空间目录结构
```
workspace
└───workspace-schema-builder
- └───factories
- └───graphql-types
- └───database
- └───interfaces
- └───object-definitions
- └───services
- └───storage
- └───utils
+ └───工厂
+ └───graphql类型
+ └───数据库
+ └───接口
+ └───对象定义
+ └───服务
+ └───存储
+ └───工具
└───workspace-resolver-builder
- └───factories
- └───interfaces
+ └───工厂
+ └───接口
└───workspace-query-builder
- └───factories
- └───interfaces
+ └───工厂
+ └───接口
└───workspace-query-runner
- └───interfaces
- └───utils
+ └───接口
+ └───工具
└───workspace-datasource
└───workspace-manager
└───workspace-migration-runner
- └───utils
+ └───工具
└───workspace.module.ts
└───workspace.factory.spec.ts
└───workspace.factory.ts
```
-The root of the workspace directory includes the `workspace.factory.ts`, a file containing the `createGraphQLSchema` function. This function generates workspace-specific schema by using the metadata to tailor a schema for individual workspaces. By separating the schema and resolver construction, we use the `makeExecutableSchema` function, which combines these discrete elements.
+工作空间目录的根目录包含`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
+### 工作空间架构生成器
-Generates the GraphQL schema, and includes:
+生成GraphQL架构,并包括:
-#### Factories:
+#### 工厂:
-Specialised constructors to generate GraphQL-related constructs.
+专门的构造函数用于生成与GraphQL相关的结构。
-* The type.factory translates field metadata into GraphQL types using `TypeMapperService`.
-* The type-definition.factory creates GraphQL input or output objects derived from `objectMetadata`.
+* type.factory使用`TypeMapperService`将字段元数据翻译为GraphQL类型。
+* type-definition.factory创建从`objectMetadata`派生的GraphQL输入或输出对象。
-#### GraphQL Types
+#### GraphQL类型
-Includes enumerations, inputs, objects, and scalars, and serves as the building blocks for the schema construction.
+包括枚举、输入、对象和标量,并作为架构构建的基石。
-#### Interfaces and Object Definitions
+#### 接口和对象定义
-Contains the blueprints for GraphQL entities, and includes both predefined and custom types like `MONEY` or `URL`.
+包含GraphQL实体的蓝图,包括诸如`MONEY`或`URL`之类的预定义和自定义类型。
-#### Services
+#### 服务
-Contains the service responsible for associating FieldMetadataType with its appropriate GraphQL scalar or query modifiers.
+包含负责将FieldMetadataType与其适当GraphQL标量或查询修饰符相关联的服务。
-#### Storage
+#### 存储
-Includes the `TypeDefinitionsStorage` class that contains reusable type definitions, preventing duplication of GraphQL types.
+包含`TypeDefinitionsStorage`类,其中包含可重用的类型定义,防止重复GraphQL类型。
-### Workspace Resolver Builder
+### 工作空间解析器生成器
-Creates resolver functions for querying and mutating the GraphQL schema.
+创建用于查询和修改GraphQL架构的解析器函数。
-Each factory in this directory is responsible for producing a distinct resolver type, such as the `FindManyResolverFactory`, designed for adaptable application across various tables.
+此目录中的每个工厂负责生成不同类型的解析器,如`FindManyResolverFactory`,旨在跨各种表灵活应用。
-### Workspace Query Runner
+### 工作空间查询运行器
-Runs the generated queries on the database and parses the result.
+在数据库上运行生成的查询并解析结果。
diff --git a/packages/twenty-docs/l/zh/developers/contribute/capabilities/backend-development/queue.mdx b/packages/twenty-docs/l/zh/developers/contribute/capabilities/backend-development/queue.mdx
index 6148c0fbf0..38cf6c3b69 100644
--- a/packages/twenty-docs/l/zh/developers/contribute/capabilities/backend-development/queue.mdx
+++ b/packages/twenty-docs/l/zh/developers/contribute/capabilities/backend-development/queue.mdx
@@ -1,20 +1,20 @@
---
-title: Message Queue
+title: 消息队列
---
-Queues facilitate async operations to be performed. They can be used for performing background tasks such as sending a welcome email on register.
-Each use case will have its own queue class extended from `MessageQueueServiceBase`.
+队列支持异步操作的执行。 它们可用于执行后台任务,例如在注册时发送欢迎邮件。
+每个用例都将拥有一个继承自 `MessageQueueServiceBase` 的队列类。
-Currently, we only support `bull-mq`[bull-mq](https://bullmq.io/) as the queue driver.
+当前,我们仅支持使用 `bull-mq`[bull-mq](https://bullmq.io/) 作为队列驱动。
-## Steps to create and use a new queue
+## 创建和使用新队列的步骤
-1. Add a queue name for your new queue under enum `MESSAGE_QUEUES`.
-2. Provide the factory implementation of the queue with the queue name as the dependency token.
-3. Inject the queue that you created in the required module/service with the queue name as the dependency token.
-4. Add worker class with token based injection just like producer.
+1. 在枚举 `MESSAGE_QUEUES` 下为您的新队列添加队列名称。
+2. 提供以队列名称为依赖令牌的队列工厂实现。
+3. 在所需模块/服务中以队列名称作为依赖令牌注入您创建的队列。
+4. 添加与生产者相同令牌注入的工作类。
-### Example usage
+### 示例用法
```ts
class Resolver {
diff --git a/packages/twenty-docs/l/zh/developers/contribute/capabilities/backend-development/server-commands.mdx b/packages/twenty-docs/l/zh/developers/contribute/capabilities/backend-development/server-commands.mdx
index 6951909788..089c3edfda 100644
--- a/packages/twenty-docs/l/zh/developers/contribute/capabilities/backend-development/server-commands.mdx
+++ b/packages/twenty-docs/l/zh/developers/contribute/capabilities/backend-development/server-commands.mdx
@@ -1,19 +1,19 @@
---
-title: Backend Commands
+title: 后端命令
---
-## Useful commands
+## 实用命令
-These commands should be executed from packages/twenty-server folder.
-From any other folder you can run `npx nx {command} twenty-server` (or `npx nx run twenty-server:{command}`).
+这些命令应从 packages/twenty-server 文件夹中执行。
+从其他文件夹,您可以运行 `npx nx {command} twenty-server`(或 `npx nx run twenty-server:{command}`)。
-### First time setup
+### 首次设置
```
npx nx database:reset twenty-server # setup the database with dev seeds
```
-### Starting the server
+### 启动服务器
```
npx nx run twenty-server:start
@@ -25,77 +25,77 @@ npx nx run twenty-server:start
npx nx run twenty-server:lint # pass --fix to fix lint errors
```
-### Test
+### 测试
```
npx nx run twenty-server:test:unit # run unit tests
npx nx run twenty-server:test:integration # run integration tests
```
-Note: you can run `npx nx run twenty-server:test:integration:with-db-reset` in case you need to reset the database before running the integration tests.
+注意:如果需要在运行集成测试之前重置数据库,可以运行 `npx nx run twenty-server:test:integration:with-db-reset`。
-### Resetting the database
+### 重置数据库
-If you want to reset and seed the database, you can run the following command:
+如果您想重置并为数据库预置数据,可以运行以下命令:
```bash
npx nx run twenty-server:database:reset
```
-### Migrations
+### 迁移
-#### For objects in Core/Metadata schemas (TypeORM)
+#### 适用于 Core/Metadata 模式中的对象 (TypeORM)
```bash
npx nx run twenty-server:typeorm migration:generate src/database/typeorm/core/migrations/nameOfYourMigration -d src/database/typeorm/core/core.datasource.ts
```
-#### For Workspace objects
+#### 用于工作区对象
-There are no migrations files, migration are generated automatically for each workspace,
-stored in the database, and applied with this command
+没有迁移文件,每个工作区的迁移都是自动生成的,
+储存在数据库中,并通过该命令应用
```bash
npx nx run twenty-server:command workspace:sync-metadata -f
```
- This will drop the database and re-run the migrations and seed.
+ 这将删除数据库,并重新运行迁移和预置数据。
- Make sure to back up any data you want to keep before running this command.
+ 在运行此命令之前,请确保备份任何想要保留的数据。
-## Tech Stack
+## 技术栈
-Twenty primarily uses NestJS for the backend.
+Twenty 主要使用 NestJS 作为后端。
-Prisma was the first ORM we used. But in order to allow users to create custom fields and custom objects, a lower-level made more sense as we need to have fine-grained control. The project now uses TypeORM.
+Prisma 是我们最先使用的 ORM。 但为了允许用户创建自定义字段和对象,使用更底层的工具更有意义,因为我们需要进行精细控制。 项目现在使用 TypeORM。
-Here's what the tech stack now looks like.
+这是当前技术栈的样子。
-**Core**
+**核心**
* [NestJS](https://nestjs.com/)
* [TypeORM](https://typeorm.io/)
* [GraphQL Yoga](https://the-guild.dev/graphql/yoga-server)
-**Database**
+**数据库**
* [Postgres](https://www.postgresql.org/)
-**Third-party integrations**
+**第三方集成**
-* [Sentry](https://sentry.io/welcome/) for tracking bugs
+* [Sentry](https://sentry.io/welcome/) 用于 bug 跟踪
-**Testing**
+**测试**
* [Jest](https://jestjs.io/)
-**Tooling**
+**工具**
* [Yarn](https://yarnpkg.com/)
* [ESLint](https://eslint.org/)
-**Development**
+**开发**
* [AWS EKS](https://aws.amazon.com/eks/)
diff --git a/packages/twenty-docs/l/zh/developers/contribute/capabilities/backend-development/zapier.mdx b/packages/twenty-docs/l/zh/developers/contribute/capabilities/backend-development/zapier.mdx
index 46bcd563fc..7c2e8a3062 100644
--- a/packages/twenty-docs/l/zh/developers/contribute/capabilities/backend-development/zapier.mdx
+++ b/packages/twenty-docs/l/zh/developers/contribute/capabilities/backend-development/zapier.mdx
@@ -1,18 +1,18 @@
---
-title: Zapier App
+title: Zapier 应用
---
-Effortlessly sync Twenty with 3000+ apps using [Zapier](https://zapier.com/). Automate tasks, boost productivity, and supercharge your customer relationships!
+通过 [Zapier](https://zapier.com/) 无缝同步 Twenty 和 3000 多个应用。 自动化任务,提高生产力,提升客户关系!
-## About Zapier
+## 关于 Zapier
-Zapier is a tool that allows you to automate workflows by connecting the apps that your team uses every day. The fundamental concept of Zapier is automation workflows, called Zaps, and include triggers and actions.
+Zapier 是一款工具,可通过连接你的团队每天使用的应用来实现工作流自动化。 Zapier 的基本概念是称为 Zaps 的自动化工作流,包含触发器和操作。
-You can learn more about how Zapier works [here](https://zapier.com/how-it-works).
+您可以在[这里](https://zapier.com/how-it-works)了解更多关于 Zapier 的工作原理。
-## Setup
+## 设置
-### Step 1: Install Zapier packages
+### 步骤 1: 安装 Zapier 包
```bash
cd packages/twenty-zapier
@@ -20,33 +20,33 @@ cd packages/twenty-zapier
yarn
```
-### Step 2: Login with the CLI
+### 步骤 2: 使用 CLI 登录
-Use your Zapier credentials to log in using the CLI:
+使用您的 Zapier 凭证通过 CLI 登录:
```bash
zapier login
```
-### Step 3: Set environment variables
+### 步骤 3: 设置环境变量
-From the `packages/twenty-zapier` folder, run:
+从 `packages/twenty-zapier` 文件夹运行:
```bash
cp .env.example .env
```
-Run the application locally, go to [http://localhost:3000/settings/api-webhooks](http://localhost:3000/settings/api-webhooks), and generate an API key.
+在本地运行应用程序,访问 [http://localhost:3000/settings/api-webhooks](http://localhost:3000/settings/api-webhooks),并生成一个 API 密钥。
-Replace the **YOUR_API_KEY** value in the `.env` file with the API key you just generated.
+将 `.env` 文件中的 **YOUR_API_KEY** 值替换为你刚刚生成的 API 密钥。
-## Development
+## 开发
- Make sure to run `yarn build` before any `zapier` command.
+ 确保在执行任何 `zapier` 命令前运行 `yarn build`。
-### Test
+### 测试
```bash
yarn test
@@ -58,25 +58,25 @@ yarn test
yarn format
```
-### Watch and compile as you edit code
+### 编辑代码时监视并编译
```bash
yarn watch
```
-### Validate your Zapier app
+### 验证您的 Zapier 应用
```bash
yarn validate
```
-### Deploy your Zapier app
+### 部署您的 Zapier 应用
```bash
yarn deploy
```
-### List all Zapier CLI commands
+### 列出所有 Zapier CLI 命令
```bash
zapier
diff --git a/packages/twenty-docs/l/zh/developers/contribute/capabilities/bug-and-requests.mdx b/packages/twenty-docs/l/zh/developers/contribute/capabilities/bug-and-requests.mdx
index 4db64b703d..a602dc3bd1 100644
--- a/packages/twenty-docs/l/zh/developers/contribute/capabilities/bug-and-requests.mdx
+++ b/packages/twenty-docs/l/zh/developers/contribute/capabilities/bug-and-requests.mdx
@@ -1,78 +1,78 @@
---
-title: Bugs, Requests & Pull Requests
-info: Report issues, request features, and contribute code
+title: 错误、功能请求与 Pull Request
+info: 报告问题、提出功能请求并贡献代码
---
-## Reporting Bugs
+## 报告错误
-To report a bug, please [create an issue on GitHub](https://github.com/twentyhq/twenty/issues/new).
+要报告错误,请[在 GitHub 上创建一个 issue](https://github.com/twentyhq/twenty/issues/new)。
-You can also ask for help on [Discord](https://discord.gg/cx5n4Jzs57).
+你也可以在[Discord](https://discord.gg/cx5n4Jzs57)上寻求帮助。
-## Feature Requests
+## 功能请求
-If you're not sure if it's a bug, and you feel it's closer to a feature request, then you should probably [open a discussion instead](https://github.com/twentyhq/twenty/discussions/new).
+如果你不确定这是否是错误,并且觉得更像是功能请求,那么你可能应该[改为发起一个讨论](https://github.com/twentyhq/twenty/discussions/new)。
-## Submit a Pull Request
+## 提交 Pull Request
-Contributing code to Twenty starts with a pull request (PR).
+向 Twenty 贡献代码从一个 Pull Request(PR)开始。
-### Before You Start
+### 开始之前
-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. 查看[现有的 issue](https://github.com/twentyhq/twenty/issues)以查找相关工作
+2. 对于新功能,请先打开一个 issue 进行讨论
+3. 阅读我们的[行为准则](https://github.com/twentyhq/twenty/blob/main/CODE_OF_CONDUCT.md)
-### Fork and Clone
+### Fork 并克隆
-1. Fork the repository on GitHub
-2. Clone your fork:
+1. 在 GitHub 上 Fork 该仓库
+2. 克隆你的 Fork:
```bash
git clone https://github.com/YOUR_USERNAME/twenty.git
cd twenty
```
-3. Add upstream remote:
+3. 添加上游远程仓库:
```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. 在 GitHub 上发起 PR
+3. 填写 PR 模板
+4. 关联相关的 issue
-### 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/zh/developers/contribute/capabilities/frontend-development/best-practices-front.mdx b/packages/twenty-docs/l/zh/developers/contribute/capabilities/frontend-development/best-practices-front.mdx
index 187c2d848c..4b68e814d1 100644
--- a/packages/twenty-docs/l/zh/developers/contribute/capabilities/frontend-development/best-practices-front.mdx
+++ b/packages/twenty-docs/l/zh/developers/contribute/capabilities/frontend-development/best-practices-front.mdx
@@ -1,19 +1,19 @@
---
-title: Best Practices
+title: 最佳实践
---
-This document outlines the best practices you should follow when working on the frontend.
+本文档概述了在前端工作时应遵循的最佳实践。
-## State management
+## 状态管理
-React and Recoil handle state management in the codebase.
+React 和 Recoil 在代码库中处理状态管理。
-### Use `useRecoilState` to store state
+### 使用 `useRecoilState` 来存储状态
-It's good practice to create as many atoms as you need to store your state.
+根据需要创建足够多的原子来存储你的状态,是一种良好实践。
- It's better to use extra atoms than trying to be too concise with props drilling.
+ 与其为了通过 props 层层传递而过度精简,不如使用额外的原子。
```tsx
@@ -36,29 +36,29 @@ export const MyComponent = () => {
}
```
-### Do not use `useRef` to store state
+### 不要使用 `useRef` 来存储状态
-Avoid using `useRef` to store state.
+避免使用 `useRef` 来存储状态。
-If you want to store state, you should use `useState` or `useRecoilState`.
+如果想存储状态,应该使用 `useState` 或 `useRecoilState`。
-See [how to manage re-renders](#managing-re-renders) if you feel like you need `useRef` to prevent some re-renders from happening.
+如果您觉得需要通过使用 `useRef` 来防止一些再渲染,请了解[如何管理再渲染](#managing-re-renders)。
-## Managing re-renders
+## 管理再渲染
-Re-renders can be hard to manage in React.
+在 React 中管理再渲染可能很困难。
-Here are some rules to follow to avoid unnecessary re-renders.
+这里有一些规则以帮助避免不必要的再渲染。
-Keep in mind that you can **always** avoid re-renders by understanding their cause.
+请记住,通过了解其原因,可以**始终**避免再渲染。
-### Work at the root level
+### 在根级别工作
-Avoiding re-renders in new features is now made easy by eliminating them at the root level.
+通过从根级消除它们,现在在新功能中避免再渲染变得容易。
The `PageChangeEffect` sidecar component contains just one `useEffect` that holds all the logic to execute on a page change.
-That way you know that there's just one place that can trigger a re-render.
+这样您就知道只有一个地方可以触发再渲染。
### Always think twice before adding `useEffect` in your codebase
@@ -68,17 +68,17 @@ You should think whether you need `useEffect`, or if you can move the logic in a
You'll find it generally easy to move the logic in a `handleClick` or `handleChange` function.
-You can also find them in libraries like Apollo: `onCompleted`, `onError`, etc.
+您还可以在如 Apollo 的库中找到它们:`onCompleted`,`onError` 等。
### Use a sibling component to extract `useEffect` or data fetching logic
If you feel like you need to add a `useEffect` in your root component, you should consider extracting it in a sidecar component.
-You can apply the same for data fetching logic, with Apollo hooks.
+对于数据获取逻辑也可以采用相同的方法,使用 Apollo hooks。
```tsx
-// ❌ Bad, will cause re-renders even if data is not changing,
-// because useEffect needs to be re-evaluated
+// ❌ 不佳:即使数据未发生变化也会导致重新渲染,
+// 因为需要重新评估 useEffect
export const PageComponent = () => {
const [data, setData] = useRecoilState(dataState);
const [someDependency] = useRecoilState(someDependencyState);
@@ -100,8 +100,8 @@ export const App = () => (
```
```tsx
-// ✅ Good, will not cause re-renders if data is not changing,
-// because useEffect is re-evaluated in another sibling component
+// ✅ 良好:如果数据未发生变化,将不会导致重新渲染,
+// 因为 useEffect 会在另一个同级组件中重新评估
export const PageComponent = () => {
const [data, setData] = useRecoilState(dataState);
@@ -129,84 +129,84 @@ export const App = () => (
);
```
-### Use recoil family states and recoil family selectors
+### 使用 Recoil 状态族和 Recoil 选择器族
-Recoil family states and selectors are a great way to avoid re-renders.
+Recoil 状态族和选择器族是避免再渲染的好方法。
-They are useful when you need to store a list of items.
+当您需要存储项目列表时,它们很有用。
-### You shouldn't use `React.memo(MyComponent)`
+### 您不应使用 `React.memo(MyComponent)`
-Avoid using `React.memo()` because it does not solve the cause of the re-render, but instead breaks the re-render chain, which can lead to unexpected behavior and make the code very hard to refactor.
+避免使用 `React.memo()` 因为它不能解决再渲染的原因,而是中断了再渲染链,可能导致意外行为并使代码难以重构。
-### Limit `useCallback` or `useMemo` usage
+### 限制 `useCallback` 或 `useMemo` 的使用
-They are often not necessary and will make the code harder to read and maintain for a gain of performance that is unnoticeable.
+它们通常没有必要,会使代码难以阅读和维护,而性能提升难以察觉。
## Console.logs
-`console.log` statements are valuable during development, offering real-time insights into variable values and code flow. But, leaving them in production code can lead to several issues:
+`console.log` 语句在开发过程中非常有价值,提供关于变量值和代码流的实时洞察。 但是,将它们留在生产代码中可能导致几个问题:
-1. **Performance**: Excessive logging can affect the runtime performance, especially on client-side applications.
+1. **性能**:过多的日志记录会影响运行时性能,尤其是在客户端应用程序中。
-2. **Security**: Logging sensitive data can expose critical information to anyone who inspects the browser's console.
+2. **安全性**:记录敏感数据可能会将重要信息暴露给任何检查浏览器控制台的人。
-3. **Cleanliness**: Filling up the console with logs can obscure important warnings or errors that developers or tools need to see.
+3. **清洁度**:在控制台中填满日志可能会遮蔽开发人员或工具需要查看的重要警告或错误。
-4. **Professionalism**: End users or clients checking the console and seeing a myriad of log statements might question the code's quality and polish.
+4. **专业性**:检查控制台的最终用户或客户看到数量众多的日志语句,可能会质疑代码的质量和精致度。
-Make sure you remove all `console.logs` before pushing the code to production.
+确保在提交代码到生产环境前移除所有 `console.logs`。
-## Naming
+## 命名
-### Variable Naming
+### 变量命名
-Variable names ought to precisely depict the purpose or function of the variable.
+变量名称应该准确描述变量的用途或功能。
-#### The issue with generic names
+#### 泛化的名称问题
-Generic names in programming are not ideal because they lack specificity, leading to ambiguity and reduced code readability. Such names fail to convey the variable or function's purpose, making it challenging for developers to understand the code's intent without deeper investigation. This can result in increased debugging time, higher susceptibility to errors, and difficulties in maintenance and collaboration. Meanwhile, descriptive naming makes the code self-explanatory and easier to navigate, enhancing code quality and developer productivity.
+在编程中使用泛化的名称不是理想的,因为缺乏具体性,导致模糊性和降低代码的可读性。 这种名称无法传达变量或函数的目的,使得开发人员在不进行深入调查的情况下难以理解代码的意图。 这样会导致调试时间增加、错误的易发性提高以及在维护和协作中遇到困难。 同时,描述性的命名使代码自解释,更易于导航,提高代码质量和开发人员的生产力。
```tsx
-// ❌ Bad, uses a generic name that doesn't communicate its
-// purpose or content clearly
+// ❌ 不佳:使用了过于笼统的名称,无法清晰表达其
+// 用途或内容
const [value, setValue] = useState('');
```
```tsx
-// ✅ Good, uses a descriptive name
+// ✅ 良好:使用了更具描述性的名称
const [email, setEmail] = useState('');
```
-#### Some words to avoid in variable names
+#### 变量名称中应避免使用的一些词
-* dummy
+* 空壳
-### Event handlers
+### 事件处理
-Event handler names should start with `handle`, while `on` is a prefix used to name events in components props.
+事件处理器名称应以 `handle` 开头,而 `on` 是用于命名组件属性事件的前缀。
```tsx
-// ❌ Bad
+// ❌ 不佳
const onEmailChange = (val: string) => {
// ...
};
```
```tsx
-// ✅ Good
+// ✅ 良好
const handleEmailChange = (val: string) => {
// ...
};
```
-## Optional Props
+## 可选属性
-Avoid passing the default value for an optional prop.
+避免为可选属性传递默认值。
-**EXAMPLE**
+**示例**
-Take the`EmailField` component defined below:
+参见下面定义的 `EmailField` 组件:
```tsx
type EmailFieldProps = {
@@ -219,28 +219,28 @@ const EmailField = ({ value, disabled = false }: EmailFieldProps) => (
);
```
-**Usage**
+**用法**
```tsx
-// ❌ Bad, passing in the same value as the default value adds no value
+// ❌ 不佳:传入与默认值相同的值没有任何意义
const Form = () => ;
```
```tsx
-// ✅ Good, assumes the default value
+// ✅ 良好:采用默认值
const Form = () => ;
```
-## Component as props
+## 组件作为属性
-Try as much as possible to pass uninstantiated components as props, so children can decide on their own of what props they need to pass.
+尽可能将未实例化的组件作为属性传递,以便子组件可以自行决定需要传递哪些属性。
-The most common example for that is icon components:
+最常见的例子是图标组件:
```tsx
const SomeParentComponent = () => ;
-// In MyComponent
+// 在 MyComponent 中
const MyComponent = ({ MyIcon }: { MyIcon: IconComponent }) => {
const theme = useTheme();
@@ -252,25 +252,25 @@ const MyComponent = ({ MyIcon }: { MyIcon: IconComponent }) => {
};
```
-For React to understand that the component is a component, you need to use PascalCase, to later instantiate it with ``
+为了让 React 理解一个组件就是一个组件,需要使用 PascalCase,然后用 `` 来实例化它。
-## Prop Drilling: Keep It Minimal
+## 属性传递:保持简约
-Prop drilling, in the React context, refers to the practice of passing state variables and their setters through many component layers, even if intermediary components don't use them. While sometimes necessary, excessive prop drilling can lead to:
+在 React 中,属性传递是指通过多个组件层传递状态变量及其设置器,即使中介组件不使用它们。 虽然有时是必要的,过多的属性传递可能会导致:
-1. **Decreased Readability**: Tracing where a prop originates or where it's utilized can become convoluted in a deeply nested component structure.
+1. **可读性降低**:在深嵌套组件结构中追踪属性的来源或使用位置可能会变得复杂。
-2. **Maintenance Challenges**: Changes in one component's prop structure might require adjustments in several components, even if they don't directly use the prop.
+2. **维护挑战**:一个组件的属性结构变化可能需要在多个组件中进行调整,即便它们不直接使用该属性。
-3. **Reduced Component Reusability**: A component receiving a lot of props solely for passing them down becomes less general-purpose and harder to reuse in different contexts.
+3. **组件重用性降低**:一个仅接受众多属性用于向下传递的组件变得不那么通用,且在不同上下文中更难以重用。
-If you feel that you are using excessive prop drilling, see [state management best practices](#state-management).
+如果您觉得使用了过多的属性传递,请参见[状态管理最佳实践](#state-management)。
-## Imports
+## 导入
-When importing, opt for the designated aliases rather than specifying complete or relative paths.
+导入时,选择指定的别名而不是指定完整或相对路径。
-**The Aliases**
+**句柄别名**
```js
{
@@ -282,10 +282,10 @@ When importing, opt for the designated aliases rather than specifying complete o
}
```
-**Usage**
+**用法**
```tsx
-// ❌ Bad, specifies the entire relative path
+// ❌ 不佳:使用了完整的相对路径
import {
CatalogDecorator
} from '../../../../../testing/decorators/CatalogDecorator';
@@ -295,14 +295,14 @@ import {
```
```tsx
-// ✅ Good, utilises the designated aliases
+// ✅ 良好:使用了指定的别名
import { CatalogDecorator } from '~/testing/decorators/CatalogDecorator';
import { ComponentDecorator } from 'twenty-ui/testing';
```
-## Schema Validation
+## 模式验证
-[Zod](https://github.com/colinhacks/zod) is the schema validator for untyped objects:
+[Zod](https://github.com/colinhacks/zod) 是用于无类型对象的模式验证器:
```js
const validationSchema = z
@@ -320,6 +320,6 @@ const validationSchema = z
type Form = z.infer;
```
-## Breaking Changes
+## 重大变更
-Always perform thorough manual testing before proceeding to guarantee that modifications haven’t caused disruptions elsewhere, given that tests have not yet been extensively integrated.
+在进行下一步之前,始终进行彻底的手动测试,以确保修改没有在其他地方造成干扰,因为测试尚未全面集成。
diff --git a/packages/twenty-docs/l/zh/developers/contribute/capabilities/frontend-development/folder-architecture-front.mdx b/packages/twenty-docs/l/zh/developers/contribute/capabilities/frontend-development/folder-architecture-front.mdx
index 064ac5c256..a8e85c59e1 100644
--- a/packages/twenty-docs/l/zh/developers/contribute/capabilities/frontend-development/folder-architecture-front.mdx
+++ b/packages/twenty-docs/l/zh/developers/contribute/capabilities/frontend-development/folder-architecture-front.mdx
@@ -1,11 +1,11 @@
---
-title: Folder Architecture
-info: A detailed look into our folder architecture
+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 的组织和可维护性。
-By following this folder architecture convention, it's easier to find the files related to specific features and ensure that the application is scalable and maintainable.
+遵循此文件夹架构约定,可以更轻松地找到与特定功能相关的文件,并确保应用程序的可扩展性和可维护性。
```
front
@@ -22,14 +22,14 @@ front
└───...
```
-## Pages
+## 页面
-Includes the top-level components defined by the application routes. They import more low-level components from the modules folder (more details below).
+包含由应用程序路由定义的顶级组件。 它们从模块文件夹中导入更多低级组件(详细信息见下文)。
-## Modules
+## 模块
-Each module represents a feature or a group of feature, comprising its specific components, states, and operational logic.
-They should all follow the structure below. You can nest modules within modules (referred to as submodules) and the same rules will apply.
+每个模块代表一个功能或一组功能,包括其特定组件、状态和操作逻辑。
+它们都应遵循以下结构。 您可以在模块中嵌套模块(称为子模块),同样的规则将适用。
```
module1
@@ -50,60 +50,60 @@ module1
└───utils
```
-### Contexts
+### 上下文
-A context is a way to pass data through the component tree without having to pass props down manually at every level.
+上下文是一种通过组件树传递数据的方法,不必在每个级别手动传 props。
-See [React Context](https://react.dev/reference/react#context-hooks) for more details.
+详情请参阅 [React Context](https://react.dev/reference/react#context-hooks)。
### GraphQL
-Includes fragments, queries, and mutations.
+包含片段、查询和变更。
-See [GraphQL](https://graphql.org/learn/) for more details.
+详情请参阅 [GraphQL](https://graphql.org/learn/)。
-* Fragments
+* 片段
-A fragment is a reusable piece of a query, which you can use in different places. By using fragments, it's easier to avoid duplicating code.
+片段是查询的可重用部分,可以在不同地方使用。 使用片段可以更容易地避免代码重复。
-See [GraphQL Fragments](https://graphql.org/learn/queries/#fragments) for more details.
+详情请参阅 [GraphQL Fragments](https://graphql.org/learn/queries/#fragments)。
-* Queries
+* 查询
-See [GraphQL Queries](https://graphql.org/learn/queries/) for more details.
+详情请参阅 [GraphQL Queries](https://graphql.org/learn/queries/)。
-* Mutations
+* 变更
-See [GraphQL Mutations](https://graphql.org/learn/queries/#mutations) for more details.
+详情请参阅 [GraphQL Mutations](https://graphql.org/learn/queries/#mutations)。
-### Hooks
+### 钩子
-See [Hooks](https://react.dev/learn/reusing-logic-with-custom-hooks) for more details.
+详情请参阅 [Hooks](https://react.dev/learn/reusing-logic-with-custom-hooks)。
-### States
+### 状态
-Contains the state management logic. [RecoilJS](https://recoiljs.org) handles this.
+包含状态管理逻辑。 [RecoilJS](https://recoiljs.org) 处理这部分。
-* Selectors: See [RecoilJS Selectors](https://recoiljs.org/docs/basic-tutorial/selectors) for more details.
+* 选择器:详情请参阅 [RecoilJS Selectors](https://recoiljs.org/docs/basic-tutorial/selectors)。
-React's built-in state management still handles state within a component.
+React 内置状态管理仍然在组件内处理状态。
-### Utils
+### 工具
-Should just contain reusable pure functions. Otherwise, create custom hooks in the `hooks` folder.
+应仅包含可重用的纯函数。 否则,请在 `hooks` 文件夹中创建自定义钩子。
## UI
-Contains all the reusable UI components used in the application.
+包含应用程序中使用的所有可重用的 UI 组件。
-This folder can contain sub-folders, like `data`, `display`, `feedback`, and `input` for specific types of components. Each component should be self-contained and reusable, so that you can use it in different parts of the application.
+这个文件夹可以包含子文件夹,像 `data`、`display`、`feedback` 和 `input`,用于特定类型的组件。 每个组件都应是自包含和可重用的,以便您可以在应用程序的不同部分使用它。
-By separating the UI components from the other components in the `modules` folder, it's easier to maintain a consistent design and to make changes to the UI without affecting other parts (business logic) of the codebase.
+通过将 UI 组件与 `modules` 文件夹中的其他组件分开,可以更轻松地保持一致的设计,并在更改 UI 时不影响其他部分(业务逻辑)的代码库。
-## Interface and dependencies
+## 接口和依赖关系
-You can import other module code from any module except for the `ui` folder. This will keep its code easy to test.
+您可以从任何模块中导入其他模块代码,但 `ui` 文件夹除外。 这将使代码易于测试。
-### Internal
+### 内部
-Each part (hooks, states, ...) of a module can have an `internal` folder, which contains parts that are just used within the module.
+模块的每个部分(钩子、状态等) 都可以有一个 `internal` 文件夹,其中包含仅在模块内使用的部分。
diff --git a/packages/twenty-docs/l/zh/developers/contribute/capabilities/frontend-development/frontend-commands.mdx b/packages/twenty-docs/l/zh/developers/contribute/capabilities/frontend-development/frontend-commands.mdx
index b240929b77..74c1c51738 100644
--- a/packages/twenty-docs/l/zh/developers/contribute/capabilities/frontend-development/frontend-commands.mdx
+++ b/packages/twenty-docs/l/zh/developers/contribute/capabilities/frontend-development/frontend-commands.mdx
@@ -1,22 +1,22 @@
---
-title: Frontend Commands
+title: 前端命令
---
-## Useful commands
+## 实用命令
-### Starting the app
+### 启动应用
```bash
npx nx start twenty-front
```
-### Regenerate graphql schema based on API graphql schema
+### 根据API graphql schema重新生成graphql schema
```bash
npx nx run twenty-front:graphql:generate --configuration=metadata
```
-OR
+或
```bash
npx nx run twenty-front:graphql:generate
@@ -28,14 +28,14 @@ npx nx run twenty-front:graphql:generate
npx nx run twenty-front:lint # pass --fix to fix lint errors
```
-## Translations
+## 翻译
```bash
npx nx run twenty-front:lingui:extract
npx nx run twenty-front:lingui:compile
```
-### Test
+### 测试
```bash
npx nx run twenty-front:test # run jest tests
@@ -44,47 +44,47 @@ npx nx run twenty-front:storybook:test # run tests # (needs yarn storybook:serve
npx nx run twenty-front:storybook:coverage # (needs yarn storybook:serve:dev to be running)
```
-## Tech Stack
+## 技术栈
-The project has a clean and simple stack, with minimal boilerplate code.
+项目有一个干净且简单的技术栈,使用最少的样板代码。
-**App**
+**应用**
* [React](https://react.dev/)
* [Apollo](https://www.apollographql.com/docs/)
-* [GraphQL Codegen](https://the-guild.dev/graphql/codegen)
+* [GraphQL 代码生成](https://the-guild.dev/graphql/codegen)
* [Recoil](https://recoiljs.org/docs/introduction/core-concepts)
* [TypeScript](https://www.typescriptlang.org/)
-**Testing**
+**测试**
* [Jest](https://jestjs.io/)
* [Storybook](https://storybook.js.org/)
-**Tooling**
+**工具**
* [Yarn](https://yarnpkg.com/)
* [Craco](https://craco.js.org/docs/)
* [ESLint](https://eslint.org/)
-## Architecture
+## 架构
-### Routing
+### 路由
-[React Router](https://reactrouter.com/) handles the routing.
+[React Router](https://reactrouter.com/) 负责处理路由。
To avoid unnecessary [re-renders](/l/zh/developers/contribute/capabilities/frontend-development/best-practices-front#managing-re-renders) all the routing logic is in a `useEffect` in `PageChangeEffect`.
-### State Management
+### 状态管理
-[Recoil](https://recoiljs.org/docs/introduction/core-concepts) handles state management.
+[Recoil](https://recoiljs.org/docs/introduction/core-concepts) 处理状态管理。
-See [best practices](/l/zh/developers/contribute/capabilities/frontend-development/best-practices-front#state-management) for more information on state management.
+查看[最佳实践](/l/zh/developers/contribute/capabilities/frontend-development/best-practices-front#state-management)以获取有关状态管理的更多信息。
-## Testing
+## 测试
-[Jest](https://jestjs.io/) serves as the tool for unit testing while [Storybook](https://storybook.js.org/) is for component testing.
+[Jest](https://jestjs.io/) 用于单元测试,而 [Storybook](https://storybook.js.org/) 用于组件测试。
-Jest is mainly for testing utility functions, and not components themselves.
+Jest 主要用于测试工具函数,而不是组件本身。
-Storybook is for testing the behavior of isolated components, as well as displaying the design system.
+Storybook 用于测试隔离组件的行为,以及展示设计系统。
diff --git a/packages/twenty-docs/l/zh/developers/contribute/capabilities/frontend-development/hotkeys.mdx b/packages/twenty-docs/l/zh/developers/contribute/capabilities/frontend-development/hotkeys.mdx
index 43cde50e63..ab77340664 100644
--- a/packages/twenty-docs/l/zh/developers/contribute/capabilities/frontend-development/hotkeys.mdx
+++ b/packages/twenty-docs/l/zh/developers/contribute/capabilities/frontend-development/hotkeys.mdx
@@ -1,42 +1,42 @@
---
-title: Hotkeys
+title: 快捷键
---
-## Introduction
+## 介绍
-When you need to listen to a hotkey, you would normally use the `onKeyDown` event listener.
+当你需要监听一个快捷键时,通常会使用 `onKeyDown` 事件监听器。
-In `twenty-front` however, you might have conflicts between same hotkeys that are used in different components, mounted at the same time.
+然而,在 `twenty-front` 中,你可能会遇到用于不同组件的相同快捷键之间的冲突,这些组件同时挂载。
-For example, if you have a page that listens for the Enter key, and a modal that listens for the Enter key, with a Select component inside that modal that listens for the Enter key, you might have a conflict when all are mounted at the same time.
+例如,如果你有一个页面监听回车键,而一个包含选择组件的模态框也监听回车键,在所有这些组件同时挂载时可能会发生冲突。
-## The `useScopedHotkeys` hook
+## `useScopedHotkeys` hook
-To handle this problem, we have a custom hook that makes it possible to listen to hotkeys without any conflict.
+为了解决这个问题,我们有一个自定义的 hook,可以在不产生冲突的情况下监听快捷键。
-You place it in a component, and it will listen to the hotkeys only when the component is mounted AND when the specified **hotkey scope** is active.
+您可以将它放在组件中,它只会在组件挂载并且指定的 **快捷键范围** 激活时监听快捷键。
-## How to listen for hotkeys in practice?
+## 在实践中如何监听快捷键?
-There are two steps involved in setting up hotkey listening :
+设置快捷键监听涉及两个步骤:
-1. Set the [hotkey scope](#what-is-a-hotkey-scope-) that will listen to hotkeys
-2. Use the `useScopedHotkeys` hook to listen to hotkeys
+1. 设置将会监听快捷键的[快捷键范围](#what-is-a-hotkey-scope-)
+2. 使用 `useScopedHotkeys` hook 来监听快捷键
-Setting up hotkey scopes is required even in simple pages, because other UI elements like left menu or command menu might also listen to hotkeys.
+即使在简单的页面中,也需要设置快捷键范围,因为其他界面元素如左侧菜单或命令菜单也可能监听快捷键。
-## Use cases for hotkeys
+## 快捷键的使用案例
-In general, you'll have two use cases that require hotkeys :
+通常情况下,会有两种需要快捷键的使用案例:
-1. In a page or a component mounted in a page
-2. In a modal-type component that takes the focus due to a user action
+1. 在页面或页面中挂载的组件中
+2. 在由于用户操作而获得焦点的模态组件中
-The second use case can happen recursively : a dropdown in a modal for example.
+第二种使用情况可以递归发生:例如,在模态框中的下拉框。
-### Listening to hotkeys in a page
+### 在页面中监听快捷键
-Example :
+示例:
```tsx
const PageListeningEnter = () => {
@@ -71,11 +71,11 @@ const PageListeningEnter = () => {
};
```
-### Listening to hotkeys in a modal-type component
+### 在模态类型组件中监听快捷键
-For this example we'll use a modal component that listens for the Escape key to tell its parent to close it.
+在这个示例中,我们将使用一个模态组件,该组件监听 Esc 键来告诉其父组件关闭自己。
-Here the user interaction is changing the scope.
+这里用户交互正在改变范围。
```tsx
const ExamplePageWithModal = () => {
@@ -108,7 +108,7 @@ const ExamplePageWithModal = () => {
};
```
-Then in the modal component :
+然后在模态组件中:
```tsx
const MyDropdownComponent = ({ onClose }: { onClose: () => void }) => {
@@ -131,15 +131,15 @@ It's important to use this pattern when you're not sure that just using a useEff
Those conflicts can be hard to debug, and it might happen more often than not with useEffects.
-## What is a hotkey scope?
+## 什么是快捷键范围?
-A hotkey scope is a string that represents a context in which the hotkeys are active. It is generally encoded as an enum.
+快捷键范围是表示快捷键激活上下文的字符串。 通常编码为枚举。
-When you change the hotkey scope, the hotkeys that are listening to this scope will be enabled and the hotkeys that are listening to other scopes will be disabled.
+当你更改快捷键范围时,监听此范围的快捷键将启用,监听其他范围的快捷键将被禁用。
-You can set only one scope at a time.
+一次只能设置一个范围。
-As an example, the hotkey scopes for each page are defined in the `PageHotkeyScope` enum:
+例如,每个页面的快捷键范围在 `PageHotkeyScope` 枚举中定义:
```tsx
export enum PageHotkeyScope {
@@ -160,7 +160,7 @@ export enum PageHotkeyScope {
}
```
-Internally, the currently selected scope is stored in a Recoil state that is shared across the application :
+在内部,当前选择的范围存储在整个应用程序共享的 Recoil 状态中:
```tsx
export const currentHotkeyScopeState = createState({
@@ -169,10 +169,10 @@ export const currentHotkeyScopeState = createState({
});
```
-But this Recoil state should never be handled manually ! We'll see how to use it in the next section.
+但这个 Recoil 状态不应该手动处理! 我们将在下一节中学习如何使用它。
-## How is it working internally?
+## 内部是如何运作的?
-We made a thin wrapper on top of [react-hotkeys-hook](https://react-hotkeys-hook.vercel.app/docs/intro) that makes it more performant and avoids unnecessary re-renders.
+我们在 [react-hotkeys-hook](https://react-hotkeys-hook.vercel.app/docs/intro) 之上制作了一个薄包装,使其性能更高并避免不必要的重新渲染。
-We also create a Recoil state to handle the hotkey scope state and make it available everywhere in the application.
+我们还创建了一个 Recoil 状态来处理快捷键范围状态,并使其在整个应用程序中可用。
diff --git a/packages/twenty-docs/l/zh/developers/contribute/capabilities/frontend-development/storybook.mdx b/packages/twenty-docs/l/zh/developers/contribute/capabilities/frontend-development/storybook.mdx
index 5c7f5fa52a..1a6e63662a 100644
--- a/packages/twenty-docs/l/zh/developers/contribute/capabilities/frontend-development/storybook.mdx
+++ b/packages/twenty-docs/l/zh/developers/contribute/capabilities/frontend-development/storybook.mdx
@@ -1,8 +1,8 @@
---
title: Storybook
-description: Browse Twenty's UI component library
+description: 浏览 Twenty 的 UI 组件库
---
-View our complete component library and documentation in Storybook.
+在 Storybook 中查看我们完整的组件库和文档。
-[Open Storybook →](https://storybook.twenty.com)
+[打开 Storybook →](https://storybook.twenty.com)
diff --git a/packages/twenty-docs/l/zh/developers/contribute/capabilities/frontend-development/style-guide.mdx b/packages/twenty-docs/l/zh/developers/contribute/capabilities/frontend-development/style-guide.mdx
index e3ba4a44f0..14e4a3ac5e 100644
--- a/packages/twenty-docs/l/zh/developers/contribute/capabilities/frontend-development/style-guide.mdx
+++ b/packages/twenty-docs/l/zh/developers/contribute/capabilities/frontend-development/style-guide.mdx
@@ -1,24 +1,24 @@
---
-title: Style Guide
+title: 样式指南
---
-This document includes the rules to follow when writing code.
+本文档包含编写代码时需要遵循的规则。
-The goal here is to have a consistent codebase, which is easy to read and easy to maintain.
+这里的目标是拥有一个一致的代码库,易于阅读和维护。
-For this, it's better to be a bit more verbose than to be too concise.
+为此,比起过于简洁,冗长一些更好。
-Always keep in mind that people read code more often than they write it, specially on an open source project, where anyone can contribute.
+请始终记住,人们阅读代码的次数远多于他们编写代码的次数,特别是在开源项目中,任何人都可以贡献。
-There are a lot of rules that are not defined here, but that are automatically checked by linters.
+有很多规则没有在此定义,但可以通过linters自动检查。
## React
-### Use functional components
+### 使用函数组件
-Always use TSX functional components.
+始终使用 TSX 函数组件。
-Do not use default `import` with `const`, because it's harder to read and harder to import with code completion.
+不要使用带有`const`的默认`import`,因为它更难阅读,并且更难通过代码补全功能导入。
```tsx
// ❌ Bad, harder to read, harder to import with code completion
@@ -34,11 +34,11 @@ export function MyComponent() {
};
```
-### Props
+### 属性
-Create the type of the props and call it `(ComponentName)Props` if there's no need to export it.
+创建props类型并称为`(ComponentName)Props`,如果不需要导出它。
-Use props destructuring.
+使用props解构。
```tsx
// ❌ Bad, no type
@@ -52,7 +52,7 @@ type MyComponentProps = {
export const MyComponent = ({ name }: MyComponentProps) => Hello {name}
;
```
-#### Refrain from using `React.FC` or `React.FunctionComponent` to define prop types
+#### 避免使用 `React.FC` 或 `React.FunctionComponent` 适用于属性类型的定义
```tsx
/* ❌ - Bad, defines the component type annotations with `FC`
@@ -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;
@@ -81,9 +81,9 @@ const EmailField = ({ value }: EmailFieldProps) => (
);
```
-#### No Single Variable Prop Spreading in JSX Elements
+#### JSX元素中禁止单变量属性传播
-Avoid using single variable prop spreading in JSX elements, like `{...props}`. This practice often results in code that is less readable and harder to maintain because it's unclear which props the component is receiving.
+避免在JSX元素中使用单个变量属性传播,如`{...props}`。 这种做法通常会导致代码不易读且难以维护,因为不清楚组件接收了哪些属性。
```tsx
/* ❌ - Bad, spreads a single variable prop into the underlying component
@@ -94,23 +94,23 @@ const MyComponent = (props: OwnProps) => {
```
```tsx
-/* ✅ - Good, Explicitly lists all props
- * - Enhances readability and maintainability
+/* ✅ - 良好,明确列出所有属性
+ * - 增强可读性和可维护性
*/
const MyComponent = ({ prop1, prop2, prop3 }: MyComponentProps) => {
return ;
};
```
-Rationale:
+理由:
-* At a glance, it's clearer which props the code passes down, making it easier to understand and maintain.
-* It helps to prevent tight coupling between components via their props.
-* Linting tools make it easier to identify misspelled or unused props when you list props explicitly.
+* 一目了然,它更清楚哪个属性代码传递下来,这使得理解和维护更容易。
+* 这有助于防止组件间通过属性的紧密耦合。
+* Linting工具使显式列出属性时更易于识别拼写错误或未使用的属性。
## JavaScript
-### Use nullish-coalescing operator `??`
+### 使用nullish 合并运算符 `??`
```tsx
// ❌ Bad, can return 'default' even if value is 0 or ''
@@ -120,21 +120,21 @@ const value = process.env.MY_VALUE || 'default';
const value = process.env.MY_VALUE ?? 'default';
```
-### Use optional chaining `?.`
+### 使用可选链 `?.`
```tsx
-// ❌ Bad
+// ❌ 糟糕
onClick && onClick();
-// ✅ Good
+// ✅ 良好
onClick?.();
```
## TypeScript
-### Use `type` instead of `interface`
+### 使用 `type` 替代 `interface`
-Always use `type` instead of `interface`, because they almost always overlap, and `type` is more flexible.
+总是使用 `type` 而不是 `interface`,因为它们几乎总是重叠,而 `type` 更灵活。
```tsx
// ❌ Bad
@@ -148,11 +148,11 @@ type MyType = {
};
```
-### Use string literals instead of enums
+### 使用字符串字面量代替枚举
-[String literals](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#literal-types) are the go-to way to handle enum-like values in TypeScript. They are easier to extend with Pick and Omit, and offer a better developer experience, specially with code completion.
+[字符串字面量](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#literal-types)是TypeScript中处理枚举值的首选方式。 它们可以更轻松地使用Pick和Omit扩展,并提供更好的开发者体验,特别是在代码补全时。
-You can see why TypeScript recommends avoiding enums [here](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#enums).
+您可以查看[这里](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#enums)了解为什么TypeScript建议避免使用枚举。
```tsx
// ❌ Bad, utilizes an enum
@@ -171,13 +171,13 @@ let color = Color.Red;
let color: "red" | "green" | "blue" = "red";
```
-#### GraphQL and internal libraries
+#### GraphQL和内部库
-You should use enums that GraphQL codegen generates.
+应使用GraphQL codegen生成的枚举。
-It's also better to use an enum when using an internal library, so the internal library doesn't have to expose a string literal type that is not related to the internal API.
+在使用内部库时, 使用枚举更好,这样内部库不必暴露不属于内部API的字符串文字类型。
-Example:
+示例:
```TSX
const {
@@ -190,11 +190,11 @@ setHotkeyScopeAndMemorizePreviousScope(
);
```
-## Styling
+## 样式
-### Use StyledComponents
+### 使用StyledComponents
-Style the components with [styled-components](https://emotion.sh/docs/styled).
+使用[styled-components](https://emotion.sh/docs/styled)对组件进行样式化。
```tsx
// ❌ Bad
@@ -208,7 +208,7 @@ const StyledTitle = styled.div`
`;
```
-Prefix styled components with "Styled" to differentiate them from "real" components.
+在“真实”组件和Styled 组件之间的区别,前置“Styled”命名。
```tsx
// ❌ Bad
@@ -224,17 +224,17 @@ const StyledTitle = styled.div`
`;
```
-### Theming
+### 主题
-Utilizing the theme for the majority of component styling is the preferred approach.
+大多数组件样式首选利用主题。
-#### Units of measurement
+#### 测量单位
-Avoid using `px` or `rem` values directly within the styled components. The necessary values are generally already defined in the theme, so it’s recommended to make use of the theme for these purposes.
+避免在样式化组件中直接使用`px`或`rem`值。 所需的值通常已在主题中定义,因此建议为此目的使用主题。
-#### Colors
+#### 颜色
-Refrain from introducing new colors; instead, use the existing palette from the theme. Should there be a situation where the palette does not align, please leave a comment so that the team can rectify it.
+避免引入新颜色;而是使用来自主题的现有调色板。 如果遇到调色板不匹配的情况,请留下评论以便团队纠正。
```tsx
// ❌ Bad, directly specifies style values without utilizing the theme
@@ -258,9 +258,9 @@ const StyledButton = styled.button`
`;
```
-## Enforcing No-Type Imports
+## 强制不允许类型导入
-Avoid type imports. To enforce this standard, an ESLint rule checks for and reports any type imports. This helps maintain consistency and readability in the TypeScript code.
+避免类型导入。 为强制实施此标准,ESLint规则检查并报告所有类型导入。 这有助于在TypeScript代码中保持一致性和可读性。
```tsx
// ❌ Bad
@@ -273,18 +273,18 @@ import type { Meta, StoryObj } from '@storybook/react';
import { Meta, StoryObj } from '@storybook/react';
```
-### Why No-Type Imports
+### 为什么不允许类型导入
-* **Consistency**: By avoiding type imports and using a single approach for both type and value imports, the codebase remains consistent in its module import style.
+* **一致性**:通过避免类型导入并为类型和值导入使用单一方法,代码库在其模块导入风格上保持一致性。
-* **Readability**: No-type imports improve code readability by making it clear when you're importing values or types. This reduces ambiguity and makes it easier to understand the purpose of imported symbols.
+* **可读性**:无类型导入提高代码可读性,使得在导入值或类型时更显而易见。 这减少了歧义,并使理解导入符号的用途更容易。
-* **Maintainability**: It enhances codebase maintainability because developers can identify and locate type-only imports when reviewing or modifying code.
+* **可维护性**:它增强了代码库的可维护性,因为开发人员可以在审查或修改代码时识别和定位仅类型导入。
-### ESLint Rule
+### ESLint规则
-An ESLint rule, `@typescript-eslint/consistent-type-imports`, enforces the no-type import standard. This rule will generate errors or warnings for any type import violations.
+ESLint规则,`@typescript-eslint/consistent-type-imports`,强制执行不允许类型导入标准。 该规则会生成错误或警告以提示任何类型导入的违规。
-Please note that this rule specifically addresses rare edge cases where unintentional type imports occur. 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). In most situations, you should not need to use type-only imports.
+请注意,此规则专门针对在罕见的边缘情况中发生的非预期类型导入。 TypeScript 本身也不鼓励这种做法,如[TypeScript 3.8 发行说明](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-8.html)所述。 在大多数情况下,您不需要使用仅类型导入。
-To ensure your code complies with this rule, make sure to run ESLint as part of your development workflow.
+为确保您的代码符合此规则,请确保在开发工作流程中运行ESLint。
diff --git a/packages/twenty-docs/l/zh/developers/contribute/capabilities/frontend-development/work-with-figma.mdx b/packages/twenty-docs/l/zh/developers/contribute/capabilities/frontend-development/work-with-figma.mdx
index 6cffcc405e..4439ee4ae3 100644
--- a/packages/twenty-docs/l/zh/developers/contribute/capabilities/frontend-development/work-with-figma.mdx
+++ b/packages/twenty-docs/l/zh/developers/contribute/capabilities/frontend-development/work-with-figma.mdx
@@ -1,59 +1,59 @@
---
-title: Work with Figma
-info: Learn how you can collaborate with Twenty's Figma
+title: 使用Figma进行工作
+info: 了解如何与 Twenty 的 Figma 协作
---
-Figma is a collaborative interface design tool that aids in bridging the communication barrier between designers and developers.
-This guide explains how you can collaborate with Figma.
+Figma是一款协作界面设计工具,帮助设计师和开发者之间沟通无障碍。
+本指南介绍如何与Figma协作。
-## Access
+## 访问
-1. **Access the shared link:** You can access the project's Figma file [here](https://www.figma.com/file/xt8O9mFeLl46C5InWwoMrN/Twenty).
-2. **Sign in:** If you're not already signed in, Figma will prompt you to do so.
- Key features are only available to logged-in users, such as the developer mode and the ability to select a dedicated frame.
+1. **访问共享链接:** 您可以在[此处](https://www.figma.com/file/xt8O9mFeLl46C5InWwoMrN/Twenty)访问项目的 Figma 文件。
+2. **登录:** 如果尚未登录,Figma会提示您进行登录。
+ 只有登录用户才能使用关键功能,如开发者模式和选择专用框架的能力。
- You will not be able to collaborate effectively without an account.
+ 没有账户将无法有效协作。
-## Figma structure
+## Figma结构
-On the left sidebar, you can access the different pages of Twenty's Figma. This is how they're organized:
+在左侧边栏,您可以访问 Twenty 的 Figma 中的不同页面。 页面组织方式如下:
-* **Components page:** This is the first page. The designer uses it to create and organize the reusable design elements used throughout the design file. For example, buttons, icons, symbols, or any other reusable components. It serves to maintain consistency across the design.
-* **Main page:** The second page is the main page, which shows the complete user interface of the project. You can press ***Play*** to use the full app prototype.
-* **Features pages:** The other pages are typically dedicated to features in progress. They contain the design of specific features or modules of the application or website. They are typically still in progress.
+* **组件页面:** 这是第一页。 设计师使用它创建和组织设计文件中可重用的设计元素。 例如,按钮、图标、符号,或其他可重用的组件。 它能保持设计一致性。
+* **主页:** 第二页是主页,展示项目的完整用户界面。 可以按下**播放**,使用完整的应用程序原型。
+* **功能页面:** 其他页面通常专用于进行中的功能。 它们包含应用程序或网站特定功能或模块的设计。 这些通常仍在进行中。
-## Useful Tips
+## 有用的提示
-With read-only access, you can't edit the design, but you can access all features that will be useful to convert the designs into code.
+在仅查看权限下,您无法编辑设计,但可以访问用于将设计转换为代码的所有功能。
-### Use the Dev mode
+### 使用开发者模式
-Figma's Dev Mode enhances developers' productivity by providing easy design navigation, effective asset management, efficient communication tools, toolbox integrations, quick code snippets, and key layer information, bridging the gap between design and development. You can learn more about Dev Mode [here](https://www.figma.com/dev-mode/).
+Figma的开发者模式通过提供便捷的设计导航、有效的资产管理、有效的沟通工具、工具箱集成、快速代码片段和关键图层信息,增强了开发人员的生产力,填补了设计与开发之间的缺口。 可以在[此处](https://www.figma.com/dev-mode/)了解有关开发者模式的更多信息。
-Switch to the "Developer" mode in the right part of the toolbar to see design specs, copy CSS, and access assets.
+切换到工具栏右侧的“开发者”模式以查看设计规格、复制CSS并访问资产。
-### Use the Prototype
+### 使用原型
-Click on any element on the canvas and press the “Play” button at the top right edge of the interface to access the prototype view. Prototype mode allows you to interact with the design as if it were the final product. It demonstrates the flow between screens and how interface elements like buttons, links, or menus behave when interacted with.
+在画布上点击任意元素,并在界面右上角按下“播放”按钮以访问原型视图。 原型模式允许您像最终产品一样与设计进行交互。 它展示了屏幕之间的流程以及界面元素(如按钮、链接或菜单)在交互时的行为方式。
-1. **Understanding transitions and animations:** In the Prototype mode, you can view any transitions or animations added by a designer between screens or UI elements, providing clear visual instructions to developers on the intended behavior and style.
-2. **Implementation clarification:** A prototype can also help reduce ambiguities. Developers can interact with it to gain a better understanding of the functionality or appearance of particular elements.
+1. **了解过渡和动画:** 在原型模式中,您可以查看设计师在屏幕或UI元素之间添加的任何过渡或动画,为开发人员提供明确的视觉说明,理解预期的行为和风格。
+2. **实施澄清:** 原型还可以帮助减少歧义。 开发人员可以与原型交互,以更好地理解特定元素的功能或外观。
-For more comprehensive details and guidance on learning the Figma platform, you can visit the official [Figma Documentation](https://help.figma.com/hc/en-us).
+有关Figma平台学习的更多详细信息和指南,可以访问官方[Figma文档](https://help.figma.com/hc/en-us)。
-### Measure distances
+### 测量距离
-Select an element, hold `Option` key (Mac) or `Alt` key (Windows), then hover over another element to see the distance between them.
+选择一个元素,按住`Option`键(Mac)或`Alt`键(Windows),然后悬停在另一个元素上以查看它们之间的距离。
-### Figma extension for VSCode (Recommended)
+### VSCode的Figma扩展(推荐)
[Figma for VS Code](https://marketplace.visualstudio.com/items?itemName=figma.figma-vscode-extension)
-lets you navigate and inspect design files, collaborate with designers, track changes, and speed up implementation - all without leaving your text editor.
-It's part of our recommended extensions.
+可让您浏览和检查设计文件,与设计师协作,跟踪更改,并加速实现落地——且无需离开文本编辑器。
+这是我们推荐的扩展之一。
-## Collaboration
+## 协作
-1. **Using Comments:** You are welcome to use the comment feature by clicking on the bubble icon in the left part of the toolbar.
-2. **Cursor chat:** A nice feature of Figma is the Cursor chat. Just press `;` on Mac and `/` on Windows to send a message if you see someone else using Figma as the same time as you.
+1. **使用评论:** 您可以使用评论功能,点击工具栏左侧的气泡图标。
+2. **光标聊天:** Figma的一个很棒的功能是光标聊天。 如果您看到其他人在使用Figma的同时按下Mac上的`;`或者Windows上的`/`来发送消息。
diff --git a/packages/twenty-docs/l/zh/developers/contribute/capabilities/local-setup.mdx b/packages/twenty-docs/l/zh/developers/contribute/capabilities/local-setup.mdx
index 760f373022..1d26ddf7be 100644
--- a/packages/twenty-docs/l/zh/developers/contribute/capabilities/local-setup.mdx
+++ b/packages/twenty-docs/l/zh/developers/contribute/capabilities/local-setup.mdx
@@ -1,13 +1,13 @@
---
-title: Local Setup
-description: The guide for contributors (or curious developers) who want to run Twenty locally.
+title: 本地设置
+description: 本指南适用于希望在本地运行 Twenty 的贡献者或好奇的开发人员。
---
-## Prerequisites
+## 先决条件
-
- Before you can install and use Twenty, make sure you install the following on your computer:
+
+ 在安装和使用 Twenty 之前,请确保在您的计算机上安装以下内容:
* [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)
* [Node v24.5.0](https://nodejs.org/en/download)
@@ -15,25 +15,25 @@ description: The guide for contributors (or curious developers) who want to run
* [nvm](https://github.com/nvm-sh/nvm/blob/master/README.md)
- `npm` won't work, you should use `yarn` instead. Yarn is now shipped with Node.js, so you don't need to install it separately.
- You only have to run `corepack enable` to enable Yarn if you haven't done it yet.
+ `npm` 无法使用,您应该改用 `yarn`。 Yarn 现在与 Node.js 一起提供,因此您不需要单独安装它。
+ 如果您尚未执行此操作,只需运行 `corepack enable` 即可启用 Yarn。
- 1. Install WSL
- Open PowerShell as Administrator and run:
+ 1. 安装 WSL
+ 以管理员身份打开 PowerShell 并运行:
```powershell
wsl --install
```
- You should now see a prompt to restart your computer. If not, restart it manually.
+ 现在您应该看到一个提示,要求您重启计算机。 如果没有,请手动重启。
- Upon restart, a powershell window will open and install Ubuntu. This may take up some time.
- You'll see a prompt to create a username and password for your Ubuntu installation.
+ 重启后,一个 powershell 窗口将打开并安装 Ubuntu。 这可能需要一些时间。
+ 您将看到一个提示,要求为您的 Ubuntu 安装创建用户名和密码。
- 2. Install and configure git
+ 2. 安装和配置 git
```bash
sudo apt-get install git
@@ -43,10 +43,10 @@ description: The guide for contributors (or curious developers) who want to run
git config --global user.email "youremail@domain.com"
```
- 3. Install nvm, node.js and yarn
+ 3. 安装 nvm、node.js 和 yarn
- Use `nvm` to install the correct `node` version. The `.nvmrc` ensures all contributors use the same version.
+ 使用 `nvm` 安装正确的 `node` 版本。 `.nvmrc` 确保所有贡献者使用相同的版本。
```bash
@@ -55,7 +55,7 @@ description: The guide for contributors (or curious developers) who want to run
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | bash
```
- Close and reopen your terminal to use nvm. Then run the following commands.
+ 关闭并重新打开您的终端以使用 nvm。 然后运行以下命令。
```bash
@@ -70,13 +70,13 @@ description: The guide for contributors (or curious developers) who want to run
---
-## Step 1: Git Clone
+## 步骤 1:Git 克隆
-In your terminal, run the following command.
+在您的终端中,运行以下命令。
-
- If you haven't already set up SSH keys, you can learn how to do so [here](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/about-ssh).
+
+ 如果您尚未设置 SSH 密钥,您可以在 [这里](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/about-ssh) 学习如何设置。
```bash
git clone git@github.com:twentyhq/twenty.git
@@ -90,36 +90,36 @@ In your terminal, run the following command.
-## Step 2: Position yourself at the root
+## 步骤 2:定位到项目根目录
```bash
cd twenty
```
-You should run all commands in the following steps from the root of the project.
+您应该从项目的根目录运行以下步骤中的所有命令。
-## Step 3: Set up a PostgreSQL Database
+## 步骤 3:设置 PostgreSQL 数据库
- **Option 1 (preferred):** To provision your database locally:
- Use the following link to install Postgresql on your Linux machine: [Postgresql Installation](https://www.postgresql.org/download/linux/)
+ \*\*选项 1(推荐):\*\*在本地供应您的数据库:
+ 使用以下链接在 Linux 机器上安装 Postgresql:[Postgresql 安装](https://www.postgresql.org/download/linux/)
```bash
psql postgres -c "CREATE DATABASE \"default\";" -c "CREATE DATABASE test;"
```
- Note: You might need to add `sudo -u postgres` to the command before `psql` to avoid permission errors.
+ 注意:您可能需要在命令 `psql` 前添加 `sudo -u postgres` 以避免权限错误。
- **Option 2:** If you have docker installed:
+ \*\*选项 2:\*\*如果您已安装 docker:
```bash
- make postgres-on-docker
+ make -C packages/twenty-docker postgres-on-docker
```
- **Option 1 (preferred):** To provision your database locally with `brew`:
+ \*\*选项 1(推荐):\*\*通过 `brew` 在本地设置数据库:
```bash
brew install postgresql@16
@@ -128,16 +128,14 @@ You should run all commands in the following steps from the root of the project.
psql postgres -c "CREATE DATABASE \"default\";" -c "CREATE DATABASE test;"
```
- You can verify if the PostgreSQL server is running by executing:
+ 您可以通过执行以下操作来验证 PostgreSQL 服务器是否正在运行:
```bash
brew services list
```
- The installer might not create the `postgres` user by default when installing
- via Homebrew on MacOS. Instead, it creates a PostgreSQL role that matches your macOS
- username (e.g., "john").
- To check and create the `postgres` user if necessary, follow these steps:
+ 安装器在通过 Homebrew 安装时可能不会默认创建 `postgres` 用户。 相反,它会创建一个与您的 macOS 用户名(例如,“john”)匹配的 PostgreSQL 角色。
+ 按照以下步骤检查并在必要时创建 `postgres` 用户:
```bash
# Connect to PostgreSQL
@@ -146,14 +144,14 @@ You should run all commands in the following steps from the root of the project.
psql -U $(whoami) -d postgres
```
- Once at the psql prompt (postgres=#), run:
+ 在 psql 提示符(postgres=#)下,运行:
```bash
# List existing PostgreSQL roles
\du
```
- You'll see output similar to:
+ 您将看到类似于以下的输出:
```bash
Role name | Attributes | Member of
@@ -161,98 +159,98 @@ You should run all commands in the following steps from the root of the project.
john | Superuser | {}
```
- If you do not see a `postgres` role listed, proceed to the next step.
- Create the `postgres` role manually:
+ 如果您没有看到 `postgres` 角色列出,请继续下一步。
+ 手动创建 `postgres` 角色:
```bash
CREATE ROLE postgres WITH SUPERUSER LOGIN;
```
- This creates a superuser role named `postgres` with login access.
+ 这将创建一个具备登录权限名为 `postgres` 的超级用户角色。
- **Option 2:** If you have docker installed:
+ \*\*选项 2:\*\*如果您已安装 docker:
```bash
- make postgres-on-docker
+ make -C packages/twenty-docker postgres-on-docker
```
- All the following steps are to be run in the WSL terminal (within your virtual machine)
+ 以下所有步骤应在 WSL 终端(在您的虚拟机内)中运行
- **Option 1:** To provision your Postgresql locally:
- Use the following link to install Postgresql on your Linux virtual machine: [Postgresql Installation](https://www.postgresql.org/download/linux/)
+ \*\*选项 1:\*\*在本地提供您的 Postgresql:
+ 使用以下链接在 Linux 虚拟机上安装 Postgresql:[Postgresql 安装](https://www.postgresql.org/download/linux/)
```bash
psql postgres -c "CREATE DATABASE \"default\";" -c "CREATE DATABASE test;"
```
- Note: You might need to add `sudo -u postgres` to the command before `psql` to avoid permission errors.
+ 注意:您可能需要在命令 `psql` 前添加 `sudo -u postgres` 以避免权限错误。
- **Option 2:** If you have docker installed:
- Running Docker on WSL adds an extra layer of complexity.
- Only use this option if you are comfortable with the extra steps involved, including turning on [Docker Desktop WSL2](https://docs.docker.com/desktop/wsl).
+ \*\*选项 2:\*\*如果您已安装 docker:
+ 在 WSL 上运行 Docker 增加了额外的复杂性。
+ 仅在您对涉及的额外步骤感到舒适时使用此选项,包括开启 [Docker Desktop WSL2](https://docs.docker.com/desktop/wsl)。
```bash
- make postgres-on-docker
+ make -C packages/twenty-docker postgres-on-docker
```
-You can now access the database at [localhost:5432](localhost:5432), with user `postgres` and password `postgres` .
+您现在可以在 [localhost:5432](localhost:5432) 访问数据库,用户名 `postgres`,密码 `postgres`。
-## Step 4: Set up a Redis Database (cache)
+## 步骤 4:设置 Redis 数据库(缓存)
-Twenty requires a redis cache to provide the best performance
+Twenty 需要 Redis 缓存来提供最佳性能
- **Option 1:** To provision your Redis locally:
- Use the following link to install Redis on your Linux machine: [Redis Installation](https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/install-redis-on-linux/)
+ \*\*选项 1:\*\*在本地供应您的 Redis:
+ 使用以下链接在 Linux 机器上安装 Redis:[Redis 安装](https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/install-redis-on-linux/)
- **Option 2:** If you have docker installed:
+ \*\*选项 2:\*\*如果您已安装 docker:
```bash
- make redis-on-docker
+ make -C packages/twenty-docker redis-on-docker
```
- **Option 1 (preferred):** To provision your Redis locally with `brew`:
+ \*\*选项 1(推荐):\*\*通过 `brew` 在本地设置 Redis:
```bash
brew install redis
```
- Start your redis server:
+ 启动您的 redis server:
`brew services start redis`
- **Option 2:** If you have docker installed:
+ \*\*选项 2:\*\*如果您已安装 docker:
```bash
- make redis-on-docker
+ make -C packages/twenty-docker redis-on-docker
```
- **Option 1:** To provision your Redis locally:
- Use the following link to install Redis on your Linux virtual machine: [Redis Installation](https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/install-redis-on-linux/)
+ \*\*选项 1:\*\*在本地供应您的 Redis:
+ 使用以下链接在 Linux 虚拟机上安装 Redis:[Redis 安装](https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/install-redis-on-linux/)
- **Option 2:** If you have docker installed:
+ \*\*选项 2:\*\*如果您已安装 docker:
```bash
- make redis-on-docker
+ make -C packages/twenty-docker redis-on-docker
```
-If you need a Client GUI, we recommend [redis insight](https://redis.io/insight/) (free version available)
+如果您需要客户端 GUI,我们推荐 [redis insight](https://redis.io/insight/)(提供免费版)
-## Step 5: Setup environment variables
+## 步骤 5:设置环境变量
-Use environment variables or `.env` files to configure your project. More info [here](/l/zh/developers/self-host/capabilities/setup)
+使用环境变量或 `.env` 文件配置您的项目。 更多信息请参见 [此处](/l/zh/developers/self-host/capabilities/setup)
-Copy the `.env.example` files in `/front` and `/server`:
+复制 `/front` 和 `/server` 目录中的 `.env.example` 文件:
```bash
cp ./packages/twenty-front/.env.example ./packages/twenty-front/.env
@@ -260,29 +258,29 @@ 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/zh/developers/self-host/capabilities/setup#multi-workspace-mode) for details.
+ **多工作区模式:** 默认情况下,Twenty 以单工作区模式运行,在此模式下只能创建一个工作区。 要启用多工作区支持(对于测试基于子域的功能很有用),请在服务器的 `.env` 文件中设置 `IS_MULTIWORKSPACE_ENABLED=true`。 详见 [多工作区模式](/l/zh/developers/self-host/capabilities/setup#multi-workspace-mode)。
-## Step 6: Installing dependencies
+## 步骤 6:安装依赖项
-To build Twenty server and seed some data into your database, run the following command:
+要构建 Twenty 服务器并向你的数据库预置一些数据,请运行以下命令:
```bash
yarn
```
-Note that `npm` or `pnpm` won't work
+注意 `npm` 或 `pnpm` 将不起作用
-## Step 7: Running the project
+## 步骤 7:运行项目
- Depending on your Linux distribution, Redis server might be started automatically.
- If not, check the [Redis installation guide](https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/) for your distro.
+ 根据您的 Linux 发行版,Redis 服务器可能会自动启动。
+ 如果没有,请查看您的发行版的 [Redis 安装指南](https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/)。
- Redis should already be running. If not, run:
+ Redis 应该已经在运行中。 如果没有,运行:
```bash
brew services start redis
@@ -290,18 +288,18 @@ Note that `npm` or `pnpm` won't work
- Depending on your Linux distribution, Redis server might be started automatically.
- If not, check the [Redis installation guide](https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/) for your distro.
+ 根据您的 Linux 发行版,Redis 服务器可能会自动启动。
+ 如果没有,请查看您的发行版的 [Redis 安装指南](https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/)。
-Set up your database with the following command:
+使用以下命令设置您的数据库:
```bash
npx nx database:reset twenty-server
```
-Start the server, the worker and the frontend services:
+启动服务器、工作程序和前端服务:
```bash
npx nx start twenty-server
@@ -309,25 +307,25 @@ npx nx worker twenty-server
npx nx start twenty-front
```
-Alternatively, you can start all services at once:
+或者,您可以一次启动所有服务:
```bash
npx nx start
```
-## Step 8: Use Twenty
+## 步骤 8:使用 Twenty
-**Frontend**
+**前端**
-Twenty's frontend will be running at [http://localhost:3001](http://localhost:3001).
-You can log in using the default demo account: `tim@apple.dev` (password: `tim@apple.dev`)
+Twenty 的前端将在 [http://localhost:3001](http://localhost:3001) 运行。
+您可以使用默认的演示帐号登录:`tim@apple.dev` (密码:`tim@apple.dev`)
-**Backend**
+**后端**
-* Twenty's server will be up and running at [http://localhost:3000](http://localhost:3000)
-* The GraphQL API can be accessed at [http://localhost:3000/graphql](http://localhost:3000/graphql)
-* The REST API can be reached at [http://localhost:3000/rest](http://localhost:3000/rest)
+* Twenty 的服务器将在 [http://localhost:3000](http://localhost:3000) 启动并运行
+* 可在 [http://localhost:3000/graphql](http://localhost:3000/graphql) 访问 GraphQL API
+* 可通过 [http://localhost:3000/rest](http://localhost:3000/rest) 访问 REST API
-## Troubleshooting
+## 故障排除
-If you encounter any problem, check [Troubleshooting](/l/zh/developers/self-host/capabilities/troubleshooting) for solutions.
+如果您遇到任何问题,请检查[故障排除](/l/zh/developers/self-host/capabilities/troubleshooting)以获取解决方案。
diff --git a/packages/twenty-docs/l/zh/developers/contribute/contribute.mdx b/packages/twenty-docs/l/zh/developers/contribute/contribute.mdx
index d1684bf455..07548d8dbb 100644
--- a/packages/twenty-docs/l/zh/developers/contribute/contribute.mdx
+++ b/packages/twenty-docs/l/zh/developers/contribute/contribute.mdx
@@ -1,32 +1,32 @@
---
-title: Contribute
-description: Contribute to Twenty's open-source development.
+title: 贡献
+description: 为 Twenty 的开源开发做出贡献。
---
-## Overview
+## 概览
-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 的 UI 开发
+* **后端开发**: 为 NestJS 服务器做出贡献
-## Getting Started
+## 开始使用
-
- Report issues or request features
+
+ 报告问题或请求功能
-
- Contribute to the UI
+
+ 为 UI 做出贡献
diff --git a/packages/twenty-docs/l/zh/developers/extend/capabilities/apis.mdx b/packages/twenty-docs/l/zh/developers/extend/capabilities/apis.mdx
index e872a654b1..42e8bac08d 100644
--- a/packages/twenty-docs/l/zh/developers/extend/capabilities/apis.mdx
+++ b/packages/twenty-docs/l/zh/developers/extend/capabilities/apis.mdx
@@ -1,147 +1,147 @@
---
-title: APIs
-description: Query and modify your CRM data programmatically using REST or GraphQL.
+title: 接口
+description: 使用 REST 或 GraphQL 以编程方式查询和修改您的客户关系管理数据。
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-Twenty was built to be developer-friendly, offering powerful APIs that adapt to your custom data model. We provide four distinct API types to meet different integration needs.
+Twenty 的设计对开发者友好,提供适合您定制数据模型的强大API。 我们提供四种不同的API类型来满足不同的集成需求。
-## Developer-First Approach
+## 开发者优先的方法
-Twenty generates APIs specifically for your data model:
+Twenty 会针对您的数据模型生成专用 API:
-* **No long IDs required**: Use your object and field names directly in endpoints
-* **Standard and custom objects treated equally**: Your custom objects get the same API treatment as built-in ones
-* **Dedicated endpoints**: Each object and field gets its own API endpoint
-* **Custom documentation**: Generated specifically for your workspace's data model
+* **无需长ID**:直接在终端使用对象和字段名称
+* **标准与自定义对象平等对待**:您的自定义对象将获得与内置对象相同的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 & Webhooks** 中查看您的个性化 API 文档。 由于 Twenty 会生成与您的自定义数据模型相匹配的 API,因此文档对您的工作区是唯一的。
-## The Two API Types
+## 两种 API 类型
-### Core API
+### 核心API
-Accessed on `/rest/` or `/graphql/`
+访问路径:`/rest/`或`/graphql/`。
-Work with your actual **records** (the data):
+处理您实际的**记录**(数据):
-* Create, read, update, delete People, Companies, Opportunities, etc.
-* Query and filter data
-* Manage record relationships
+* 创建、读取、更新、删除 People、Companies、Opportunities 等。
+* 查询并筛选数据
+* 管理记录关系
-### Metadata API
+### 元数据API
-Accessed on `/rest/metadata/` or `/metadata/`
+访问路径:`/rest/metadata/`或`/metadata/`。
-Manage your **workspace and data model**:
+管理您的**工作区和数据模型**:
-* Create, modify, or delete objects and fields
-* Configure workspace settings
-* 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 格式:
-| Format | 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 Endpoints
+## API端点
-| Environment | Base URL |
-| --------------- | ------------------------- |
-| **Cloud** | `https://api.twenty.com/` |
-| **Self-Hosted** | `https://{your-domain}/` |
+| 环境 | 基础 URL |
+| ------- | ------------------------- |
+| **云端** | `https://api.twenty.com/` |
+| **自托管** | `https://{your-domain}/` |
-## Authentication
+## 身份验证
-Every API request requires an API key in the header:
+每个 API 请求都需要在请求头中包含 API 密钥:
```
Authorization: Bearer YOUR_API_KEY
```
-### Create an API Key
+### 创建 API 密钥
-1. Go to **Settings → APIs & Webhooks**
-2. Click **+ Create key**
-3. Configure:
- * **Name**: Descriptive name for the key
- * **Expiration Date**: When the key expires
-4. Click **Save**
-5. **Copy immediately** — the key is only shown once
+1. 前往 **设置 → APIs & Webhooks**
+2. 点击 **+ 创建密钥**
+3. 配置:
+ * **名称**:密钥的描述性名称
+ * **到期日期**:密钥的到期时间
+4. 单击 **保存**
+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. Go to **Settings → Roles**
-2. Click on the role to assign
-3. Open the **Assignment** tab
-4. Under **API Keys**, click **+ Assign to API key**
-5. Select the API key
+1. 进入 **设置 → 角色**
+2. 点击要分配的角色
+3. 打开 **分配** 选项卡
+4. 在 **API Keys** 下,点击 **+ Assign to API key**
+5. 选择该 API 密钥
-The key will inherit that role's permissions. See [Permissions](/l/zh/user-guide/permissions-access/capabilities/permissions) for details.
+该密钥将继承该角色的权限。 详见 [权限](/l/zh/user-guide/permissions-access/capabilities/permissions)。
-### Manage API Keys
+### 管理 API 密钥
-**Regenerate**: Settings → APIs & Webhooks → Click key → **Regenerate**
+**Regenerate**: 设置 → APIs & Webhooks → 点击密钥 → **Regenerate**
-**Delete**: Settings → APIs & Webhooks → Click key → **Delete**
+**Delete**: 设置 → APIs & Webhooks → 点击密钥 → **Delete**
-## 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. Go to **Settings → APIs & Webhooks**
-2. Create an API key (required)
-3. Click on **REST API** or **GraphQL API** to open the playground
+1. 前往 **设置 → APIs & Webhooks**
+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.
+操作台会反映您的自定义对象和字段,因此文档始终与您的工作区保持一致且准确。
-## Batch Operations
+## 批量操作
-Both REST and GraphQL support batch operations:
+REST 和 GraphQL 均支持批量操作:
-* **Batch size**: Up to 60 records per request
-* **Operations**: Create, update, delete multiple records
+* **批量大小**:每个请求最多60条记录
+* **操作**:创建、更新、删除多条记录
-**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 请求将受到限流:
-| Limit | Value |
-| -------------- | -------------------- |
-| **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.
+ 使用批量操作以最大化吞吐量 — 在一次 API 调用中处理最多 60 条记录,而不是发起单独的请求。
diff --git a/packages/twenty-docs/l/zh/developers/extend/capabilities/apps.mdx b/packages/twenty-docs/l/zh/developers/extend/capabilities/apps.mdx
index dc528fa780..4bc611f403 100644
--- a/packages/twenty-docs/l/zh/developers/extend/capabilities/apps.mdx
+++ b/packages/twenty-docs/l/zh/developers/extend/capabilities/apps.mdx
@@ -1,81 +1,88 @@
---
-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.
+ 应用目前处于 Alpha 测试阶段。 该功能可用,但仍在演进中。
-## 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 自定义项。 无需通过 UI 配置所有内容,你可以在代码中定义数据模型和无服务器函数——从而更快地构建、维护,并推广到多个工作空间。
-**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
+* 自定义 UI 布局和组件
-## Prerequisites
+## 先决条件
-* 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
+# 搭建一个新应用
npx create-twenty-app@latest my-twenty-app
cd my-twenty-app
-# Authenticate using your API key (you'll be prompted)
-yarn auth
+# 如果你不使用 yarn@4
+corepack enable
+yarn install
-# Start dev mode: automatically syncs local changes to your workspace
-yarn dev
+# 使用你的 API 密钥进行身份验证(系统会提示你)
+yarn auth:login
+
+# 启动开发模式:会将本地更改自动同步到你的工作区
+yarn app:dev
```
-From here you can:
+从这里您可以:
```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
```
-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).
+另请参阅:[create-twenty-app](https://www.npmjs.com/package/create-twenty-app) 和 [twenty-sdk CLI](https://www.npmjs.com/package/twenty-sdk) 的 CLI 参考页面。
-## 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 配置
+* 创建与 `twenty` CLI 关联的配置文件和脚本
+* 生成默认的应用配置和默认的函数角色
-A freshly scaffolded app looks like this:
+一个新生成的脚手架应用如下所示:
```text filename="my-twenty-app/"
my-twenty-app/
@@ -85,79 +92,144 @@ my-twenty-app/
.nvmrc
.yarnrc.yml
.yarn/
- releases/
- yarn-4.9.2.cjs
install-state.gz
eslint.config.mjs
tsconfig.json
README.md
src/
- application.config.ts
- role.config.ts
- // your entities, actions, and other app files
+ app/
+ application.config.ts # 必需 - 主应用程序配置
+ default-function.role.ts # 用于无服务器函数的默认角色
+ // 你的实体 (*.object.ts, *.function.ts, *.role.ts)
+ utils/ # 可选 - 处理器实现与实用工具
```
-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/**: 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.config.ts`: Default function role used by your serverless functions. See “Default function role” below.
- * Future entities, actions/functions, and any supporting code you add.
+应用采用**约定优于配置**的方式,根据文件后缀检测实体。 这使得可以在 `src/app/` 文件夹内灵活组织:
-Later commands will add more files and folders:
+| 文件后缀 | 实体类型 |
+| --------------- | -------- |
+| `*.object.ts` | 自定义对象定义 |
+| `*.function.ts` | 无服务器函数定义 |
+| `*.role.ts` | 角色定义 |
-* `yarn generate` will create a `generated/` folder (typed Twenty client + workspace types).
-* `yarn create-entity` will add entity definition files under `src/` for your custom objects.
+### 支持的文件夹组织方式
-## Authentication
+你可以按以下任一模式组织实体:
-The first time you run `yarn auth`, you'll be prompted for:
+**传统(按类型):**
-* API URL (defaults to http://localhost:3000 or your current workspace profile)
-* API key
+```text
+src/app/
+├── application.config.ts
+├── objects/
+│ └── postCard.object.ts
+├── functions/
+│ └── createPostCard.function.ts
+└── roles/
+ └── admin.role.ts
+```
-Your credentials are stored per-user in `~/.twenty/config.json`. You can maintain multiple profiles and switch using `--workspace `.
+**基于特性:**
-Examples:
+```text
+src/app/
+├── application.config.ts
+└── post-card/
+ ├── postCard.object.ts
+ ├── createPostCard.function.ts
+ └── postCardAdmin.role.ts
+```
+
+**扁平:**
+
+```text
+src/app/
+├── application.config.ts
+├── postCard.object.ts
+├── createPostCard.function.ts
+└── admin.role.ts
+```
+
+总体来说:
+
+* **package.json**:声明应用名称、版本、运行时(Node 24+、Yarn 4),并添加 `twenty-sdk` 以及 `dev`、`sync`、`generate`、`create-entity`、`logs`、`uninstall`、`auth` 等脚本,这些脚本会委托给本地的 `twenty` CLI。
+* **.gitignore**:忽略常见产物,如 `node_modules`、`.yarn`、`generated/`(类型化客户端)、`dist/`、`build/`、覆盖率文件夹、日志文件以及 `.env*` 文件。
+* **yarn.lock**、**.yarnrc.yml**、**.yarn/**:锁定并配置项目使用的 Yarn 4 工具链。
+* **.nvmrc**:固定项目期望的 Node.js 版本。
+* **eslint.config.mjs** 和 **tsconfig.json**:为应用的 TypeScript 源码提供 Lint 与 TypeScript 配置。
+* **README.md**:应用根目录中的简短 README,包含基本说明。
+* **src/app/**:你以代码形式定义应用的主要位置:
+ * `application.config.ts`:应用的全局配置(元数据和运行时关联)。 参见下方“应用配置”。
+ * `*.role.ts`:你的无服务器函数所使用的角色定义。 参见下方“默认函数角色”。
+ * `*.object.ts`:自定义对象定义。
+ * `*.function.ts`:无服务器函数定义。
+* **src/utils/**:可选文件夹,用于处理程序实现和实用工具。
+
+后续命令将添加更多文件和文件夹:
+
+* `yarn app:generate` 将创建一个 `generated/` 文件夹(类型化 Twenty 客户端 + 工作空间类型)。
+* `yarn app:create-entity` 将为你的自定义对象、函数或角色在 `src/app/` 下添加实体定义文件。
+ l
+
+## 身份验证
+
+首次运行 `yarn auth:login` 时,你将被提示输入:
+
+* API URL(默认为 http://localhost:3000 或你当前的工作空间配置)
+* API 密钥
+
+你的凭据按用户存储在 `~/.twenty/config.json` 中。 你可以维护多个配置文件并在它们之间切换。
+
+### 管理工作空间
```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
```
-## Use the SDK resources (types & config)
+使用 `auth:switch` 切换工作空间后,后续所有命令将默认使用该工作空间。 你仍可通过 `--workspace ` 临时覆盖。
-The twenty-sdk provides typed building blocks you use inside your app. Below are the key pieces you'll touch most often.
+## 使用 SDK 资源(类型与配置)
-### Defining objects
+twenty-sdk 提供你在应用中使用的类型化构件和辅助函数。 以下是你最常接触的关键部分。
-Custom objects are regular TypeScript classes annotated with decorators from `twenty-sdk`. They live under `src/objects/` in your app and describe both schema and behavior for records in your workspace.
+### 辅助函数
-Here is an example `postCard` object from the Hello World app:
+该 SDK 提供四个带内置校验的辅助函数,用于定义你的应用实体:
+
+| 函数 | 目的 |
+| ------------------ | -------------- |
+| `defineApp()` | 配置应用元数据 |
+| `defineObject()` | 定义带字段的自定义对象 |
+| `defineFunction()` | 定义带处理程序的无服务器函数 |
+| `defineRole()` | 配置角色权限和对象访问 |
+
+这些函数会在运行时校验你的配置,并提供更好的 IDE 自动补全和类型安全。
+
+### 定义对象
+
+自定义对象同时描述工作空间中记录的架构与行为。 使用 `defineObject()` 以内置校验定义对象:
```typescript
-import { type Note } from '../../generated';
-
-import {
- type AddressField,
- Field,
- FieldType,
- type FullNameField,
- Object,
- OnDeleteAction,
- Relation,
- RelationType,
- STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS,
-} from 'twenty-sdk';
+// src/app/postCard.object.ts
+import { defineObject, FieldType } from 'twenty-sdk';
enum PostCardStatus {
DRAFT = 'DRAFT',
@@ -166,176 +238,186 @@ enum PostCardStatus {
RETURNED = 'RETURNED',
}
-@Object({
+export default defineObject({
universalIdentifier: '54b589ca-eeed-4950-a176-358418b85c05',
nameSingular: 'postCard',
namePlural: 'postCards',
- labelSingular: 'Post card',
- labelPlural: 'Post cards',
- description: ' A post card object',
+ labelSingular: 'Post Card',
+ labelPlural: 'Post Cards',
+ description: 'A post card object',
icon: 'IconMail',
-})
-export class PostCard {
- @Field({
- universalIdentifier: '58a0a314-d7ea-4865-9850-7fb84e72f30b',
- type: FieldType.TEXT,
- label: 'Content',
- description: "Postcard's content",
- icon: 'IconAbc',
- })
- content: string;
-
- @Field({
- universalIdentifier: 'c6aa31f3-da76-4ac6-889f-475e226009ac',
- type: FieldType.FULL_NAME,
- label: 'Recipient name',
- icon: 'IconUser',
- })
- recipientName: FullNameField;
-
- @Field({
- universalIdentifier: '95045777-a0ad-49ec-98f9-22f9fc0c8266',
- type: FieldType.ADDRESS,
- label: 'Recipient address',
- icon: 'IconHome',
- })
- recipientAddress: AddressField;
-
- @Field({
- universalIdentifier: '87b675b8-dd8c-4448-b4ca-20e5a2234a1e',
- type: FieldType.SELECT,
- label: 'Status',
- icon: 'IconSend',
- defaultValue: `'${PostCardStatus.DRAFT}'`,
- options: [
- { value: PostCardStatus.DRAFT, label: 'Draft', position: 0, color: 'gray' },
- { value: PostCardStatus.SENT, label: 'Sent', position: 1, color: 'orange' },
- { value: PostCardStatus.DELIVERED, label: 'Delivered', position: 2, color: 'green' },
- { value: PostCardStatus.RETURNED, label: 'Returned', position: 3, color: 'orange' },
- ],
- })
- status: PostCardStatus;
-
- @Relation({
- universalIdentifier: 'c9e2b4f4-b9ad-4427-9b42-9971b785edfe',
- type: RelationType.ONE_TO_MANY,
- label: 'Notes',
- icon: 'IconComment',
- inverseSideTargetUniversalIdentifier: STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS.note,
- onDelete: OnDeleteAction.CASCADE,
- })
- notes: Note[];
-
- @Field({
- universalIdentifier: 'e06abe72-5b44-4e7f-93be-afc185a3c433',
- type: FieldType.DATE_TIME,
- label: 'Delivered at',
- icon: 'IconCheck',
- isNullable: true,
- defaultValue: null,
- })
- deliveredAt?: Date;
-}
+ fields: [
+ {
+ universalIdentifier: '58a0a314-d7ea-4865-9850-7fb84e72f30b',
+ name: 'content',
+ type: FieldType.TEXT,
+ label: 'Content',
+ description: "Postcard's content",
+ icon: 'IconAbc',
+ },
+ {
+ universalIdentifier: 'c6aa31f3-da76-4ac6-889f-475e226009ac',
+ name: 'recipientName',
+ type: FieldType.FULL_NAME,
+ label: 'Recipient name',
+ icon: 'IconUser',
+ },
+ {
+ universalIdentifier: '95045777-a0ad-49ec-98f9-22f9fc0c8266',
+ name: 'recipientAddress',
+ type: FieldType.ADDRESS,
+ label: 'Recipient address',
+ icon: 'IconHome',
+ },
+ {
+ universalIdentifier: '87b675b8-dd8c-4448-b4ca-20e5a2234a1e',
+ name: 'status',
+ type: FieldType.SELECT,
+ label: 'Status',
+ icon: 'IconSend',
+ defaultValue: `'${PostCardStatus.DRAFT}'`,
+ options: [
+ { value: PostCardStatus.DRAFT, label: 'Draft', position: 0, color: 'gray' },
+ { value: PostCardStatus.SENT, label: 'Sent', position: 1, color: 'orange' },
+ { value: PostCardStatus.DELIVERED, label: 'Delivered', position: 2, color: 'green' },
+ { value: PostCardStatus.RETURNED, label: 'Returned', position: 3, color: 'orange' },
+ ],
+ },
+ {
+ universalIdentifier: 'e06abe72-5b44-4e7f-93be-afc185a3c433',
+ name: 'deliveredAt',
+ type: FieldType.DATE_TIME,
+ label: 'Delivered at',
+ icon: 'IconCheck',
+ isNullable: true,
+ defaultValue: null,
+ },
+ ],
+});
```
-Key points:
+关键点:
-* The `@Object` decorator defines the object identity and labels used across the workspace; its `universalIdentifier` must be unique and stable across deployments.
-* Each `@Field` decorator defines a field on the object with a type, label, and its own stable `universalIdentifier`.
-* `@Relation` wires this object to other objects (standard or custom) and controls cascade behavior with `onDelete`.
-* You can scaffold new objects using `yarn create-entity`, which guides you through naming, fields, and relationships, then generates object files similar to the `postCard` example.
+* 使用 `defineObject()` 以获得内置校验和更好的 IDE 支持。
+* `universalIdentifier` 必须在各次部署间保持唯一且稳定。
+* 每个字段都需要 `name`、`type`、`label` 以及其自身稳定的 `universalIdentifier`。
+* `fields` 数组是可选的——你可以定义没有自定义字段的对象。
+* 你可以使用 `yarn app:create-entity` 脚手架创建新对象,它会引导你完成命名、字段和关系。
-### Application config (application.config.ts)
+
+ **基础字段会自动创建。** 当你定义自定义对象时,Twenty 会自动添加 `name`、`createdAt`、`updatedAt`、`createdBy`、`position`、`deletedAt` 等标准字段。 你无需在 `fields` 数组中定义这些字段——只需添加你的自定义字段。
+
-Every app has a single `application.config.ts` file that describes:
+
+ 你也可以使用 TypeScript 装饰器来定义对象。 该方式使用基于类的语法以及 `@Object`、`@Field`、`@Relation` 装饰器:
-* **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.
+ ```typescript
+ import {
+ type AddressField,
+ Field,
+ FieldType,
+ type FullNameField,
+ Object,
+ OnDeleteAction,
+ Relation,
+ RelationType,
+ STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS,
+ } from 'twenty-sdk';
+ import { type Note } from '../../generated';
-When you scaffold a new app, you start with a minimal config:
+ @Object({
+ universalIdentifier: '54b589ca-eeed-4950-a176-358418b85c05',
+ nameSingular: 'postCard',
+ namePlural: 'postCards',
+ labelSingular: 'Post card',
+ labelPlural: 'Post cards',
+ description: 'A post card object',
+ icon: 'IconMail',
+ })
+ export class PostCard {
+ @Field({
+ universalIdentifier: '58a0a314-d7ea-4865-9850-7fb84e72f30b',
+ type: FieldType.TEXT,
+ label: 'Content',
+ description: "Postcard's content",
+ icon: 'IconAbc',
+ })
+ content: string;
+
+ @Relation({
+ universalIdentifier: 'c9e2b4f4-b9ad-4427-9b42-9971b785edfe',
+ type: RelationType.ONE_TO_MANY,
+ label: 'Notes',
+ icon: 'IconComment',
+ inverseSideTargetUniversalIdentifier: STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS.note,
+ onDelete: OnDeleteAction.CASCADE,
+ })
+ notes: Note[];
+ }
+ ```
+
+ 注意:装饰器方式需要在 TypeScript 配置中启用 `experimentalDecorators`。
+
+
+### 应用配置(application.config.ts)
+
+每个应用都有一个 `application.config.ts` 文件,用于描述:
+
+* **应用的身份**:标识符、显示名称和描述。
+* **函数如何运行**:它们用于权限的角色。
+* **(可选)变量**:以环境变量形式提供给函数的键值对。
+
+使用 `defineApp()` 定义你的应用配置:
```typescript
-import { type ApplicationConfig } from 'twenty-sdk';
+// src/app/application.config.ts
+import { defineApp } from 'twenty-sdk';
+import { DEFAULT_FUNCTION_ROLE_UNIVERSAL_IDENTIFIER } from './default-function.role';
-const config: ApplicationConfig = {
- universalIdentifier: '',
+export default defineApp({
+ universalIdentifier: '4ec0391d-18d5-411c-b2f3-266ddc1c3ef7',
displayName: 'My Twenty App',
description: 'My first Twenty app',
- functionRoleUniversalIdentifier: '',
-};
-
-export default config;
-```
-
-You can gradually extend this file as your app grows. For example, you can add an icon and application-scoped variables:
-
-```typescript
-import { type ApplicationConfig } from 'twenty-sdk';
-
-const config: ApplicationConfig = {
- universalIdentifier: '',
- displayName: 'My App',
- description: 'What your app does',
- icon: 'IconWorld', // Choose an icon by name
+ icon: 'IconWorld',
applicationVariables: {
DEFAULT_RECIPIENT_NAME: {
- universalIdentifier: '',
- description: 'Default recipient used by functions',
+ universalIdentifier: '19e94e59-d4fe-4251-8981-b96d0a9f74de',
+ description: 'Default recipient name for postcards',
value: 'Jane Doe',
isSecret: false,
},
},
- functionRoleUniversalIdentifier: '',
-};
-
-export default config;
+ functionRoleUniversalIdentifier: DEFAULT_FUNCTION_ROLE_UNIVERSAL_IDENTIFIER,
+});
```
-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 `role.config.ts` (see below).
+* `universalIdentifier` 字段是你拥有的确定性 ID;生成一次并在多次同步中保持稳定。
+* `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.
+应用可以定义角色,以封装对工作空间对象与操作的权限。 `application.config.ts` 中的 `functionRoleUniversalIdentifier` 字段指定你的应用无服务器函数所使用的默认角色。
-* 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.
+* 作为 `TWENTY_API_KEY` 注入的运行时 API 密钥源自该默认函数角色。
+* 类型化客户端将受限于该角色授予的权限。
+* 遵循最小权限原则:仅授予函数所需权限来创建一个专用角色,然后引用其通用标识符。
-##### Default function role (role.config.ts)
+##### 默认函数角色(\*.role.ts)
-When you scaffold a new app, the CLI also creates `src/role.config.ts`. This file exports the default role your serverless functions will use at runtime:
+当你脚手架生成新应用时,CLI 也会创建一个默认角色文件。 使用 `defineRole()` 定义带内置校验的角色:
```typescript
-import { PermissionFlag, type RoleConfig } from 'twenty-sdk';
+// src/app/default-function.role.ts
+import { defineRole, PermissionFlag } from 'twenty-sdk';
-export const functionRole: RoleConfig = {
- universalIdentifier: '',
- label: 'My Twenty App default function role',
- description: 'My Twenty App default function role',
- canReadAllObjectRecords: true,
- canUpdateAllObjectRecords: true,
- canSoftDeleteAllObjectRecords: true,
- canDestroyAllObjectRecords: false,
-};
-```
+export const DEFAULT_FUNCTION_ROLE_UNIVERSAL_IDENTIFIER =
+ 'b648f87b-1d26-4961-b974-0908fd991061';
-The `universalIdentifier` of this role is automatically wired into `application.config.ts` as `functionRoleUniversalIdentifier`. In other words:
-
-* **role.config.ts** defines what the default function role can do.
-* **application.config.ts** points to that role so your functions inherit its permissions.
-
-As you move beyond the initial scaffold, you should tighten this role and make it explicit about what it can access. A more production-ready role might look closer to:
-
-```typescript
-import { PermissionFlag, type RoleConfig } from 'twenty-sdk';
-
-export const functionRole: RoleConfig = {
- universalIdentifier: '',
+export default defineRole({
+ universalIdentifier: DEFAULT_FUNCTION_ROLE_UNIVERSAL_IDENTIFIER,
label: 'Default function role',
description: 'Default role for function Twenty client',
canReadAllObjectRecords: false,
@@ -363,41 +445,41 @@ export const functionRole: RoleConfig = {
canUpdateFieldValue: false,
},
],
- permissionFlags: ['APPLICATIONS'],
-};
+ permissionFlags: [PermissionFlag.APPLICATIONS],
+});
```
-Notes:
+随后,该角色的 `universalIdentifier` 会在 `application.config.ts` 中以 `functionRoleUniversalIdentifier` 引用。 换句话说:
-* 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).
+* **\*.role.ts** 定义默认函数角色可以执行的操作。
+* **application.config.ts** 指向该角色,使你的函数继承其权限。
-### Serverless function config and entrypoint
+备注:
-Each function exports a main handler and a config describing its triggers. You can mix multiple trigger types.
+* 从脚手架生成的角色开始,然后按照最小权限原则逐步收紧权限。
+* 将 `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)。
+
+### 无服务器函数的配置与入口点
+
+每个函数文件都使用 `defineFunction()` 导出包含处理程序和可选触发器的配置。 使用 `*.function.ts` 文件后缀以便自动检测。
```typescript
-// src/actions/create-new-post-card.ts
-import type {
- FunctionConfig,
- DatabaseEventPayload,
- ObjectRecordCreateEvent,
- CronPayload,
-} from 'twenty-sdk';
-import Twenty, { type Person } from '../generated';
+// src/app/createPostCard.function.ts
+import { defineFunction } from 'twenty-sdk';
+import type { DatabaseEventPayload, ObjectRecordCreateEvent, CronPayload, RoutePayload } from 'twenty-sdk';
+import Twenty, { type Person } from '../../generated';
-// main handler can accept parameters from route, cron, or database events
-export const main = async (
+const handler = async (
params:
- | { name?: string }
+ | RoutePayload
| DatabaseEventPayload>
| CronPayload,
) => {
const client = new Twenty(); // generated typed client
- const name = 'name' in params
- ? params.name ?? process.env.DEFAULT_RECIPIENT_NAME ?? 'Hello world'
+ const name = 'name' in params.queryStringParameters
+ ? params.queryStringParameters.name ?? process.env.DEFAULT_RECIPIENT_NAME ?? 'Hello world'
: 'Hello world';
const result = await client.mutation({
@@ -410,14 +492,15 @@ export const main = async (
return result;
};
-export const config: FunctionConfig = {
- universalIdentifier: '',
+export default defineFunction({
+ universalIdentifier: 'e56d363b-0bdc-4d8a-a393-6f0d1c75bdcf',
name: 'create-new-post-card',
timeoutSeconds: 2,
+ handler,
triggers: [
// Public HTTP route trigger '/s/post-card/create'
{
- universalIdentifier: '',
+ universalIdentifier: 'c9f84c8d-b26d-40d1-95dd-4f834ae5a2c6',
type: 'route',
path: '/post-card/create',
httpMethod: 'GET',
@@ -425,39 +508,137 @@ export const config: FunctionConfig = {
},
// Cron trigger (CRON pattern)
{
- universalIdentifier: '',
+ universalIdentifier: 'dd802808-0695-49e1-98c9-d5c9e2704ce2',
type: 'cron',
pattern: '0 0 1 1 *',
},
// Database event trigger
{
- universalIdentifier: '',
+ universalIdentifier: '203f1df3-4a82-4d06-a001-b8cf22a31156',
type: 'databaseEvent',
- eventName: 'person.created',
+ eventName: 'person.updated',
+ updatedFields: ['name'],
},
],
+});
+```
+
+常见触发器类型:
+
+* **route**:在\*\*`/s/` 端点\*\*下通过 HTTP 路径与方法公开你的函数:
+
+> 例如 `path: '/post-card/create',` -> 调用 `/s/post-card/create`
+
+* **cron**:使用 CRON 表达式按计划运行你的函数。
+* **databaseEvent**:在工作空间对象生命周期事件上运行。 当事件操作为 `updated` 时,可以在 `updatedFields` 数组中指定要监听的特定字段。 如果未定义或为空,任何更新都会触发该函数。
+
+> 例如 `person.updated`
+
+备注:
+
+* `triggers` 数组是可选的。 没有触发器的函数可作为实用函数,被其他函数调用。
+* 你可以在单个函数中混用多种触发器类型。
+
+### 路由触发器负载
+
+
+ **破坏性变更(v1.16,2026 年 1 月):** 路由触发器的负载格式已更改。 在 v1.16 之前,查询参数、路径参数和请求体会直接作为负载发送。 从 v1.16 开始,它们被嵌套在结构化的 `RoutePayload` 对象中。
+
+ **v1.16 之前:**
+
+ ```typescript
+ const handler = async (params) => {
+ const { param1, param2 } = params; // Direct access
+ };
+ ```
+
+ **v1.16 之后:**
+
+ ```typescript
+ const handler = async (event: RoutePayload) => {
+ const { param1, param2 } = event.body; // Access via .body
+ const { queryParam } = event.queryStringParameters;
+ const { id } = event.pathParameters;
+ };
+ ```
+
+ **迁移现有函数:** 将处理程序更新为从 `event.body`、`event.queryStringParameters` 或 `event.pathParameters` 解构,而不是直接从参数对象解构。
+
+
+当路由触发器调用你的函数时,它会接收一个遵循 AWS HTTP API v2 格式的 `RoutePayload` 对象。 从 `twenty-sdk` 导入该类型:
+
+```typescript
+import { defineFunction, type RoutePayload } from 'twenty-sdk';
+
+const handler = async (event: RoutePayload) => {
+ // Access request data
+ const { headers, queryStringParameters, pathParameters, body } = event;
+
+ // HTTP method and path are available in requestContext
+ const { method, path } = event.requestContext.http;
+
+ return { message: 'Success' };
};
```
-Common trigger types:
+`RoutePayload` 类型具有以下结构:
-* route: Exposes your function on an HTTP path and method **under the `/s/` endpoint**:
+| 属性 | 类型 | 描述 |
+| ---------------------------- | ------------------------------------- | ------------------------------------------------ |
+| `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` | 原始请求路径 |
-> e.g. `path: '/post-card/create',` -> call on `/s/post-card/create`
+### 转发 HTTP 请求头
-* cron: Runs your function on a schedule using a CRON expression.
-* databaseEvent: Runs on workspace object lifecycle events
+出于安全原因,默认不会将传入请求的 HTTP 请求头传递给你的无服务器函数。 如需访问特定请求头,请在 `forwardedRequestHeaders` 数组中显式列出:
-> e.g. `person.created`
+```typescript
+export default defineFunction({
+ universalIdentifier: 'e56d363b-0bdc-4d8a-a393-6f0d1c75bdcf',
+ name: 'webhook-handler',
+ handler,
+ triggers: [
+ {
+ universalIdentifier: 'c9f84c8d-b26d-40d1-95dd-4f834ae5a2c6',
+ type: 'route',
+ path: '/webhook',
+ httpMethod: 'POST',
+ isAuthRequired: false,
+ forwardedRequestHeaders: ['x-webhook-signature', 'content-type'],
+ },
+ ],
+});
+```
-You can create new functions in two ways:
+随后你可以在处理程序中访问这些请求头:
-* **Scaffolded**: Run `yarn create-entity --path ` and choose the option to add a new function. This generates a starter file under `` with a `main` handler and a `config` block similar to the example above.
-* **Manual**: Create a new file and export `main` and `config` yourself, following the same pattern.
+```typescript
+const handler = async (event: RoutePayload) => {
+ const signature = event.headers['x-webhook-signature'];
+ const contentType = event.headers['content-type'];
-### Generated typed client
+ // Validate webhook signature...
+ return { received: true };
+};
+```
-Run yarn generate to create a local typed client in generated/ based on your workspace schema. Use it in your functions:
+
+ 请求头名称会被规范化为小写。 请使用小写键访问它们(例如,`event.headers['content-type']`)。
+
+
+你可以通过两种方式创建新函数:
+
+* **脚手架生成**:运行 `yarn app:create-entity` 并选择添加新函数的选项。 这将生成一个包含处理程序和配置的入门文件。
+* **手动**:创建一个新的 `*.function.ts` 文件,并使用 `defineFunction()`,遵循相同的模式。
+
+### 生成的类型化客户端
+
+运行 yarn app:generate,根据你的工作空间模式在 generated/ 中创建本地类型化客户端。 在你的函数中使用它:
```typescript
import Twenty from './generated';
@@ -466,34 +647,34 @@ const client = new Twenty();
const { me } = await client.query({ me: { id: true, displayName: true } });
```
-The client is re-generated by `yarn generate`. Re-run after changing your objects and `yarn 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`:你的应用所针对的 Twenty API 的基础 URL。
+* `TWENTY_API_KEY`:作用域限定于你的应用默认函数角色的短期密钥。
-Notes:
+备注:
-* 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 密钥。 它会在运行时从 process.env 读取 `TWENTY_API_URL` 和 `TWENTY_API_KEY`。
+* 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"
{
@@ -510,13 +691,13 @@ Then add scripts like these:
}
```
-Now you can run the same commands via Yarn, e.g. `yarn dev`, `yarn sync`, etc.
+现在你可以通过 Yarn 运行相同的命令,例如 `yarn app:dev`、`yarn app:sync` 等。
-## Troubleshooting
+## 故障排除
-* Authentication errors: run `yarn auth` 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 generate` and then `yarn dev`.
-* Dev mode not syncing: ensure `yarn dev` is running and that changes are not ignored by your environment.
+* 身份验证错误:运行 `yarn auth:login`,并确保你的 API 密钥具有所需权限。
+* 无法连接到服务器:请验证 API URL,并确保 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/zh/developers/extend/capabilities/webhooks.mdx b/packages/twenty-docs/l/zh/developers/extend/capabilities/webhooks.mdx
index 7949d9344b..6ea289e087 100644
--- a/packages/twenty-docs/l/zh/developers/extend/capabilities/webhooks.mdx
+++ b/packages/twenty-docs/l/zh/developers/extend/capabilities/webhooks.mdx
@@ -1,44 +1,44 @@
---
title: Webhooks
-description: Receive real-time notifications when events occur in your CRM.
+description: 当您的 CRM 中发生事件时接收实时通知。
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-Webhooks push data to your systems in real-time when events occur in Twenty — no polling required. Use them to keep external systems in sync, trigger automations, or send alerts.
+当 Twenty 中发生事件时,Webhook 会实时将数据推送到您的系统 — 无需轮询。 使用它们来保持外部系统同步、触发自动化或发送警报。
-## Create a Webhook
+## 创建 Webhook
-1. Go to **Settings → APIs & Webhooks → Webhooks**
-2. Click **+ Create webhook**
-3. Enter your webhook URL (must be publicly accessible)
-4. Click **Save**
+1. 前往 **设置 → APIs & Webhooks → Webhooks**
+2. 单击 **+ 创建 Webhook**
+3. 输入您的 Webhook URL(必须可公开访问)
+4. 单击 **保存**
-The webhook activates immediately and starts sending notifications.
+Webhook 会立即激活并开始发送通知。
-
+
-### Manage Webhooks
+### 管理 Webhooks
-**Edit**: Click the webhook → Update URL → **Save**
+**编辑**:点击该 Webhook → 更新 URL → **保存**
-**Delete**: Click the webhook → **Delete** → Confirm
+**删除**:点击该 Webhook → **删除** → 确认
-## Events
+## 事件
-Twenty sends webhooks for these event types:
+Twenty 会针对以下事件类型发送 Webhook:
-| Event | Example |
-| ------------------ | ---------------------------------------------------------- |
-| **Record Created** | `person.created`, `company.created`, `note.created` |
-| **Record Updated** | `person.updated`, `company.updated`, `opportunity.updated` |
-| **Record Deleted** | `person.deleted`, `company.deleted` |
+| 事件 | 示例 |
+| --------- | ---------------------------------------------------------- |
+| **记录已创建** | `person.created`, `company.created`, `note.created` |
+| **记录已更新** | `person.updated`, `company.updated`, `opportunity.updated` |
+| **记录已删除** | `person.deleted`, `company.deleted` |
-All event types are sent to your webhook URL. Event filtering may be added in future releases.
+所有事件类型都会发送到您的 Webhook URL。 事件过滤可能会在未来的版本中添加。
-## Payload Format
+## 负载格式
-Each webhook sends an HTTP POST with a JSON body:
+每个 Webhook 都会发送一个带有 JSON 正文的 HTTP POST:
```json
{
@@ -55,35 +55,35 @@ Each webhook sends an HTTP POST with a JSON body:
}
```
-| Field | Description |
-| ----------- | ------------------------------------------------ |
-| `event` | What happened (e.g., `person.created`) |
-| `data` | The full record that was created/updated/deleted |
-| `timestamp` | When the event occurred (UTC) |
+| 字段 | 描述 |
+| ----- | -------------------------- |
+| `事件` | 发生了什么(例如,`person.created`) |
+| `数据` | 已创建/更新/删除的完整记录 |
+| `时间戳` | 事件发生的时间(UTC) |
- Respond with a **2xx HTTP status** (200-299) to acknowledge receipt. Non-2xx responses are logged as delivery failures.
+ 请返回 **2xx HTTP 状态**(200-299)以确认已接收。 非 2xx 的响应将被记录为投递失败。
-## Webhook Validation
+## Webhook 验证
-Twenty signs each webhook request for security. Validate signatures to ensure requests are authentic.
+为了安全起见,Twenty 会对每个 Webhook 请求进行签名。 请验证签名以确保请求真实有效。
### Headers
-| Header | Description |
-| ---------------------------- | --------------------- |
-| `X-Twenty-Webhook-Signature` | HMAC SHA256 signature |
-| `X-Twenty-Webhook-Timestamp` | Request timestamp |
+| 标题 | 描述 |
+| ---------------------------- | -------------- |
+| `X-Twenty-Webhook-Signature` | HMAC SHA256 签名 |
+| `X-Twenty-Webhook-Timestamp` | 请求时间戳 |
-### Validation Steps
+### 验证步骤
-1. Get the timestamp from `X-Twenty-Webhook-Timestamp`
-2. Create the string: `{timestamp}:{JSON payload}`
-3. Compute HMAC SHA256 using your webhook secret
-4. Compare with `X-Twenty-Webhook-Signature`
+1. 从 `X-Twenty-Webhook-Timestamp` 获取时间戳
+2. 构造字符串:`{timestamp}:{JSON payload}`
+3. 使用您的 Webhook 密钥计算 HMAC SHA256
+4. 与 `X-Twenty-Webhook-Signature` 进行比较
-### Example (Node.js)
+### 示例(Node.js)
```javascript
const crypto = require("crypto");
@@ -101,12 +101,12 @@ const expectedSignature = crypto
const isValid = expectedSignature === req.headers["x-twenty-webhook-signature"];
```
-## Webhooks vs Workflows
+## Webhooks 与工作流
-| Method | Direction | Use Case |
-| ---------------------------- | --------- | ---------------------------------------------------------- |
-| **Webhooks** | OUT | Automatically notify external systems of any record change |
-| **Workflow + HTTP Request** | OUT | Send data out with custom logic (filters, transformations) |
-| **Workflow Webhook Trigger** | IN | Receive data into Twenty from external systems |
+| 方法 | 方向 | 用例 |
+| ------------------- | --- | -------------------- |
+| **Webhooks** | OUT | 自动通知外部系统任何记录变更 |
+| **工作流 + HTTP 请求** | OUT | 使用自定义逻辑(过滤、转换)向外发送数据 |
+| **工作流 Webhook 触发器** | IN | 从外部系统接收数据到 Twenty |
-For receiving external data, see [Set Up a Webhook Trigger](/l/zh/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger).
+如需接收外部数据,请参见 [设置 Webhook 触发器](/l/zh/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger)。
diff --git a/packages/twenty-docs/l/zh/developers/extend/extend.mdx b/packages/twenty-docs/l/zh/developers/extend/extend.mdx
index 0e3dbc96ee..7b90fcc09e 100644
--- a/packages/twenty-docs/l/zh/developers/extend/extend.mdx
+++ b/packages/twenty-docs/l/zh/developers/extend/extend.mdx
@@ -1,34 +1,34 @@
---
-title: Extend
-description: Extend Twenty's functionality with APIs, webhooks, and custom apps.
+title: 扩展
+description: 使用 API、网络钩子和自定义应用扩展 Twenty 的功能。
---
-## Overview
+## 概览
-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!
+* **API**:使用 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/zh/developers/introduction.mdx b/packages/twenty-docs/l/zh/developers/introduction.mdx
index f12710341a..6906d4334b 100644
--- a/packages/twenty-docs/l/zh/developers/introduction.mdx
+++ b/packages/twenty-docs/l/zh/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/zh/developers/self-host/capabilities/cloud-providers.mdx b/packages/twenty-docs/l/zh/developers/self-host/capabilities/cloud-providers.mdx
index 809388612a..4c7ee10b83 100644
--- a/packages/twenty-docs/l/zh/developers/self-host/capabilities/cloud-providers.mdx
+++ b/packages/twenty-docs/l/zh/developers/self-host/capabilities/cloud-providers.mdx
@@ -1,45 +1,45 @@
---
-title: Other methods
+title: 其他方法
---
- This document is maintained by the community. It might contain issues.
+ 此文档由社区维护。 可能包含问题。
-## Kubernetes via Terraform and Manifests
+## 通过 Terraform 和清单部署 Kubernetes
-Community-led documentation for Kubernetes deployment is available [here](https://github.com/twentyhq/twenty/tree/main/packages/twenty-docker/k8s)
+社区主导的 Kubernetes 部署文档可在[此处](https://github.com/twentyhq/twenty/tree/main/packages/twenty-docker/k8s)获取。
### Coolify
-Deploy Twenty on servers using Coolify. (official image on Coolify will be available soon)
+使用 Coolify 在服务器上部署 Twenty。 (官方的 Coolify 镜像很快就会提供)
-[Coolify documentation](https://coolify.io/docs/get-started/introduction)
+[Coolify 文档](https://coolify.io/docs/get-started/introduction)
### EasyPanel
-Deploy Twenty on EasyPanel with the community maintained template below.
+使用下方社区维护的模板在 EasyPanel 上部署 Twenty。
-[Deploy on EasyPanel](https://easypanel.io/docs/templates/twenty)
+[在 EasyPanel 上部署](https://easypanel.io/docs/templates/twenty)
### Elest.io
-Deploy Twenty on servers with Elest.io using link below.
+通过下方链接使用 Elest.io 在服务器上部署 Twenty。
-[Deploy on Elest.io](https://elest.io/open-source/twenty)
+[在 Elest.io 上部署](https://elest.io/open-source/twenty)
### Twenty on Railway
-Deploy Twenty on Railway with the community maintained template below.
+使用下方社区维护的模板在 Railway 上部署 Twenty。
-[](https://railway.com/deploy/nAL3hA)
+[](https://railway.com/deploy/nAL3hA)
-### Twenty on Sealos
+### 在 Sealos 上的 Twenty
-Deploy Twenty on Sealos with the community maintained template below.
+使用下方社区维护的模板在 Sealos 上部署 Twenty。
-[](https://sealos.io/products/app-store/twenty)
+[](https://sealos.io/products/app-store/twenty)
-## Others
+## 其他
-Please feel free to Open a PR to add more Cloud Provider options.
+请随时打开 PR 以添加更多云提供商选项。
diff --git a/packages/twenty-docs/l/zh/developers/self-host/capabilities/docker-compose.mdx b/packages/twenty-docs/l/zh/developers/self-host/capabilities/docker-compose.mdx
index 1d04e2638a..7bbd192fa7 100644
--- a/packages/twenty-docs/l/zh/developers/self-host/capabilities/docker-compose.mdx
+++ b/packages/twenty-docs/l/zh/developers/self-host/capabilities/docker-compose.mdx
@@ -1,253 +1,253 @@
---
-title: 1-Click w/ Docker Compose
+title: 1-点击使用Docker Compose
---
- Docker containers are for production hosting or self-hosting, for the contribution please check the [Local Setup](/l/zh/developers/contribute/capabilities/local-setup).
+ Docker容器用于生产托管或自托管,关于贡献,请查看[本地设置](/l/zh/developers/contribute/capabilities/local-setup)。
-## Overview
+## 概览
-This guide provides step-by-step instructions to install and configure the Twenty application using Docker Compose. The aim is to make the process straightforward and prevent common pitfalls that could break your setup.
+本指南提供了使用Docker Compose安装和配置Twenty应用程序的分步说明。 其目的是使过程简单明了,并防止可能造成设置中断的常见错误。
-**Important:** Only modify settings explicitly mentioned in this guide. Altering other configurations may lead to issues.
+**重要:** 仅修改本指南中明确提到的设置。 更改其他配置可能会导致问题。
-See docs [Setup Environment Variables](/l/zh/developers/self-host/capabilities/setup) for advanced configuration. All environment variables must be declared in the docker-compose.yml file at the server and / or worker level depending on the variable.
+请参阅文档[设置环境变量](/l/zh/developers/self-host/capabilities/setup)获取高级配置。 所有环境变量必须在docker-compose.yml文件中根据变量声明在服务器和/或工作器级别。
-## System Requirements
+## 系统要求
-* RAM: Ensure your environment has at least 2GB of RAM. Insufficient memory can cause processes to crash.
-* Docker & Docker Compose: Make sure both are installed and up-to-date.
+* RAM:确保您的环境至少有2GB的RAM。 内存不足会导致进程崩溃。
+* Docker & Docker Compose:确保两者均已安装并是最新的。
-## Option 1: One-line script
+## 选项 1:单行脚本
-Install the latest stable version of Twenty with a single command:
+通过简单的命令安装最新的Twenty稳定版本:
```bash
bash <(curl -sL https://raw.githubusercontent.com/twentyhq/twenty/main/packages/twenty-docker/scripts/install.sh)
```
-To install a specific version or branch:
+要安装特定版本或分支:
```bash
VERSION=vx.y.z BRANCH=branch-name bash <(curl -sL https://raw.githubusercontent.com/twentyhq/twenty/main/packages/twenty-docker/scripts/install.sh)
```
-* Replace x.y.z with the desired version number.
-* Replace branch-name with the name of the branch you want to install.
+* 将x.y.z替换为所需的版本号。
+* 将branch-name替换为您要安装的分支名称。
-## Option 2: Manual steps
+## 选项 2:手动步骤
-Follow these steps for a manual setup.
+请按以下步骤进行手动设置。
-### Step 1: Set Up the Environment File
+### 步骤 1:设置环境文件
-1. **Create the .env File**
+1. **创建 .env 文件**
- Copy the example environment file to a new .env file in your working directory:
+ 将示例环境文件复制到工作目录中的新.env文件:
```bash
curl -o .env https://raw.githubusercontent.com/twentyhq/twenty/refs/heads/main/packages/twenty-docker/.env.example
```
-2. **Generate Secret Tokens**
+2. **生成密钥令牌**
- Run the following command to generate a unique random string:
+ 运行以下命令以生成唯一的随机字符串:
```bash
openssl rand -base64 32
```
- **Important:** Keep this value secret / do not share it.
+ **重要:** 保持该值秘密/不要共享。
-3. **Update the `.env`**
+3. **更新`.env`**
- Replace the placeholder value in your .env file with the generated token:
+ 用生成的令牌替换.env文件中的占位符值:
```ini
APP_SECRET=first_random_string
```
-4. **Set the Postgres Password**
+4. **设置Postgres密码**
- Update the `PG_DATABASE_PASSWORD` value in the .env file with a strong password without special characters.
+ 用不含特殊字符的强密码更新.env文件中的`PG_DATABASE_PASSWORD`值。
```ini
PG_DATABASE_PASSWORD=my_strong_password
```
-### Step 2: Obtain the Docker Compose File
+### 步骤2:获取Docker Compose文件
-Download the `docker-compose.yml` file to your working directory:
+将`docker-compose.yml`文件下载到工作目录:
```bash
curl -o docker-compose.yml https://raw.githubusercontent.com/twentyhq/twenty/refs/heads/main/packages/twenty-docker/docker-compose.yml
```
-### Step 3: Launch the Application
+### 步骤3:启动应用程序
-Start the Docker containers:
+启动Docker容器:
```bash
docker compose up -d
```
-### Step 4: Access the Application
+### 步骤4:访问应用程序
-If you host twentyCRM on your own computer, open your browser and navigate to [http://localhost:3000](http://localhost:3000).
+如果您在自己的电脑上托管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
```
-## Configuration
+## 配置
-### Expose Twenty to External Access
+### 将Twenty暴露给外部访问
-By default, Twenty runs on `localhost` at port `3000`. To access it via an external domain or IP address, you need to configure the `SERVER_URL` in your `.env` file.
+默认情况下,Twenty在`localhost`的端口`3000`上运行。 要通过外部域或IP地址访问它,您需要在`.env`文件中配置`SERVER_URL`。
-#### Understanding `SERVER_URL`
+#### 理解`SERVER_URL`
-* **Protocol:** Use `http` or `https` depending on your setup.
- * Use `http` if you haven't set up SSL.
- * Use `https` if you have SSL configured.
-* **Domain/IP:** This is the domain name or IP address where your application is accessible.
-* **Port:** Include the port number if you're not using the default ports (`80` for `http`, `443` for `https`).
+* **协议:** 根据您的设置,使用`http`或者`https`。
+ * 如果您没有设置SSL,请使用`http`。
+ * 如果已配置SSL,请使用`https`。
+* **域名/IP:** 这是您的应用程序可访问的域名或IP地址。
+* **端口:** 如果您没有使用默认端口(`http`为80,`https`为443),请包括端口号。
-### SSL Requirements
+### SSL要求
-SSL (HTTPS) is required for certain browser features to work properly. While these features might work during local development (as browsers treat localhost differently), a proper SSL setup is needed when hosting Twenty on a regular domain.
+某些浏览器功能需要SSL(HTTPS)才能正常工作。 虽然这些功能在本地开发期间可能正常工作(因为浏览器对待localhost不同),但在常规域上托管Twenty时需要正确的SSL设置。
-For example, the clipboard API might require a secure context - some features like copy buttons throughout the application might not work without HTTPS enabled.
+例如,剪贴板API可能需要安全的上下文 - 一些功能如整个应用程序中的复制按钮可能在未启用HTTPS时无法使用。
-We strongly recommend setting up Twenty behind a reverse proxy with SSL termination for optimal security and functionality.
+我们强烈建议您在带有SSL终止的反向代理背后设置Twenty,以实现最佳的安全性和功能。
-#### Configuring `SERVER_URL`
+#### 配置`SERVER_URL`
-1. **Determine Your Access URL**
- * **Without Reverse Proxy (Direct Access):**
+1. **确定您的访问URL**
+ * **没有反向代理(直接访问):**
- If you're accessing the application directly without a reverse proxy:
+ 如果您直接访问应用程序而没有反向代理:
```ini
SERVER_URL=http://your-domain-or-ip:3000
```
- * **With Reverse Proxy (Standard Ports):**
+ * **有反向代理(标准端口):**
- If you're using a reverse proxy like Nginx or Traefik and have SSL configured:
+ 如果您使用像Nginx或Traefik这样的反向代理并配置了SSL:
```ini
SERVER_URL=https://your-domain-or-ip
```
- * **With Reverse Proxy (Custom Ports):**
+ * **有反向代理(自定义端口):**
- If you're using non-standard ports:
+ 如果您使用非标准端口:
```ini
SERVER_URL=https://your-domain-or-ip:custom-port
```
-2. **Update the `.env` File**
+2. **更新`.env`文件**
- Open your `.env` file and update the `SERVER_URL`:
+ 打开您的`.env`文件并更新`SERVER_URL`:
```ini
SERVER_URL=http(s)://your-domain-or-ip:your-port
```
- **Examples:**
+ **示例:**
- * Direct access without SSL:
+ * 无需SSL的直接访问:
```ini
SERVER_URL=http://123.45.67.89:3000
```
- * Access via domain with SSL:
+ * 通过域名访问使用SSL:
```ini
SERVER_URL=https://mytwentyapp.com
```
-3. **Restart the Application**
+3. **重新启动应用程序**
- For changes to take effect, restart the Docker containers:
+ 为了让更改生效,重启Docker容器:
```bash
docker compose down
docker compose up -d
```
-#### Considerations
+#### 注意事项
-* **Reverse Proxy Configuration:**
+* **反向代理配置:**
- Ensure your reverse proxy forwards requests to the correct internal port (`3000` by default). Configure SSL termination and any necessary headers.
+ 确保您的反向代理将请求转发到正确的内部端口(默认情况下为`3000`)。 配置 SSL 终止和任何必要的头信息。
-* **Firewall Settings:**
+* **防火墙设置:**
- Open necessary ports in your firewall to allow external access.
+ 打开防火墙中的必要端口以允许外部访问。
-* **Consistency:**
+* **一致性:**
- The `SERVER_URL` must match how users access your application in their browsers.
+ `SERVER_URL` 必须与用户在浏览器中访问您的应用程序的方式匹配。
-#### Persistence
+#### 数据持久化
-* **Data Volumes:**
+* **数据卷:**
- The Docker Compose configuration uses volumes to persist data for the database and server storage.
+ Docker Compose 配置使用卷来持久化数据库和服务器存储的数据。
-* **Stateless Environments:**
+* **无状态环境:**
- If deploying to a stateless environment (e.g., certain cloud services), configure external storage to persist data.
+ 如果部署到无状态环境(例如,某些云服务),请配置外部存储以持久化数据。
-## 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 等)
+* **加密敏感数据** — 使用加密保护备份
+* **保留多份副本** — 同时保留每日、每周和每月的备份
-## Troubleshooting
+## 故障排除
-If you encounter any problem, check [Troubleshooting](/l/zh/developers/self-host/capabilities/troubleshooting) for solutions.
+如果您遇到任何问题,请检查[故障排除](/l/zh/developers/self-host/capabilities/troubleshooting)以获取解决方案。
diff --git a/packages/twenty-docs/l/zh/developers/self-host/capabilities/setup.mdx b/packages/twenty-docs/l/zh/developers/self-host/capabilities/setup.mdx
index b97c3d3666..c51dc36a7a 100644
--- a/packages/twenty-docs/l/zh/developers/self-host/capabilities/setup.mdx
+++ b/packages/twenty-docs/l/zh/developers/self-host/capabilities/setup.mdx
@@ -1,146 +1,146 @@
---
-title: Setup
+title: 设置
---
-# Configuration Management
+# 配置管理
- **First time installing?** Follow the [Docker Compose installation guide](/l/zh/developers/self-host/capabilities/docker-compose) to get Twenty running, then return here for configuration.
+ **第一次安装?** 请按照 [Docker Compose 安装指南](/l/zh/developers/self-host/capabilities/docker-compose) 获得 Twenty 运行,然后返回此处进行配置。
-Twenty offers **two configuration modes** to suit different deployment needs:
+Twenty 提供**两种配置模式**以适应不同的部署需求:
-**Admin panel access:** Only users with admin privileges (`canAccessFullAdminPanel: true`) can access the configuration interface.
+**管理员面板访问:** 只有具有管理员权限的用户(`canAccessFullAdminPanel: true`) 可以访问配置界面。
-## 1. Admin Panel Configuration (Default)
+## 1. 管理员面板配置(默认)
```bash
IS_CONFIG_VARIABLES_IN_DB_ENABLED=true # default
```
-**Most configuration happens through the UI** after installation:
+**大多数配置在安装后通过 UI 进行:**
-1. Access your Twenty instance (usually `http://localhost:3000`)
-2. Go to **Settings / Admin Panel / Configuration Variables**
-3. Configure integrations, email, storage, and more
-4. Changes take effect immediately (within 15 seconds for multi-container deployments)
+1. 访问你的 Twenty 实例(通常为 `http://localhost:3000`)
+2. 转到 **设置 / 管理员面板 / 配置变量**
+3. 配置集成、电子邮件、存储等
+4. 更改会立即生效(多容器部署在 15 秒内)
- **Multi-Container Deployments:** When using database configuration (`IS_CONFIG_VARIABLES_IN_DB_ENABLED=true`), both server and worker containers read from the same database. Admin panel changes affect both automatically, eliminating the need to duplicate environment variables between containers (except for infrastructure variables).
+ **多容器部署:** 当使用数据库配置(`IS_CONFIG_VARIABLES_IN_DB_ENABLED=true`)时,server 和 worker 容器都会从同一个数据库读取。 管理员面板更改会自动影响两者,无需在容器之间重复环境变量(基础设施变量除外)。
-**What you can configure through the admin panel:**
+**通过管理员面板可以配置的内容:**
-* **Authentication** - Google/Microsoft OAuth, password settings
-* **Email** - SMTP settings, templates, verification
-* **Storage** - S3 configuration, local storage paths
-* **Integrations** - Gmail, Google Calendar, Microsoft services
-* **Workflow & Rate Limiting** - Execution limits, API throttling
-* **And much more...**
+* **身份验证** - Google/Microsoft OAuth、密码设置
+* **电子邮件** - SMTP 设置、模板、验证
+* **存储** - S3 配置、本地存储路径
+* **集成** - Gmail, Google Calendar, Microsoft 服务
+* **工作流和速率限制** - 执行限制、API 限流
+* **还有更多……**
-
+
- Each variable is documented with descriptions in your admin panel at **Settings → Admin Panel → Configuration Variables**.
- Some infrastructure settings like database connections (`PG_DATABASE_URL`), server URLs (`SERVER_URL`), and app secrets (`APP_SECRET`) can only be configured via `.env` file.
+ 每个变量都在您的管理面板的**设置 → 管理员面板 → 配置变量**中记录了说明。
+ 某些基础设施设置如数据库连接 (`PG_DATABASE_URL`)、服务器 URL (`SERVER_URL`) 和应用程序密钥 (`APP_SECRET`) 只能通过 `.env` 文件配置。
- [Complete technical reference →](https://github.com/twentyhq/twenty/blob/main/packages/twenty-server/src/engine/core-modules/twenty-config/config-variables.ts)
+ [完整技术参考→](https://github.com/twentyhq/twenty/blob/main/packages/twenty-server/src/engine/core-modules/twenty-config/config-variables.ts)
-## 2. Environment-Only Configuration
+## 2. 仅限环境配置
```bash
IS_CONFIG_VARIABLES_IN_DB_ENABLED=false
```
-**All configuration managed through `.env` files:**
+**所有配置通过 `.env` 文件管理:**
-1. Set `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false` in your `.env` file
-2. Add all configuration variables to your `.env` file
-3. Restart containers for changes to take effect
-4. Admin panel will show current values but cannot modify them
+1. 在 `.env` 文件中设置 `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false`
+2. 将所有配置变量添加到 `.env` 文件中
+3. 重启容器以使更改生效
+4. 管理员面板将显示当前值,但无法修改它们
-## Multi-Workspace Mode
+## 多工作区模式
-By default, Twenty runs in **single-workspace mode** — ideal for most self-hosted deployments where you need one CRM instance for your organization.
+默认情况下,Twenty 以**单工作区模式**运行——对于大多数需要为组织部署一个 CRM 实例的自托管部署而言,这是理想之选。
-### Single-Workspace Mode (Default)
+### 单工作区模式(默认)
```bash
IS_MULTIWORKSPACE_ENABLED=false # default
```
-* One workspace per Twenty instance
-* First user automatically becomes admin with full privileges (`canImpersonate` and `canAccessFullAdminPanel`)
-* New signups are disabled after the first workspace is created
-* Simple URL structure: `https://your-domain.com`
+* 每个 Twenty 实例一个工作区
+* 首位用户会自动成为具有完整权限的管理员(`canImpersonate` 和 `canAccessFullAdminPanel`)
+* 创建第一个工作区后,新注册将被禁用
+* 简单的 URL 结构:`https://your-domain.com`
-### Enabling Multi-Workspace Mode
+### 启用多工作区模式
```bash
IS_MULTIWORKSPACE_ENABLED=true
DEFAULT_SUBDOMAIN=app # default value
```
-Enable multi-workspace mode for SaaS-like deployments where multiple independent teams need their own workspaces on the same Twenty instance.
+对于在同一 Twenty 实例上需要多个独立团队拥有各自工作区的类 SaaS 部署,启用多工作区模式。
-**Key differences from single-workspace mode:**
+**与单工作区模式的关键区别:**
-* Multiple workspaces can be created on the same instance
-* Each workspace gets its own subdomain (e.g., `sales.your-domain.com`, `marketing.your-domain.com`)
-* Users sign up and log in at `{DEFAULT_SUBDOMAIN}.your-domain.com` (e.g., `app.your-domain.com`)
-* No automatic admin privileges — first user in each workspace is a regular user
-* Workspace-specific settings like subdomain and custom domain become available in workspace settings
+* 同一实例上可以创建多个工作区
+* 每个工作区都有其自己的子域(例如,`sales.your-domain.com`、`marketing.your-domain.com`)
+* 用户在 `{DEFAULT_SUBDOMAIN}.your-domain.com` 进行注册和登录(例如,`app.your-domain.com`)
+* 不自动授予管理员权限——每个工作区的首位用户是普通用户
+* 子域、自定义域名等与工作区相关的设置将在工作区设置中可用。
- **Environment-only setting:** `IS_MULTIWORKSPACE_ENABLED` can only be configured via `.env` file and requires a restart. It cannot be changed through the admin panel.
+ **仅限环境的设置:**`IS_MULTIWORKSPACE_ENABLED` 只能通过 `.env` 文件进行配置,并且需要重启。 无法通过管理面板进行更改。
-### DNS Configuration for Multi-Workspace
+### 多工作区模式的 DNS 配置
-When using multi-workspace mode, configure your DNS with a wildcard record to allow dynamic subdomain creation:
+使用多工作区模式时,请在 DNS 中配置通配符记录,以允许动态创建子域:
```
*.your-domain.com -> your-server-ip
```
-This enables automatic subdomain routing for new workspaces without manual DNS configuration.
+这使新工作区能够在无需手动配置 DNS 的情况下自动进行子域路由。
-### Restricting Workspace Creation
+### 限制工作区创建
-In multi-workspace mode, you may want to limit who can create new workspaces:
+在多工作区模式下,你可能希望限制谁可以创建新工作区:
```bash
IS_WORKSPACE_CREATION_LIMITED_TO_SERVER_ADMINS=true
```
-When enabled, only users with `canAccessFullAdminPanel` can create additional workspaces. Users can still create their first workspace during initial signup.
+启用后,只有具有 `canAccessFullAdminPanel` 权限的用户才能创建其他工作区。 用户仍可在首次注册时创建他们的第一个工作区。
-## Gmail & Google Calendar Integration
+## Gmail & Google Calendar 集成
-### Create Google Cloud Project
+### 创建 Google 云项目
-1. Go to [Google Cloud Console](https://console.cloud.google.com/)
-2. Create a new project or select existing one
-3. Enable these APIs:
+1. 转到 [Google 云控制台](https://console.cloud.google.com/)
+2. 创建新项目或选择现有项目
+3. 启用这些 API:
* [Gmail API](https://console.cloud.google.com/apis/library/gmail.googleapis.com)
* [Google Calendar API](https://console.cloud.google.com/apis/library/calendar-json.googleapis.com)
* [People API](https://console.cloud.google.com/apis/library/people.googleapis.com)
-### Configure OAuth
+### 配置 OAuth
-1. Go to [Credentials](https://console.cloud.google.com/apis/credentials)
-2. Create OAuth 2.0 Client ID
-3. Add these redirect URIs:
- * `https://{your-domain}/auth/google/redirect` (for SSO)
- * `https://{your-domain}/auth/google-apis/get-access-token` (for integrations)
+1. 转到 [凭据](https://console.cloud.google.com/apis/credentials)
+2. 创建 OAuth 2.0 客户端 ID
+3. 添加这些重定向 URI:
+ * `https://{your-domain}/auth/google/redirect` (用于 SSO)
+ * `https://{your-domain}/auth/google-apis/get-access-token` (用于集成)
-### Configure in Twenty
+### 在 Twenty 中配置
-1. Go to **Settings → Admin Panel → Configuration Variables**
-2. Find the **Google Auth** section
-3. Set these variables:
+1. 转到 **设置 → 管理员面板 → 配置变量**
+2. 找到 **Google 身份验证** 部分
+3. 设置这些变量:
* `MESSAGING_PROVIDER_GMAIL_ENABLED=true`
* `CALENDAR_PROVIDER_GOOGLE_ENABLED=true`
* `AUTH_GOOGLE_CLIENT_ID={client-id}`
@@ -149,35 +149,35 @@ When enabled, only users with `canAccessFullAdminPanel` can create additional wo
* `AUTH_GOOGLE_APIS_CALLBACK_URL=https://{your-domain}/auth/google-apis/get-access-token`
- **Environment-only mode:** If you set `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false`, add these variables to your `.env` file instead.
+ **仅限环境模式:** 如果你设置 `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false`,请将这些变量添加到 `.env` 文件中。
-**Required scopes** (automatically configured):
-[See relevant source code](https://github.com/twentyhq/twenty/blob/main/packages/twenty-server/src/engine/core-modules/auth/utils/get-google-apis-oauth-scopes.ts#L4-L10)
+**所需范围**(自动配置):
+[查看相关源码](https://github.com/twentyhq/twenty/blob/main/packages/twenty-server/src/engine/core-modules/auth/utils/get-google-apis-oauth-scopes.ts#L4-L10)
* `https://www.googleapis.com/auth/calendar.events`
* `https://www.googleapis.com/auth/gmail.readonly`
* `https://www.googleapis.com/auth/profile.emails.read`
-### If your app is in test mode
+### 如果你的应用程序处于测试模式
-If your app is in test mode, you will need to add test users to your project.
+如果你的应用程序处于测试模式,你需要将测试用户添加到你的项目中。
-Under [OAuth consent screen](https://console.cloud.google.com/apis/credentials/consent), add your test users to the "Test users" section.
+在 [OAuth 同意屏幕](https://console.cloud.google.com/apis/credentials/consent) 下,将你的测试用户添加到 "测试用户" 部分。
-## Microsoft 365 Integration
+## Microsoft 365 集成
- Users must have a [Microsoft 365 Licence](https://admin.microsoft.com/Adminportal/Home) to be able to use the Calendar and Messaging API. They will not be able to sync their account on Twenty without one.
+ 用户必须拥有 [Microsoft 365 许可证](https://admin.microsoft.com/Adminportal/Home) 才能使用日历和消息传递 API。 没有许可证,他们将无法在 Twenty 上同步他们的帐户。
-### Create a project in Microsoft Azure
+### 在 Microsoft Azure 中创建项目
-You will need to create a project in [Microsoft Azure](https://portal.azure.com/#view/Microsoft_AAD_IAM/AppGalleryBladeV2) and get the credentials.
+你需要在 [Microsoft Azure](https://portal.azure.com/#view/Microsoft_AAD_IAM/AppGalleryBladeV2) 中创建项目并获取凭据。
-### Enable APIs
+### 启用 API
-On Microsoft Azure Console enable the following APIs in "Permissions":
+在 Microsoft Azure 控制台中的“权限”中启用以下 API:
* Microsoft Graph: Mail.ReadWrite
* Microsoft Graph: Mail.Send
@@ -188,20 +188,20 @@ On Microsoft Azure Console enable the following APIs in "Permissions":
* Microsoft Graph: profile
* Microsoft Graph: offline_access
-Note: "Mail.ReadWrite" and "Mail.Send" are only mandatory if you want to send emails using our workflow actions. You can use "Mail.Read" instead if you only want to receive emails.
+注意:“Mail.ReadWrite”和“Mail.Send”仅在你想使用我们的工作流程操作发送电子邮件时是强制性的。 如果你只想接收邮件,你可以使用“Mail.Read”。
-### Authorized redirect URIs
+### 授权重定向 URI
-You need to add the following redirect URIs to your project:
+你需要将以下重定向 URI 添加到你的项目中:
-* `https://{your-domain}/auth/microsoft/redirect` if you want to use Microsoft SSO
+* `https://{your-domain}/auth/microsoft/redirect` 如果你想使用 Microsoft SSO
* `https://{your-domain}/auth/microsoft-apis/get-access-token`
-### Configure in Twenty
+### 在 Twenty 中配置
-1. Go to **Settings → Admin Panel → Configuration Variables**
-2. Find the **Microsoft Auth** section
-3. Set these variables:
+1. 转到 **设置 → 管理员面板 → 配置变量**
+2. 找到 **Microsoft 身份验证** 部分
+3. 设置这些变量:
* `MESSAGING_PROVIDER_MICROSOFT_ENABLED=true`
* `CALENDAR_PROVIDER_MICROSOFT_ENABLED=true`
* `AUTH_MICROSOFT_ENABLED=true`
@@ -211,32 +211,32 @@ You need to add the following redirect URIs to your project:
* `AUTH_MICROSOFT_APIS_CALLBACK_URL=https://{your-domain}/auth/microsoft-apis/get-access-token`
- **Environment-only mode:** If you set `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false`, add these variables to your `.env` file instead.
+ **仅限环境模式:** 如果你设置 `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false`,请将这些变量添加到 `.env` 文件中。
-### Configure scopes
+### 配置范围
-[See relevant source code](https://github.com/twentyhq/twenty/blob/main/packages/twenty-server/src/engine/core-modules/auth/utils/get-microsoft-apis-oauth-scopes.ts#L2-L9)
+[查看相关源码](https://github.com/twentyhq/twenty/blob/main/packages/twenty-server/src/engine/core-modules/auth/utils/get-microsoft-apis-oauth-scopes.ts#L2-L9)
* 'openid'
-* 'email'
-* 'profile'
+* '电子邮件'
+* '个人资料'
* 'offline_access'
* 'Mail.ReadWrite'
* 'Mail.Send'
* 'Calendars.Read'
-### If your app is in test mode
+### 如果你的应用程序处于测试模式
-If your app is in test mode, you will need to add test users to your project.
+如果你的应用程序处于测试模式,你需要将测试用户添加到你的项目中。
-Add your test users to the "Users and groups" section.
+将你的测试用户添加到“用户和组”部分。
-## Background Jobs for Calendar & Messaging
+## 日历和消息传递的后台作业
-After configuring Gmail, Google Calendar, or Microsoft 365 integrations, you need to start the background jobs that sync data.
+在配置完 Gmail、Google Calendar 或 Microsoft 365 集成后,你需要启动同步数据的后台作业。
-Register the following recurring jobs in your worker container:
+在你的工作容器中注册以下重复作业:
```bash
# from your worker container
@@ -249,15 +249,15 @@ yarn command:prod cron:calendar:ongoing-stale
yarn command:prod cron:workflow:automated-cron-trigger
```
-## Email Configuration
+## 电子邮件配置
-1. Go to **Settings → Admin Panel → Configuration Variables**
-2. Find the **Email** section
-3. Configure your SMTP settings:
+1. 转到 **设置 → 管理员面板 → 配置变量**
+2. 找到 **电子邮件** 部分
+3. 配置你的 SMTP 设置:
- You will need to provision an [App Password](https://support.google.com/accounts/answer/185833).
+ 你需要提供一个 [应用密码](https://support.google.com/accounts/answer/185833)。
* EMAIL_DRIVER=smtp
* EMAIL_SMTP_HOST=smtp.gmail.com
@@ -267,7 +267,7 @@ yarn command:prod cron:workflow:automated-cron-trigger
- Keep in mind that if you have 2FA enabled, you will need to provision an [App Password](https://support.microsoft.com/en-us/account-billing/manage-app-passwords-for-two-step-verification-d6dc8c6d-4bf7-4851-ad95-6d07799387e9).
+ 请记住,如果您启用了双重身份验证,您需要提供一个 [应用密码](https://support.microsoft.com/en-us/account-billing/manage-app-passwords-for-two-step-verification-d6dc8c6d-4bf7-4851-ad95-6d07799387e9)。
* EMAIL_DRIVER=smtp
* EMAIL_SMTP_HOST=smtp.office365.com
@@ -277,11 +277,11 @@ yarn command:prod cron:workflow:automated-cron-trigger
- **smtp4dev** is a fake SMTP email server for development and testing.
+ **smtp4dev** 是一个用于开发和测试的假 SMTP 电子邮件服务器。
- * Run the smtp4dev image: `docker run --rm -it -p 8090:80 -p 2525:25 rnwood/smtp4dev`
- * Access the smtp4dev ui here: [http://localhost:8090](http://localhost:8090)
- * Set the following variables:
+ * 运行 smtp4dev 镜像: `docker run --rm -it -p 8090:80 -p 2525:25 rnwood/smtp4dev`
+ * 在此处访问 smtp4dev UI:[http://localhost:8090](http://localhost:8090)
+ * 设置以下变量:
* EMAIL_DRIVER=smtp
* EMAIL_SMTP_HOST=localhost
* EMAIL_SMTP_PORT=2525
@@ -289,5 +289,49 @@ yarn command:prod cron:workflow:automated-cron-trigger
- **Environment-only mode:** If you set `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false`, add these variables to your `.env` file instead.
+ **仅限环境模式:** 如果你设置 `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false`,请将这些变量添加到 `.env` 文件中。
+
+## 无服务器函数
+
+Twenty 支持用于工作流和自定义逻辑的无服务器函数。 执行环境通过 `SERVERLESS_TYPE` 环境变量进行配置。
+
+
+ \*\*安全提示:\*\*本地无服务器驱动(`SERVERLESS_TYPE=LOCAL`)在没有沙箱的情况下,在主机上的 Node.js 进程中直接运行代码。 它应仅在开发环境中用于可信代码。 对于在生产环境中处理不受信任代码的部署,我们强烈建议使用 `SERVERLESS_TYPE=LAMBDA` 或 `SERVERLESS_TYPE=DISABLED`。
+
+
+### 可用驱动
+
+| 驱动 | 环境变量 | 用例 | 安全级别 |
+| ------ | -------------------------- | -------------- | -------- |
+| 禁用 | `SERVERLESS_TYPE=DISABLED` | 完全禁用无服务器函数 | 不适用 |
+| 本地 | `SERVERLESS_TYPE=LOCAL` | 开发和可信环境 | 低(无沙箱) |
+| Lambda | `SERVERLESS_TYPE=LAMBDA` | 生产环境(处理不受信任代码) | 高(硬件级隔离) |
+
+### 推荐配置
+
+**用于开发:**
+
+```bash
+SERVERLESS_TYPE=LOCAL # default
+```
+
+**用于生产(AWS):**
+
+```bash
+SERVERLESS_TYPE=LAMBDA
+SERVERLESS_LAMBDA_REGION=us-east-1
+SERVERLESS_LAMBDA_ROLE=arn:aws:iam::123456789:role/your-lambda-role
+SERVERLESS_LAMBDA_ACCESS_KEY_ID=your-access-key
+SERVERLESS_LAMBDA_SECRET_ACCESS_KEY=your-secret-key
+```
+
+**要禁用无服务器函数:**
+
+```bash
+SERVERLESS_TYPE=DISABLED
+```
+
+
+ 使用 `SERVERLESS_TYPE=DISABLED` 时,任何尝试执行无服务器函数的操作都会返回错误。 如果你想在不启用无服务器函数能力的情况下运行 Twenty,这将很有用。
+
diff --git a/packages/twenty-docs/l/zh/developers/self-host/capabilities/troubleshooting.mdx b/packages/twenty-docs/l/zh/developers/self-host/capabilities/troubleshooting.mdx
index d2187aedac..cc1ec60a5f 100644
--- a/packages/twenty-docs/l/zh/developers/self-host/capabilities/troubleshooting.mdx
+++ b/packages/twenty-docs/l/zh/developers/self-host/capabilities/troubleshooting.mdx
@@ -1,60 +1,59 @@
---
-title: Troubleshooting
+title: 故障排除
---
-## Troubleshooting
+## 故障排除
-If you encounter any problem while setting up environment for development, upgrading your instance or self-hosting,
-here are some solutions for common problems.
+如果您在设置开发环境、升级实例或自托管时遇到任何问题,这里有一些常见问题的解决方案。
-### Self-hosting
+### 自托管
-#### First install results in `password authentication failed for user "postgres"`
+#### 首次安装时出现“密码认证失败,用户为"postgres"”
-🚨 **IMPORTANT: This solution is ONLY for fresh installations** 🚨
-If you have an existing Twenty instance with production data, **DO NOT** follow these steps as they will permanently delete your database!
+🚨 **重要:此解决方案仅适用于全新安装** 🚨
+如果您有一个现有的 Twenty 实例和生产数据,请**不要**按照这些步骤操作,因为这些步骤会永久删除您的数据库!
-While installing Twenty for the first time, you might want to change the default database password.
-The password you set during the first installation becomes permanently stored in the database volume. If you later try to change this password in your configuration without removing the old volume, you'll get authentication errors because the database is still using the original password.
+在首次安装 Twenty 时,您可能想更改默认的数据库密码。
+您在首次安装时设置的密码会永久存储在数据库卷中。 如果以后尝试在配置中更改此密码而不移除旧卷,则会出现身份验证错误,因为数据库仍在使用原密码。
-⚠️ WARNING: Following steps will PERMANENTLY DELETE all database data! ⚠️
-Only proceed if this is a fresh installation with no important data.
+⚠️ 警告:以下步骤将永久删除所有数据库数据! ⚠️
+仅在这是一项没有重要数据的新安装时继续。
-In order to update the `PG_DATABASE_PASSWORD` you need to:
+为了更新 `PG_DATABASE_PASSWORD`,您需要:
```sh
-# Update the PG_DATABASE_PASSWORD in .env
+# 在 .env 中更新 PG_DATABASE_PASSWORD
docker compose down --volumes
docker compose up -d
```
-#### CR line breaks found [Windows]
+#### 发现 CR 换行符 [Windows]
-This is due to the line break characters of Windows and the git configuration. Try running:
+这是由于 Windows 的换行符以及 git 配置。 尝试运行:
```
git config --global core.autocrlf false
```
-Then delete the repository and clone it again.
+然后删除存储库并再次克隆。
-#### Missing metadata schema
+#### 缺少元数据架构
-During Twenty installation, you need to provision your postgres database with the right schemas, extensions, and users.
-If you're successful in running this provisioning, you should have `default` and `metadata` schemas in your database.
-If you don't, make sure you don't have more than one postgres instance running on your computer.
+在安装 Twenty 时,您需要为您的 postgres 数据库提供正确的模式、扩展和用户。
+如果您成功进行了此配置,数据库中应有 `default` 和 `metadata` 模式。
+如果没有,请确保您的计算机上没有运行多个 postgres 实例。
-#### Cannot find module 'twenty-emails' or its corresponding type declarations.
+#### 找不到模块 'twenty-emails' 或其相应的类型声明。
-You have to build the package `twenty-emails` before running the initialization of the database with `npx nx run twenty-emails:build`
+在运行 `npx nx run twenty-emails:build`来初始化数据库之前,您必须构建 `twenty-emails` 包。
-#### Missing twenty-x package
+#### 缺少 twenty-x 包
-Make sure to run yarn in the root directory and then run `npx nx server:dev twenty-server`. If this still doesn't work try building the missing package manually.
+确保在根目录运行 yarn,然后运行 `npx nx server:dev twenty-server`。 如果这依然不工作,尝试手动构建缺失的包。
-#### Lint on Save not working
+#### 保存时 Lint 不起作用
-This should work out of the box with the eslint extension installed. If this doesn't work try adding this to your vscode setting (on the dev container scope):
+这应在安装了 eslint 扩展后即可正常工作。 如果这不起作用,请尝试将此添加到您的 vscode 设置(在开发容器范围内):
```
"editor.codeActionsOnSave": {
@@ -64,85 +63,85 @@ This should work out of the box with the eslint extension installed. If this doe
}
```
-#### While running `npx nx start` or `npx nx start twenty-front`, Out of memory error is thrown
+#### 运行 `npx nx start` 或 `npx nx start twenty-front` 时,出现内存不足错误
-In `packages/twenty-front/.env` uncomment `VITE_DISABLE_TYPESCRIPT_CHECKER=true` to disable background checks thus reducing amount of needed RAM.
+在 `packages/twenty-front/.env` 中取消注释 `VITE_DISABLE_TYPESCRIPT_CHECKER=true` 以禁用后台检查,从而减少所需的 RAM 量。
-**If it does not work:**
-Run only the services you need, instead of `npx nx start`. For instance, if you work on the server, run only `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:
+**如果不起作用:**
+如果您尝试在 WSL 上仅运行 `npx nx run twenty-server:start` 但因以下内存错误而失败:
-`FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory`
+`致命错误:无效标记-压缩接近堆限制 分配失败 - JavaScript 堆内存不足`
-Workaround is to execute below command in terminal or add it in .bashrc profile to get setup automatically:
+解决方法是在终端中执行以下命令或将其添加到 .bashrc 配置中以便自动设置:
`export NODE_OPTIONS="--max-old-space-size=8192"`
-The --max-old-space-size=8192 flag sets an upper limit of 8GB for the Node.js heap; usage scales with application demand.
-Reference: https://stackoverflow.com/questions/56982005/where-do-i-set-node-options-max-old-space-size-2048
+\--max-old-space-size=8192 标志为 Node.js 堆设置了 8GB 的上限;使用会根据应用程序需求进行扩展。
+参考: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. At Twenty, we noticed that some VScode extensions were taking a lot of RAM so we temporarily disable them.
+**如果不起作用:**
+调查哪些进程消耗了您机器的大部分内存。 在 Twenty,我们注意到一些 VScode 扩展占用了大量的内存,因此我们暂时禁用了它们。
-**If it does not work:**
-Restart your machine helps to clean up ghost processes.
+**如果不起作用:**
+重启机器有助于清除幽灵进程。
-#### While running `npx nx start` there are weird [0] and [1] in logs
+#### 运行 `npx nx start` 时日志中出现奇怪的 [0] 和 [1]
-That's expected as command `npx nx start` is running more commands under the hood
+预期的情况,由于 npx nx start 命令在后台运行更多命令
-#### No emails are sent
+#### 没有发送电子邮件
-Most of the time, it's because the `worker` is not running in the background. Try to run
+大多数情况下,是因为 `worker` 没有在后台运行。 尝试运行
```
npx nx worker twenty-server
```
-#### Cannot connect my Microsoft 365 account
+#### 无法连接我的 Microsoft 365 账户
-Most of the time, it's because your admin has not enabled the Microsoft 365 Licence for your account. Check [https://admin.microsoft.com/](https://admin.microsoft.com/Adminportal/Home).
+大多数情况下,这是因为管理员没有为您的账户启用 Microsoft 365 许可证。 访问 [https://admin.microsoft.com/](https://admin.microsoft.com/Adminportal/Home)。
-If you have an error code `AADSTS50020`, it probably means that you are using a personal Microsoft account. This is not supported yet. More info [here](https://learn.microsoft.com/fr-fr/troubleshoot/entra/entra-id/app-integration/error-code-aadsts50020-user-account-identity-provider-does-not-exist)
+如果您收到错误代码 `AADSTS50020`,这可能意味着您正在使用个人 Microsoft 账户。 这尚不支持。 更多信息 [请访问这里](https://learn.microsoft.com/fr-fr/troubleshoot/entra/entra-id/app-integration/error-code-aadsts50020-user-account-identity-provider-does-not-exist)
-#### While running `yarn` warnings appear in console
+#### 运行 `yarn` 时控制台出现警告
-Warnings are informing about pulling additional dependencies which aren't explicitly stated in `package.json`, so as long as no breaking error appears, everything should work as expected.
+警告信息是为了告知您正在拉取额外且未在 `package.json` 中明确声明的依赖,只要没有发生严重错误,一切应该会按预期工作。
-#### When user accesses login page, error about unauthorized user trying to access workspace appears in logs
+#### 用户访问登录页面时,日志中出现关于未授权用户尝试访问工作区的错误
-That's expected as user is unauthorized when logged out since its identity is not verified.
+这是预期的情况,因为用户未经授权注销时会显示身份验证错误。
-#### How to check if your worker is running?
+#### 如何检查您的 worker 是否在运行?
-* Go to [webhook-test.com](https://webhook-test.com/) and copy **Your Unique Webhook URL**.
+* 访问 [webhook-test.com](https://webhook-test.com/) 并复制 **您的唯一 Webhook URL**。
-
+
-* Open your Twenty app, navigate to `/settings`, and enable the **Advanced** toggle at the bottom left of the screen.
-* Create a new webhook.
-* Paste **Your Unique Webhook URL** in the **Endpoint Url** field in Twenty. Set the **Filters** to `Companies` and `Created`.
+* 打开您的 Twenty 应用,导航到 `/settings`,并在屏幕左下角启用 **高级** 切换。
+* 创建一个新的 webhook。
+* 把 **您的唯一 Webhook URL** 粘贴在 Twenty 的 **Endpoint Url** 字段中。 将 **筛选器** 设置为 `Companies` 和 `Created`。
-
+
-* Go to `/objects/companies` and create a new company record.
-* Return to [webhook-test.com](https://webhook-test.com/) and check if a new **POST request** has been received.
+* 转到 `/objects/companies` 并创建一个新的公司记录。
+* 返回 [webhook-test.com](https://webhook-test.com/) ,查看是否收到新的 **POST 请求**。
-
+
-* If a **POST request** is received, your worker is running successfully. Otherwise, you need to troubleshoot your worker.
+* 如果收到 **POST 请求**,则说明您的 worker 正在成功运行。 否则,您需要对 worker 进行故障排除。
-#### Front-end fails to start and returns error TS5042: Option 'project' cannot be mixed with source files on a command line
+#### 前端启动失败,并返回错误 TS5042:选项“项目”不能与命令行上的源文件混用
-Comment out checker plugin in `packages/twenty-ui/vite-config.ts` like in example below
+注释掉 `packages/twenty-ui/vite-config.ts` 中的 checker 插件,如下面示例所示
```
plugins: [
@@ -166,62 +165,62 @@ plugins: [
],
```
-#### Admin panel not accessible
+#### 无法访问管理面板
-Run `UPDATE core."user" SET "canAccessFullAdminPanel" = TRUE WHERE email = 'you@yourdomain.com';` in database container to get access to admin panel.
+在数据库容器中运行 `UPDATE core."user" SET "canAccessFullAdminPanel" = TRUE WHERE email = 'you@yourdomain.com';` 以访问管理面板。
-### 1-click Docker compose
+### 一键使用 Docker Compose
-#### Unable to Log In
+#### 无法登录
-If you can't log in after setup:
+如果您在设置后无法登录:
-1. Run the following commands:
+1. 运行以下命令:
```bash
docker exec -it twenty-server-1 yarn
docker exec -it twenty-server-1 npx nx database:reset --configuration=no-seed
```
-2. Restart the Docker containers:
+2. 重启 Docker 容器:
```bash
docker compose down
docker compose up -d
```
-Note the database:reset command will completely erase your database and recreate it from scratch.
+注意 database:reset 命令将完全擦除您的数据库并从头重建。
-#### Connection Issues Behind a Reverse Proxy
+#### 反向代理后面的连接问题
-If you're running Twenty behind a reverse proxy and experiencing connection issues:
+如果您在反向代理之后运行 Twenty 并遇到连接问题:
-1. **Verify SERVER_URL:**
+1. **验证 SERVER_URL:**
- Ensure `SERVER_URL` in your `.env` file matches your external access URL, including `https` if SSL is enabled.
+ 确保 `.env` 文件中的 `SERVER_URL` 与您的外部访问 URL 匹配,如果启用 SSL,请包含 `https`。
-2. **Check Reverse Proxy Settings:**
+2. **检查反向代理设置:**
- * Confirm that your reverse proxy is correctly forwarding requests to the Twenty server.
- * Ensure headers like `X-Forwarded-For` and `X-Forwarded-Proto` are properly set.
+ * 确认您的反向代理正确地将请求转发到 Twenty 服务器。
+ * 确保正确设置了像 `X-Forwarded-For` 和 `X-Forwarded-Proto` 这样的标头。
-3. **Restart Services:**
+3. **重启服务:**
- After making changes, restart both the reverse proxy and Twenty containers.
+ 在进行更改后,重启反向代理和 Twenty 容器。
-#### Error when uploading an image - permission denied
+#### 上传图像时出错 - 权限被拒绝
-Switching the data folder ownership on the host from root to another user and group resolves this problem.
+将主机上的数据文件夹所有权从 root 切换到其他用户和组可以解决此问题。
-## Getting Help
+## 获取帮助
-If you encounter issues not covered in this guide:
+如果您遇到本指南未涵盖的问题:
-* Check Logs:
+* 检查日志:
- View container logs for error messages:
+ 查看容器日志以获取错误消息:
```bash
docker compose logs
```
-* Community Support:
+* 社区支持:
- Reach out to the [Twenty community](https://github.com/twentyhq/twenty/issues) or [support channels](https://discord.gg/cx5n4Jzs57) for assistance.
+ 联系 [Twenty 社区](https://github.com/twentyhq/twenty/issues) 或 [支持渠道](https://discord.gg/cx5n4Jzs57) 以获得帮助。
diff --git a/packages/twenty-docs/l/zh/developers/self-host/capabilities/upgrade-guide.mdx b/packages/twenty-docs/l/zh/developers/self-host/capabilities/upgrade-guide.mdx
index 03a53f5685..0986de56af 100644
--- a/packages/twenty-docs/l/zh/developers/self-host/capabilities/upgrade-guide.mdx
+++ b/packages/twenty-docs/l/zh/developers/self-host/capabilities/upgrade-guide.mdx
@@ -1,26 +1,26 @@
---
-title: Upgrade guide
+title: 升级指南
---
-## General guidelines
+## 通用指南
-**Always make sure to back up your database before starting the upgrade process** by running `docker exec -it {db_container_name_or_id} pg_dumpall -U {postgres_user} > databases_backup.sql`.
+**在开始升级过程之前,请务必备份您的数据库**,通过运行 `docker exec -it {db_container_name_or_id} pg_dumpall -U {postgres_user} > databases_backup.sql`。
-To restore backup, run `cat databases_backup.sql | docker exec -i {db_container_name_or_id} psql -U {postgres_user}`.
+要恢复备份,运行 `cat databases_backup.sql | docker exec -i {db_container_name_or_id} psql -U {postgres_user}`。
-If you used Docker Compose, follow these steps:
+如果您使用了 Docker Compose,请按照以下步骤操作:
-1. In a terminal, on the host where Twenty is running, turn off Twenty: `docker compose down`
+1. 在 Twenty 运行的主机上打开终端,关闭 Twenty:`docker compose down`
-2. Upgrade the version by changing the `TAG` value in the .env file near your docker-compose. ( We recommend consuming `major.minor` version such as `v0.53` )
+2. 通过更改 docker-compose 附近 .env 文件中的 `TAG` 值来升级版本。 (我们建议使用 `major.minor` 版本,例如 `v0.53`)
-3. Bring Twenty back online with `docker compose up -d`
+3. 用 `docker compose up -d` 重新启动 Twenty
-If you want to upgrade your instance by few versions, e.g. from v0.33.0 to v0.35.0, you have to upgrade your instance sequentially, in this example from v0.33.0 to v0.34.0, then from v0.34.0 to v0.35.0.
+如果您想要升级实例多个版本,例如从 v0.33.0 升级到 v0.35.0,您需要按顺序升级您的实例,例如从 v0.33.0 升级到 v0.34.0,然后从 v0.34.0 到 v0.35.0。
-**Make sure that after each upgraded version you have non-corrupted backup.**
+**确保每个升级后的版本都具有未损坏的备份。**
-## Version-specific upgrade steps
+## 特定版本的升级步骤
## v1.0
@@ -28,13 +28,13 @@ Hello Twenty v1.0! 🎉
## v0.60
-### Performance Enhancements
+### 性能增强
-All interactions with the metadata API have been optimized for better performance, particularly for object metadata manipulation and workspace creation operations.
+与元数据 API 的所有交互已优化,以获得更好的性能,尤其是对象元数据操作和工作区创建操作。
-We've refactored our caching strategy to prioritize cache hits over database queries when possible, significantly improving the performance of metadata API operations.
+我们重构了缓存策略,以在可能的情况下优先于数据库查询显著提高元数据 API 操作的性能。
-If you encounter any runtime issues after upgrading, you may need to flush your cache to ensure it's synchronized with the latest changes. Run this command in your twenty-server container:
+如果在升级后遇到任何运行时问题,可能需要清空您的缓存以确保其与最新更改同步。 在 twenty-server 容器中运行此命令:
```bash
yarn command:prod cache:flush
@@ -42,64 +42,64 @@ yarn command:prod cache:flush
### v0.55
-Upgrade your Twenty instance to use v0.55 image
+升级您的 Twenty 实例以使用 v0.55 映像
-You don't need to run any command anymore, the new image will automatically care about running all required migrations.
+您不再需要运行任何命令,新映像将自动处理所需的所有迁移。
### `User does not have permission` error
-If you encounter authorization errors on most requests after upgrading, you may need to flush your cache to recompute the latest permissions.
+如果在大多数请求中出现授权错误,升级后可能需要清空您的缓存以重新计算最新的权限。
-In your `twenty-server` container, run:
+在你的 `twenty-server` 容器中,运行:
```bash
yarn command:prod cache:flush
```
-This issue is specific to this Twenty version and should not be required for future upgrades.
+此问题仅适用于此 Twenty 版本,未来的升级不应需要此操作。
### v0.54
-Since version `0.53`, no manual actions needed.
+自版本 `0.53` 开始,不需要手动操作。
-#### Metadata schema deprecation
+#### 元数据模式弃用
-We've merged the `metadata` schema into the `core` one to simplify data retrieval from `TypeORM`.
-We have merged the `migrate` command step within the `upgrade` command. We do not recommend running `migrate` manually within any of your server/worker containers.
+我们已将 `metadata` 模式合并到 `core` 模式以简化从 `TypeORM` 数据的检索。
+我们在 `upgrade` 命令中合并了 `migrate` 命令步骤。 我们不建议在任何 server/worker 容器内手动运行 `migrate`。
-### Since v0.53
+### 自 v0.53
-Starting from `0.53`, upgrade is programmatically done within the `DockerFile`, this means from now on, you shouldn't have to run any command manually anymore.
+从 `0.53` 起,升级在 `DockerFile` 内以编程方式完成,这意味着从现在起,您不必再手动运行任何命令。
-Make sure to keep upgrading your instance sequentially, without skipping any major version (e.g. `0.43.3` to `0.44.0` is allowed, but `0.43.1` to `0.45.0` isn't), else could lead to workspace version desynchronization that could result in runtime error and missing functionality.
+确保保持顺序升级您的实例,不要跳过任何大版本(例如,允许从 `0.43.3` 升级到 `0.44.0`,但不能从 `0.43.1` 升级到 `0.45.0`),否则可能导致工作区版本不同步,可能导致运行时错误和功能缺失。
-To check if a workspace has been correctly migrated you can review its version in database in `core.workspace` table.
+要检查是否正确迁移了工作区,您可以在数据库中查看其版本在 `core.workspace` 表中。
-It should always be in the range of your current Twenty's instance `major.minor` version, you can view your instance version in the admin panel (at `/settings/admin-panel`, accessible if your user has `canAccessFullAdminPanel` property set to true in the database) or by running `echo $APP_VERSION` in your `twenty-server` container.
+它应始终在您当前 Twenty 实例 `major.minor` 版本的范围内,您可以在管理面板中查看您的实例版本(在 `/settings/admin-panel`,如果您的用户在数据库中设置了 `canAccessFullAdminPanel` 属性为真则可访问)或通过在 `twenty-server` 容器中运行 `echo $APP_VERSION`。
-To fix a desynchronized workspace version, you will have to upgrade from the corresponding twenty's version following related upgrade guide sequentially and so on until it reaches desired version.
+要修复不同步的工作区版本,你将需要从相应的 Twenty 版本按照相关的升级指南顺序升级,等等,直到到达所需的版本。
-#### `auditLog` removal
+#### `auditLog` 移除
-We've removed the auditLog standard object, which means your backup size might be significantly reduced after this migration.
+我们已移除了 auditLog 标准对象,这意味着在此迁移后,备份的大小可能显著减少。
### v0.51 to v0.52
-Upgrade your Twenty instance to use v0.52 image
+升级您的 Twenty 实例以使用 v0.52 映像
```
yarn database:migrate:prod
yarn command:prod upgrade
```
-#### I have a workspace blocked in version between `0.52.0` and `0.52.6`
+#### 我的工作区被锁定在 `0.52.0` 和 `0.52.6` 之间的版本
-Unfortunately `0.52.0` and `0.52.6` have been completely removed from dockerHub.
-You will have to manually update your workspace version to `0.51.0` in database and upgrade using twenty version `0.52.11` following its just above upgrade guide.
+不幸的是,`0.52.0` 和 `0.52.6` 已从 dockerHub 完全移除。
+您将需要在数据库中手动更新工作区版本到 `0.51.0`,并使用 Twenty 版本 `0.52.11` 进行升级,按照其上方的升级指南。
### v0.50 to v0.51
-Upgrade your Twenty instance to use v0.51 image
+升级您的 Twenty 实例以使用 v0.51 映像
```
yarn database:migrate:prod
@@ -108,21 +108,21 @@ yarn command:prod upgrade
### v0.44.0 to v0.50.0
-Upgrade your Twenty instance to use v0.50.0 image
+升级您的 Twenty 实例以使用 v0.50.0 映像
```
yarn database:migrate:prod
yarn command:prod upgrade
```
-#### Docker-compose.yml mutation
+#### Docker-compose.yml 修改
-This version includes a `docker-compose.yml` mutation to give `worker` service access to the `server-local-data` volume.
-Please update your local `docker-compose.yml` with [v0.50.0 docker-compose.yml](https://github.com/twentyhq/twenty/blob/v0.50.0/packages/twenty-docker/docker-compose.yml)
+此版本包括对 `docker-compose.yml` 的修改,以赋予 `worker` 服务对 `server-local-data` 卷的访问权限。
+请使用 [v0.50.0 docker-compose.yml](https://github.com/twentyhq/twenty/blob/v0.50.0/packages/twenty-docker/docker-compose.yml) 更新本地主机上的 `docker-compose.yml`
### v0.43.0 to v0.44.0
-Upgrade your Twenty instance to use v0.44.0 image
+升级您的 Twenty 实例以使用 v0.44.0 映像
```
yarn database:migrate:prod
@@ -131,24 +131,24 @@ yarn command:prod upgrade
### v0.42.0 to v0.43.0
-Upgrade your Twenty instance to use v0.43.0 image
+升级您的 Twenty 实例以使用 v0.43.0 映像
```
yarn database:migrate:prod
yarn command:prod upgrade
```
-In this version, we have also switched to postgres:16 image in docker-compose.yml.
+在此版本中,我们还在 docker-compose.yml 中切换到了 postgres:16 映像。
-#### (Option 1) Database migration
+#### (选项 1)数据库迁移
-Keeping the existing postgres-spilo image is fine, but you will have to freeze the version in your docker-compose.yml to be 0.43.0.
+保留现有的 postgres-spilo 图像是可以的,但您需要在 docker-compose.yml 中将版本冻结为 0.43.0。
-#### (Option 2) Database migration
+#### (选项 2)数据库迁移
-If you want to migrate your database to the new postgres:16 image, please follow these steps:
+如果您想将数据库迁移到新的 postgres:16 图像,请按照以下步骤操作:
-1. Dump your database from the old postgres-spilo container
+1. 从旧的 postgres-spilo 容器中导出数据库
```
docker exec -it twenty-db-1 sh
@@ -157,11 +157,11 @@ exit
docker cp twenty-db-1:/home/postgres/databases_backup.sql .
```
-Make sure your dump file is not empty.
+确保您的转储文件不为空。
-2. Upgrade your docker-compose.yml to use postgres:16 image as in the [docker-compose.yml](https://raw.githubusercontent.com/twentyhq/twenty/main/packages/twenty-docker/docker-compose.yml) file.
+2. 将您的 docker-compose.yml 升级为与 [docker-compose.yml](https://raw.githubusercontent.com/twentyhq/twenty/main/packages/twenty-docker/docker-compose.yml) 文件中的 postgres:16 映像相同。
-3. Restore the database to the new postgres:16 container
+3. 将新 postgres:16 容器中的数据库恢复
```
docker cp databases_backup.sql twenty-db-1:/databases_backup.sql
@@ -172,84 +172,84 @@ exit
### v0.41.0 to v0.42.0
-Upgrade your Twenty instance to use v0.42.0 image
+升级您的 Twenty 实例以使用 v0.42.0 映像
```
yarn database:migrate:prod
yarn command:prod upgrade-0.42
```
-**Environment Variables**
+**环境变量**
-* Removed: `FRONT_PORT`, `FRONT_PROTOCOL`, `FRONT_DOMAIN`, `PORT`
-* Added: `FRONTEND_URL`, `NODE_PORT`, `MAX_NUMBER_OF_WORKSPACES_DELETED_PER_EXECUTION`, `MESSAGING_PROVIDER_MICROSOFT_ENABLED`, `CALENDAR_PROVIDER_MICROSOFT_ENABLED`, `IS_MICROSOFT_SYNC_ENABLED`
+* 移除:`FRONT_PORT`,`FRONT_PROTOCOL`,`FRONT_DOMAIN`,`PORT`
+* 新增:`FRONTEND_URL`,`NODE_PORT`,`MAX_NUMBER_OF_WORKSPACES_DELETED_PER_EXECUTION`,`MESSAGING_PROVIDER_MICROSOFT_ENABLED`,`CALENDAR_PROVIDER_MICROSOFT_ENABLED`,`IS_MICROSOFT_SYNC_ENABLED`
### v0.40.0 to v0.41.0
-Upgrade your Twenty instance to use v0.41.0 image
+升级您的 Twenty 实例以使用 v0.41.0 映像
```
yarn database:migrate:prod
yarn command:prod upgrade-0.41
```
-**Environment Variables**
+**环境变量**
-* Removed: `AUTH_MICROSOFT_TENANT_ID`
+* 移除:`AUTH_MICROSOFT_TENANT_ID`
### v0.35.0 to v0.40.0
-Upgrade your Twenty instance to use v0.40.0 image
+升级您的 Twenty 实例以使用 v0.40.0 映像
```
yarn database:migrate:prod
yarn command:prod upgrade-0.40
```
-**Environment Variables**
+**环境变量**
-* Added: `IS_EMAIL_VERIFICATION_REQUIRED`, `EMAIL_VERIFICATION_TOKEN_EXPIRES_IN`, `WORKFLOW_EXEC_THROTTLE_LIMIT`, `WORKFLOW_EXEC_THROTTLE_TTL`
+* 新增:`IS_EMAIL_VERIFICATION_REQUIRED`,`EMAIL_VERIFICATION_TOKEN_EXPIRES_IN`,`WORKFLOW_EXEC_THROTTLE_LIMIT`,`WORKFLOW_EXEC_THROTTLE_TTL`
### v0.34.0 to v0.35.0
-Upgrade your Twenty instance to use v0.35.0 image
+升级您的 Twenty 实例以使用 v0.35.0 映像
```
yarn database:migrate:prod
yarn command:prod upgrade-0.35
```
-The `yarn database:migrate:prod` command will apply the migrations to the database structure (core and metadata schemas)
-The `yarn command:prod upgrade-0.35` takes care of the data migration of all workspaces.
+`yarn database:migrate:prod` 命令将迁移应用于数据库结构(核心和元数据模式)
+`yarn command:prod upgrade-0.35` 负责所有工作区的数据迁移。
-**Environment Variables**
+**环境变量**
-* We replaced `ENABLE_DB_MIGRATIONS` with `DISABLE_DB_MIGRATIONS` (default value is now `false`, you probably don't have to set anything)
+* 我们将 `ENABLE_DB_MIGRATIONS` 替换为 `DISABLE_DB_MIGRATIONS`(默认值现在为 `false`,您可能不必设置任何东西)
### v0.33.0 to v0.34.0
-Upgrade your Twenty instance to use v0.34.0 image
+升级您的 Twenty 实例以使用 v0.34.0 映像
```
yarn database:migrate:prod
yarn command:prod upgrade-0.34
```
-The `yarn database:migrate:prod` command will apply the migrations to the database structure (core and metadata schemas)
-The `yarn command:prod upgrade-0.34` takes care of the data migration of all workspaces.
+`yarn database:migrate:prod` 命令将迁移应用于数据库结构(核心和元数据模式)
+`yarn command:prod upgrade-0.34` 负责所有工作区的数据迁移。
-**Environment Variables**
+**环境变量**
-* Removed: `FRONT_BASE_URL`
-* Added: `FRONT_DOMAIN`, `FRONT_PROTOCOL`, `FRONT_PORT`
+* 移除:`FRONT_BASE_URL`
+* 新增:`FRONT_DOMAIN`,`FRONT_PROTOCOL`,`FRONT_PORT`
-We have updated the way we handle the frontend URL.
-You can now set the frontend URL using the `FRONT_DOMAIN`, `FRONT_PROTOCOL` and `FRONT_PORT` variables.
-If FRONT_DOMAIN is not set, the frontend URL will fall back to `SERVER_URL`.
+我们更新了前端 URL 的处理方式。
+您现在可以使用 `FRONT_DOMAIN`,`FRONT_PROTOCOL` 和 `FRONT_PORT` 变量设置前端 URL。
+如果未设置 FRONT_DOMAIN,前端 URL 将回退到 `SERVER_URL`。
### v0.32.0 to v0.33.0
-Upgrade your Twenty instance to use v0.33.0 image
+升级您的 Twenty 实例以使用 v0.33.0 映像
```
yarn command:prod cache:flush
@@ -257,68 +257,68 @@ yarn database:migrate:prod
yarn command:prod upgrade-0.33
```
-The `yarn command:prod cache:flush` command will flush the Redis cache.
-The `yarn database:migrate:prod` command will apply the migrations to the database structure (core and metadata schemas)
-The `yarn command:prod upgrade-0.33` takes care of the data migration of all workspaces.
+`yarn command:prod cache:flush` 命令将清空 Redis 缓存。
+`yarn database:migrate:prod` 命令将迁移应用于数据库结构(核心和元数据模式)
+`yarn command:prod upgrade-0.33` 负责所有工作区的数据迁移。
-Starting from this version, twenty-postgres image for DB became deprecated and twenty-postgres-spilo is used instead.
-If you want to keep using twenty-postgres image, simply replace `twentycrm/twenty-postgres:${TAG}` with `twentycrm/twenty-postgres` in docker-compose.yml.
+从该版本开始,用于 DB 的 twenty-postgres 图像已经弃用,并改用 twenty-postgres-spilo。
+如果要继续使用 twenty-postgres 映像,只需在 docker-compose.yml 中将 `twentycrm/twenty-postgres:${TAG}` 替换为 `twentycrm/twenty-postgres` 即可。
### v0.31.0 to v0.32.0
-Upgrade your Twenty instance to use v0.32.0 image
+升级您的 Twenty 实例以使用 v0.32.0 映像
-**Schema and data migration**
+**模式和数据迁移**
```
yarn database:migrate:prod
yarn command:prod upgrade-0.32
```
-The `yarn database:migrate:prod` command will apply the migrations to the database structure (core and metadata schemas)
-The `yarn command:prod upgrade-0.32` takes care of the data migration of all workspaces.
+`yarn database:migrate:prod` 命令将迁移应用于数据库结构(核心和元数据模式)
+`yarn command:prod upgrade-0.32` 负责所有工作区的数据迁移。
-**Environment Variables**
+**环境变量**
-We have updated the way we handle the Redis connection.
+我们更新了 Redis 连接的处理方式。
-* Removed: `REDIS_HOST`, `REDIS_PORT`, `REDIS_USERNAME`, `REDIS_PASSWORD`
-* Added: `REDIS_URL`
+* 移除:`REDIS_HOST`,`REDIS_PORT`,`REDIS_USERNAME`,`REDIS_PASSWORD`
+* 新增:`REDIS_URL`
-Update your `.env` file to use the new `REDIS_URL` variable instead of the individual Redis connection parameters.
+更新您的 `.env` 文件以使用新 `REDIS_URL` 变量,而不是各个 Redis 连接参数。
-We have also simplified the way we handle the JWT tokens.
+我们也简化了我们处理 JWT 令牌的方式。
-* Removed: `ACCESS_TOKEN_SECRET`, `LOGIN_TOKEN_SECRET`, `REFRESH_TOKEN_SECRET`, `FILE_TOKEN_SECRET`
-* Added: `APP_SECRET`
+* 移除:`ACCESS_TOKEN_SECRET`,`LOGIN_TOKEN_SECRET`,`REFRESH_TOKEN_SECRET`,`FILE_TOKEN_SECRET`
+* 新增:`APP_SECRET`
-Update your `.env` file to use the new `APP_SECRET` variable instead of the individual tokens secrets (you can use the same secret as before or generate a new random string)
+更新您的 `.env` 文件以使用新 `APP_SECRET` 变量,而不是各个令牌密钥(您可以使用以前的相同密钥或生成一个新的随机字符串)
-**Connected Account**
+**连接账户**
-If you are using connected account to synchronize your Google emails and calendars, you will need to activate the [People API](https://developers.google.com/people) on your Google Admin console.
+如果您使用已连接的帐户来同步您的谷歌电子邮件和日历,您需要在谷歌管理员控制台中激活 [People API](https://developers.google.com/people)。
### v0.30.0 to v0.31.0
-Upgrade your Twenty instance to use v0.31.0 image
+升级您的 Twenty 实例以使用 v0.31.0 映像
-**Schema and data migration**:
+**模式和数据迁移**:
```
yarn database:migrate:prod
yarn command:prod upgrade-0.31
```
-The `yarn database:migrate:prod` command will apply the migrations to the database structure (core and metadata schemas)
-The `yarn command:prod upgrade-0.31` takes care of the data migration of all workspaces.
+`yarn database:migrate:prod` 命令将迁移应用于数据库结构(核心和元数据模式)
+`yarn command:prod upgrade-0.31` 负责所有工作区的数据迁移。
### v0.24.0 to v0.30.0
-Upgrade your Twenty instance to use v0.30.0 image
+升级您的 Twenty 实例以使用 v0.30.0 映像
-**Breaking change**:
-To enhance performances, Twenty now requires redis cache to be configured. We have updated our [docker-compose.yml](https://raw.githubusercontent.com/twentyhq/twenty/main/packages/twenty-docker/docker-compose.yml) to reflect this.
-Make sure to update your configuration and to update your environment variables accordingly:
+**重大更改**:
+为了提高性能,Twenty 现在要求配置 Redis 缓存。 我们更新了我们的 [docker-compose.yml](https://raw.githubusercontent.com/twentyhq/twenty/main/packages/twenty-docker/docker-compose.yml) 来反映这一点。
+确保更新您的配置并相应地更新您的环境变量:
```
REDIS_HOST={your-redis-host}
@@ -326,49 +326,49 @@ REDIS_PORT={your-redis-port}
CACHE_STORAGE_TYPE=redis
```
-**Schema and data migration**:
+**模式和数据迁移**:
```
yarn database:migrate:prod
yarn command:prod upgrade-0.30
```
-The `yarn database:migrate:prod` command will apply the migrations to the database structure (core and metadata schemas)
-The `yarn command:prod upgrade-0.30` takes care of the data migration of all workspaces.
+`yarn database:migrate:prod` 命令将迁移应用于数据库结构(核心和元数据模式)
+`yarn command:prod upgrade-0.30` 负责所有工作区的数据迁移。
### v0.23.0 to v0.24.0
-Upgrade your Twenty instance to use v0.24.0 image
+升级您的 Twenty 实例以使用 v0.24.0 映像
-Run the following commands:
+运行以下命令:
```
yarn database:migrate:prod
yarn command:prod upgrade-0.24
```
-The `yarn database:migrate:prod` command will apply the migrations to the database structure (core and metadata schemas)
-The `yarn command:prod upgrade-0.24` takes care of the data migration of all workspaces.
+`yarn database:migrate:prod` 命令将迁移应用于数据库结构(核心和元数据模式)
+`yarn command:prod upgrade-0.24` 负责所有工作区的数据迁移。
### v0.22.0 to v0.23.0
-Upgrade your Twenty instance to use v0.23.0 image
+升级您的 Twenty 实例以使用 v0.23.0 映像
-Run the following commands:
+运行以下命令:
```
yarn database:migrate:prod
yarn command:prod upgrade-0.23
```
-The `yarn database:migrate:prod` command will apply the migrations to the Database.
-The `yarn command:prod upgrade-0.23` takes care of the data migration, including transferring activities to tasks/notes.
+`yarn database:migrate:prod` 命令将迁移应用于数据库。
+`yarn command:prod upgrade-0.23` 负责数据迁移,包括将活动转移到任务/笔记。
### v0.21.0 to v0.22.0
-Upgrade your Twenty instance to use v0.22.0 image
+升级您的 Twenty 实例以使用 v0.22.0 映像
-Run the following commands:
+运行以下命令:
```
yarn database:migrate:prod
@@ -376,6 +376,6 @@ yarn command:prod workspace:sync-metadata -f
yarn command:prod upgrade-0.22
```
-The `yarn database:migrate:prod` command will apply the migrations to the Database.
-The `yarn command:prod workspace:sync-metadata -f` command will sync the definition of standard objects to the metadata tables and apply to required migrations to existing workspaces.
-The `yarn command:prod upgrade-0.22` command will apply specific data transformations to adapt to the new object defaultRequestInstrumentationOptions.
+`yarn database:migrate:prod` 命令将迁移应用于数据库。
+该 `yarn command:prod workspace:sync-metadata -f` 命令将把标准对象的定义同步到元数据表,并将所需的迁移应用到现有工作区。
+该 `yarn command:prod upgrade-0.22` 命令将应用特定的数据转换,以适配新的对象 defaultRequestInstrumentationOptions。
diff --git a/packages/twenty-docs/l/zh/developers/self-host/self-host.mdx b/packages/twenty-docs/l/zh/developers/self-host/self-host.mdx
index 497e82236a..b065ba22ec 100644
--- a/packages/twenty-docs/l/zh/developers/self-host/self-host.mdx
+++ b/packages/twenty-docs/l/zh/developers/self-host/self-host.mdx
@@ -1,30 +1,30 @@
---
-title: Self-Host
-description: Deploy and manage Twenty on your own infrastructure.
+title: 自托管
+description: 在您自己的基础设施上部署并管理 Twenty。
---
-## Overview
+## 概览
-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/zh/navigation.json b/packages/twenty-docs/l/zh/navigation.json
index 8096fbf4ac..00bb8bafe3 100644
--- a/packages/twenty-docs/l/zh/navigation.json
+++ b/packages/twenty-docs/l/zh/navigation.json
@@ -1,72 +1,72 @@
{
"tabs": {
"userGuide": {
- "label": "User Guide",
+ "label": "用户指南",
"groups": {
"discoverTwenty": {
- "label": "Discover Twenty",
+ "label": "发现 Twenty",
"groups": {
"gettingStartedCapabilities": {
- "label": "Capabilities"
+ "label": "功能"
},
"gettingStartedHowTos": {
- "label": "How-Tos"
+ "label": "操作指南"
}
}
},
"dataModel": {
- "label": "Data Model",
+ "label": "数据模型",
"groups": {
"dataModelCapabilities": {
- "label": "Capabilities"
+ "label": "功能"
},
"dataModelHowTos": {
- "label": "How-Tos"
+ "label": "操作指南"
}
}
},
"dataMigration": {
- "label": "Data Migration",
+ "label": "数据迁移",
"groups": {
"dataMigrationCapabilities": {
- "label": "Capabilities"
+ "label": "功能"
},
"dataMigrationHowTos": {
- "label": "How-Tos"
+ "label": "操作指南"
}
}
},
"calendarEmails": {
- "label": "Calendar & Emails",
+ "label": "日历与电子邮件",
"groups": {
"calendarEmailsCapabilities": {
- "label": "Capabilities"
+ "label": "功能"
},
"calendarEmailsHowTos": {
- "label": "How-Tos"
+ "label": "操作指南"
}
}
},
"workflows": {
- "label": "Workflows",
+ "label": "工作流",
"groups": {
"workflowsCapabilities": {
- "label": "Capabilities"
+ "label": "功能"
},
"workflowsHowTos": {
- "label": "How-Tos",
+ "label": "操作指南",
"groups": {
"crmAutomations": {
- "label": "CRM Automations"
+ "label": "CRM 自动化"
},
"connectToOtherTools": {
- "label": "Connect to Other Tools"
+ "label": "连接到其他工具"
},
"advancedConfigurations": {
- "label": "Advanced Configurations"
+ "label": "高级配置"
},
"needMoreHelp": {
- "label": "Need More Help"
+ "label": "需要更多帮助"
}
}
}
@@ -76,122 +76,122 @@
"label": "AI",
"groups": {
"aiCapabilities": {
- "label": "Capabilities"
+ "label": "功能"
},
"aiHowTos": {
- "label": "How-Tos"
+ "label": "操作指南"
}
}
},
"viewsPipelines": {
- "label": "Views & Pipelines",
+ "label": "视图与管道",
"groups": {
"viewsPipelinesCapabilities": {
- "label": "Capabilities"
+ "label": "功能"
},
"viewsPipelinesHowTos": {
- "label": "How-Tos"
+ "label": "操作指南"
}
}
},
"dashboards": {
- "label": "Dashboards",
+ "label": "仪表板",
"groups": {
"dashboardsCapabilities": {
- "label": "Capabilities"
+ "label": "功能"
},
"dashboardsHowTos": {
- "label": "How-Tos"
+ "label": "操作指南"
}
}
},
"permissionsAccess": {
- "label": "Permissions & Access",
+ "label": "权限与访问",
"groups": {
"permissionsAccessCapabilities": {
- "label": "Capabilities"
+ "label": "功能"
},
"permissionsAccessHowTos": {
- "label": "How-Tos"
+ "label": "操作指南"
}
}
},
"billing": {
- "label": "Billing",
+ "label": "账单",
"groups": {
"billingCapabilities": {
- "label": "Capabilities"
+ "label": "功能"
},
"billingHowTos": {
- "label": "How-Tos"
+ "label": "操作指南"
}
}
},
"settings": {
- "label": "Settings",
+ "label": "设置",
"groups": {
"settingsCapabilities": {
- "label": "Capabilities"
+ "label": "功能"
},
"settingsHowTos": {
- "label": "How-Tos"
+ "label": "操作指南"
}
}
}
}
},
"developers": {
- "label": "Developers",
+ "label": "开发者",
"groups": {
"developersGroup": {
- "label": "Developers"
+ "label": "开发者"
},
"extend": {
- "label": "Extend",
+ "label": "扩展",
"groups": {
"extendCapabilities": {
- "label": "Capabilities"
+ "label": "功能"
}
}
},
"selfHost": {
- "label": "Self-Host",
+ "label": "自托管",
"groups": {
"selfHostCapabilities": {
- "label": "Capabilities"
+ "label": "功能"
}
}
},
"contribute": {
- "label": "Contribute",
+ "label": "贡献",
"groups": {
"contributeCapabilities": {
- "label": "Capabilities",
+ "label": "功能",
"groups": {
"frontendDevelopment": {
- "label": "Frontend Development",
+ "label": "前端开发",
"groups": {
"twentyUi": {
"label": "Twenty UI",
"groups": {
"display": {
- "label": "Display"
+ "label": "展示"
},
"feedback": {
- "label": "Feedback"
+ "label": "反馈"
},
"input": {
- "label": "Input"
+ "label": "输入"
},
"navigation": {
- "label": "Navigation"
+ "label": "导航"
}
}
}
}
},
"backendDevelopment": {
- "label": "Backend Development"
+ "label": "后端开发"
}
}
}
diff --git a/packages/twenty-docs/l/zh/twenty-ui/display/app-tooltip.mdx b/packages/twenty-docs/l/zh/twenty-ui/display/app-tooltip.mdx
index 4e620eedc7..1add514d5f 100644
--- a/packages/twenty-docs/l/zh/twenty-ui/display/app-tooltip.mdx
+++ b/packages/twenty-docs/l/zh/twenty-ui/display/app-tooltip.mdx
@@ -1,16 +1,16 @@
---
-title: App Tooltip
+title: 应用程序提示
image: /images/user-guide/tips/light-bulb.png
---
-
+
-A brief message that displays additional information when a user interacts with an element.
+当用户与一个元素互动时显示额外信息的简要信息。
-
+
```jsx
import { AppTooltip } from "@/ui/display/tooltip/AppTooltip";
@@ -18,12 +18,12 @@ A brief message that displays additional information when a user interacts with
return (
<>
- Customer Insights
+ 客户洞察
-
- | Props | Type | Description |
- | ---------------- | ---------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
- | className | string | Optional CSS class for additional styling |
- | anchorSelect | CSS selector | Selector for the tooltip anchor (the element that triggers the tooltip) |
- | content | string | The content you want to display within the tooltip |
- | delayHide | number | The delay in seconds before hiding the tooltip after the cursor leaves the anchor |
- | offset | number | The offset in pixels for positioning the tooltip |
- | noArrow | boolean | If `true`, hides the arrow on the tooltip |
- | isOpen | boolean | If `true`, the tooltip is open by default |
- | place | `PlacesType` string from `react-tooltip` | Specifies the placement of the tooltip. Values include `bottom`, `left`, `right`, `top`, `top-start`, `top-end`, `right-start`, `right-end`, `bottom-start`, `bottom-end`, `left-start`, and `left-end` |
- | positionStrategy | `PositionStrategy` string from `react-tooltip` | Position strategy for the tooltip. Has two values: `absolute` and `fixed` |
+
+ | 属性 | 类型 | 描述 |
+ | ---------------- | ---------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
+ | className | 字符串 | 用于额外样式的可选 CSS 类 |
+ | anchorSelect | CSS 选择器 | 工具提示的锚选择器(触发工具提示的元素) |
+ | 内容 | 字符串 | 您希望在工具提示中显示的内容 |
+ | delayHide | 数字 | 在光标离开锚后隐藏工具提示的延迟时间(秒) |
+ | offset | 数字 | 工具提示定位的像素偏移量 |
+ | noArrow | 布尔值 | 如果为 `true`,则隐藏工具提示上的箭头 |
+ | isOpen | 布尔值 | 如果为 `true`,工具提示默认打开 |
+ | place | `PlacesType` 字符串来自 `react-tooltip` | 指定工具提示的位置。 值包括 `bottom`、`left`、`right`、`top`、`top-start`、`top-end`、`right-start`、`right-end`、`bottom-start`、`bottom-end`、`left-start` 和 `left-end` |
+ | positionStrategy | `PositionStrategy` 字符串来自 `react-tooltip` | 工具提示的位置策略。 有两个值: `absolute` 和 `fixed` |
-## Overflowing Text with Tooltip
+## 文本溢出与工具提示
-Handles overflowing text and displays a tooltip when the text overflows.
+处理文本溢出,并在文本溢出时显示工具提示。
-
+
```jsx
import { OverflowingTextWithTooltip } from 'twenty-ui/display';
@@ -70,9 +70,9 @@ Handles overflowing text and displays a tooltip when the text overflows.
```
-
- | Props | Type | Description |
- | ----- | ------ | ------------------------------------------------------------ |
- | text | string | The content you want to display in the overflowing text area |
+
+ | 属性 | 类型 | 描述 |
+ | -- | --- | -------------- |
+ | 文本 | 字符串 | 想要在文本溢出区域显示的内容 |
diff --git a/packages/twenty-docs/l/zh/twenty-ui/display/checkmark.mdx b/packages/twenty-docs/l/zh/twenty-ui/display/checkmark.mdx
index ef84d5c2d5..891f768894 100644
--- a/packages/twenty-docs/l/zh/twenty-ui/display/checkmark.mdx
+++ b/packages/twenty-docs/l/zh/twenty-ui/display/checkmark.mdx
@@ -1,16 +1,16 @@
---
-title: Checkmark
+title: 对勾标记
image: /images/user-guide/tasks/tasks_header.png
---
-
+
-Represents a successful or completed action.
+表示一个成功或已完成的动作。
-
+
```jsx
import { Checkmark } from 'twenty-ui/display';
@@ -20,17 +20,17 @@ Represents a successful or completed action.
```
-
- Extends `React.ComponentPropsWithoutRef<'div'>` and accepts all the props of a regular `div` element.
+
+ 扩展了 `React.ComponentPropsWithoutRef<'div'>`,并接受常规 `div` 元素的所有属性。
-## Animated Checkmark
+## 动画对勾标记
-Represents a checkmark icon with the added feature of animation.
+表示一个带有动画特性的对勾图标。
-
+
```jsx
import { AnimatedCheckmark } from 'twenty-ui/display';
@@ -47,12 +47,12 @@ Represents a checkmark icon with the added feature of animation.
```
-
- | Props | Type | Description | Default |
- | ----------- | ------- | ------------------------------------------- | ----------- |
- | isAnimating | boolean | Controls whether the checkmark is animating | false |
- | color | string | Color of the checkmark | |
- | duration | number | The duration of the animation in seconds | 0.5 seconds |
- | size | number | The size of the checkmark | 28 pixels |
+
+ | 属性 | 类型 | 描述 | 默认 |
+ | ----------- | --- | -------------- | ----- |
+ | isAnimating | 布尔值 | 控制对勾标记是否在动画中 | 假 |
+ | 颜色 | 字符串 | 对勾标记的颜色 | |
+ | 持续时间 | 数字 | 动画的持续时间(以秒为单位) | 0.5 秒 |
+ | 大小 | 数字 | 对勾标记的大小 | 28 像素 |
diff --git a/packages/twenty-docs/l/zh/twenty-ui/display/chip.mdx b/packages/twenty-docs/l/zh/twenty-ui/display/chip.mdx
index ded2fd1c77..771eded660 100644
--- a/packages/twenty-docs/l/zh/twenty-ui/display/chip.mdx
+++ b/packages/twenty-docs/l/zh/twenty-ui/display/chip.mdx
@@ -1,16 +1,16 @@
---
-title: Chip
+title: 芯片
image: /images/user-guide/github/github-header.png
---
-
+
-A visual element that you can use as a clickable or non-clickable container with a label, optional left and right components, and various styling options to display labels and tags.
+一个视觉元素,可用作可点击或不可点击的容器,带有标签、可选的左右组件和多种样式选项,用于显示标签和标记。
-
+
```jsx
import { Chip } from 'twenty-ui/components';
@@ -18,7 +18,7 @@ A visual element that you can use as a clickable or non-clickable container with
return (
);
};
-
```
-
- | Props | Type | Description |
- | ------------ | ------------------------ | -------------------------------------------------------------------------------------------- |
- | linkToEntity | string | The link to the entity |
- | entityId | string | The unique identifier for the entity |
- | name | string | The name of the entity |
- | pictureUrl | string | s picture", |
- | avatarType | Avatar Type | The type of avatar you want to display. Has two options: `rounded` and `squared` |
- | variant | `EntityChipVariant` enum | Variant of the entity chip you want to display. Has two options: `regular` and `transparent` |
- | LeftIcon | IconComponent | A React component representing an icon. Displayed on the left side of the chip |
+
+ | 属性 | 类型 | 描述 |
+ | ------------ | --------------------- | ----------------------------- |
+ | linkToEntity | 字符串 | 指向实体的链接 |
+ | entityId | string | 实体的唯一标识符 |
+ | 名称 | 字符串 | 实体名称 |
+ | pictureUrl | string | 的图片", |
+ | avatarType | 头像类型 | 您要显示的头像类型。 有两个选项:`圆形`和`方形` |
+ | variant | `EntityChipVariant`枚举 | 您要显示的实体芯片的变体。 有两个选项:`普通`和`透明` |
+ | LeftIcon | IconComponent | 一个代表图标的React组件。 显示在芯片的左侧 |
-## Examples
+## 示例
-### Transparent Disabled Chip
+### 透明禁用芯片
```jsx
import { Chip } from 'twenty-ui/components';
@@ -57,7 +56,7 @@ export const MyComponent = () => {
return (
{
-### Disabled Chip with Tooltip
+### 带工具提示的禁用芯片
```jsx
import { Chip } from "twenty-ui/components";
@@ -82,7 +81,7 @@ export const MyComponent = () => {
return (
{
};
```
-## Entity Chip
+## 实体芯片
-A Chip-like element to display information about an entity.
+类似芯片的元素,用于显示有关实体的信息。
-
+
```jsx
import { BrowserRouter as Router } from 'react-router-dom';
import { IconTwentyStar } from 'twenty-ui/display';
@@ -112,7 +111,7 @@ A Chip-like element to display information about an entity.
-
- | Props | Type | Description |
- | ------------ | ------------------------ | -------------------------------------------------------------------------------------------- |
- | linkToEntity | string | The link to the entity |
- | entityId | string | The unique identifier for the entity |
- | name | string | The name of the entity |
- | pictureUrl | string | s picture", |
- | avatarType | Avatar Type | The type of avatar you want to display. Has two options: `rounded` and `squared` |
- | variant | `EntityChipVariant` enum | Variant of the entity chip you want to display. Has two options: `regular` and `transparent` |
- | LeftIcon | IconComponent | A React component representing an icon. Displayed on the left side of the chip |
+
+ | 属性 | 类型 | 描述 |
+ | ------------ | --------------------- | ----------------------------- |
+ | linkToEntity | string | 指向实体的链接 |
+ | entityId | string | 实体的唯一标识符 |
+ | 名称 | string | 实体名称 |
+ | pictureUrl | string | 的图片", |
+ | avatarType | 头像类型 | 您要显示的头像类型。 有两个选项:`圆形`和`方形` |
+ | variant | `EntityChipVariant`枚举 | 您要显示的实体芯片的变体。 有两个选项:`普通`和`透明` |
+ | LeftIcon | IconComponent | 一个代表图标的React组件。 显示在芯片的左侧 |
diff --git a/packages/twenty-docs/l/zh/twenty-ui/display/icons.mdx b/packages/twenty-docs/l/zh/twenty-ui/display/icons.mdx
index 2d73154c8d..1f20fe0f82 100644
--- a/packages/twenty-docs/l/zh/twenty-ui/display/icons.mdx
+++ b/packages/twenty-docs/l/zh/twenty-ui/display/icons.mdx
@@ -1,20 +1,20 @@
---
-title: Icons
+title: 图标
image: /images/user-guide/objects/objects.png
---
-
+
-A list of icons used throughout our app.
+我们应用程序中使用的图标列表。
-## Tabler Icons
+## Tabler图标
-We use Tabler icons for React throughout the app.
+我们在整个应用程序中使用了React的Tabler图标。
-
+
```
@@ -22,8 +22,8 @@ We use Tabler icons for React throughout the app.
```
-
- You can import each icon as a component. Here's an example:
+
+ 您可以将每个图标导入为组件。 以下是一个示例:
@@ -36,25 +36,25 @@ We use Tabler icons for React throughout the app.
```
-
- | Props | Type | Description | Default |
- | ------ | ------ | ------------------------------------------ | ------------ |
- | size | number | The height and width of the icon in pixels | 24 |
- | color | string | The color of the icons | currentColor |
- | stroke | number | The stroke width of the icon in pixels | 2 |
+
+ | 属性 | 类型 | 描述 | 默认 |
+ | -- | ------ | ---------------- | ------------ |
+ | 大小 | 数字 | 图标的高度和宽度(以像素为单位) | 24 |
+ | 颜色 | string | 图标的颜色 | currentColor |
+ | 描边 | 数字 | 图标的描边宽度(以像素为单位) | 2 |
-## Custom Icons
+## 自定义图标
-In addition to Tabler icons, the app also uses some custom icons.
+除了Tabler图标外,该应用程序还使用了一些自定义图标。
-### Icon Address Book
+### 图标通讯录
-Displays an address book icon.
+显示一个通讯录图标。
-
+
```jsx
import { IconAddressBook } from 'twenty-ui/display';
@@ -64,10 +64,10 @@ Displays an address book icon.
```
-
- | Props | Type | Description | Default |
- | ------ | ------ | ------------------------------------------ | ------- |
- | size | number | The height and width of the icon in pixels | 24 |
- | stroke | number | The stroke width of the icon in pixels | 2 |
+
+ | 属性 | 类型 | 描述 | 默认 |
+ | -- | -- | ---------------- | -- |
+ | 大小 | 数字 | 图标的高度和宽度(以像素为单位) | 24 |
+ | 描边 | 数字 | 图标的描边宽度(以像素为单位) | 2 |
diff --git a/packages/twenty-docs/l/zh/twenty-ui/display/soon-pill.mdx b/packages/twenty-docs/l/zh/twenty-ui/display/soon-pill.mdx
index 56ace0bae7..2b272e5be6 100644
--- a/packages/twenty-docs/l/zh/twenty-ui/display/soon-pill.mdx
+++ b/packages/twenty-docs/l/zh/twenty-ui/display/soon-pill.mdx
@@ -1,13 +1,13 @@
---
-title: Soon Pill
+title: 即将推出的小徽章或 "药丸"。
image: /images/user-guide/kanban-views/kanban.png
---
-
+
-A small badge or "pill" to indicate something is coming soon.
+指示某物即将出现的小徽章或 "药丸" 。
```jsx
import { SoonPill } from "@/ui/display/pill/components/SoonPill";
diff --git a/packages/twenty-docs/l/zh/twenty-ui/display/tag.mdx b/packages/twenty-docs/l/zh/twenty-ui/display/tag.mdx
index a2226c88d4..f5e7d452d8 100644
--- a/packages/twenty-docs/l/zh/twenty-ui/display/tag.mdx
+++ b/packages/twenty-docs/l/zh/twenty-ui/display/tag.mdx
@@ -1,16 +1,16 @@
---
-title: Tag
+title: 标签
image: /images/user-guide/table-views/table.png
---
-
+
-Component to visually categorize or label content.
+用于可视化分类或标记内容的组件。
-
+
```jsx
import { Tag } from "@/ui/display/tag/components/Tag";
@@ -19,7 +19,7 @@ Component to visually categorize or label content.
console.log("click")}
/>
);
@@ -27,12 +27,12 @@ Component to visually categorize or label content.
```
-
- | Props | Type | Description |
- | --------- | -------- | --------------------------------------------------------------------------------------------------------------------------- |
- | className | string | Optional name for additional styling |
- | color | string | Color of the tag. Options include: `green`, `turquoise`, `sky`, `blue`, `purple`, `pink`, `red`, `orange`, `yellow`, `gray` |
- | text | string | The content of the tag |
- | onClick | function | Optional function called when a user clicks on the tag |
+
+ | 属性 | 类型 | 描述 |
+ | --------- | ------ | --------------------------------------------------------------- |
+ | className | 字符串 | 用于附加样式的可选名称 |
+ | 颜色 | string | 标签的颜色。 选项包括:`绿色`,`绿松石`,`天蓝`,`蓝色`,`紫色`,`粉红色`,`红色`,`橙色`,`黄色`,`灰色` |
+ | 文本 | 字符串 | 标签的内容 |
+ | onClick | 函数 | 用户点击标签时的可选调用函数 |
diff --git a/packages/twenty-docs/l/zh/twenty-ui/input.mdx b/packages/twenty-docs/l/zh/twenty-ui/input.mdx
index 2da701caf5..da99958ad8 100644
--- a/packages/twenty-docs/l/zh/twenty-ui/input.mdx
+++ b/packages/twenty-docs/l/zh/twenty-ui/input.mdx
@@ -1,8 +1,8 @@
---
-title: Input
+title: 输入
image: /images/user-guide/tips/light-bulb.png
---
-
+
diff --git a/packages/twenty-docs/l/zh/twenty-ui/input/block-editor.mdx b/packages/twenty-docs/l/zh/twenty-ui/input/block-editor.mdx
index 9943fa5f5d..9749593387 100644
--- a/packages/twenty-docs/l/zh/twenty-ui/input/block-editor.mdx
+++ b/packages/twenty-docs/l/zh/twenty-ui/input/block-editor.mdx
@@ -1,16 +1,16 @@
---
-title: Block Editor
+title: 区块编辑器
image: /images/user-guide/api/api.png
---
-
+
-Uses a block-based rich text editor from [BlockNote](https://www.blocknotejs.org/) to allow users to edit and view blocks of content.
+使用来自 [BlockNote](https://www.blocknotejs.org/) 的基于区块的富文本编辑器,允许用户编辑和查看内容块。
-
+
```jsx
import { useBlockNote } from "@blocknote/react";
import { BlockEditor } from "@/ui/input/editor/components/BlockEditor";
@@ -23,9 +23,9 @@ Uses a block-based rich text editor from [BlockNote](https://www.blocknotejs.org
```
-
- | Props | Type | Description |
- | ------ | ----------------- | ------------------------------------------ |
- | editor | `BlockNoteEditor` | The block editor instance or configuration |
+
+ | 属性 | 类型 | 描述 |
+ | --- | ----------------- | ---------- |
+ | 编辑器 | `BlockNoteEditor` | 区块编辑器实例或配置 |
diff --git a/packages/twenty-docs/l/zh/twenty-ui/input/buttons.mdx b/packages/twenty-docs/l/zh/twenty-ui/input/buttons.mdx
index 1c53eb1816..9372f3a867 100644
--- a/packages/twenty-docs/l/zh/twenty-ui/input/buttons.mdx
+++ b/packages/twenty-docs/l/zh/twenty-ui/input/buttons.mdx
@@ -1,18 +1,18 @@
---
-title: Buttons
+title: 按钮
image: /images/user-guide/views/filter.png
---
-
+
-A list of buttons and button groups used throughout the app.
+在应用程序中使用的按钮和按钮组的列表。
## Button
-
+
```jsx
import { Button } from "@/ui/input/button/components/Button";
@@ -37,28 +37,28 @@ A list of buttons and button groups used throughout the app.
```
-
- | Props | Type | Description |
- | --------- | --------------------- | -------------------------------------------------------------------------------------------------------------------- |
- | className | string | Optional class name for additional styling |
- | Icon | `React.ComponentType` | An optional icon component that's displayed within the button |
- | title | string | The text content of the button |
- | fullWidth | boolean | Defines whether the button should span the whole width of its container |
- | variant | string | The visual style variant of the button. Options include `primary`, `secondary`, and `tertiary` |
- | size | string | The size of the button. Has two options: `small` and `medium` |
- | position | string | The position of the button in relation to its siblings. Options include: `standalone`, `left`, `right`, and `middle` |
- | accent | string | The accent color of the button. Options include: `default`, `blue`, and `danger` |
- | soon | boolean | Indicates if the button is marked as "soon" (such as for upcoming features) |
- | disabled | boolean | Specifies whether the button is disabled or not |
- | focus | boolean | Determines if the button has focus |
- | onClick | function | A callback function that triggers when the user clicks on the button |
+
+ | 属性 | 类型 | 描述 |
+ | --------- | --------------------- | ------------------------------------------------------- |
+ | className | 字符串 | 用于额外样式的可选类名 |
+ | 图标 | `React.ComponentType` | 按钮内显示的可选图标组件 |
+ | 标题 | string | 按钮的文本内容 |
+ | fullWidth | 布尔值 | 定义按钮是否应占据其容器的整个宽度 |
+ | 变体 | string | 按钮的视觉样式变体。 选项包括 `primary`,`secondary` 和 `tertiary` |
+ | 大小 | 字符串 | 按钮的大小。 有两个选项:`small` 和 `medium` |
+ | 职位 | string | 按钮与其同类的位置。 选项包括: `standalone`,`left`,`right` 和 `middle` |
+ | accent | string | 按钮的强调颜色。 选项包括: `default`,`blue` 和 `danger` |
+ | 即将推出 | 布尔值 | 指示按钮是否标记为"即将推出"(例如针对即将推出的功能) |
+ | disabled | 布尔值 | 指定按钮是否被禁用 |
+ | focus | 布尔值 | 确定按钮是否具有焦点 |
+ | onClick | 函数 | 用户点击按钮时触发的回调函数 |
-## Button Group
+## 按钮组
-
+
```jsx
import { Button } from "@/ui/input/button/components/Button";
import { ButtonGroup } from "@/ui/input/button/components/ButtonGroup";
@@ -115,21 +115,21 @@ A list of buttons and button groups used throughout the app.
```
-
- | Props | Type | Description |
- | --------- | --------- | ---------------------------------------------------------------------------------------------------------------- |
- | variant | string | The visual style variant of the buttons within the group. Options include `primary`, `secondary`, and `tertiary` |
- | size | string | The size of the buttons within the group. Has two options: `medium` and `small` |
- | accent | string | The accent color of the buttons within the group. Options include `default`, `blue` and `danger` |
- | className | string | Optional class name for additional styling |
- | children | ReactNode | An array of React elements representing the individual buttons within the group |
+
+ | 属性 | 类型 | 描述 |
+ | --------- | --------- | ---------------------------------------------------- |
+ | 变体 | 字符串 | 组内按钮的视觉样式变体。 选项包括 `primary`,`secondary` 和 `tertiary` |
+ | 大小 | 字符串 | 组内按钮的大小。 Has two options: `medium` and `small` |
+ | accent | 字符串 | 组内按钮的强调颜色。 选项包括 `default`,`blue` 和 `danger` |
+ | className | string | 用于额外样式的可选类名 |
+ | 子元素 | ReactNode | 一组代表组内各个按钮的 React 元素 |
-## Floating Button
+## 浮动按钮
-
+
```jsx
import { FloatingButton } from "@/ui/input/button/components/FloatingButton";
import { IconSearch } from "@tabler/icons-react";
@@ -152,25 +152,25 @@ A list of buttons and button groups used throughout the app.
```
-
- | Props | Type | Description |
- | ----------- | --------------------- | ---------------------------------------------------------------------------------------------------------------- |
- | className | string | Optional name for additional styling |
- | Icon | `React.ComponentType` | An optional icon component that's displayed within the button |
- | title | string | The text content of the button |
- | size | string | The size of the button. Has two options: `small` and `medium` |
- | position | string | The position of the button in relation to its siblings. Options include: `standalone`, `left`, `middle`, `right` |
- | applyShadow | boolean | Determines whether to apply shadow to a button |
- | applyBlur | boolean | Determines whether to apply a blur effect to the button |
- | disabled | boolean | Determines whether the button is disabled |
- | focus | boolean | Indicates if the button has focus |
+
+ | 属性 | 类型 | 描述 |
+ | ----------- | --------------------- | ----------------------------------------------------- |
+ | className | string | 用于附加样式的可选名称 |
+ | 图标 | `React.ComponentType` | 按钮内显示的可选图标组件 |
+ | 标题 | 字符串 | 按钮的文本内容 |
+ | 大小 | 字符串 | 按钮的大小。 有两个选项:`small` 和 `medium` |
+ | 职位 | string | 按钮与其同类的位置。 选项包括: `standalone`,`left`,`middle`,`right` |
+ | applyShadow | 布尔值 | 确定是否对按钮应用阴影 |
+ | applyBlur | 布尔值 | 确定是否对按钮应用模糊效果 |
+ | disabled | 布尔值 | 确定按钮是否被禁用 |
+ | focus | 布尔值 | 指示按钮是否具有焦点 |
-## Floating Button Group
+## 浮动按钮组
-
+
```jsx
import { FloatingButton } from "@/ui/input/button/components/FloatingButton";
import { FloatingButtonGroup } from "@/ui/input/button/components/FloatingButtonGroup";
@@ -206,18 +206,18 @@ A list of buttons and button groups used throughout the app.
```
-
- | Props | Type | Description | Default |
- | -------- | --------- | ------------------------------------------------------------------------------- | ------- |
- | size | string | The size of the button. Has two options: `small` and `medium` | small |
- | children | ReactNode | An array of React elements representing the individual buttons within the group | |
+
+ | 属性 | 类型 | 描述 | 默认 |
+ | --- | --------- | ------------------------------- | ----- |
+ | 大小 | 字符串 | 按钮的大小。 有两个选项:`small` 和 `medium` | small |
+ | 子元素 | ReactNode | 一组代表组内各个按钮的 React 元素 | |
-## Floating Icon Button
+## 浮动图标按钮
-
+
```jsx
import { FloatingIconButton } from "@/ui/input/button/components/FloatingIconButton";
import { IconSearch } from "@tabler/icons-react";
@@ -241,26 +241,26 @@ A list of buttons and button groups used throughout the app.
```
-
- | Props | Type | Description |
- | ----------- | --------------------- | -------------------------------------------------------------------------------------------------------------------- |
- | className | string | Optional name for additional styling |
- | Icon | `React.ComponentType` | An optional icon component that's displayed within the button |
- | size | string | The size of the button. Has two options: `small` and `medium` |
- | position | string | The position of the button in relation to its siblings. Options include: `standalone`, `left`, `right`, and `middle` |
- | applyShadow | boolean | Determines whether to apply shadow to a button |
- | applyBlur | boolean | Determines whether to apply a blur effect to the button |
- | disabled | boolean | Determines whether the button is disabled |
- | focus | boolean | Indicates if the button has focus |
- | onClick | function | A callback function that triggers when the user clicks on the button |
- | isActive | boolean | Determines if the button is in an active state |
+
+ | 属性 | 类型 | 描述 |
+ | ----------- | --------------------- | ------------------------------------------------------- |
+ | className | string | 用于附加样式的可选名称 |
+ | 图标 | `React.ComponentType` | 按钮内显示的可选图标组件 |
+ | 大小 | string | 按钮的大小。 有两个选项:`small` 和 `medium` |
+ | 职位 | string | 按钮与其同类的位置。 选项包括: `standalone`,`left`,`right`,和 `middle` |
+ | applyShadow | 布尔值 | 确定是否对按钮应用阴影 |
+ | applyBlur | 布尔值 | 确定是否对按钮应用模糊效果 |
+ | disabled | 布尔值 | 确定按钮是否被禁用 |
+ | focus | 布尔值 | 指示按钮是否具有焦点 |
+ | onClick | 函数 | 用户点击按钮时触发的回调函数 |
+ | isActive | 布尔值 | 确定按钮是否处于活动状态 |
-## Floating Icon Button Group
+## 浮动图标按钮组
-
+
```jsx
import { FloatingIconButtonGroup } from "@/ui/input/button/components/FloatingIconButtonGroup";
import { IconClipboardText, IconCheckbox } from "@tabler/icons-react";
@@ -290,19 +290,19 @@ A list of buttons and button groups used throughout the app.
```
-
- | Props | Type | Description |
- | ----------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
- | className | string | Optional name for additional styling |
- | size | string | The size of the button. Has two options: `small` and `medium` |
- | iconButtons | array | An array of objects, each representing an icon button in the group. Each object should include the icon component you want to display in the button, the function you want to call when a user clicks on the button, and whether the button should be active or not. |
+
+ | 属性 | 类型 | 描述 |
+ | ----------- | ------ | ---------------------------------------------------------------------- |
+ | className | string | 用于附加样式的可选名称 |
+ | 大小 | 字符串 | 按钮的大小。 有两个选项:`small` 和 `medium` |
+ | iconButtons | 数组 | 一组对象,每个对象代表组中的一个图标按钮。 每个对象应包含要在按钮中显示的图标组件,用户点击按钮时要调用的函数,以及按钮是否应处于活动状态。 |
-## Light Button
+## 亮色按钮
-
+
```jsx
import { LightButton } from "@/ui/input/button/components/LightButton";
@@ -321,24 +321,24 @@ A list of buttons and button groups used throughout the app.
```
-
- | Props | Type | Description |
- | --------- | ----------------- | --------------------------------------------------------------------------- |
- | className | string | Optional name for additional styling |
- | icon | `React.ReactNode` | The icon you want to display in the button |
- | title | string | The text content of the button |
- | accent | string | The accent color of the button. Options include: `secondary` and `tertiary` |
- | active | boolean | Determines if the button is in an active state |
- | disabled | boolean | Determines whether the button is disabled |
- | focus | boolean | Indicates if the button has focus |
- | onClick | function | A callback function that triggers when the user clicks on the button |
+
+ | 属性 | 类型 | 描述 |
+ | --------- | ----------------- | -------------------------------------- |
+ | className | string | 用于附加样式的可选名称 |
+ | 图标 | `React.ReactNode` | 您想在按钮中显示的图标 |
+ | 标题 | string | 按钮的文本内容 |
+ | accent | string | 按钮的强调颜色。 选项包括:`secondary` 和 `tertiary` |
+ | 活跃 | 布尔值 | 确定按钮是否处于活动状态 |
+ | disabled | 布尔值 | 确定按钮是否被禁用 |
+ | focus | 布尔值 | 指示按钮是否具有焦点 |
+ | onClick | function | 用户点击按钮时触发的回调函数 |
-## Light Icon Button
+## 亮色图标按钮
-
+
```jsx
import { LightIconButton } from "@/ui/input/button/components/LightIconButton";
import { IconSearch } from "@tabler/icons-react";
@@ -362,26 +362,26 @@ A list of buttons and button groups used throughout the app.
```
-
- | Props | Type | Description |
- | --------- | --------------------- | --------------------------------------------------------------------------- |
- | className | string | Optional name for additional styling |
- | testId | string | Test identifier for the button |
- | Icon | `React.ComponentType` | An optional icon component that's displayed within the button |
- | title | string | The text content of the button |
- | size | string | The size of the button. Has two options: `small` and `medium` |
- | accent | string | The accent color of the button. Options include: `secondary` and `tertiary` |
- | active | boolean | Determines if the button is in an active state |
- | disabled | boolean | Determines whether the button is disabled |
- | focus | boolean | Indicates if the button has focus |
- | onClick | function | A callback function that triggers when the user clicks on the button |
+
+ | 属性 | 类型 | 描述 |
+ | --------- | --------------------- | -------------------------------------- |
+ | className | string | 用于附加样式的可选名称 |
+ | 测试ID | string | 按钮的测试标识 |
+ | 图标 | `React.ComponentType` | 按钮内显示的可选图标组件 |
+ | 标题 | 字符串 | 按钮的文本内容 |
+ | 大小 | 字符串 | 按钮的大小。 有两个选项:`small` 和 `medium` |
+ | accent | 字符串 | 按钮的强调颜色。 选项包括:`secondary` 和 `tertiary` |
+ | 活跃 | 布尔值 | 确定按钮是否处于活动状态 |
+ | disabled | 布尔值 | 确定按钮是否被禁用 |
+ | focus | 布尔值 | 指示按钮是否具有焦点 |
+ | onClick | 函数 | 用户点击按钮时触发的回调函数 |
-## Main Button
+## 主要按钮
-
+
```jsx
import { MainButton } from "@/ui/input/button/components/MainButton";
import { IconCheckbox } from "@tabler/icons-react";
@@ -400,22 +400,22 @@ A list of buttons and button groups used throughout the app.
```
-
- | Props | Type | Description |
- | -------------------- | -------------------------------- | --------------------------------------------------------------------------------- |
- | title | string | The text content of the button |
- | fullWidth | boolean | Defines whether the button should span the whole width of its container |
- | variant | string | The visual style variant of the button. Options include `primary` and `secondary` |
- | soon | boolean | Indicates if the button is marked as "soon" (such as for upcoming features) |
- | Icon | `React.ComponentType` | An optional icon component that's displayed within the button |
- | React `button` props | `React.ComponentProps<'button'>` | All standard HTML button props are supported |
+
+ | 属性 | 类型 | 描述 |
+ | -------------------- | -------------------------------- | --------------------------------------- |
+ | 标题 | 字符串 | 按钮的文本内容 |
+ | fullWidth | 布尔值 | 定义按钮是否应占据其容器的整个宽度 |
+ | 变体 | 字符串 | 按钮的视觉样式变体。 选项包括 `primary` 和 `secondary` |
+ | 即将推出 | 布尔值 | 指示按钮是否标记为"即将推出"(例如针对即将推出的功能) |
+ | 图标 | `React.ComponentType` | 按钮内显示的可选图标组件 |
+ | React `button` props | `React.ComponentProps<'button'>` | 支持所有标准 HTML 按钮属性 |
-## Rounded Icon Button
+## 圆形图标按钮
-
+
```jsx
import { RoundedIconButton } from "@/ui/input/button/components/RoundedIconButton";
import { IconSearch } from "@tabler/icons-react";
@@ -430,10 +430,10 @@ A list of buttons and button groups used throughout the app.
```
-
- | Props | Type | Description |
- | -------------------- | ----------------------------------------------- | ----------- |
- | Icon | `React.ComponentType` | |
- | React `button` props | `React.ButtonHTMLAttributes` | |
+
+ | 属性 | 类型 | 描述 |
+ | -------------------- | ----------------------------------------------- | -- |
+ | 图标 | `React.ComponentType` | |
+ | React `button` props | `React.ButtonHTMLAttributes` | |
diff --git a/packages/twenty-docs/l/zh/twenty-ui/input/checkbox.mdx b/packages/twenty-docs/l/zh/twenty-ui/input/checkbox.mdx
index b25eeba052..74fb2aa890 100644
--- a/packages/twenty-docs/l/zh/twenty-ui/input/checkbox.mdx
+++ b/packages/twenty-docs/l/zh/twenty-ui/input/checkbox.mdx
@@ -1,16 +1,16 @@
---
-title: Checkbox
+title: 复选框
image: /images/user-guide/tasks/tasks_header.png
---
-
+
-Used when a user needs to select multiple values from several options.
+用于用户需要从多个选项中选择多个值时。
-
+
```jsx
import { Checkbox } from "twenty-ui/display";
@@ -30,15 +30,15 @@ Used when a user needs to select multiple values from several options.
```
-
- | Props | Type | Description |
- | --------------- | -------- | -------------------------------------------------------------------------------------------- |
- | checked | boolean | Indicates whether the checkbox is checked |
- | indeterminate | boolean | Indicates whether the checkbox is in an indeterminate state (neither checked nor unchecked) |
- | onChange | function | The callback function you want to trigger when the checkbox state changes |
- | onCheckedChange | function | The callback function you want to trigger when the `checked` state changes |
- | variant | string | The visual style variant of the box. Options include: `primary`, `secondary`, and `tertiary` |
- | size | string | The size of the checkbox. Has two options: `small` and `large` |
- | shape | string | The shape of the checkbox. Has two options: `squared` and `rounded` |
+
+ | 属性 | 类型 | 描述 |
+ | --------------- | --- | --------------------------------------------------- |
+ | 选中 | 布尔值 | 指示复选框是否被选中 |
+ | 不确定 | 布尔值 | 指示复选框是否处于不确定状态(既非选中也非未选中) |
+ | onChange | 函数 | 当复选框状态更改时需要触发的回调函数 |
+ | onCheckedChange | 函数 | 当`checked`状态更改时需要触发的回调函数 |
+ | 变体 | 字符串 | 盒子的视觉样式变体。 选项包括:`primary`,`secondary`, 和 `tertiary` |
+ | 大小 | 字符串 | 复选框的大小。 有两个选项:`small` 和 `large` |
+ | 形状 | 字符串 | 复选框的形状。 有两个选项:`squared` 和 `rounded` |
diff --git a/packages/twenty-docs/l/zh/twenty-ui/input/color-scheme.mdx b/packages/twenty-docs/l/zh/twenty-ui/input/color-scheme.mdx
index 1b1505d481..840327fce1 100644
--- a/packages/twenty-docs/l/zh/twenty-ui/input/color-scheme.mdx
+++ b/packages/twenty-docs/l/zh/twenty-ui/input/color-scheme.mdx
@@ -1,18 +1,18 @@
---
-title: Color Scheme
+title: 配色方案
image: /images/user-guide/fields/field.png
---
-
+
-## Color Scheme Card
+## 配色方案卡片
-Represents different color schemes and is specially tailored for light and dark themes.
+代表不同的颜色方案,并专为浅色和深色主题量身定制。
-
+
```jsx
import { ColorSchemeCard } from "twenty-ui/display";
@@ -27,21 +27,21 @@ Represents different color schemes and is specially tailored for light and dark
```
-
- | Props | Type | Description | Default |
- | ---------------- | --------------------------------------- | ----------------------------------------------------------------------- | ------- |
- | variant | string | The color scheme variant. Options include `Dark`, `Light`, and `System` | light |
- | selected | boolean | If `true`, displays a checkmark to indicate the selected color scheme | |
- | additional props | `React.ComponentPropsWithoutRef<'div'>` | Standard HTML `div` element props | |
+
+ | 属性 | 类型 | 描述 | 默认 |
+ | ---- | --------------------------------------- | ------------------------------- | -- |
+ | 变体 | 字符串 | 颜色方案的变体。 选项包括 `深色`, `浅色` 和 `系统` | 浅色 |
+ | 已选择 | 布尔值 | 如果 `true`,显示一个选中标记以指示选定的颜色方案。 | |
+ | 额外属性 | `React.ComponentPropsWithoutRef<'div'>` | 标准 HTML `div` 元素属性 | |
-## Color Scheme Picker
+## 颜色方案选择器
-Allows users to choose between different color schemes.
+允许用户在不同的颜色方案之间进行选择。
-
+
```jsx
import { ColorSchemePicker } from "twenty-ui/display";
@@ -54,10 +54,10 @@ Allows users to choose between different color schemes.
```
-
- | Props | Type | Description |
- | -------- | -------------- | ---------------------------------------------------------------------------- |
- | value | `Color Scheme` | The currently selected color scheme |
- | onChange | function | The callback function you want to trigger when a user selects a color scheme |
+
+ | 属性 | 类型 | 描述 |
+ | -------- | ------ | ---------------------- |
+ | 值 | `配色方案` | 当前选定的颜色方案 |
+ | onChange | 函数 | 当用户选择颜色方案时,触发您想要的回调函数。 |
diff --git a/packages/twenty-docs/l/zh/twenty-ui/input/icon-picker.mdx b/packages/twenty-docs/l/zh/twenty-ui/input/icon-picker.mdx
index 59d269242e..ba01df4b9e 100644
--- a/packages/twenty-docs/l/zh/twenty-ui/input/icon-picker.mdx
+++ b/packages/twenty-docs/l/zh/twenty-ui/input/icon-picker.mdx
@@ -1,16 +1,16 @@
---
-title: Icon Picker
+title: 图标选择器
image: /images/user-guide/github/github-header.png
---
-
+
-A dropdown-based icon picker that allows users to select an icon from a list.
+一个基于下拉菜单的图标选择器,允许用户从列表中选择图标。
-
+
```jsx
import { RecoilRoot } from "recoil";
import React, { useState } from "react";
@@ -38,15 +38,15 @@ A dropdown-based icon picker that allows users to select an icon from a list.
```
-
- | Props | Type | Description |
- | --------------- | -------- | ------------------------------------------------------------------------------------------------------------------------- |
- | disabled | boolean | Disables the icon picker if set to `true` |
- | onChange | function | The callback function triggered when the user selects an icon. It receives an object with `iconKey` and `Icon` properties |
- | selectedIconKey | string | The key of the initially selected icon |
- | onClickOutside | function | Callback function triggered when the user clicks outside the dropdown |
- | onClose | function | Callback function triggered when the dropdown is closed |
- | onOpen | function | Callback function triggered when the dropdown is opened |
- | variant | string | The visual style variant of the clickable icon. Options include: `primary`, `secondary`, and `tertiary` |
+
+ | 属性 | 类型 | 描述 |
+ | --------------- | --- | ------------------------------------------------------ |
+ | 禁用 | 布尔值 | 如果设置为 `true`,则禁用图标选择器 |
+ | onChange | 函数 | 当用户选择图标时触发的回调函数。 它接收一个具有 `iconKey` 和 `Icon` 属性的对象 |
+ | selectedIconKey | 字符串 | 初始选中的图标键 |
+ | onClickOutside | 函数 | 当用户点击下拉菜单外部时触发的回调函数 |
+ | onClose | 函数 | 当下拉菜单关闭时触发的回调函数 |
+ | onOpen | 函数 | 当下拉菜单打开时触发的回调函数 |
+ | variant | 字符串 | 可点击图标的视觉风格变体。 可选项包括:`primary`、`secondary` 和 `tertiary` |
diff --git a/packages/twenty-docs/l/zh/twenty-ui/input/image-input.mdx b/packages/twenty-docs/l/zh/twenty-ui/input/image-input.mdx
index 0d563d7c37..fb781494d0 100644
--- a/packages/twenty-docs/l/zh/twenty-ui/input/image-input.mdx
+++ b/packages/twenty-docs/l/zh/twenty-ui/input/image-input.mdx
@@ -1,16 +1,16 @@
---
-title: Image Input
+title: 图像输入
image: /images/user-guide/objects/objects.png
---
-
+
-Allows users to upload and remove an image.
+允许用户上传和删除图像。
-
+
```jsx
import { ImageInput } from "@/ui/input/components/ImageInput";
@@ -20,15 +20,15 @@ Allows users to upload and remove an image.
```
-
- | Props | Type | Description |
- | ------------ | -------- | ------------------------------------------------------------------------------------------------- |
- | picture | string | The image source URL |
- | onUpload | function | The function called when a user uploads a new image. It receives the `File` object as a parameter |
- | onRemove | function | The function called when the user clicks on the remove button |
- | onAbort | function | The function called when a user clicks on the abort button during image upload |
- | isUploading | boolean | Indicates whether an image is currently being uploaded |
- | errorMessage | string | An optional error message to display below the image input |
- | disabled | boolean | If `true`, the entire input is disabled, and the buttons are not clickable |
+
+ | 属性 | 类型 | 描述 |
+ | ------------ | --- | --------------------------------- |
+ | 图片 | 字符串 | 图片来源 URL |
+ | onUpload | 函数 | 当用户上传新的图片时调用的函数。 接收 `File` 对象作为参数 |
+ | onRemove | 函数 | 当用户点击移除按钮时调用的函数 |
+ | onAbort | 函数 | 当用户在上传图片过程中点击中止按钮时调用的函数 |
+ | isUploading | 布尔值 | 指示图像当前是否正在上传中 |
+ | errorMessage | 字符串 | 在图片输入下方显示的可选错误消息 |
+ | disabled | 布尔值 | 如果 `true` ,整个输入被禁用,按钮不可点击 |
diff --git a/packages/twenty-docs/l/zh/twenty-ui/input/radio.mdx b/packages/twenty-docs/l/zh/twenty-ui/input/radio.mdx
index e6246e631f..dc52a77af7 100644
--- a/packages/twenty-docs/l/zh/twenty-ui/input/radio.mdx
+++ b/packages/twenty-docs/l/zh/twenty-ui/input/radio.mdx
@@ -1,16 +1,16 @@
---
-title: Radio
+title: 单选按钮
image: /images/user-guide/create-workspace/workspace-cover.png
---
-
+
-Used when users may only choose one option from a series of options.
+当用户只能从一系列选项中选择一个时使用。
-
+
```jsx
import { Radio } from "twenty-ui/display";
@@ -37,31 +37,30 @@ Used when users may only choose one option from a series of options.
/>
);
};
-
```
-
- | Props | Type | Description |
- | --------------- | ---------------------- | ------------------------------------------------------------------------------------------------ |
- | style | `React.CSS` properties | Additional inline styles for the component |
- | className | string | Optional CSS class for additional styling |
- | checked | boolean | Indicates whether the radio button is checked |
- | value | string | The label or text associated with the radio button |
- | onChange | function | The function called when the selected radio button is changed |
- | onCheckedChange | function | The function called when the `checked` state of the radio button changes |
- | size | string | The size of the radio button. Options include: `large` and `small` |
- | disabled | boolean | If `true`, the radio button is disabled and not clickable |
- | labelPosition | string | The position of the label text relative to the radio button. Has two options: `left` and `right` |
+
+ | 属性 | 类型 | 描述 |
+ | --------------- | -------------- | ------------------------------- |
+ | 样式 | `React.CSS` 属性 | 组件的附加行内样式 |
+ | 类名 | string | 用于额外样式的可选 CSS 类 |
+ | 选中 | 布尔值 | 指示单选按钮是否被选中 |
+ | 值 | string | 与单选按钮相关联的标签或文本 |
+ | onChange | 函数 | 选择的单选按钮改变时调用的函数 |
+ | onCheckedChange | 函数 | 当单选按钮的 `checked` 状态改变时调用的函数 |
+ | 大小 | 字符串 | 单选按钮的尺寸。 选项包括:`大` 和 `小` |
+ | 禁用 | 布尔值 | 如果为 `true`,则单选按钮将被禁用且不可点击 |
+ | 标签位置 | 字符串 | 标签文字相对于单选按钮的位置。 有两个选项:`左` 和 `右` |
-## Radio Group
+## 单选按钮组
-Groups together related radio buttons.
+将相关的单选按钮组合在一起。
-
+
```jsx
import React, { useState } from "react";
import { Radio, RadioGroup } from "twenty-ui/display";
@@ -86,12 +85,12 @@ Groups together related radio buttons.
```
-
- | Props | Type | Description |
- | ------------- | ----------------- | ---------------------------------------------------------------------------------- |
- | value | string | The value of the currently selected radio button |
- | onChange | function | The callback function triggered when the radio button is changed |
- | onValueChange | function | The callback function triggered when the selected value in the group changes. |
- | children | `React.ReactNode` | Allows you to pass React components (such as Radio) as children to the Radio Group |
+
+ | 属性 | 类型 | 描述 |
+ | ------------- | ----------------- | -------------------------------- |
+ | 值 | 字符串 | 当前选中单选按钮的值 |
+ | onChange | function | 当单选按钮改变时触发的回调函数 |
+ | onValueChange | 函数 | 当组中选定的值发生变化时触发的回调函数。 |
+ | 子元素 | `React.ReactNode` | 允许您将 React 组件(如单选按钮)作为子项传递给单选按钮组 |
diff --git a/packages/twenty-docs/l/zh/twenty-ui/input/select.mdx b/packages/twenty-docs/l/zh/twenty-ui/input/select.mdx
index d685bf4012..4cd56eb754 100644
--- a/packages/twenty-docs/l/zh/twenty-ui/input/select.mdx
+++ b/packages/twenty-docs/l/zh/twenty-ui/input/select.mdx
@@ -1,16 +1,16 @@
---
-title: Select
+title: 选择
image: /images/user-guide/what-is-twenty/20.png
---
-
+
-Allows users to pick a value from a list of predefined options.
+允许用户从预定义选项列表中选择一个值。
-
+
```jsx
import { RecoilRoot } from 'recoil';
import { IconTwentyStar } from 'twenty-ui/display';
@@ -24,10 +24,10 @@ Allows users to pick a value from a list of predefined options.
@@ -38,14 +38,14 @@ Allows users to pick a value from a list of predefined options.
```
-
- | Props | Type | Description |
- | --------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
- | className | string | Optional CSS class for additional styling |
- | disabled | boolean | When set to `true`, disables user interaction with the component |
- | label | string | The label to describe the purpose of the `Select` component |
- | onChange | function | The function called when the selected values change |
- | options | array | Represents the options available for the `Selected` component. It's an array of objects where each object has a `value` (the unique identifier), `label` (the unique identifier), and an optional `Icon` |
- | value | string | Represents the currently selected value. It should match one of the `value` properties in the `options` array |
+
+ | 属性 | 类型 | 描述 |
+ | --------- | --- | ---------------------------------------------------------------- |
+ | className | 字符串 | 用于额外样式的可选 CSS 类 |
+ | 禁用 | 布尔值 | 当设置为`true`时,禁用用户与组件的交互 |
+ | 标签 | 字符串 | 描述`选择`组件用途的标签 |
+ | onChange | 函数 | 当所选值更改时调用的函数 |
+ | 选项 | 数组 | 表示`选择`组件的可用选项。 它是一个对象数组,每个对象具有一个`值`(唯一标识符)、`标签`(唯一标识符)和一个可选的`图标` |
+ | 值 | 字符串 | 表示当前选择的值。 它应匹配`选项`数组中的一个`值`属性 |
diff --git a/packages/twenty-docs/l/zh/twenty-ui/input/text.mdx b/packages/twenty-docs/l/zh/twenty-ui/input/text.mdx
index 8cad1352ae..f4c204d112 100644
--- a/packages/twenty-docs/l/zh/twenty-ui/input/text.mdx
+++ b/packages/twenty-docs/l/zh/twenty-ui/input/text.mdx
@@ -1,72 +1,71 @@
---
-title: Text
+title: 文本
image: /images/user-guide/notes/notes_header.png
---
-
+
-## Text Input
+## 文本输入
-Allows users to enter and edit text.
+允许用户输入和编辑文本。
-
+
```jsx
import { RecoilRoot } from "recoil";
import { TextInput } from "@/ui/input/components/TextInput";
export const MyComponent = () => {
const handleChange = (text) => {
- console.log("Input changed:", text);
+ console.log("输入已更改:", text);
};
const handleKeyDown = (event) => {
- console.log("Key pressed:", event.key);
+ console.log("按下的键:", event.key);
};
return (
);
};
-
```
-
- | Props | Type | Description |
- | -------------- | ------------- | ---------------------------------------------------------------------------------------------------------------------- |
- | className | string | Optional name for additional styling |
- | label | string | Represents the label for the input |
- | onChange | function | The function called when the input value changes |
- | fullWidth | boolean | Indicates whether the input should take up 100% of the width |
- | disableHotkeys | boolean | Indicates whether hotkeys are enabled for the input |
- | error | string | Represents the error message to be displayed. When provided, it also adds an icon error on the right side of the input |
- | onKeyDown | function | Called when a key is pressed down while the input field is focused. Receives a `React.KeyboardEvent` as an argument |
- | RightIcon | IconComponent | An optional icon component displayed on the right side of the input |
+
+ | 属性 | 类型 | 描述 |
+ | -------------- | ------------- | ---------------------------------------------- |
+ | className | 字符串 | 用于附加样式的可选名称 |
+ | 标签 | 字符串 | 表示输入的标签 |
+ | onChange | function | 当输入值更改时调用的函数 |
+ | fullWidth | 布尔值 | 指示输入是否应占用100%的宽度 |
+ | disableHotkeys | 布尔值 | 指示输入是否启用热键 |
+ | 错误 | 字符串 | 表示要显示的错误信息。 提供时,还会在输入的右侧添加一个错误图标 |
+ | onKeyDown | function | 当输入字段获得焦点并按下按键时调用。 接收`React.KeyboardEvent`作为参数 |
+ | RightIcon | IconComponent | 在输入右侧显示的可选图标组件 |
- The component also accepts other HTML input element props.
+ 该组件还接受其他HTML输入元素属性。
-## Autosize Text Input
+## 自动调整大小的文本输入
-Text input component that automatically adjusts its height based on the content.
+根据内容自动调整高度的文本输入组件。
-
+
```jsx
import { RecoilRoot } from "recoil";
import { AutosizeTextInput } from "@/ui/input/components/AutosizeTextInput";
@@ -75,13 +74,13 @@ Text input component that automatically adjusts its height based on the content.
return (
console.log("onValidate function fired")}
+ onValidate={() => console.log("onValidate 函数已触发")}
minRows={1}
- placeholder="Write a comment"
- onFocus={() => console.log("onFocus function fired")}
+ placeholder="写一条评论"
+ onFocus={() => console.log("onFocus 函数已触发")}
variant="icon"
buttonTitle
- value="Task: "
+ value="任务: "
/>
);
@@ -89,25 +88,25 @@ Text input component that automatically adjusts its height based on the content.
```
-
- | Props | Type | Description |
- | ----------- | -------- | --------------------------------------------------------------------------- |
- | onValidate | function | The callback function you want to trigger when the user validates the input |
- | minRows | number | The minimum number of rows for the text area |
- | placeholder | string | The placeholder text you want to display when the text area is empty |
- | onFocus | function | The callback function you want to trigger when the text area gains focus |
- | variant | string | The variant of the input. Options include: `default`, `icon`, and `button` |
- | buttonTitle | string | The title for the button (only applicable for the button variant) |
- | value | string | The initial value for the text area |
+
+ | 属性 | 类型 | 描述 |
+ | ----------- | -------- | ----------------------------------------- |
+ | onValidate | function | 用户验证输入时要触发的回调函数 |
+ | minRows | 数字 | 文本区域的最小行数 |
+ | 占位符 | 字符串 | 在文本区域为空时要显示的占位符文本 |
+ | onFocus | function | 当文本区域获得焦点时要触发的回调函数 |
+ | variant | 字符串 | 输入的变体。 选项包括:`default`, `icon`, 和 `button` |
+ | buttonTitle | 字符串 | 按钮的标题(仅适用于按钮变体) |
+ | 值 | 字符串 | 文本区域的初始值 |
-## Text Area
+## 文本区域
-Allows you to create multi-line text inputs.
+允许你创建多行文本输入。
-
+
```jsx
import { TextArea } from "@/ui/input/components/TextArea";
@@ -116,8 +115,8 @@ Allows you to create multi-line text inputs.
-
- | Props | Type | Description |
- | ----------- | -------- | -------------------------------------------------------------- |
- | disabled | boolean | Indicates whether the text area is disabled |
- | minRows | number | Minimum number of visible rows for the text area. |
- | onChange | function | Callback function triggered when the text area content changes |
- | placeholder | string | Placeholder text displayed when the text area is empty |
- | value | string | The current value of the text area |
+
+ | 属性 | 类型 | 描述 |
+ | -------- | --- | ----------------- |
+ | 禁用 | 布尔值 | 指示文本区域是否被禁用 |
+ | minRows | 数字 | 文本区域的最小可见行数。 |
+ | onChange | 函数 | 当文本区域内容更改时触发的回调函数 |
+ | 占位符 | 字符串 | 当文本区域为空时显示的占位符文本 |
+ | 值 | 字符串 | 文本区域的当前值 |
diff --git a/packages/twenty-docs/l/zh/twenty-ui/input/toggle.mdx b/packages/twenty-docs/l/zh/twenty-ui/input/toggle.mdx
index 39f1645abd..8b6035e5ef 100644
--- a/packages/twenty-docs/l/zh/twenty-ui/input/toggle.mdx
+++ b/packages/twenty-docs/l/zh/twenty-ui/input/toggle.mdx
@@ -1,14 +1,14 @@
---
-title: Toggle
+title: 切换
image: /images/user-guide/table-views/table.png
---
-
+
-
+
```jsx
import { Toggle } from "twenty-ui/input";
@@ -25,12 +25,12 @@ image: /images/user-guide/table-views/table.png
```
-
- | Props | Type | Description | Default |
- | ---------- | -------- | ------------------------------------------------------------------------------------------- | ------------ |
- | value | boolean | The current state of the toggle | `false` |
- | onChange | function | Callback function triggered when the toggle state changes | |
- | color | string | Color of the toggle when it\ | s blue color |
- | toggleSize | string | Size of the toggle, affecting both height and weight. Has two options: `small` and `medium` | medium |
+
+ | 属性 | 类型 | 描述 | 默认 |
+ | ---------- | -------- | --------------------------------------- | ------------ |
+ | 值 | 布尔值 | 切换的当前状态 | `假` |
+ | onChange | function | 当切换状态变化时触发的回调函数 | |
+ | 颜色 | string | Color of the toggle when it\ | s blue color |
+ | toggleSize | string | 切换的尺寸,影响高度和宽度。 有两个选项:`small` 和 `medium` | medium |
diff --git a/packages/twenty-docs/l/zh/twenty-ui/introduction.mdx b/packages/twenty-docs/l/zh/twenty-ui/introduction.mdx
index 7b15f3ee26..da0918892f 100644
--- a/packages/twenty-docs/l/zh/twenty-ui/introduction.mdx
+++ b/packages/twenty-docs/l/zh/twenty-ui/introduction.mdx
@@ -1,30 +1,30 @@
---
-title: Overview
-description: Component library for Twenty CRM
+title: 概览
+description: Twenty CRM 的组件库
---
import { CardTitle } from "/snippets/card-title.mdx"
-## Components
+## 组件
- Display
- Display components for showing information visually
+ 显示
+ 用于直观显示信息的显示组件
- Feedback
- Feedback components for user notifications
+ 反馈
+ 用户通知的反馈组件
- Input
- Input components for user interaction
+ 输入
+ 用于用户交互的输入组件
- Navigation
- Navigation components for user interface
+ 导航
+ 用于用户界面的导航组件
diff --git a/packages/twenty-docs/l/zh/twenty-ui/navigation.mdx b/packages/twenty-docs/l/zh/twenty-ui/navigation.mdx
index b17dad4220..f0d2d5809f 100644
--- a/packages/twenty-docs/l/zh/twenty-ui/navigation.mdx
+++ b/packages/twenty-docs/l/zh/twenty-ui/navigation.mdx
@@ -1,8 +1,8 @@
---
-title: Navigation
+title: 导航
image: /images/user-guide/tasks/tasks_header.png
---
-
+
diff --git a/packages/twenty-docs/l/zh/twenty-ui/navigation/breadcrumb.mdx b/packages/twenty-docs/l/zh/twenty-ui/navigation/breadcrumb.mdx
index aadbee8ee4..f9eaddce1d 100644
--- a/packages/twenty-docs/l/zh/twenty-ui/navigation/breadcrumb.mdx
+++ b/packages/twenty-docs/l/zh/twenty-ui/navigation/breadcrumb.mdx
@@ -1,16 +1,16 @@
---
-title: Breadcrumb
+title: 面包屑
image: /images/user-guide/fields/field.png
---
-
+
-Renders a breadcrumb navigation bar.
+呈现一个面包屑导航栏。
-
+
```jsx
import { BrowserRouter } from "react-router-dom";
import { Breadcrumb } from "@/ui/navigation/bread-crumb/components/Breadcrumb";
@@ -32,10 +32,10 @@ Renders a breadcrumb navigation bar.
```
-
- | Props | Type | Description |
- | --------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
- | className | string | Optional class name for additional styling |
- | links | array | An array of objects, each representing a breadcrumb link. Each object has a `children` property (the text content of the link) and an optional `href` property (the URL to navigate to when the link is clicked) |
+
+ | 属性 | 类型 | 描述 |
+ | --------- | --- | -------------------------------------------------------------------------------- |
+ | className | 字符串 | 用于额外样式的可选类名 |
+ | 链接 | 数组 | 对象数组,每个代表一个面包屑链接。 每个对象都有一个 `children` 属性(链接的文本内容)和一个可选的 `href` 属性(点击链接时导航到的URL)。 |
diff --git a/packages/twenty-docs/l/zh/twenty-ui/navigation/links.mdx b/packages/twenty-docs/l/zh/twenty-ui/navigation/links.mdx
index e9f7e3d80f..45fe67ffd8 100644
--- a/packages/twenty-docs/l/zh/twenty-ui/navigation/links.mdx
+++ b/packages/twenty-docs/l/zh/twenty-ui/navigation/links.mdx
@@ -1,18 +1,18 @@
---
-title: Links
+title: 链接
image: /images/user-guide/what-is-twenty/20.png
---
-
+
-## Contact Link
+## 联系链接
-A stylized link component for displaying contact information.
+用于显示联系信息的样式化链接组件。
-
+
```jsx
import { BrowserRouter as Router } from 'react-router-dom';
@@ -38,22 +38,22 @@ A stylized link component for displaying contact information.
```
-
- | Props | Type | Description |
- | --------- | ----------------- | ---------------------------------------------------------- |
- | className | string | Optional name for additional styling |
- | href | string | The target URL or path for the link |
- | onClick | function | Callback function to be triggered when the link is clicked |
- | children | `React.ReactNode` | The content to be displayed inside the link |
+
+ | 属性 | 类型 | 描述 |
+ | --------- | ----------------- | ------------- |
+ | className | 字符串 | 用于附加样式的可选名称 |
+ | href | 字符串 | 链接的目标网址或路径 |
+ | onClick | function | 链接被点击时触发的回调函数 |
+ | 子元素 | `React.ReactNode` | 在链接中显示的内容 |
-## Raw Link
+## 原始链接
-A stylized link component for displaying links.
+用于显示链接的风格化链接组件。
-
+
```jsx
import { RawLink } from "/navigation";
import { BrowserRouter as Router } from "react-router-dom";
@@ -75,22 +75,22 @@ A stylized link component for displaying links.
```
-
- | Props | Type | Description |
- | --------- | ----------------- | ---------------------------------------------------------- |
- | className | string | Optional name for additional styling |
- | href | string | The target URL or path for the link |
- | onClick | function | Callback function to be triggered when the link is clicked |
- | children | `React.ReactNode` | The content to be displayed inside the link |
+
+ | 属性 | 类型 | 描述 |
+ | ------- | ----------------- | ------------- |
+ | 类名 | 字符串 | 用于附加样式的可选名称 |
+ | href | 字符串 | 链接的目标网址或路径 |
+ | onClick | 函数 | 链接被点击时触发的回调函数 |
+ | 子元素 | `React.ReactNode` | 在链接中显示的内容 |
-## Rounded Link
+## 圆形链接
-A rounded-styled link with a Chip component for links.
+以 Chip 组件风格显示的圆形链接。
-
+
```jsx
import { RoundedLink } from "/navigation";
import { BrowserRouter as Router } from "react-router-dom";
@@ -111,21 +111,21 @@ A rounded-styled link with a Chip component for links.
```
-
- | Props | Type | Description |
- | -------- | ----------------- | ---------------------------------------------------------- |
- | href | string | The target URL or path for the link |
- | children | `React.ReactNode` | The content to be displayed inside the link |
- | onClick | function | Callback function to be triggered when the link is clicked |
+
+ | 属性 | 类型 | 描述 |
+ | ------- | ----------------- | ------------- |
+ | href | 字符串 | 链接的目标网址或路径 |
+ | 子元素 | `React.ReactNode` | 在链接中显示的内容 |
+ | onClick | 函数 | 链接被点击时触发的回调函数 |
-## Social Link
+## 社交链接
-Stylized social links, with support for various social link types, such as URLs, LinkedIn, and X (or Twitter).
+风格化的社交链接,支持各种社交链接类型,如网址、LinkedIn 和 X(或 Twitter)。
-
+
```jsx
import { SocialLink } from "twenty-ui/navigation";
import { BrowserRouter as Router } from "react-router-dom";
@@ -143,12 +143,12 @@ Stylized social links, with support for various social link types, such as URLs,
```
-
- | Props | Type | Description |
- | -------- | ----------------- | --------------------------------------------------------------------------- |
- | href | string | The target URL or path for the link |
- | children | `React.ReactNode` | The content to be displayed inside the link |
- | type | string | The type of social links. Options include: `url`, `LinkedIn`, and `Twitter` |
- | onClick | function | Callback function to be triggered when the link is clicked |
+
+ | 属性 | 类型 | 描述 |
+ | ------- | ----------------- | ------------------------------------------ |
+ | href | 字符串 | 链接的目标网址或路径 |
+ | 子元素 | `React.ReactNode` | 在链接中显示的内容 |
+ | 类型 | 字符串 | 社交链接的类型。 选项包括:`url`、`LinkedIn` 和 `Twitter` |
+ | onClick | 函数 | 链接被点击时触发的回调函数 |
diff --git a/packages/twenty-docs/l/zh/twenty-ui/navigation/menu-item.mdx b/packages/twenty-docs/l/zh/twenty-ui/navigation/menu-item.mdx
index 209c6270ea..93409d85df 100644
--- a/packages/twenty-docs/l/zh/twenty-ui/navigation/menu-item.mdx
+++ b/packages/twenty-docs/l/zh/twenty-ui/navigation/menu-item.mdx
@@ -1,16 +1,16 @@
---
-title: Menu Item
+title: 菜单项
image: /images/user-guide/kanban-views/kanban.png
---
-
+
-A versatile menu item designed to be used in a menu or navigation list.
+一个多用途的菜单项,设计用于菜单或导航列表中。
-
+
```jsx
import { IconBell } from "@tabler/icons-react";
import { IconAlertCircle } from "@tabler/icons-react";
@@ -41,30 +41,30 @@ A versatile menu item designed to be used in a menu or navigation list.
```
-
- | Props | Type | Description |
- | ------------- | ------------- | ---------------------------------------------------------------------------------------------------- |
- | LeftIcon | IconComponent | An optional left icon displayed before the text in the menu item |
- | accent | string | Specifies the accent color of the menu item. Options include: `default`, `danger`, and `placeholder` |
- | text | string | The text content of the menu item |
- | iconButtons | array | An array of objects representing additional icon buttons associated with the menu item |
- | isTooltipOpen | boolean | Controls the visibility of the tooltip associated with the menu item |
- | testId | string | The data-testid attribute for testing purposes |
- | onClick | function | Callback function triggered when the menu item is clicked |
- | className | string | Optional name for additional styling |
+
+ | 属性 | 类型 | 描述 |
+ | ------------- | ------ | --------------------------------------------------- |
+ | 左侧图标 | 图标组件 | 在菜单项文本之前显示的可选左图标 |
+ | 强调色 | string | 指定菜单项的点缀颜色。 选项包括:`default`、`danger` 和 `placeholder` |
+ | 文本 | 字符串 | 菜单项的文本内容 |
+ | 图标按钮 | 数组 | 表示与菜单项关联的额外图标按钮的对象数组 |
+ | isTooltipOpen | 布尔值 | 控制与菜单项关联的工具提示的可见性 |
+ | 测试 ID | 字符串 | 用于测试目的的数据测试 ID 属性 |
+ | onClick | 函数 | 在点击菜单项时触发的回调函数 |
+ | 类名 | 字符串 | 用于额外样式的可选名称 |
-## Variants
+## 变体
-The different variants of the menu item component include the following:
+菜单项组件的不同变体包括以下内容:
-### Command
+### 命令
-A command-style menu item within a menu to indicate keyboard shortcuts.
+菜单中的命令样式菜单项,用于表示键盘快捷键。
-
+
```jsx
import { IconBell } from "@tabler/icons-react";
import { MenuItemCommand } from "twenty-ui/display";
@@ -89,25 +89,25 @@ A command-style menu item within a menu to indicate keyboard shortcuts.
```
-
- | Props | Type | Description |
- | ------------ | ------------- | ---------------------------------------------------------------- |
- | LeftIcon | IconComponent | An optional left icon displayed before the text in the menu item |
- | text | string | The text content of the menu item |
- | firstHotKey | string | The first keyboard shortcut associated with the command |
- | secondHotKey | string | The second keyboard shortcut associated with the command |
- | isSelected | boolean | Indicates whether the menu item is selected or highlighted |
- | onClick | function | Callback function triggered when the menu item is clicked |
- | className | string | Optional name for additional styling |
+
+ | 属性 | 类型 | 描述 |
+ | ------------ | ------------- | ----------------- |
+ | LeftIcon | IconComponent | 菜单项中显示在文本前的可选左侧图标 |
+ | 文本 | 字符串 | 菜单项的文本内容 |
+ | firstHotKey | 字符串 | 与命令关联的第一个键盘快捷键 |
+ | secondHotKey | 字符串 | 与命令关联的第二个键盘快捷键 |
+ | isSelected | 布尔值 | 指示菜单项是否被选中或高亮 |
+ | onClick | 功能 | 点击菜单项时触发的回调函数 |
+ | className | 字符串 | 用于额外样式的可选名称 |
-### Draggable
+### 可拖动的
-A draggable menu item component designed to be used in a menu or list where items can be dragged, and additional actions can be performed through icon buttons.
+设计用于在菜单或列表中使用的可拖动菜单项组件,项目可以拖动,并且可以通过图标按钮执行其他操作。
-
+
```jsx
import { IconBell } from "@tabler/icons-react";
import { IconAlertCircle } from "@tabler/icons-react";
@@ -134,26 +134,26 @@ A draggable menu item component designed to be used in a menu or list where item
```
-
- | Props | Type | Description |
- | -------------- | ------------- | ------------------------------------------------------------------------------------------ |
- | LeftIcon | IconComponent | An optional left icon displayed before the text in the menu item |
- | accent | string | The accent color of the menu item. It can either be `default`, `placeholder`, and `danger` |
- | iconButtons | array | An array of objects representing additional icon buttons associated with the menu item |
- | isTooltipOpen | boolean | Controls the visibility of the tooltip associated with the menu item |
- | onClick | function | Callback function to be triggered when the link is clicked |
- | text | string | The text content of the menu item |
- | isDragDisabled | boolean | Indicates whether dragging is disabled |
- | className | string | Optional name for additional styling |
+
+ | 属性 | 类型 | 描述 |
+ | -------------- | ------------- | -------------------------------------------------- |
+ | LeftIcon | IconComponent | 菜单项中显示在文本前的可选左侧图标 |
+ | 强调色 | 字符串 | 菜单项的强调色。 可设置为 `default`, `placeholder`, 和 `danger` |
+ | iconButtons | 数组 | 表示与菜单项关联的附加图标按钮的对象数组 |
+ | isTooltipOpen | 布尔值 | 控制与菜单项关联的工具提示的可见性 |
+ | onClick | 功能 | 点击链接时触发的回调函数 |
+ | 文本 | 字符串 | 菜单项的文本内容 |
+ | isDragDisabled | 布尔值 | 指示是否禁用拖动 |
+ | className | 字符串 | 用于额外样式的可选名称 |
-### Multi Select
+### 多选
-Provides a way to implement multi-select functionality with an associated checkbox.
+提供通过关联选择框实现多选功能的方法。
-
+
```jsx
import { IconBell } from "@tabler/icons-react";
import { MenuItemMultiSelect } from "twenty-ui/display";
@@ -172,23 +172,23 @@ Provides a way to implement multi-select functionality with an associated checkb
```
-
- | Props | Type | Description |
- | -------------- | ------------- | ---------------------------------------------------------------- |
- | LeftIcon | IconComponent | An optional left icon displayed before the text in the menu item |
- | text | string | The text content of the menu item |
- | selected | boolean | Indicates whether the menu item is selected (checked) |
- | onSelectChange | function | Callback function triggered when the checkbox state changes |
- | className | string | Optional name for additional styling |
+
+ | 属性 | 类型 | 描述 |
+ | -------------- | ------------- | ----------------- |
+ | LeftIcon | IconComponent | 菜单项中显示在文本前的可选左侧图标 |
+ | 文本 | 字符串 | 菜单项的文本内容 |
+ | 已选择 | 布尔值 | 指示菜单项是否被选中(勾选) |
+ | onSelectChange | 功能 | 选择框状态变化时触发的回调函数 |
+ | className | 字符串 | 用于额外样式的可选名称 |
-### Multi Select Avatar
+### 多选头像
-A multi-select menu item with an avatar, a checkbox for selection, and textual content.
+带有头像、多选功能的菜单项,具有选择框和文本内容。
-
+
```jsx
import { MenuItemMultiSelectAvatar } from "twenty-ui/display";
@@ -208,23 +208,23 @@ A multi-select menu item with an avatar, a checkbox for selection, and textual c
```
-
- | Props | Type | Description |
- | -------------- | ----------- | -------------------------------------------------------------------- |
- | avatar | `ReactNode` | The avatar or icon to be displayed on the left side of the menu item |
- | text | string | The text content of the menu item |
- | selected | boolean | Indicates whether the menu item is selected (checked) |
- | onSelectChange | function | Callback function triggered when the checkbox state changes |
- | className | string | Optional name for additional styling |
+
+ | 属性 | 类型 | 描述 |
+ | -------------- | ----------- | --------------- |
+ | avatar | `ReactNode` | 将在菜单项左侧显示的头像或图标 |
+ | 文本 | 字符串 | 菜单项的文本内容 |
+ | selected | 布尔值 | 指示菜单项是否被选中(勾选) |
+ | onSelectChange | 功能 | 选择框状态变化时触发的回调函数 |
+ | className | 字符串 | 用于额外样式的可选名称 |
-### Navigate
+### 导航
-A menu item featuring an optional left icon, textual content, and a right-chevron icon.
+带有可选左侧图标、文本内容和右箭头图标的菜单项。
-
+
```jsx
import { IconBell } from "@tabler/icons-react";
import { MenuItemNavigate } from "twenty-ui/display";
@@ -246,22 +246,22 @@ A menu item featuring an optional left icon, textual content, and a right-chevro
```
-
- | Props | Type | Description |
- | --------- | ------------- | ---------------------------------------------------------------- |
- | LeftIcon | IconComponent | An optional left icon displayed before the text in the menu item |
- | text | string | The text content of the menu item |
- | onClick | function | Callback function to be triggered when the menu item is clicked |
- | className | string | Optional name for additional styling |
+
+ | 属性 | 类型 | 描述 |
+ | --------- | ------------- | ----------------- |
+ | LeftIcon | IconComponent | 菜单项中显示在文本前的可选左侧图标 |
+ | 文本 | 字符串 | 菜单项的文本内容 |
+ | onClick | 功能 | 点击菜单项时触发的回调函数 |
+ | className | 字符串 | 用于额外样式的可选名称 |
-### Select
+### 选择
-A selectable menu item, featuring optional left content (icon and text) and an indicator (check icon) for the selected state.
+可选择的菜单项,具有可选的左侧内容(图标和文本)和用于选择状态的指示器(检查图标)。
-
+
```jsx
import { IconBell } from "@tabler/icons-react";
import { MenuItemSelect } from "twenty-ui/display";
@@ -286,25 +286,25 @@ A selectable menu item, featuring optional left content (icon and text) and an i
```
-
- | Props | Type | Description |
- | --------- | ------------- | ---------------------------------------------------------------- |
- | LeftIcon | IconComponent | An optional left icon displayed before the text in the menu item |
- | text | string | The text content of the menu item |
- | selected | boolean | Indicates whether the menu item is selected (checked) |
- | disabled | boolean | Indicates whether the menu item is disabled |
- | hovered | boolean | Indicates whether the menu item is currently being hovered over |
- | onClick | function | Callback function to be triggered when the menu item is clicked |
- | className | string | Optional name for additional styling |
+
+ | 属性 | 类型 | 描述 |
+ | -------- | ------------- | ----------------- |
+ | LeftIcon | IconComponent | 菜单项中显示在文本前的可选左侧图标 |
+ | 文本 | 字符串 | 菜单项的文本内容 |
+ | selected | 布尔值 | 指示菜单项是否被选中(勾选) |
+ | 禁用 | 布尔值 | 指示菜单项是否被禁用 |
+ | hovered | 布尔值 | 指示菜单项当前是否被悬停 |
+ | onClick | 功能 | 点击菜单项时触发的回调函数 |
+ | 类名 | 字符串 | 用于额外样式的可选名称 |
-### Select Avatar
+### 选择头像
-A selectable menu item with an avatar, featuring optional left content (avatar and text) and an indicator (check icon) for the selected state.
+带有头像的可选择的菜单项,具有可选的左侧内容(头像和文本)和用于选择状态的指示器(检查图标)。
-
+
```jsx
import { MenuItemSelectAvatar } from "twenty-ui/display";
@@ -333,26 +333,26 @@ A selectable menu item with an avatar, featuring optional left content (avatar a
```
-
- | Props | Type | Description |
- | --------- | ----------- | -------------------------------------------------------------------- |
- | avatar | `ReactNode` | The avatar or icon to be displayed on the left side of the menu item |
- | text | string | The text content of the menu item |
- | selected | boolean | Indicates whether the menu item is selected (checked) |
- | disabled | boolean | Indicates whether the menu item is disabled |
- | hovered | boolean | Indicates whether the menu item is currently being hovered over |
- | testId | string | The data-testid attribute for testing purposes |
- | onClick | function | Callback function to be triggered when the menu item is clicked |
- | className | string | Optional name for additional styling |
+
+ | 属性 | 类型 | 描述 |
+ | ------- | ----------- | -------------------- |
+ | 头像 | `ReactNode` | 用于显示在菜单项左侧的头像或图标 |
+ | 文本 | 字符串 | 菜单项的文本内容 |
+ | 已选择 | 布尔值 | 表示菜单项是否被选中(已选) |
+ | 禁用 | 布尔值 | 表示菜单项是否被禁用 |
+ | 悬停 | 布尔值 | 表示菜单项是否正被悬停 |
+ | 测试ID | 字符串 | 用于测试目的的data-testid属性 |
+ | onClick | 功能 | 点击菜单项时触发的回调函数 |
+ | 类名 | 字符串 | 用于额外样式的可选名称 |
-### Select Color
+### 选择颜色
-A selectable menu item with a color sample for scenarios where you want users to choose a color from a menu.
+一个可选择的菜单项,带有颜色样本,用于需要用户从菜单中选择颜色的场景。
-
+
```jsx
import { MenuItemSelectColor } from "twenty-ui/display";
@@ -376,25 +376,25 @@ A selectable menu item with a color sample for scenarios where you want users to
```
-
- | Props | Type | Description |
- | --------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
- | color | string | The theme color to be displayed as a sample in the menu item. Options include: `green`, `turquoise`, `sky`, `blue`, `purple`, `pink`, `red`, `orange`, `yellow`, and `gray` |
- | selected | boolean | Indicates whether the menu item is selected (checked) |
- | disabled | boolean | Indicates whether the menu item is disabled |
- | hovered | boolean | Indicates whether the menu item is currently being hovered over |
- | variant | string | The variant of the color sample. It can either be `default` or `pipeline` |
- | onClick | function | Callback function to be triggered when the menu item is clicked |
- | className | string | Optional name for additional styling |
+
+ | 属性 | 类型 | 描述 |
+ | ------- | --- | ------------------------------------------------------------------------- |
+ | 颜色 | 字符串 | 菜单项中作为样本显示的主题颜色。 选项包括:`绿色`,`绿松石`,`天蓝`,`蓝色`,`紫色`,`粉红色`,`红色`,`橙色`,`黄色`,`灰色` |
+ | 已选择 | 布尔值 | 表示菜单项是否被选中(已选) |
+ | 禁用 | 布尔值 | 表示菜单项是否被禁用 |
+ | 悬停 | 布尔值 | 表示菜单项是否正被悬停 |
+ | 变体 | 字符串 | 颜色样本的变体。 可以是`默认`或`管道` |
+ | onClick | 功能 | 点击菜单项时触发的回调函数 |
+ | 类名 | 字符串 | 用于额外样式的可选名称 |
-### Toggle
+### 切换
-A menu item with an associated toggle switch to allow users to enable or disable a specific feature
+一个菜单项,带有一个关联的开关,允许用户启用或禁用某个特定功能
-
+
```jsx
import { IconBell } from '@tabler/icons-react';
@@ -415,14 +415,14 @@ A menu item with an associated toggle switch to allow users to enable or disable
```
-
- | Props | Type | Description |
- | -------------- | ------------- | ----------------------------------------------------------------- |
- | LeftIcon | IconComponent | An optional left icon displayed before the text in the menu item |
- | text | string | The text content of the menu item |
- | toggled | boolean | Indicates whether the toggle switch is in the "on" or "off" state |
- | onToggleChange | function | Callback function triggered when the toggle switch state changes |
- | toggleSize | string | The size of the toggle switch. It can be either \ |
- | className | string | Optional name for additional styling |
+
+ | 属性 | 类型 | 描述 |
+ | ------ | ------------- | ------------------ |
+ | 左侧图标 | IconComponent | 在菜单项文本前显示的可选左侧图标 |
+ | 文本 | 字符串 | 菜单项的文本内容 |
+ | 已切换 | 布尔值 | 表示开关按钮处于“开”还是“关”状态 |
+ | 切换状态变更 | 功能 | 开关状态改变时触发的回调函数 |
+ | 切换尺寸 | 字符串 | 开关的尺寸。 它可以是\ |
+ | 类名 | 字符串 | 用于额外样式的可选名称 |
diff --git a/packages/twenty-docs/l/zh/twenty-ui/navigation/navigation-bar.mdx b/packages/twenty-docs/l/zh/twenty-ui/navigation/navigation-bar.mdx
index a77e9f34e6..938e58fe4b 100644
--- a/packages/twenty-docs/l/zh/twenty-ui/navigation/navigation-bar.mdx
+++ b/packages/twenty-docs/l/zh/twenty-ui/navigation/navigation-bar.mdx
@@ -1,16 +1,16 @@
---
-title: Navigation Bar
+title: 导航栏
image: /images/user-guide/table-views/table.png
---
-
+
-Renders a navigation bar that contains multiple `NavigationBarItem` components.
+渲染一个包含多个`NavigationBarItem`组件的导航栏。
-
+
```jsx
import { IconHome, IconUser, IconSettings } from '@tabler/icons-react';
import { NavigationBar } from "@/ui/navigation/navigation-bar/components/NavigationBar";
@@ -40,10 +40,10 @@ Renders a navigation bar that contains multiple `NavigationBarItem` components.
```
-
- | Props | Type | Description |
- | -------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
- | activeItemName | string | The name of the currently active navigation item |
- | items | array | An array of objects representing each navigation item. Each object contains the `name` of the item, the `Icon` component to display, and an `onClick` function to be called when the item is clicked |
+
+ | 属性 | 类型 | 描述 |
+ | -------------- | --- | ------------------------------------------------------------ |
+ | activeItemName | 字符串 | 当前活跃导航项的名称 |
+ | 项目 | 数组 | 表示每个导航项目的对象数组。 每个对象包含项目的`名称`、显示的`图标`组件以及项目被点击时调用的`onClick`函数 |
diff --git a/packages/twenty-docs/l/zh/twenty-ui/navigation/step-bar.mdx b/packages/twenty-docs/l/zh/twenty-ui/navigation/step-bar.mdx
index 66c420f561..da06e74a6e 100644
--- a/packages/twenty-docs/l/zh/twenty-ui/navigation/step-bar.mdx
+++ b/packages/twenty-docs/l/zh/twenty-ui/navigation/step-bar.mdx
@@ -1,16 +1,16 @@
---
-title: Step Bar
+title: 步骤条
image: /images/user-guide/api/api.png
---
-
+
-Displays progress through a sequence of numbered steps by highlighting the active step. It renders a container with steps, each represented by the `Step` component.
+通过突出显示活动步骤来显示一系列编号步骤的进度。 它呈现一个包含步骤的容器,每个步骤由 `Step` 组件表示。
-
+
```jsx
import { StepBar } from "@/ui/navigation/step-bar/components/StepBar";
@@ -26,9 +26,9 @@ Displays progress through a sequence of numbered steps by highlighting the activ
```
-
- | Props | Type | Description |
- | ---------- | ------ | ------------------------------------------------------------------------------------------------- |
- | activeStep | number | The index of the currently active step. This determines which step should be visually highlighted |
+
+ | 属性 | 类型 | 描述 |
+ | ---------- | -- | ------------------------- |
+ | activeStep | 数字 | 当前活动步骤的索引。 这决定了应突出显示哪个步骤。 |
diff --git a/packages/twenty-docs/l/zh/twenty-ui/progress-bar.mdx b/packages/twenty-docs/l/zh/twenty-ui/progress-bar.mdx
index 2e4735ab30..c20f74d977 100644
--- a/packages/twenty-docs/l/zh/twenty-ui/progress-bar.mdx
+++ b/packages/twenty-docs/l/zh/twenty-ui/progress-bar.mdx
@@ -1,16 +1,16 @@
---
-title: Feedback
+title: 反馈
image: /images/user-guide/emails/emails_header.png
---
-
+
-Indicates progress or countdown and moves from right to left.
+表示进度或倒计时,并从右向左移动。
-
+
```jsx
import { ProgressBar } from "twenty-ui/feedback";
@@ -29,24 +29,24 @@ Indicates progress or countdown and moves from right to left.
```
-
- | Props | Type | Description | Default |
- | --------- | ------- | ------------------------------------------------------------------------------------ | --------- |
- | duration | number | The total duration of the progress bar animation in milliseconds | 3 |
- | delay | number | The delay in starting the progress bar animation in milliseconds | 0 |
- | easing | string | Easing function for the progress bar animation | easeInOut |
- | barHeight | number | The height of the bar in pixels | 24 |
- | barColor | string | The color of the bar | gray80 |
- | autoStart | boolean | If `true`, the progress bar animation starts automatically when the component mounts | `true` |
+
+ | 属性 | 类型 | 描述 | 默认 |
+ | --------- | --- | ------------------------- | --------- |
+ | 持续时间 | 数字 | 进度条动画的总持续时间,以毫秒为单位 | 3 |
+ | delay | 数字 | 进度条动画开始的延迟时间,以毫秒为单位 | 0 |
+ | easing | 字符串 | 进度条动画的缓动函数 | easeInOut |
+ | barHeight | 数字 | 进度条的高度(以像素为单位) | 24 |
+ | barColor | 字符串 | 进度条的颜色 | gray80 |
+ | 自动开始 | 布尔值 | 如果为“true”,则组件加载时进度条动画自动开始 | `真` |
-## Circular Progress Bar
+## 圆形进度条
-Indicates the progress of a task, often used in loading screens or areas where you want to communicate ongoing processes to the user.
+指示任务的进展,通常用于加载屏幕或您希望向用户传达正在进行的过程的地方。
-
+
```jsx
import { CircularProgressBar } from "@/ui/feedback/progress-bar/components/CircularProgressBar";
@@ -56,11 +56,11 @@ Indicates the progress of a task, often used in loading screens or areas where y
```
-
- | Props | Type | Description | Default |
- | -------- | ------ | ------------------------------------- | ------------ |
- | size | number | The size of the circular progress bar | 50 |
- | barWidth | number | The width of the progress bar line | 5 |
- | barColor | string | The color of the progress bar | currentColor |
+
+ | 属性 | 类型 | 描述 | 默认 |
+ | -------- | --- | -------- | ------------ |
+ | 大小 | 数字 | 圆形进度条的大小 | 50 |
+ | barWidth | 数字 | 进度条线的宽度 | 5 |
+ | barColor | 字符串 | 进度条的颜色 | currentColor |
diff --git a/packages/twenty-docs/l/zh/user-guide/ai/capabilities/ai-agents.mdx b/packages/twenty-docs/l/zh/user-guide/ai/capabilities/ai-agents.mdx
index 71282473ab..23d6f0c601 100644
--- a/packages/twenty-docs/l/zh/user-guide/ai/capabilities/ai-agents.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/ai/capabilities/ai-agents.mdx
@@ -1,34 +1,34 @@
---
-title: AI Agents
-description: Integrate AI capabilities directly into your automation workflows.
+title: AI 代理
+description: 将 AI 功能直接集成到您的自动化工作流中。
---
- This feature is in development and will be available in beta soon.
+ 此功能目前正在开发中,并将很快以测试版提供。
-## Overview
+## 概览
-Integrate AI capabilities directly into your automation workflows for intelligent data processing and decision-making.
+将 AI 功能直接集成到您的自动化工作流中,以实现智能数据处理和决策。
-## Capabilities
+## 功能
-| Feature | Description |
-| ------------------- | ------------------------------------------------ |
-| **AI actions** | Add AI-powered steps to any workflow |
-| **Data enrichment** | Automatically enhance records with external data |
-| **Classification** | Categorize records based on content analysis |
-| **Summarization** | Generate summaries from text fields |
-| **Custom prompts** | Define exactly how AI processes your data |
+| 功能 | 描述 |
+| --------- | ------------------- |
+| **AI 操作** | 将 AI 驱动的步骤添加到任何工作流中 |
+| **数据充实** | 自动使用外部数据充实记录 |
+| **分类** | 基于内容分析对记录进行分类 |
+| **摘要** | 从文本字段生成摘要 |
+| **自定义提示** | 精确定义 AI 如何处理您的数据 |
-## Use Cases
+## 使用场景
-* **Lead scoring**: Automatically score and prioritize inbound leads
-* **Data cleanup**: Standardize company names and contact information
-* **Email drafts**: Generate follow-up emails based on meeting notes
-* **Record routing**: Assign records to the right team member based on content
+* **线索评分**:自动为入站线索打分并设定优先级
+* **数据清理**:标准化公司名称和联系信息
+* **电子邮件草稿**:基于会议记录生成后续电子邮件
+* **记录路由**:根据内容将记录分配给合适的团队成员
-## Related
+## 相关内容
-* [Workflows Overview](/l/zh/user-guide/workflows/overview) — automation basics
-* [AI Permissions](/l/zh/user-guide/ai/capabilities/permissions-access-control) — access control for AI agents
+* [工作流概览](/l/zh/user-guide/workflows/overview) — 自动化基础
+* [AI 权限](/l/zh/user-guide/ai/capabilities/permissions-access-control) — AI 代理的访问控制
diff --git a/packages/twenty-docs/l/zh/user-guide/ai/capabilities/ai-chatbot.mdx b/packages/twenty-docs/l/zh/user-guide/ai/capabilities/ai-chatbot.mdx
index d7cbbc04fc..1037d798a8 100644
--- a/packages/twenty-docs/l/zh/user-guide/ai/capabilities/ai-chatbot.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/ai/capabilities/ai-chatbot.mdx
@@ -1,41 +1,41 @@
---
-title: AI Chatbot
-description: An intelligent assistant that helps you interact with your CRM data using natural language.
+title: AI 聊天机器人
+description: 一个智能助手,帮助你使用自然语言与 CRM 数据进行交互。
---
- This feature is in development and will be available in beta soon.
+ 此功能目前正在开发中,并将很快以测试版提供。
-## Overview
+## 概览
-An intelligent assistant that helps you interact with your CRM data using natural language.
+一个智能助手,帮助你使用自然语言与 CRM 数据进行交互。
-## Capabilities
+## 功能
-| Feature | Description |
-| ---------------------------- | ------------------------------------------------------------------------- |
-| **Natural language queries** | Ask questions in plain English instead of building filters |
-| **Full data access** | Query records, relationships, and metrics across your workspace |
-| **Page context** | Reference "this company" or "this opportunity" based on your current view |
-| **Conversational** | Follow-up questions maintain context from previous queries |
+| 功能 | 描述 |
+| ---------- | ------------------------ |
+| **自然语言查询** | 无需构建筛选器,直接用英文提问 |
+| **完全数据访问** | 在你的工作区内查询记录、关系和指标 |
+| **页面上下文** | 可根据你当前的视图引用“这家公司”或“这个商机” |
+| **对话式** | 后续问题会保留之前查询的上下文 |
-## Example Interactions
+## 交互示例
-### Finding Records
+### 查找记录
-* "Show me all opportunities over $50,000"
-* "Find contacts I haven't emailed in 2 weeks"
-* "List companies in the healthcare industry"
+* "显示所有超过 $50,000 的商机"
+* "查找我过去 2 周未发送过电子邮件的联系人"
+* "列出医疗保健行业的公司"
-### Getting Insights
+### 获取洞察
-* "What's my total pipeline value?"
-* "How many deals closed last month?"
-* "Which stage has the most stuck opportunities?"
+* "我的销售管道总价值是多少?"
+* "上个月成交了多少笔交易?"
+* "哪个阶段滞留的商机最多?"
-### Using Page Context
+### 使用页面上下文
-* "Summarize my interactions with this person" (on a contact page)
-* "What opportunities are linked to this company?" (on a company page)
-* "When was this deal last updated?" (on an opportunity page)
+* "总结我与此人的互动" (在联系人页面)
+* "与这家公司关联的商机有哪些?" (在公司页面)
+* "这笔交易上次是什么时候更新的?" (在商机页面)
diff --git a/packages/twenty-docs/l/zh/user-guide/ai/capabilities/permissions-access-control.mdx b/packages/twenty-docs/l/zh/user-guide/ai/capabilities/permissions-access-control.mdx
index 6766a8557e..7bddda29f7 100644
--- a/packages/twenty-docs/l/zh/user-guide/ai/capabilities/permissions-access-control.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/ai/capabilities/permissions-access-control.mdx
@@ -1,35 +1,35 @@
---
-title: Permissions & Access Control
-description: Control what AI agents can access and modify in your workspace.
+title: 权限与访问控制
+description: 控制 AI 代理在您的工作区中可以访问和修改的内容。
---
-## Overview
+## 概览
-AI agents respect your existing permission structure. This is particularly important for teams who want to control exactly what automated AI processes can access or modify in their workspace.
+AI 代理遵循您现有的权限结构。 对于希望精确控制自动化 AI 流程在其工作区中能够访问或修改内容的团队来说,这一点尤为重要。
-## Assign a Role to an AI Agent
+## 将角色分配给 AI 代理
-1. Go to **Settings → Roles**
-2. Click on the role you want to assign
-3. Open the **Assignment** tab
-4. Under **AI Agents**, click **+ Assign to AI agent**
-5. Select the AI agent from the list
-6. Confirm the assignment
+1. 进入 **设置 → 角色**
+2. 单击您要分配的角色
+3. 打开 **分配** 选项卡
+4. 在 **AI 代理** 下,单击 **+ 分配给 AI 代理**
+5. 从列表中选择 AI 代理
+6. 确认分配
-## Why Assign Roles to AI Agents?
+## 为什么要将角色分配给 AI 代理?
-| Benefit | Description |
-| ---------------- | ------------------------------------------------- |
-| **Security** | Limit what data AI agents can access or modify |
-| **Compliance** | Ensure AI only processes the data it needs |
-| **Control** | Prevent unintended actions from AI automations |
-| **Auditability** | Track which actions were performed by which agent |
+| 优势 | 描述 |
+| -------- | ------------------ |
+| **安全** | 限制 AI 代理可以访问或修改的数据 |
+| **合规** | 确保 AI 代理仅处理其所需的数据 |
+| **控制** | 防止 AI 自动化执行非预期操作 |
+| **可审计性** | 跟踪各项操作由哪个 AI 代理执行 |
- For AI agents running within workflows, role assignment ensures the agent cannot access or modify data outside its intended scope—even if the workflow has broader permissions.
+ 对于在工作流中运行的 AI 代理,角色分配可确保该代理无法访问或修改其预期范围之外的数据—即使该工作流具有更广泛的权限。
-## Related
+## 相关
-* [Permissions](/l/zh/user-guide/permissions-access/capabilities/permissions) — detailed information on creating and managing roles
-* [AI Agents](/l/zh/user-guide/ai/capabilities/ai-agents) — AI capabilities in workflows
+* [权限](/l/zh/user-guide/permissions-access/capabilities/permissions) — 有关创建和管理角色的详细信息
+* [AI 代理](/l/zh/user-guide/ai/capabilities/ai-agents) — 工作流中的 AI 功能
diff --git a/packages/twenty-docs/l/zh/user-guide/ai/how-tos/ai-faq.mdx b/packages/twenty-docs/l/zh/user-guide/ai/how-tos/ai-faq.mdx
index 774eae15c4..aebd682b57 100644
--- a/packages/twenty-docs/l/zh/user-guide/ai/how-tos/ai-faq.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/ai/how-tos/ai-faq.mdx
@@ -1,29 +1,29 @@
---
-title: AI FAQ
-description: Frequently asked questions about AI features in Twenty.
+title: AI 常见问题
+description: 关于 Twenty 中 AI 功能的常见问题。
---
-
- AI features are currently in development and will be released in beta soon. Stay tuned for updates!
+
+ AI 功能目前正在开发中,并将很快以测试版发布。 敬请期待后续更新!
-
- We're building two main AI capabilities:
+
+ 我们正在构建两项主要的 AI 功能:
- 1. **AI Chatbot**: A context-aware assistant that can access your Twenty data and help you with queries
- 2. **AI Agents in Workflows**: Intelligent automation that can process data, make decisions, and execute tasks within your workflows
+ 1. **AI 聊天机器人**:一个具备上下文感知能力的助手,可访问你的 Twenty 数据并协助你进行查询
+ 2. **工作流中的 AI 代理**:智能自动化功能,能够在你的工作流内处理数据、做出决策并执行任务
-
- AI agents will operate under the permission system. You can assign specific roles to AI agents under **Settings → Roles**, giving you full control over what data they can access and what actions they can perform.
+
+ AI 代理将在权限系统下运行。 你可以在 **设置 → 角色** 下为 AI 代理分配特定角色,从而完全控制其可访问的数据以及可以执行的操作。
-
- AI actions will consume workflow credits based on the complexity of the task and the AI model used. More details will be available when the features launch.
+
+ AI 操作将根据任务的复杂度和所使用的 AI 模型消耗工作流额度。 功能上线时将提供更多详细信息。
-
- Initially, Twenty will use built-in AI models. Support for custom or external AI models may be added in future releases based on user feedback.
+
+ 最初,Twenty 将使用内置的 AI 模型。 根据用户反馈,未来版本可能会加入对自定义或外部 AI 模型的支持。
diff --git a/packages/twenty-docs/l/zh/user-guide/ai/overview.mdx b/packages/twenty-docs/l/zh/user-guide/ai/overview.mdx
index bd4ee68a79..a195780dc9 100644
--- a/packages/twenty-docs/l/zh/user-guide/ai/overview.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/ai/overview.mdx
@@ -1,62 +1,62 @@
---
title: AI
-description: AI-powered features coming soon to Twenty.
+description: AI 驱动功能即将在 Twenty 上线。
---
-## What's Coming
+## 即将推出的功能
-Twenty is building AI capabilities to help your team work smarter. We're focusing on two major areas:
+Twenty 正在构建 AI 能力,帮助你的团队更高效地工作。 我们专注于两个主要领域:
-### 1. AI Chatbot
+### 1. AI 聊天机器人
-A conversational assistant that understands your context and has access to all your Twenty data.
+一款能理解你的上下文并可访问你在 Twenty 中所有数据的对话式助手。
-**Key capabilities:**
+**关键功能:**
-* **Full data access**: Query any record, relationship, or metric in your workspace
-* **Page context awareness**: Reference "this company" or "this opportunity" based on where you are in Twenty
-* **Natural language**: Ask questions and get answers without navigating menus
+* **完整数据访问**:查询你工作区中的任何记录、关系或指标
+* **页面上下文感知**:可根据你在 Twenty 中所处的位置引用 "this company" 或 "this opportunity"
+* **自然语言**:无需在菜单中导航即可提问并获得答案
-**Example prompts:**
+**示例提示:**
-* "What opportunities are closing this month?"
-* "Which deals have been in Negotiation for more than 30 days?"
-* "Summarize my interactions with this person"
+* "本月将要成交的商机有哪些?"
+* "哪些交易在谈判阶段已超过 30 天?"
+* "总结我与此人的互动"
-### 2. AI Agents in Workflows
+### 2. 工作流中的 AI 代理
-Extend your workflows with AI-powered actions and autonomous agents.
+通过由 AI 驱动的操作和自主代理扩展你的工作流。
-**Key capabilities:**
+**关键功能:**
-* **AI actions**: Use AI to enrich data, classify records, generate summaries, and more
-* **Autonomous agents**: Let agents execute multi-step tasks within a workflow
-* **Custom prompts**: Define exactly how AI should process your data
+* **AI 操作**:使用 AI 丰富数据、分类记录、生成摘要等
+* **自主代理**:允许代理在工作流内执行多步任务
+* **自定义提示词**:精确定义 AI 应如何处理你的数据
-**Use cases:**
+**使用场景:**
-* Automatically categorize inbound leads
-* Enrich company data from public sources
-* Generate follow-up email drafts based on meeting notes
-* Score opportunities based on engagement patterns
+* 自动分类入站线索
+* 从公共来源丰富公司数据
+* 基于会议记录生成后续电子邮件草稿
+* 根据互动模式为商机评分
-## Permissions and Access Control
+## 权限与访问控制
-AI agents will be managed through the existing permissions system:
+AI 代理将通过现有的权限系统进行管理:
-1. Go to **Settings → Roles**
-2. Configure which data each AI agent can access
-3. Set read/write permissions per object
+1. 进入 **设置 → 角色**
+2. 配置每个 AI 代理可访问的数据
+3. 为每个对象设置读/写权限
-This ensures AI agents respect your data governance policies and only access what they need.
+这可确保 AI 代理遵守你的数据治理策略,并且只访问其所需的数据。
-## Stay Updated
+## 保持更新
-We'll update this section as AI features become available. In the meantime:
+随着 AI 功能上线,我们将更新本节内容。 在此期间:
-* Follow our [GitHub](https://github.com/twentyhq/twenty) for development updates
-* Join our [Discord](https://discord.gg/twenty) to share feedback and feature requests
+* 关注我们的 [GitHub](https://github.com/twentyhq/twenty) 获取开发更新
+* 加入我们的 [Discord](https://discord.gg/twenty) 分享反馈和功能需求
diff --git a/packages/twenty-docs/l/zh/user-guide/billing/capabilities/pricing-plans.mdx b/packages/twenty-docs/l/zh/user-guide/billing/capabilities/pricing-plans.mdx
index 90bf7e7cbb..b4f92c64fb 100644
--- a/packages/twenty-docs/l/zh/user-guide/billing/capabilities/pricing-plans.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/billing/capabilities/pricing-plans.mdx
@@ -1,79 +1,79 @@
---
-title: Pricing Plans
-description: Learn about Twenty's pricing plans and how to switch between them.
+title: 定价方案
+description: 了解 Twenty 的定价方案以及如何在它们之间切换。
---
-## Overview
+## 概览
-Twenty offers flexible pricing to fit teams of all sizes, whether you prefer cloud hosting or self-hosting.
+无论您选择云托管还是自托管,Twenty 为各种规模的团队提供灵活的定价。
-## Cloud Plans
+## 云端方案
-### Pro (Cloud)
+### Pro(云端)
-For teams ready to scale:
+适用于准备扩展的团队:
-* All core CRM features
-* Email and calendar sync
-* Workflows and automations
-* Standard support
+* 所有核心 CRM 功能
+* 电子邮件和日历同步
+* 工作流和自动化
+* 标准支持
- Premium features (SSO and row-level permissions) are not included in the Pro plan.
+ Pro 计划不包含高级功能(SSO 和行级权限)。
-### Organization (Cloud)
+### 组织计划(云端)
-For larger teams with advanced needs:
+适用于具有高级需求的大型团队:
-* Everything in Pro
-* **Premium features**: SSO integration and row-level permissions
-* Priority support
+* 包含 Pro 的全部内容
+* **高级功能**:SSO 集成和行级权限
+* 优先支持
-## Self-Hosted Plans
+## 自托管方案
-### Free (Self-Hosted)
+### 免费(自托管)
-Host Twenty on your own infrastructure at no cost:
+在您自己的基础设施上免费部署 Twenty:
-* All Pro features included
-* Community support via Discord
-* Full control over your data
+* 包含所有 Pro 功能
+* 通过 Discord 获得社区支持
+* 对您的数据拥有完全控制权
-### Organization (Self-Hosted)
+### 组织计划(自托管)
-For teams who need premium features while self-hosting:
+适用于在自托管同时需要高级功能的团队:
-* All Pro features
-* **Premium features**: SSO integration and row-level permissions
-* Twenty team support
-* No requirement to publish custom code as open-source before distributing
+* 所有 Pro 功能
+* **高级功能**:SSO 集成和行级权限
+* Twenty 团队支持
+* 分发前无需将自定义代码开源
-## Premium Features
+## 高级功能
-Premium features are only available on the Organization plans (Cloud or Self-Hosted):
+高级功能仅在组织计划(云端或自托管)中提供:
-* **SSO integration**: Single Sign-On with your identity provider
-* **Row-level permissions**: Fine-grained access control at the record level
+* **SSO 集成**:与您的身份提供商进行单点登录
+* **行级权限**:在记录级别进行细粒度访问控制
-## Switching Plans
+## 切换计划
-### Upgrade to Organization
+### 升级到组织计划
-1. Go to **Settings → Billing**
-2. Click **Switch to Organization**
-3. Confirm your upgrade
+1. 前往**设置 → 结算**
+2. 点击**切换到组织计划**
+3. 确认升级
-### Downgrade to Pro
+### 降级到 Pro
-Contact support to downgrade your plan.
+联系支持以将您的计划降级。
-### Switch to Yearly Billing
+### 切换至年度计费
-1. Go to **Settings → Billing**
-2. Click **Switch to Yearly**
-3. Save with annual billing
+1. 前往**设置 → 结算**
+2. 点击**切换至年度计划**
+3. 使用年度计费可节省费用
-### Switch to Monthly Billing
+### 切换为按月计费
-Contact support to switch back to monthly billing.
+联系支持以切换回按月计费。
diff --git a/packages/twenty-docs/l/zh/user-guide/billing/capabilities/workflow-credits.mdx b/packages/twenty-docs/l/zh/user-guide/billing/capabilities/workflow-credits.mdx
index 0ce8e3be72..ff85d6d903 100644
--- a/packages/twenty-docs/l/zh/user-guide/billing/capabilities/workflow-credits.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/billing/capabilities/workflow-credits.mdx
@@ -1,49 +1,49 @@
---
-title: Workflow Credits
-description: Understanding workflow credits, consumption, and how to purchase more.
+title: 工作流程积分
+description: 了解工作流程积分、消耗情况,以及如何购买更多。
---
-## Overview
+## 概览
-Credits power your workflow automations in Twenty. Every workflow action consumes credits based on its complexity.
+在 Twenty 中,积分为您的工作流程自动化提供支持。 每个工作流程操作会根据其复杂性消耗积分。
-## Credit Allocation
+## 积分分配
-Credits are based on your billing cycle, not your plan:
+积分以您的计费周期为准,而非您的计划:
-| Billing Cycle | Credits |
-| ------------- | --------------- |
-| Monthly | 5 million/month |
-| Yearly | 50 million/year |
+| 计费周期 | 积分 |
+| ---- | ------- |
+| 每月 | 500万/月 |
+| 年度计划 | 5000万/年 |
- The 5 million monthly credits are designed to empower you to run automations without worrying about costs. For most workflows using standard actions, this is more than enough. You'll only need additional credits when running advanced code nodes or AI-powered features.
+ 每月500万积分旨在让您无需担心成本即可运行自动化。 对于使用标准操作的大多数工作流程,这已经绰绰有余。 仅在运行高级代码节点或由 AI 驱动的功能时,您才需要额外积分。
-## Credit Consumption
+## 积分消耗
-Different actions consume different amounts of credits:
+不同的操作会消耗不同数量的积分:
-| Action Type | Credit Usage |
-| ------------------------------------------------------- | ----------------------- |
-| **Basic operations** (search, update, create records) | Minimal |
-| **Complex operations** (code nodes, external API calls) | More credits |
-| **AI prompts** (coming soon) | Variable based on usage |
+| 操作类型 | 信用使用情况 |
+| ------------------------- | -------- |
+| **基础操作** (搜索、更新、创建记录) | 极少 |
+| **复杂操作** (代码节点、外部 API 调用) | 更多积分 |
+| **人工智能提示** (即将推出) | 根据使用情况而定 |
-Credits are deducted in real-time when workflows execute.
+当工作流执行时,积分会实时扣除。
-## Monitoring Usage
+## 监控使用情况
-Track your credit consumption:
+跟踪您的积分消耗:
-1. Go to **Settings → Billing**
-2. View your current usage and remaining credits
-3. Monitor trends to plan for additional credits if needed
+1. 前往**设置 → 结算**
+2. 查看您当前的使用量和剩余积分
+3. 监控趋势,以便在需要时规划额外积分
-## Purchasing Additional Credits
+## 购买额外的积分
-Need more credits?
+需要更多积分吗?
-1. Go to **Settings → Billing**
-2. Click on the option to purchase additional credit packs
-3. Select the amount you need
+1. 前往**设置 → 结算**
+2. 点击相应选项购买额外的积分包
+3. 选择您需要的数量
diff --git a/packages/twenty-docs/l/zh/user-guide/billing/how-tos/billing-faq.mdx b/packages/twenty-docs/l/zh/user-guide/billing/how-tos/billing-faq.mdx
index ee1d560cb1..77ec5b8594 100644
--- a/packages/twenty-docs/l/zh/user-guide/billing/how-tos/billing-faq.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/billing/how-tos/billing-faq.mdx
@@ -1,86 +1,86 @@
---
-title: Billing FAQ
-description: Frequently asked questions about Twenty pricing and billing.
+title: 账单常见问题
+description: 关于 Twenty 定价和账单的常见问题。
---
-## Pricing
+## 定价
-
- Yes, you can use Twenty for free while self-hosting. You will get access to everything included in the Pro (Cloud) plan, except the support from our core-team. Support is accessible via our Discord community.
+
+ 是的,自托管时您可以免费使用Twenty。 您将获得 Pro(云)计划所包含的全部内容,但不包括我们核心团队的支持。 支持可通过我们的Discord社区获得。
- If you want to self-host and need the Premium features (SSO and row-level permissions), you can choose the paid Organization (Self-Hosted) license. This also includes support from the Twenty team and removes the requirement to publish custom code as open-source before distributing.
+ 如果您希望自行托管并需要高级功能(SSO 和行级权限),可以选择付费的 Organization(自托管)许可证。 这还包括来自 Twenty 团队的支持,并取消在分发前将自定义代码以开源形式发布的要求。
-
- Premium features are only available on the Organization plans (Cloud or Self-Hosted):
+
+ 高级功能仅适用于 Organization 计划(云端或自托管):
- * **SSO integration**: Single Sign-On with your identity provider
- * **Row-level permissions**: Fine-grained access control at the record level
+ * **SSO 集成**:与您的身份提供商进行单点登录
+ * **行级权限**:在记录级别进行细粒度的访问控制
-
- We do not offer free seats. Pricing is per user and each user needs a licence to access Twenty.
+
+ 我们不提供免费席位。 定价是按用户计费的,每位用户需要许可证才能访问Twenty。
-
- You can do so under `Settings → Billing`. Then click on `Switch to Organization`.
+
+ 您可以在`设置 → 账单`下进行操作。 然后点击`切换到组织计划`。
-
- Please reach out to our team directly via the Support, there is no easy way to do this using the UI at the moment.
+
+ 请直接通过支持联系我们的团队,目前在界面上没有简单的方法来实现。
-
- You can do so under `Settings → Billing`. Then click on `Switch to Yearly`.
+
+ 您可以在`设置 → 账单`下进行操作。 然后点击`切换到包年`。
-
- Please reach out to our team directly via the Support, there is no easy way to do this using the UI at the moment.
+
+ 请直接通过支持联系我们的团队,目前在界面上没有简单的方法来实现。
-
- You will find this under `Settings → Billing`.
+
+ 您将在`设置 → 账单`下找到此内容。
-
- The number of credits depends on your billing cycle, not your plan:
+
+ 积分以您的计费周期为准,而非您的计划:
- * **Monthly subscriptions**: 5 million credits per month
- * **Yearly subscriptions**: 50 million credits per year
+ * **按月订阅**:每月500万积分
+ * **按年订阅**:每年5000万积分
-
- Each workflow action consumes credits based on its complexity:
+
+ 每个工作流程操作根据其复杂性消耗积分:
- * **Basic internal operations** (such as search, update, create records) consume very few credits
- * **More complex operations** like code nodes and requests to external services consume more credits
- * **AI prompts** (coming soon!) will also consume more credits based on usage
+ * **基本内部操作**(例如搜索、更新、创建记录)消耗的积分很少
+ * **更复杂的操作**如代码节点和对外部服务的请求消耗更多积分
+ * **人工智能提示**(即将推出) 也将根据使用消耗更多积分
- Credits are deducted in real-time when workflows execute. You can monitor your usage in **Settings → Billing** to track consumption and remaining credits.
+ 当工作流执行时,积分会实时扣除。 您可以在**设置 → 账单**中监控您的使用情况以跟踪消耗和剩余积分。
-
- You can buy additional credits under `Settings → Billing`.
+
+ 您可以在`设置 → 账单`下购买额外的积分。
-## Billing
+## 账单
-
- You can do so under `Settings → Billing`.
+
+ 您可以在`设置 → 账单`下进行操作。
-
- You can do so under `Settings → Billing`. Then click on `View billing details`. You'll be able to add a new payment method there.
+
+ 您可以在`设置 → 账单`下进行操作。 然后点击`查看账单详情`。 在那里您可以添加新的支付方式。
-
- You can do so under `Settings → Billing`. Then click on `View billing details`. You'll be able to edit the billing information there.
+
+ 您可以在`设置 → 账单`下进行操作。 然后点击`查看账单详情`。 在那里您可以编辑账单信息。
-
- You can do so under `Settings → Billing`. Then click on `View billing details`. You'll see all your invoices at the bottom of the screen.
+
+ 您可以在`设置 → 账单`下进行操作。 然后点击`查看账单详情`。 您将看到屏幕底部的所有发票。
diff --git a/packages/twenty-docs/l/zh/user-guide/billing/overview.mdx b/packages/twenty-docs/l/zh/user-guide/billing/overview.mdx
index a8d0209165..6a89762b60 100644
--- a/packages/twenty-docs/l/zh/user-guide/billing/overview.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/billing/overview.mdx
@@ -1,45 +1,45 @@
---
-title: Billing
-description: Understand Twenty pricing and manage your subscription.
+title: 账单
+description: 了解 Twenty 的定价并管理你的订阅。
image: /images/user-guide/setup/pricing.png
---
-
+
-Twenty offers flexible pricing plans to fit your team's needs. Manage your subscription, track workflow credits, and access invoices all from **Settings → Billing**.
+Twenty 提供灵活的定价方案,满足你的团队需求。 你可以在 **设置 → 账单** 中管理订阅、跟踪工作流额度并访问发票。
-## What's in this section
+## 本节内容
-
- Learn about Twenty's pricing plans and what's included.
+
+ 了解 Twenty 的定价方案及其包含内容。
-
- Frequently asked questions about pricing and billing.
+
+ 关于定价和账单的常见问题。
-## At a glance
+## 一览
-| Plan | Key Features |
-| ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
-| **Free (Self-Hosted)** | All Pro features, community support |
-| **Pro (Cloud)** | Everything apart from the Premium features (SSO and row-level permissions), standard support |
-| **Organization (Cloud)** | All from Pro + the Premium features (SSO and row-level permissions), priority support |
-| **Organization (Self-Hosted)** | All from Pro + the Premium features (SSO, row-level permissions), Twenty team support, not required to publish your custom code as open-source before distributing |
+| 计划 | 关键功能 |
+| ----------- | -------------------------------------------------------------- |
+| **免费(自托管)** | 包含所有 Pro 功能,社区支持 |
+| **Pro(云端)** | 除高级功能(SSO 和行级权限)外的所有功能,提供标准支持 |
+| **组织(云端)** | 包含 Pro 的所有功能 + 高级功能(SSO 和行级权限),优先支持 |
+| **组织(自托管)** | 包含 Pro 的所有功能 + 高级功能(SSO、行级权限),Twenty 团队支持,分发前无需将你的自定义代码以开源形式发布 |
-## Quick answers
+## 快速解答
-**Where do I manage billing?**
-Go to **Settings → Billing** to view your plan, update payment methods, and access invoices.
+**我在哪里管理账单?**
+前往 **设置 → 账单** 查看你的套餐、更新支付方式并访问发票。
-**Can I use Twenty for free?**
-Yes! Self-host Twenty and get all Pro features at no cost.
+**我可以免费使用 Twenty 吗?**
+可以! 自托管 Twenty,可免费获得所有 Pro 功能。
-**How do I upgrade?**
-Go to **Settings → Billing** and click **Switch to Organization** or **Switch to Yearly**.
+**如何升级?**
+前往 **设置 → 账单**,点击 **切换到组织版** 或 **切换为年付**。
-For more questions, see the [Billing FAQ](/l/zh/user-guide/billing/how-tos/billing-faq).
+更多问题,请查看[账单常见问题](/l/zh/user-guide/billing/how-tos/billing-faq)。
diff --git a/packages/twenty-docs/l/zh/user-guide/calendar-emails/capabilities/calendar.mdx b/packages/twenty-docs/l/zh/user-guide/calendar-emails/capabilities/calendar.mdx
index 00485bf885..858663602b 100644
--- a/packages/twenty-docs/l/zh/user-guide/calendar-emails/capabilities/calendar.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/calendar-emails/capabilities/calendar.mdx
@@ -1,43 +1,43 @@
---
-title: Calendar
-description: Understanding calendar integration features in Twenty.
+title: 日历
+description: 了解 Twenty 中的日历集成功能。
---
-**Note**: To connect your calendar and configure sync settings, visit [Email & Calendar Setup](/l/zh/user-guide/calendar-emails/overview).
+**注意**:要连接您的日历并配置同步设置,请访问[电子邮件和日历设置](/l/zh/user-guide/calendar-emails/overview)。
-## How Calendar Integration Works
+## 日历集成如何运作
-Twenty automatically syncs your calendar events and links them to the relevant CRM records, giving you a complete view of your meeting history with contacts and companies.
+Twenty 会自动同步您的日历事件,并将其链接到相关的 CRM 记录,让您全面了解与联系人和公司的会议历史。
-## Calendar Tab
+## 日历选项卡
-Next to the Emails tab on records, you'll find a `Calendar` tab that contains the history of meetings scheduled with the record.
+在记录的“邮件”选项卡旁,您将看到一个`日历`选项卡,其中包含与该记录安排的会议历史。
-### Available For
+### 适用于
-* **People**: View all meetings scheduled with a specific contact
-* **Companies**: See all meetings related to a company and its employees
-* **Opportunities**: Access meeting history related to the company linked to this opportunity
+* **联系人**:查看与特定联系人安排的所有会议
+* **公司**:查看与公司及其员工有关的所有会议
+* **机会**:访问与该机会所关联公司的会议历史
-### Viewing Meeting History
+### 查看会议历史
-1. **Navigate to a Record**: Go to any Person, Company, or Opportunity record
-2. **Select the Calendar Tab**: Click on the `Calendar` tab next to the Emails tab
-3. **Browse Meeting History**: View all scheduled meetings and their details
-4. **Access Meeting Context**: See meeting participants, times, and related information
+1. **导航至某一记录**:前往任何联系人、公司或机会记录
+2. **选择日历选项卡**:点击`日历`选项卡,位于邮件选项卡旁边
+3. **浏览会议历史**:查看所有安排的会议及其详细信息
+4. **访问会议上下文**:查看会议参与者、时间和相关信息
-## Visibility Settings
+## 可见性设置
-Calendar data follows the same visibility settings as emails, ensuring consistent privacy controls across both communication channels.
+日历数据遵循与电子邮件相同的可见性设置,确保在这两种通信渠道中保持一致的隐私控制。
-## What Gets Synced
+## 同步内容
-* **External Meetings**: All meetings with contacts outside your organization
-* **Automatic Linking**: Meetings connect to existing People and Company records based on attendee email addresses
-* **Meeting Details**: Subject, time, duration, and participants
-* **Updates**: New calendar events sync automatically
+* **外部会议**:与组织外部联系人的所有会议
+* **自动链接**:根据与会者的电子邮件地址,将会议链接到现有的联系人和公司记录
+* **会议详细信息**:主题、时间、时长和参与者
+* **更新**:新的日历事件会自动同步
-## What Doesn't Get Synced
+## 不同步的内容
-* **Internal Meetings**: Meetings with only colleagues (same domain) remain private
-* **Private Events**: Events marked as private in your calendar
+* **内部会议**:仅与同事(同一域)进行的会议保持私密
+* **私密事件**:在您的日历中标记为私密的事件
diff --git a/packages/twenty-docs/l/zh/user-guide/calendar-emails/capabilities/mailbox.mdx b/packages/twenty-docs/l/zh/user-guide/calendar-emails/capabilities/mailbox.mdx
index 336d9ee03e..666081b781 100644
--- a/packages/twenty-docs/l/zh/user-guide/calendar-emails/capabilities/mailbox.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/calendar-emails/capabilities/mailbox.mdx
@@ -1,85 +1,95 @@
---
-title: Mailbox
-description: Understanding email integration features in Twenty.
+title: 邮箱
+description: 了解 Twenty 中的电子邮件集成功能。
---
-**Note**: To connect your email accounts and configure sync settings, visit [Email & Calendar Setup](/l/zh/user-guide/calendar-emails/overview).
+**注意**:要连接您的电子邮件账户并配置同步设置,请访问[电子邮件和日历设置](/l/zh/user-guide/calendar-emails/overview)。
-## How Email Integration Works
+## 电子邮件集成如何运作
-Twenty automatically links emails from your connected mailboxes to the relevant CRM records, keeping all communication history in one place.
+Twenty自动将来自您已连接邮箱的电子邮件链接到相关的CRM记录,将所有通信历史保存在一个位置。
-### Objects Where Emails Can Be Found
+### 包含电子邮件的对象
-Email conversations appear in three main objects:
+电子邮件会话出现在三个主要对象中:
-* **People**: View all emails exchanged with a specific contact
-* **Companies**: See all emails related to a company and its employees
-* **Opportunities**: Access email threads related to the company linked to this opportunity. Email threads from individual people on the opportunity are not shown yet.
+* **联系人**:查看与特定联系人的所有电子邮件
+* **公司**:查看与公司及其员工有关的所有电子邮件
+* **机会**:访问与该机会关联的公司的电子邮件线程。 来自参与该商机的个人的电子邮件会话尚未显示。
-### Viewing Email Threads
+### 查看电子邮件线程
-1. **Navigate to a Record**: Go to any Person, Company, or Opportunity record
-2. **Select the Emails Tab**: Click on the `Emails` tab to view synced emails
-3. **Open an Email Thread**: Click on any email to open and read the full conversation
-4. **Browse History**: Scroll through the complete email history with that contact
+1. **导航至某一记录**:前往任何联系人、公司或机会记录
+2. **选择邮件选项卡**:单击`邮件`选项卡以查看同步的电子邮件
+3. **打开电子邮件线程**:点击任意电子邮件以打开并阅读完整的对话
+4. **浏览历史记录**:滚动查看该联系人的完整电子邮件历史
-## What You'll See
+## 您将会看到什么
-### Email Thread View
+### 电子邮件线程视图
-When you open an email thread, you can:
+打开电子邮件线程时,您可以:
-* **Read Full Conversations**: See the complete email exchange
-* **View Participants**: See all people involved in the email thread
-* **Check Timestamps**: Know exactly when each email was sent
-* **Access Context**: Understand the full communication history
+* **阅读完整对话**:查看完整的电子邮件交流
+* **查看参与者**:查看电子邮件线程中所有参与者
+* **检查时间戳**:准确了解每封电子邮件的发送时间
+* **访问上下文**:了解完整的通讯历史
-### Email Visibility
+### 电子邮件可见性
-Depending on your mailbox settings, you might see:
+根据您的邮箱设置,您可能会看到:
-* **Full Content**: Complete email text and details
-* **Subject + Metadata**: Subject line, sender, recipient, and timestamp
-* **Metadata Only**: Basic information without email content
+* **完整内容**:完整的电子邮件文本和详细信息
+* **主题+元数据**:主题行、发件人、收件人和时间戳
+* **仅元数据**:没有电子邮件内容的基本信息
-## Email Sync Behavior
+## 电子邮件同步行为
-### What Gets Synced
+### 同步速率
-* **External Emails**: All emails with contacts outside your organization
-* **Automatic Linking**: Emails connect to existing People and Company records
-* **Multiple Addresses**: Emails from any address link to the same contact record
-* **Updates**: New emails appear within 5 minutes
+Twenty 导入邮件的速度约为**每分钟 400 封**。 该速率目前受 Gmail API 速率限制(其他提供商也有类似限制)。
-### What Doesn't Get Synced
+供参考:
-* **Internal Emails**: Emails between colleagues (same domain) remain private
-* **Group Emails**: Distribution lists and group emails are excluded
-* **Excluded Folders**: Folders you've chosen not to sync (configured under Settings → Accounts → Email)
+* 1,000 封邮件 → ~2.5 分钟
+* 10,000 封邮件 → ~25 分钟
+* 50,000 封邮件 → ~2 小时
-### Selective Folder Sync (Lab Feature)
+### 同步内容
-Control which email folders sync with Twenty:
+* **外部电子邮件**:与组织外部联系人的所有电子邮件
+* **自动链接**:将电子邮件连接到现有的联系人和公司记录
+* **多地址**:任何地址发来的电子邮件都链接到同一联系人记录
+* **更新**:新的电子邮件在5分钟内出现
-1. Enable `Message Folder` in Settings → Releases → Lab
-2. Configure folders under Settings → Accounts → Email
-3. Choose specific folders to include or exclude (Inbox, Sent, Archive, custom folders)
+### 不同步的内容
-## Troubleshooting Email Sync
+* **内部电子邮件**:同事之间(同一域)的电子邮件保持私人
+* **群发邮件**:分发列表和群发邮件被排除
+* **排除文件夹**:您选择不进行同步的文件夹(配置于 设置 → 帐户 → 电子邮件)
-### Common Sync Issues
+### 选择性文件夹同步
-* **Sync Delays**: Emails appear within 5 minutes, but initial imports take longer
-* **Missing Emails**: Check if:
- * Folders are excluded in Message Folder settings
- * Contact auto-creation is disabled (emails need existing Twenty records)
- * Email is from colleagues (same domain) or group lists
- * Mailbox is still completing initial sync
+控制哪些电子邮件文件夹与Twenty同步:
-### Email Limitations
+1. 前往**设置 → 账户**并选择您已连接的电子邮件账户
+2. 在电子邮件部分配置文件夹
+3. 选择特定文件夹进行包含或排除(收件箱、已发送、归档、自定义文件夹)
-* **System Folders**: Some email folders may not be available for sync
-* **Aliases**: Only true mailboxes can be connected (not email aliases)
+## 电子邮件同步故障排除
+
+### 常见同步问题
+
+* **同步延迟**:电子邮件在5分钟内出现,但初次导入可能需要更长时间
+* **丢失的电子邮件**:检查以下几项:
+ * 在您消息文件夹设置中排除的文件夹
+ * 自动创建联系人被禁用(电子邮件需要现有的Twenty记录)
+ * 电子邮件来自同事(同一域)或群发列表
+ * 邮箱仍在完成初次同步
+
+### 电子邮件限制
+
+* **系统文件夹**:某些电子邮件文件夹可能无法同步
+* **别名**:只能连接真实邮箱(而不是电子邮件别名)
diff --git a/packages/twenty-docs/l/zh/user-guide/calendar-emails/how-tos/can-i-book-meetings-from-twenty.mdx b/packages/twenty-docs/l/zh/user-guide/calendar-emails/how-tos/can-i-book-meetings-from-twenty.mdx
index edee83875d..e156493ac5 100644
--- a/packages/twenty-docs/l/zh/user-guide/calendar-emails/how-tos/can-i-book-meetings-from-twenty.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/calendar-emails/how-tos/can-i-book-meetings-from-twenty.mdx
@@ -1,28 +1,28 @@
---
-title: Can I Book Meetings from Twenty?
-description: Information about booking meetings directly from Twenty.
+title: 我可以从 Twenty 预订会议吗?
+description: 关于直接从 Twenty 预订会议的信息。
---
-## Current Status
+## 当前状态
-**No, Twenty does not currently support booking meetings directly from the platform.**
+**不,Twenty 目前不支持通过平台直接预订会议。**
-Twenty's calendar integration is designed to **sync and display** your existing calendar events, not to create new ones. All meeting scheduling should be done through your native calendar application (Google Calendar, Microsoft Outlook, etc.).
+Twenty 的日历集成旨在**同步并显示**你现有的日历事件,而非创建新的事件。 所有会议的安排都应通过你的原生日历应用(Google Calendar、Microsoft Outlook 等)完成。
-## What You Can Do
+## 你可以做什么
-* **View meeting history** on People, Companies, and Opportunities records
-* **See upcoming meetings** with contacts in your CRM
-* **Track meeting context** alongside email communications
-* **Auto-create contacts** from meeting participants
+* **在“人员”、“公司”和“机会”记录中查看会议历史**
+* **在你的 CRM 中查看与联系人的即将举行的会议**
+* **跟踪会议上下文**,与电子邮件沟通一并查看
+* **从会议参与者中自动创建联系人**
-## How to Schedule Meetings
+## 如何安排会议
-1. Use your native calendar app (Google Calendar, Outlook, etc.)
-2. Create the meeting as you normally would
-3. The meeting will automatically sync to Twenty within 5 minutes
-4. View the meeting on the relevant CRM records
+1. 使用你的原生日历应用(Google Calendar、Outlook 等)
+2. 像平常一样创建会议
+3. 会议将在 5 分钟内自动同步到 Twenty
+4. 在相关的 CRM 记录中查看该会议
-## Future Plans
+## 未来计划
-Meeting creation from within Twenty is on our roadmap. Join our [GitHub discussions](https://github.com/twentyhq/twenty/discussions) to share your use case and help prioritize this feature.
+在 Twenty 内创建会议已在我们的路线图上。 加入我们的[GitHub 讨论](https://github.com/twentyhq/twenty/discussions),分享你的用例并帮助我们为此功能确定优先级。
diff --git a/packages/twenty-docs/l/zh/user-guide/calendar-emails/how-tos/can-i-send-emails-from-twenty.mdx b/packages/twenty-docs/l/zh/user-guide/calendar-emails/how-tos/can-i-send-emails-from-twenty.mdx
index 2d68bf8721..0c1b666ce8 100644
--- a/packages/twenty-docs/l/zh/user-guide/calendar-emails/how-tos/can-i-send-emails-from-twenty.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/calendar-emails/how-tos/can-i-send-emails-from-twenty.mdx
@@ -1,44 +1,44 @@
---
-title: Can I Send Emails from Twenty?
-description: Information about sending emails directly from Twenty.
+title: 我可以从 Twenty 发送电子邮件吗?
+description: 关于直接从 Twenty 发送电子邮件的信息。
---
-## Current Status
+## 当前状态
-Twenty's email integration is designed to **sync and display** your email history. Emails cannot be composed or sent directly from Twenty's interface.
+Twenty 的电子邮件集成旨在**同步并显示**你的电子邮件历史记录。 无法在 Twenty 的界面中直接撰写或发送电子邮件。
-When you view an email thread on a record page and click **Reply**, you'll be redirected to the original thread in your mailbox (Gmail, Outlook, etc.). This is where you compose and send your reply.
+当你在记录页面查看电子邮件会话并点击**回复**时,你将被重定向到你邮箱(Gmail、Outlook 等)中的原始会话。 你将在那里撰写并发送回复。
-## What You Can Do Today
+## 你现在可以做什么
-* **View email history** on People, Companies, and Opportunities records
-* **Read full email threads** with contacts in your CRM
-* **Track communication context** alongside calendar events
-* **Auto-create contacts** from email interactions
-* **Reply via redirect** — click Reply to jump to your mailbox
+* **在“人员”、“公司”和“机会”记录中查看电子邮件历史**
+* **在你的 CRM 中阅读与联系人的完整电子邮件会话**
+* **与日历事件一并跟踪沟通上下文**
+* **从电子邮件互动中自动创建联系人**
+* **通过重定向进行回复** — 点击“回复”跳转到你的邮箱
-## Sending Emails via Workflows
+## 通过工作流发送电子邮件
-While you can't send emails manually from Twenty, you **can send emails automatically using Workflows**. This is useful for:
+虽然你不能从 Twenty 手动发送电子邮件,但你**可以使用工作流自动发送电子邮件**。 这在以下场景中很有用:
-* Automated follow-ups
-* Notifications to contacts
-* Triggered communications based on record changes
+* 自动跟进
+* 向联系人发送通知
+* 基于记录更改触发的沟通
-Emails sent via workflows go through your connected mailbox account.
+通过工作流发送的电子邮件将通过你已连接的邮箱账户发送。
-→ Learn about the [Send Email action](/l/zh/user-guide/workflows/capabilities/workflow-actions#send-email)
+→ 了解[“发送电子邮件”操作](/l/zh/user-guide/workflows/capabilities/workflow-actions#send-email)
-## Email Sequences and Newsletters
+## 电子邮件序列和新闻通讯
-For email sequences and newsletters, we recommend using workflows to connect Twenty to a dedicated email marketing tool.
+对于电子邮件序列和新闻通讯,我们建议使用工作流将 Twenty 连接到专用的电子邮件营销工具。
- Mass emails should not be sent directly from your mailbox to protect your domain reputation. Use a dedicated tool for bulk communications.
+ 为保护你的域名信誉,不应直接从你的邮箱发送群发邮件。 请使用专用工具进行批量沟通。
-→ See [How to send emails from workflows](/l/zh/user-guide/workflows/capabilities/send-emails-from-workflows) for setup instructions
+→ 请参阅[如何通过工作流发送电子邮件](/l/zh/user-guide/workflows/capabilities/send-emails-from-workflows)以获取设置说明
-## Future Plans
+## 未来计划
-Native email composition from within Twenty is on our roadmap. Join our [GitHub discussions](https://github.com/twentyhq/twenty/discussions) to share your use case and help prioritize this feature.
+在 Twenty 内原生撰写电子邮件已在我们的路线图上。 加入我们的[GitHub 讨论](https://github.com/twentyhq/twenty/discussions),分享你的用例并帮助我们为此功能确定优先级。
diff --git a/packages/twenty-docs/l/zh/user-guide/calendar-emails/how-tos/can-i-track-email-activity-on-all-objects.mdx b/packages/twenty-docs/l/zh/user-guide/calendar-emails/how-tos/can-i-track-email-activity-on-all-objects.mdx
index de258baef3..2b4b28aea8 100644
--- a/packages/twenty-docs/l/zh/user-guide/calendar-emails/how-tos/can-i-track-email-activity-on-all-objects.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/calendar-emails/how-tos/can-i-track-email-activity-on-all-objects.mdx
@@ -1,35 +1,35 @@
---
-title: Can I Track Email Activity on All Objects?
-description: Understanding email activity tracking across different objects.
+title: 我可以在所有对象上跟踪电子邮件活动吗?
+description: 了解跨不同对象的电子邮件活动跟踪。
---
-## Supported Objects
+## 受支持的对象
-Email activity is currently available on **three standard objects**:
+电子邮件活动目前适用于**三个标准对象**:
-| Object | What You See |
-| ----------------- | ---------------------------------------------------------------- |
-| **People** | All emails exchanged with that specific contact |
-| **Companies** | All emails with anyone from that company (based on email domain) |
-| **Opportunities** | Emails related to the company linked to the opportunity |
+| 对象 | 您将会看到什么 |
+| ------ | -------------------------- |
+| **人员** | 与该特定联系人往来的所有电子邮件 |
+| **公司** | 与该公司任何人之间的所有电子邮件(基于电子邮件域名) |
+| **机会** | 与该商机关联的公司相关的电子邮件 |
-## Why Only These Objects?
+## 为什么只有这些对象?
-People, Companies, and Opportunities are the core relationship objects where email context adds the most value. Email threads are automatically linked based on:
+人员、公司和商机是核心关系对象,电子邮件上下文在其中最能发挥价值。 电子邮件会话将根据以下内容自动关联:
-* **Email address** → matched to People records
-* **Email domain** → matched to Company records
-* **Company relation** → linked to Opportunities
+* **电子邮件地址** → 匹配到人员记录
+* **电子邮件域名** → 匹配到公司记录
+* **公司关系** → 关联到商机
-## Custom Objects
+## 自定义对象
-**Email tracking is not available on custom objects** at this time.
+**自定义对象不支持电子邮件跟踪**(目前)。
-If you need email context on a custom object, consider:
+如果您需要在自定义对象上使用电子邮件上下文,请考虑:
-* Using a relation field to link your custom object to People or Companies
-* Viewing email history on the linked People/Company record
+* 使用关系字段将您的自定义对象链接到人员或公司
+* 在关联的人员/公司记录上查看电子邮件历史
-## Future Plans
+## 未来计划
-Extending email visibility to custom objects is being considered. Share your use case on our [GitHub discussions](https://github.com/twentyhq/twenty/discussions) to help prioritize this feature.
+我们正在考虑将电子邮件可见性扩展到自定义对象。 在我们的[GitHub 讨论](https://github.com/twentyhq/twenty/discussions)中分享您的用例,以帮助确定该功能的优先级。
diff --git a/packages/twenty-docs/l/zh/user-guide/calendar-emails/how-tos/connect-several-mailboxes-per-user.mdx b/packages/twenty-docs/l/zh/user-guide/calendar-emails/how-tos/connect-several-mailboxes-per-user.mdx
index 83da30bd83..a89252be8d 100644
--- a/packages/twenty-docs/l/zh/user-guide/calendar-emails/how-tos/connect-several-mailboxes-per-user.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/calendar-emails/how-tos/connect-several-mailboxes-per-user.mdx
@@ -1,42 +1,42 @@
---
-title: Connect Several Mailboxes per User
-description: Connect multiple email accounts for a single user.
+title: 每位用户可连接多个邮箱
+description: 为单个用户连接多个电子邮件账户。
---
-## Overview
+## 概览
-Twenty supports **unlimited email accounts per user**. This is useful if you manage multiple inboxes, such as:
+Twenty 支持**每个用户拥有无限多个电子邮件账户**。 如果你需要管理多个收件箱,这将非常有用,例如:
-* Personal work email + shared team inbox
-* Multiple client-facing email addresses
-* Different email accounts for different roles
+* 个人工作邮箱 + 团队共享收件箱
+* 多个面向客户的电子邮件地址
+* 针对不同角色使用不同的电子邮件账户
-## How to Add Multiple Mailboxes
+## 如何添加多个邮箱
-1. Go to **Settings → Accounts**
-2. Click **Add account**
-3. Connect your additional Google or Microsoft account
-4. Configure sync settings for this mailbox
-5. Repeat for each mailbox you want to connect
+1. 前往**设置→账户**
+2. 点击**添加账户**
+3. 连接你的其他 Google 或 Microsoft 账户
+4. 配置此邮箱的同步设置
+5. 对每个你想连接的邮箱重复上述步骤
-## Managing Multiple Accounts
+## 管理多个账户
-Each connected mailbox has its own settings:
+每个已连接的邮箱都有各自的设置:
-* **Email visibility**: Choose what teammates can see
-* **Contact auto-creation**: Enable/disable per mailbox
-* **Folder selection**: Choose which folders to sync (Lab feature)
+* **电子邮件可见性**:选择团队成员可以看到的内容
+* **联系人自动创建**:可按邮箱启用/禁用
+* **文件夹选择**:选择要同步的文件夹
-## How Emails Appear
+## 电子邮件如何显示
-Emails from all your connected mailboxes are synced to Twenty and appear on:
+来自所有已连接邮箱的电子邮件会同步到 Twenty,并显示在:
-* **People records**: Based on the contact's email address
-* **Company records**: Based on the email domain
-* **Opportunities**: Based on the linked company
+* **联系人记录**:基于联系人的电子邮件地址
+* **公司记录**:基于电子邮件域名
+* **商机**:基于关联公司
-Each email shows which mailbox it was sent from/received to, so you can track which account was used for each communication.
+每封电子邮件都会显示其发送/接收所用的邮箱,因此你可以跟踪每次沟通使用的是哪个账户。
-## Important Notes
+## 重要说明
-Only true mailboxes can be connected. Email aliases that forward to another mailbox cannot be connected separately—they'll sync through the main mailbox.
+只能连接真实的邮箱。 将邮件转发到其他邮箱的电子邮件别名无法单独连接——它们会通过主邮箱进行同步。
diff --git a/packages/twenty-docs/l/zh/user-guide/calendar-emails/how-tos/i-dont-see-emails-on-records.mdx b/packages/twenty-docs/l/zh/user-guide/calendar-emails/how-tos/i-dont-see-emails-on-records.mdx
index c5db7745a0..84809dc979 100644
--- a/packages/twenty-docs/l/zh/user-guide/calendar-emails/how-tos/i-dont-see-emails-on-records.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/calendar-emails/how-tos/i-dont-see-emails-on-records.mdx
@@ -1,53 +1,53 @@
---
-title: I Don't See Emails on Records
-description: Troubleshooting missing emails on records.
+title: 我在记录中看不到邮件
+description: 排查记录中缺失的邮件。
---
-## Common Reasons
+## 常见原因
-### 1. Initial Sync Still in Progress
+### 1. 初始同步仍在进行中
-Email sync takes time, especially for large mailboxes.
+邮件同步需要时间,尤其是邮箱较大时。 Twenty 导入邮件的速度约为**每分钟 400 封**(受 Gmail API 速率限制)。
-* **Calendar sync**: Completes in minutes
-* **Email sync**: Can take several hours for large mailboxes
+* **日历同步**:几分钟内完成
+* **邮件同步**:取决于邮箱大小(例如,10,000 封邮件 ≈ 25 分钟,50,000 封邮件 ≈ 2 小时)
-**Solution**: Wait up to a few hours for the initial import to complete.
+**解决方案**:等待初始导入完成。 你可以根据邮箱大小预估所需时间。
-### 2. Contact Doesn't Exist in Twenty
+### 2. Twenty 中不存在该联系人
-Emails only appear on existing People records. If the contact wasn't created yet:
+邮件只会显示在已存在的联系人记录上。 如果尚未创建联系人:
-* Enable **Contact Auto-Creation** in your mailbox settings
-* Or manually create the Person record first
+* 在邮箱设置中启用**联系人自动创建**
+* 或先手动创建联系人记录
-**Solution**: Go to **Settings → Accounts**, select your mailbox, and enable contact auto-creation.
+**解决方案**:前往 **Settings → Accounts**,选择你的邮箱并启用联系人自动创建。
-### 3. Internal Emails Are Excluded
+### 3. 内部邮件不参与同步
-Emails between colleagues (same email domain) are never synced to maintain privacy.
+为维护隐私,同事之间的邮件(相同邮件域名)绝不会同步。
-**Solution**: This is expected behavior. Only external emails are synced.
+**解决方案**:这是预期行为。 仅同步外部邮件。
-### 4. Email Is from a Group or Distribution List
+### 4. 邮件来自群组或通讯组
-Group emails and distribution lists are excluded from sync.
+群组邮件和通讯组不参与同步。
-**Solution**: This is expected behavior.
+**解决方案**:这是预期行为。
-### 5. Folder Not Selected for Sync
+### 5. 未选择用于同步的文件夹
-If you're using the Message Folder feature, some folders might be excluded.
+如果你正在使用消息文件夹功能,某些文件夹可能被排除。
-**Solution**: Go to **Settings → Accounts**, select your mailbox, and check folder sync settings.
+**解决方案**:前往 **Settings → Accounts**,选择你的邮箱并检查文件夹同步设置。
-### 6. Wrong Email Address on Record
+### 6. 记录中的邮箱地址错误
-The Person record might have a different email address than the one used in the email.
+联系人记录中的邮箱地址可能与邮件中使用的不一致。
-**Solution**: Add the correct email address to the Person record.
+**解决方案**:将正确的邮箱地址添加到联系人记录。
-## Still Not Working?
+## 仍然无法正常工作?
-1. Try disconnecting and reconnecting your mailbox
-2. Contact support if issues persist
+1. 尝试断开并重新连接你的邮箱
+2. 如果问题仍然存在,请联系支持
diff --git a/packages/twenty-docs/l/zh/user-guide/calendar-emails/how-tos/limit-emails-imported.mdx b/packages/twenty-docs/l/zh/user-guide/calendar-emails/how-tos/limit-emails-imported.mdx
index 9569d2651a..d9aca81f25 100644
--- a/packages/twenty-docs/l/zh/user-guide/calendar-emails/how-tos/limit-emails-imported.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/calendar-emails/how-tos/limit-emails-imported.mdx
@@ -1,52 +1,50 @@
---
-title: Limit Emails Imported
-description: Control which emails are imported into Twenty.
+title: 限制导入的电子邮件
+description: 控制哪些电子邮件被导入Twenty。
---
-## Overview
+## 概览
-By default, Twenty syncs all external emails from your connected mailbox. You can limit what gets imported using **folder selection** and **visibility settings**.
+默认情况下,Twenty 会从您已连接的邮箱同步所有外部电子邮件。 您可以使用**文件夹选择**和**可见性设置**来限制导入的内容。
-## Method 1: Folder Selection (Recommended)
+## 方法一:文件夹选择(推荐)
-Control which email folders sync with Twenty:
+控制哪些电子邮件文件夹与Twenty同步:
-1. Go to **Settings → Releases → Lab**
-2. Enable **Message Folder**
-3. Return to **Settings → Accounts**
-4. Select your connected email account
-5. Choose which folders to sync:
+1. 进入 **设置 → 账户**
+2. 选择您已连接的电子邮件账户
+3. 选择要同步的文件夹:
-| Folder | Description |
-| ------------------ | ----------------------------- |
-| **Inbox** | Primary incoming emails |
-| **Sent** | Outgoing emails you've sent |
-| **Archive** | Archived messages |
-| **Custom Folders** | Any specific folders you want |
+| 文件夹 | 描述 |
+| ---------- | ----------- |
+| **收件箱** | 主要的收件电子邮件 |
+| **已发送** | 您发送的外发电子邮件 |
+| **存档** | 已存档的电子邮件 |
+| **自定义文件夹** | 您想要的任何特定文件夹 |
-6. Exclude folders you don't want synced (Spam, Trash, personal folders)
+6. 排除您不希望同步的文件夹(垃圾邮件、回收站、个人文件夹)
-This gives you precise control over which emails appear in your CRM without syncing everything.
+这使您可以精确控制哪些电子邮件显示在您的CRM中,而无需同步所有内容。
-## Method 2: Contact Auto-Creation Settings
+## 方法二:联系人自动创建设置
-Control when contacts are created from emails:
+控制何时从电子邮件创建联系人:
-1. Go to **Settings → Accounts**
-2. Select your connected mailbox
-3. Choose an option:
- * **Deactivated**: No contacts created, but emails still sync to existing contacts
- * **Sent & Received**: Create contacts from all external emails
- * **Sent Only**: Only create contacts from emails you send
+1. 前往**设置→账户**
+2. 选择您已连接的邮箱
+3. 选择一个选项:
+ * **已停用**:不会创建联系人,但电子邮件仍会同步到现有联系人。
+ * **已发送和已接收**:从所有外部电子邮件创建联系人
+ * **仅限已发送**:仅根据您发送的电子邮件创建联系人
-## What's Always Excluded
+## 始终排除的内容
-These emails are never synced, regardless of settings:
+无论设置如何,这些电子邮件都不会被同步:
-* **Internal emails**: Messages between colleagues (same domain)
-* **Group emails**: Distribution lists and group messages
-* **Spam/Trash**: System folders are typically excluded
+* **内部电子邮件**:同事之间的消息(同一域名)
+* **群组邮件**:分发列表和群组消息
+* **垃圾邮件/回收站**:系统文件夹通常会被排除
-## Important Note
+## 重要提示
-We don't provide a CC email address for selective syncing. Use the folder selection feature above to achieve the same level of control.
+我们不提供用于选择性同步的抄送(CC)电子邮件地址。 请使用上面的文件夹选择功能来实现同等程度的控制。
diff --git a/packages/twenty-docs/l/zh/user-guide/calendar-emails/overview.mdx b/packages/twenty-docs/l/zh/user-guide/calendar-emails/overview.mdx
index eececa1906..b257b540cb 100644
--- a/packages/twenty-docs/l/zh/user-guide/calendar-emails/overview.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/calendar-emails/overview.mdx
@@ -1,132 +1,130 @@
---
-title: Calendar & Emails
-description: Connect your email and calendar accounts to Twenty.
+title: 日历与电子邮件
+description: 将您的电子邮件和日历账户连接到 Twenty。
image: /images/user-guide/emails/emails_header.png
---
-
+
-## Connection Options
+## 连接选项
-### Google Account (Gmail & Google Calendar)
+### Google账号(Gmail和Google日历)
-1. Go to **Settings → Accounts**
-2. Click **Add account**
-3. Select **Continue with Google**
-4. Authorize Twenty to access your Gmail and Google Calendar
-5. Configure email sync settings (visibility, auto-creation) → click **Next**
-6. Configure calendar sync settings (visibility, auto-creation) → click **Add Account**
-7. Your emails and calendar events will start syncing automatically
+1. 转到 **设置 → 账户**
+2. 点击**添加账户**
+3. 选择**继续使用Google**
+4. 授权 Twenty 访问您的 Gmail 和 Google 日历
+5. 配置电子邮件同步设置(可见性、自动创建)→ 点击 **下一步**
+6. 配置日历同步设置(可见性、自动创建)→ 点击 **添加账户**
+7. 您的电子邮件和日历事件将自动开始同步
-### Microsoft Account (Outlook & Microsoft Calendar)
+### Microsoft 账户(Outlook 和 Microsoft 日历)
-1. Go to **Settings → Accounts**
-2. Click **Add account**
-3. Select **Continue with Microsoft**
-4. Authorize Twenty to access your Outlook and Microsoft Calendar
-5. Configure email sync settings (visibility, auto-creation) → click **Next**
-6. Configure calendar sync settings (visibility, auto-creation) → click **Add Account**
-7. Your emails and calendar events will start syncing automatically
+1. 转到 **设置 → 账户**
+2. 点击**添加账户**
+3. 选择**继续使用Microsoft**
+4. 授权 Twenty 访问您的 Outlook 和 Microsoft 日历
+5. 配置电子邮件同步设置(可见性、自动创建)→ 点击 **下一步**
+6. 配置日历同步设置(可见性、自动创建)→ 点击 **添加账户**
+7. 您的电子邮件和日历事件将自动开始同步
-### SMTP/CalDAV Setup (Other Providers)
+### SMTP/CalDAV设置(其他提供商)
-For other email and calendar providers:
+对于其他电子邮件和日历提供商:
-1. Go to **Settings → Releases → Lab** to enable the feature
-2. Return to **Settings → Accounts**
-3. Configure SMTP settings for email
-4. Configure CalDAV settings for calendar
-5. Test the connection
+1. 前往**设置→账户**
+2. 配置电子邮件的SMTP设置
+3. 配置日历的CalDAV设置
+4. 测试连接
-### Multiple Mailboxes
+### 多个邮箱
-* **Unlimited Accounts**: Connect multiple email accounts per user
-* **Account Management**: Switch between different mailboxes
-* **Sync Settings**: Configure different settings per mailbox
+* **无限账户**:每用户可连接多个电子邮件账户
+* **账户管理**:在不同邮箱之间切换
+* **同步设置**:为各邮箱配置不同设置
- Only true mailboxes can be connected (e.g., support@domain.com with its own inbox). Email aliases that forward to another mailbox cannot be connected to Twenty.
+ 只能连接真正的邮箱(如:support@domain.com及其独立收件箱)。 电子邮件别名转发到其他邮箱不能连接到Twenty。
-## Email Configuration
+## 电子邮件配置
-### Message Visibility
+### 邮件可见性
-Choose different levels of visibility for your emails:
+为您的电子邮件选择不同的可见性级别:
-* **Metadata Only**: Share only basic information (sender, recipient, date, time)
-* **Subject and Metadata**: Share subject line along with metadata
-* **All Email Content**: Share entire email content including attachments
+* **仅元数据**:仅分享基本信息(发件人、收件人、日期、时间)
+* **主题和元数据**:分享主题行以及元数据
+* **所有电子邮件内容**:分享全部电子邮件内容,包括附件
-### Contact Auto-Creation
+### 联系人自动创建
-* **Deactivated**: No automatic contact creation
-* **For messages sent & received**: Create contacts for all external email interactions
-* **For messages sent only**: Create contacts only for emails you send
-* **Note**: Internal emails (same domain) are never synced to maintain privacy
+* **已停用**:无自动联系人创建
+* **用于发送和接收的消息**:为所有外部电子邮件互动创建联系人
+* **仅用于发送的消息**:仅为您发送的电子邮件创建联系人
+* **注意**:内部邮件(同一域)从不同步以维护隐私
-When enabled, contacts are automatically linked to their Company records based on their email domain. If the company doesn't exist yet, Twenty creates it for you.
+启用后,联系人会根据其电子邮件域名自动关联到其公司记录。 如果该公司尚不存在,Twenty 会为您创建该公司。
-### Control which emails get sync with Message Folder Selection (Lab Feature)
+### 通过消息文件夹选择控制哪些电子邮件同步
-Control which email folders sync with Twenty:
+控制哪些电子邮件文件夹与Twenty同步:
-1. Go to **Settings → Releases → Lab** and enable **Message Folder**
-2. Return to **Settings → Accounts** and select your connected email account
-3. Choose which folders to sync:
- * **Inbox**: Primary incoming emails
- * **Sent**: Outgoing emails you've sent
- * **Custom Folders**: Any specific folders you want to include
- * **Exclude Folders**: Skip folders like Spam, Trash, or personal folders
+1. 前往**设置 → 账户**并选择您已连接的电子邮件账户
+2. 选择要同步的文件夹:
+ * **收件箱**:主要的收入电子邮件
+ * **已发件箱**:您发送的外发电子邮件
+ * **自定义文件夹**:您希望包含的任意特定文件夹
+ * **排除文件夹**:跳过像垃圾邮件、垃圾桶或个人文件夹这样的文件夹
-This gives you precise control over which emails appear in your CRM without syncing everything.
+这样您无需同步所有内容,即可精确控制哪些电子邮件会出现在您的客户关系管理系统中。
-**What Gets Synced:**
+**同步内容**:
-* **External Emails**: All emails with external contacts from selected folders
-* **Internal Emails**: Not synced (same domain emails remain private)
-* **Attachments**: Coming in H1 2026
+* **外部电子邮件**:所有具有外部联系人的电子邮件来自选择的文件夹
+* **内部电子邮件**:不进行同步(同域邮件保留隐私)
+* **附件**:2026年H1推出
-**Note**: We don't provide a CC email address for selective syncing. Instead, use the Message Folder feature above to achieve the same level of control over which emails sync with Twenty.
+**注意**:我们不提供选择性同步的CC电子邮件地址。 相反,使用上述消息文件夹功能来实现同样水平的电子邮件同步控制。
-## Calendar Configuration
+## 日历配置
-### Event Visibility
+### 事件可见性
-Choose what will be visible to other users in your workspace:
+选择其他用户在您的工作区中可见的内容:
-* **Everything**: The whole event details will be shared with your team
-* **Metadata**: Only date & participants will be shared with your team
+* **全部**:整个事件详情将与您的团队共享
+* **元数据**:仅日期和参与者将与您的团队共享
-### Contact Auto-Creation for Meetings
+### 会议的联系人自动创建
-* **Yes**: Automatically create contacts for meeting participants not in your CRM
-* **No**: Only link meetings to existing contacts
+* **是**:自动为非CRM中的会议参与者创建联系人
+* **否**:仅将会议链接到现有联系人
-When enabled, contacts are automatically linked to their Company records based on their email domain. If the company doesn't exist yet, Twenty creates it for you.
+启用后,联系人会根据其电子邮件域名自动关联到其公司记录。 如果该公司尚不存在,Twenty 会为您创建该公司。
-### Control which events get sync
+### 控制哪些事件同步
-* **Meeting Import**: Automatically import calendar events
-* **Contact Linking**: Link meetings to People and Company records
+* **会议导入**:自动导入日历事件
+* **联系人链接**:将会议链接到人员和公司记录
-**What Gets Synced:**
+**同步内容**:
-* **Meetings**: Calendar events with external participants
-* **Contact Linking**: Events automatically linked to CRM records
-* **Team Events**: Shared calendar visibility
+* **会议**:包含外部参与者的日历事件
+* **联系人链接**:事件自动链接到CRM记录
+* **团队事件**:共享日历可见性
-## Sync Frequency
+## 同步频率
-**Updates every 5 minutes**: Both email and calendar data sync automatically every 5 minutes after the initial import.
+**每5分钟更新**:电子邮件和日历数据在首次导入后每5分钟自动同步。
- **Initial sync timing**: Calendar sync completes quickly (usually within minutes), while email sync takes longer for large mailboxes—up to a few hours depending on volume. Don't worry if you see contacts from calendar events appearing before your email contacts; this is normal behavior.
+ **初始同步耗时**: 日历同步完成很快 (通常在几分钟内),而对于大型邮箱,邮件同步耗时更长。 Twenty 以约**每分钟 400 封**的速度导入邮件 (受 Gmail API 速率限制),因此包含 10,000 封邮件的邮箱大约需要 25 分钟。 如果您看到来自日历事件的联系人早于电子邮件联系人出现,请不必担心;这是正常行为。
-## Next Steps
+## 下一步
-* [Mailbox capabilities](/l/zh/user-guide/calendar-emails/capabilities/mailbox)
-* [Troubleshoot missing emails](/l/zh/user-guide/calendar-emails/how-tos/i-dont-see-emails-on-records)
+* [邮箱功能](/l/zh/user-guide/calendar-emails/capabilities/mailbox)
+* [排查缺失的电子邮件](/l/zh/user-guide/calendar-emails/how-tos/i-dont-see-emails-on-records)
diff --git a/packages/twenty-docs/l/zh/user-guide/dashboards/capabilities/chart-settings.mdx b/packages/twenty-docs/l/zh/user-guide/dashboards/capabilities/chart-settings.mdx
new file mode 100644
index 0000000000..8d613fc019
--- /dev/null
+++ b/packages/twenty-docs/l/zh/user-guide/dashboards/capabilities/chart-settings.mdx
@@ -0,0 +1,275 @@
+---
+title: 图表设置
+description: 配置您的图表,使其按您的需求准确显示数据。
+---
+
+import { ChartIcon } from '/snippets/chart-icon.mdx';
+
+## 访问图表设置
+
+1. 单击仪表盘右上角的 **编辑** 按钮
+
+
+
+2. 仪表盘进入编辑模式
+3. 单击任意小部件以选择它
+4. 右侧将打开设置面板
+
+设置分为以下部分:
+
+* **数据**:要提取哪些数据以及如何筛选
+* **X 轴**:如何对类别进行分组和排序(柱状图/折线图)
+* **Y 轴**:要度量什么以及如何显示(柱状图/折线图)
+* **样式**:颜色、标签和视觉选项
+
+
+ 某些设置仅在配置了其他设置时才会出现。 例如,仅当您选择了日期字段时,才会显示 **日期粒度**。
+
+
+---
+
+## 数据设置
+
+### 来源
+
+选择要从哪个对象提取数据。
+
+1. 单击 **来源**
+2. 选择一个对象(商机、人员、公司等)
+
+您所有的标准对象和自定义对象都可用。 更改来源会重置其他设置,因为字段选项取决于所选对象。
+
+
+
+### 筛选器
+
+限定图表中包含的记录。
+
+1. 单击 **Filter**
+2. 将打开筛选器构建器
+3. 单击 **+ 添加筛选器**
+4. 选择字段、条件和值
+5. 根据需要添加更多筛选器
+
+筛选器的用法与表格视图中的相同。 使用它们聚焦于数据的特定分段。
+
+**示例**:筛选阶段等于“赢单”的商机,仅显示已成交的交易。
+
+
+
+
+ 对于日期字段,尝试使用 **相对** 来创建会自动更新的动态筛选,如“过去 7 天”或“本月”。
+
+
+
+ 支持高级筛选——可添加多个筛选规则,并使用 **And** 或 **Or** 逻辑进行组合。
+
+
+---
+
+## X 轴设置
+
+这些设置用于控制柱状图和折线图的横轴——通常用于定义数据如何分组为各个类别。
+
+### 显示的数据
+
+选择用于对数据分组的字段。 这将决定 X 轴上显示的类别。
+
+**示例**:选择“阶段”以按销售流程阶段分组查看数据;或选择“创建日期”以按时间查看数据。
+
+
+
+### 日期粒度
+
+按日期字段分组时,选择用于分组的时间粒度。
+
+| 选项 | 分组方式 | 示例输出 |
+| ---------- | -------- | ------------------------- |
+| **日** | 按日历中的每一天 | 1 月 1 日、1 月 2 日、1 月 3 日…… |
+| **周** | 按日历周 | 第 1 周、第 2 周、第 3 周…… |
+| **月** | 按日历月 | 1 月、2 月、3 月…… |
+| **季度** | 按财务季度 | Q1、Q2、Q3、Q4 |
+| **年** | 按日历年 | 2023、2024、2025 |
+| **星期几** | 星期几(汇总) | 星期一、星期二…… (将所有星期一合并) |
+| **年份中的月份** | 月份(汇总) | 1 月、2 月…… (将所有 1 月合并) |
+| **年度的季度** | 季度(汇总) | Q1、Q2、Q3、Q4(将所有 Q1 合并) |
+
+“周/年中”的选项会跨所有时间进行汇总。 使用 **星期几** 查看通常哪一天的成交量最多。 使用 **月份** 按月查看趋势。
+
+### 排序方式
+
+控制 X 轴上类别的顺序。
+
+* **位置** – 使用您在选择字段设置中定义的顺序
+* **按字母顺序** – A 到 Z(对于日期为按时间顺序)
+* **按数值** – 按度量值排序(最高或最低优先)
+* **手动** – 通过拖动设置自定义顺序
+
+
+
+**提示**:对于销售流程阶段,使用 **位置** 按您的销售流程顺序显示各阶段(线索 → 合格 → 方案 → 赢单)。
+
+
+ 显示的选项取决于字段类型。 选择字段包含所有选项;日期和文本字段的选项较少。
+
+
+
+ 使用 **手动** 排序时,可拖动类别以创建自定义顺序——非常适合突出特定分段或用数据讲述故事。
+
+
+### 省略零值
+
+隐藏值为零或没有数据的类别。
+
+* **开启**:隐藏没有记录的类别
+* **关闭**:显示所有类别,即便为空
+
+使用此选项可清理数据稀疏的图表。
+
+---
+
+## Y 轴设置
+
+这些设置控制要度量的内容及其显示方式。
+
+### 显示的数据
+
+选择字段和运算来计算度量值。
+
+* **计数** – 计数全部、计数为空、计数非空、计数唯一值
+* **数学** – 求和、平均值、最小值、最大值(数字字段)
+* **百分比** – 空值百分比、非空百分比
+
+布尔字段会增加“计数 true/false”。 带日期字段的汇总图表会显示“最早/最晚”。
+
+**示例**:选择“金额”并使用“求和”以查看每个类别的交易总额,或使用“计数全部”查看交易数量。
+
+
+
+
+ 显示的选项取决于您的字段和图表类型。 如果未看到预期的运算,请检查字段类型。
+
+
+### 比例
+
+对于选择、多选或布尔字段,您可以计算特定取值所占的百分比。
+
+1. 选择一个选择、多选或布尔字段
+2. 启用 **比率**
+3. 选择要度量的选项
+
+**示例**:将“赢单”交易显示为占所有商机的百分比。 如果共有 50 个且其中 10 个为赢单,则图表显示 20%。
+
+### 分组依据
+
+添加第二个维度以创建多个系列(多根柱/多条线)。
+
+1. 先设置 X 轴字段
+2. 单击 **分组依据**
+3. 选择第二个字段
+
+**示例**:按阶段(X 轴)和所有者(分组依据)对交易进行分组,以并排查看每个人的销售流程拆分。
+
+
+
+设置“分组依据”后,图表将显示多种颜色,并出现图例。
+
+### 日期粒度
+
+当“分组依据”为日期字段时,选择时间粒度(与 X 轴相同的选项)。
+
+### 排序方式
+
+设置 **分组依据** 后,可控制分组系列的顺序(例如在每个类别中哪个所有者的柱先显示)。
+
+与 X 轴排序的选项相同——位置、按字母顺序和手动——但对于二级分组,**不提供基于数值的排序**。
+
+### 累计
+
+显示累计总和,而非单个值。
+
+* **关闭**:每个柱/点显示自身的数值
+* **开启**:每个柱/点显示其自身与之前所有数值之和
+
+**示例**:1 月 = 10,2 月 = 15
+
+* 关闭累计:显示 10 和 15
+* 开启累计:显示 10 和 25(10 + 15)
+
+使用累计可随时间跟踪目标进展。
+
+
+
+### 最小范围 / 最大范围
+
+为 Y 轴设置固定的最小值和最大值。
+
+* 留空以自动缩放
+* 输入数字以固定边界
+
+**适用场景:**
+
+* 将最小值设为 0 以进行准确的视觉比较
+* 同时设置两者以在多个图表间保持一致的刻度
+* 同时设置两者以聚焦特定数值范围
+
+---
+
+## 样式设置
+
+### 颜色
+
+为图表设置配色方案。 可从多种颜色调色板中选择。
+
+
+ 按选择字段分组时,图表会自动使用字段设置中为各选项定义的颜色。
+
+
+### 轴名称
+
+选择要显示的轴标签:**无**、**X 轴**、**Y 轴** 或 **两者**(仅适用于柱状图和折线图)。
+
+### 堆叠柱/堆叠线
+
+设置“分组依据”后,选择多个系列的显示方式。
+
+* **关闭(分组显示)**:系列并排显示。 适用于比较各组之间的确切数值。
+* **开启(堆叠)**:系列相互堆叠显示。 适用于展示构成——各部分如何组成整体。
+
+**示例**:按阶段统计的交易,按所有者分组
+
+* 分组显示:并排查看每位所有者的确切数值
+* 堆叠显示:查看各阶段的交易总量,并叠加展示每位所有者的贡献
+
+### 数据标签
+
+在图表元素(柱、点、扇区)上直接显示数值。
+
+* **开启**:在图表上显示数值
+* **关闭**:不显示数值(更简洁)
+
+### 图例
+
+显示或隐藏图例(仅在设置了“分组依据”时出现)。
+
+* **开启**:图例显示每种颜色所代表的含义
+* **关闭**:不显示图例
+
+
+ 将鼠标**悬停**在图例项上可高亮显示该分组。 **单击** 可在图表中临时隐藏该分组。
+
+
+---
+
+## 图表特定说明
+
+### 饼图
+
+* **每个扇区表示** – 定义扇区的分组方式
+* **隐藏空类别** – 移除零值扇区
+* **在中心显示数值** – 显示汇总值(求和、平均、计数等)
+
+### 汇总图表
+
+* **前缀** – 在数字前添加文本(例如“$”)
+* **后缀** – 在数字后添加文本(例如“%”)
diff --git a/packages/twenty-docs/l/zh/user-guide/dashboards/capabilities/dashboards.mdx b/packages/twenty-docs/l/zh/user-guide/dashboards/capabilities/dashboards.mdx
index b3d731e668..5d37f3755b 100644
--- a/packages/twenty-docs/l/zh/user-guide/dashboards/capabilities/dashboards.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/dashboards/capabilities/dashboards.mdx
@@ -1,74 +1,92 @@
---
-title: Dashboards
-description: Create and organize dashboards with tabs to visualize your CRM data.
+title: 仪表板
+description: 使用选项卡创建并组织仪表板,以可视化你的 CRM 数据。
---
-## Overview
+## 概览
-Dashboards in Twenty are organized in a hierarchy: **Dashboards → Tabs → Widgets**. Each dashboard can contain multiple tabs, and each tab contains widgets (charts, numbers, iFrames).
+Twenty 中的仪表板按层级组织:**仪表板 → 选项卡 → 小部件**。 每个仪表板可包含多个选项卡,每个选项卡包含小部件(图表、数字、iFrame)。
-## Creating a Dashboard
+## 创建仪表板
-1. Go to **Dashboards** in the navigation
-2. Click **+ New Dashboard**
-3. Give your dashboard a name
-4. Start adding tabs and widgets
+1. 前往导航中的 **仪表板**
+2. 点击 **+ 新建记录**
-## Working with Tabs
+
-Tabs help you organize your dashboard into logical sections.
+3. 为你的仪表板命名
+4. 开始添加选项卡和小部件
-### Creating Tabs
+## 使用选项卡
-1. In edit mode, click **+ Add Tab**
-2. Name your tab (e.g., "Pipeline Overview", "Team Performance")
-3. Add widgets to the tab
+选项卡可帮助你将仪表板组织为逻辑部分。
-### Duplicating Tabs
+### 创建选项卡
-1. Click on the tab you want to duplicate
-2. Click the **Duplicate** button in the side panel
+1. 在编辑模式下,点击选项卡栏中的 **+**,右侧将打开侧边面板
+2. 为你的选项卡命名(例如,"销售管道概览"、"团队绩效")
+3. 向该选项卡添加小部件
-## Dashboard Layout
+### 重新排序选项卡
-### Arranging Widgets
+1. 在编辑模式下,点击并按住你要移动的选项卡
+2. 拖放到新位置
+3. 你也可以点击该选项卡,并使用命令菜单将其移动到左侧或右侧
-* Drag and drop to position
-* Resize for emphasis
-* Group related charts together
+### 删除选项卡
-### Duplicating a Dashboard
+1. 在编辑模式下,点击你要删除的选项卡
+2. 点击命令菜单中的 **删除** 按钮
-1. Exit edit mode (view mode only)
-2. Open the command bar with **Cmd + K** (or **Ctrl + K** on Windows)
-3. Select **Duplicate dashboard**
+### 复制选项卡
-### Best Practices
+1. 点击你要复制的选项卡
+2. 点击侧边面板中的 **复制** 按钮
-* **Logical flow**: Arrange from overview to detail
-* **Visual hierarchy**: Larger charts for key metrics
-* **Consistent styling**: Use matching colors and fonts
+
-## Visibility & Access
+## 仪表板布局
-### Dashboard Visibility
+### 排列小部件
-Dashboards are visible to everyone who has access to your Twenty workspace. There is no private dashboard option at the moment.
+* 拖放以定位
+* 调整大小以突出重点
+* 将相关图表分组在一起
-### Favorites
+### 复制仪表板
-You can add dashboards to your favorites for quick access. This is a personal setting—your favorites are not visible to other users.
+1. 选择你要复制的仪表板
+2. 按 **Cmd + K** 打开命令栏(Windows 上为 **Ctrl + K**)
+3. 选择 **复制仪表板**
-To add a dashboard to favorites, open the dashboard and click the star icon.
+
-### Timezone Behavior
+### 最佳实践
-Dashboards currently display data based on the timezone of the user viewing them. This means the same dashboard may show different metrics for team members in different regions (e.g., APAC vs. US).
+* **逻辑流程**:按从概览到细节的顺序排列
+* **视觉层级**:关键指标使用更大的图表
+* **样式一致**:使用协调的颜色和字体
+
+## 可见性与访问
+
+### 仪表板可见性
+
+凡能访问你的 Twenty 工作区的所有人都可以查看仪表板。 目前没有私有仪表板选项。
+
+### 收藏夹
+
+你可以将仪表板添加到收藏以便快速访问。 这是个人设置——你的收藏对其他用户不可见。
+
+要将仪表板添加到收藏,打开该仪表板并点击星形图标。
+
+### 时区行为
+
+仪表板目前根据查看者的时区显示数据。 这意味着,不同地区的团队成员(例如,APAC 与 US)看到的同一仪表板可能会显示不同的指标。
- **Coming soon**: We will add the ability to set a specific timezone for a dashboard, so all users see consistent data regardless of their location.
+ **即将推出**:我们将新增为仪表板设置特定时区的功能,这样无论用户身在何处,所有人看到的数据都将保持一致。
- **Coming soon**: Dashboard-level filters will allow you to apply filters across all widgets at once, making it faster to explore your data.
+ **即将推出**:仪表板级别的筛选器将允许你一次性对所有小部件应用筛选,从而更快速地探索你的数据。
diff --git a/packages/twenty-docs/l/zh/user-guide/dashboards/capabilities/widgets.mdx b/packages/twenty-docs/l/zh/user-guide/dashboards/capabilities/widgets.mdx
index fc12e61339..baf8f41ac0 100644
--- a/packages/twenty-docs/l/zh/user-guide/dashboards/capabilities/widgets.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/dashboards/capabilities/widgets.mdx
@@ -1,131 +1,149 @@
---
-title: Widgets
-description: Explore the widget types and visualization options in Twenty.
+title: 小部件
+description: 探索 Twenty 中的小部件类型和可视化选项。
---
-## Available Widgets
+import { ChartIcon } from '/snippets/chart-icon.mdx';
-Twenty provides various widget types to visualize your CRM data.
+## 可用小部件
-### Bar Charts
+Twenty 提供多种小部件类型,用于可视化您的 CRM 数据。
-Display data as horizontal or vertical bars.
+### 条形图
-**Best for:**
+以水平或垂直条形显示数据。
-* Comparing values across categories
-* Showing rankings
-* Tracking metrics by time period
+
+
+
-**Example uses:**
+**适用于:**
-* Deals by stage
-* Revenue by sales rep
-* Contacts added per month
+* 比较不同类别的数值
+* 显示排名
+* 按时间段跟踪指标
+
+**示例用法:**
+
+* 按阶段的交易
+* 按销售代表的收入
+* 每月新增联系人
- **Display limits**: Bar charts can show a maximum of 100 bars (horizontal) or 50 bars (vertical). If you see the warning "Undisplayed data: max X bars per chart", add filters to narrow down your data or change the grouping (e.g., group by week instead of days).
+ **显示限制**:使用 Group By 时,条形图最多可显示 100 个条形,每个条形最多 50 个分组。 如果您看到警告 "未显示的数据:每个图表最多 X 个条形",请添加筛选器以缩小数据范围,或更改分组方式(例如按周分组而非按天)。
-### Pie Charts
+### 饼图
-Show proportions of a whole.
+显示整体中各部分所占比例。
-**Best for:**
+
+
+
-* Showing composition or distribution
-* Comparing parts to whole
-* Highlighting major segments
+**适用于:**
-**Example uses:**
+* 展示构成或分布
+* 比较部分与整体
+* 突出显示主要部分
-* Deal distribution by source
-* Contact breakdown by industry
-* Pipeline composition by owner
+**示例用法:**
-### Line Charts
+* 按来源划分的交易分布
+* 联系人按行业细分
+* 按负责人划分的销售管道构成
-Display trends over time.
+### 折线图
-**Best for:**
+显示随时间变化的趋势。
-* Tracking changes over time
-* Identifying trends
-* Comparing multiple metrics
+
+
+
-**Example uses:**
+**适用于:**
-* Monthly deal count trend
-* Revenue growth over quarters
-* Activity levels over time
+* 跟踪随时间的变化
+* 识别趋势
+* 比较多个指标
-### Number Metrics
+**示例用法:**
-Display single key values prominently.
+* 每月交易数量趋势
+* 各季度收入增长
+* 随时间变化的活动水平
-**Best for:**
+### 汇总图表
-* Highlighting KPIs
-* Showing totals or averages
-* Quick status checks
+以醒目方式显示单个关键数值。
-**Example uses:**
+
+
+
-* Total pipeline value
-* Number of open opportunities
-* Conversion rate
+**适用于:**
-**Advanced options:**
+* 突出显示 KPI
+* 显示总计或平均值
+* 快速查看状态
-* **Ratio**: For Select fields, calculate ratios between values. Go to **Data on display** → select your field → enable the **Ratio** option.
-* **Prefix & Suffix**: Add custom text before or after the number (e.g., "$" prefix or "%" suffix) for better readability.
+**示例用法:**
-### iFrames
+* 销售管道总价值
+* 未关闭的商机数量
+* 转化率
-Embed external tools and content directly in your dashboard.
+**高级选项:**
-**Best for:**
+* **比例**:对于 Select 字段,计算各值之间的比例。 转到 **显示的数据** → 选择您的字段 → 启用 **比例** 选项。
+* **前缀与后缀**:在数字前或后添加自定义文本(例如 "$" 前缀或 "%" 后缀),以提升可读性。
-* Displaying external reports or dashboards
-* Integrating third-party sales tools
-* Showing live content from other systems
+### iFrame
-**Example uses:**
+将外部工具和内容直接嵌入到仪表板中。
-* Metrics from your Support tool
-* Metrics from your dialer
-* Live content from your Sales sequence tool
+
+
+
+
+**适用于:**
+
+* 显示外部报告或仪表板
+* 集成第三方销售工具
+* 显示来自其他系统的实时内容
+
+**示例用法:**
+
+* 来自支持工具的指标
+* 来自拨号器的指标
+* 来自销售序列工具的实时内容
+
+### 富文本
+
+在仪表板中直接添加格式化文本和内容。
+
+
+
+
+
+**适用于:**
+
+* 添加上下文或说明
+* 仪表板描述
+* 备注和注释
+
+**功能:**
+
+* 富文本格式(加粗、斜体、列表等)
+* 图片和文件上传
+* Markdown 风格编辑
- **Coming soon**: Gauge charts and tables are not yet available but are on our roadmap.
+ **即将推出**:仪表图和表格暂不可用,但已在我们的路线图中。
-## Configuring Widgets
+### 复制小部件
-### Data Source
-
-1. Select the object to visualize (Opportunities, People, etc.)
-2. Choose the metric to display (count, sum, average)
-3. Apply filters to focus on specific data
-
-### Grouping
-
-Group data by:
-
-* Fields (stage, owner, industry)
-* Time periods (day, week, month, quarter)
-* Custom segments
-
-### Styling
-
-Customize your charts with:
-
-* Colors and themes
-* Labels and legends
-* Size and positioning
-
-### Duplicating Widgets
-
-1. Click on the widget
-2. Open **Options**
-3. Click **Duplicate widget**
+1. 单击该小部件
+2. 打开 **选项**
+3. 单击 **复制小部件**
diff --git a/packages/twenty-docs/l/zh/user-guide/dashboards/how-tos/dashboards-faq.mdx b/packages/twenty-docs/l/zh/user-guide/dashboards/how-tos/dashboards-faq.mdx
index 7af41b4efa..f6c8dca0fb 100644
--- a/packages/twenty-docs/l/zh/user-guide/dashboards/how-tos/dashboards-faq.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/dashboards/how-tos/dashboards-faq.mdx
@@ -1,59 +1,55 @@
---
-title: Dashboards FAQ
-description: Frequently asked questions about dashboards in Twenty.
+title: 仪表板常见问题
+description: 关于 Twenty 中仪表板的常见问题。
---
-
- No, dashboards are currently visible to everyone with access to your Twenty workspace. Private dashboards are not yet available.
+
+ 不能。目前,凡能访问你的 Twenty 工作区的所有人都可以查看仪表板。 私有仪表板尚不可用。
-
- Dashboards currently display data based on the viewer's timezone. If you're in different regions (e.g., APAC vs. US), you may see slightly different numbers for the same dashboard. We're working on adding a timezone setting per dashboard to ensure consistent data across teams.
+
+ 仪表板目前根据查看者的时区显示数据。 如果你们位于不同地区(例如 APAC 与 US),即使是同一个仪表板,看到的数值也可能略有不同。 我们正在开发按仪表板设置时区的功能,以确保跨团队的数据一致。
-
- Exporting dashboards is not available at the moment. This feature is on our roadmap.
+
+ 目前不支持导出仪表板。 此功能已在我们的路线图中。
-
- No, sharing dashboards with users outside your Twenty workspace (non-Twenty users) is not currently supported.
+
+ 不能。目前不支持与 Twenty 工作区外的用户(非 Twenty 用户)共享仪表板。
-
- Open the dashboard you want to favorite, then click the star icon. Favorites are personal—they won't affect other users.
+
+ 打开你想收藏的仪表板,然后点击星形图标。 收藏是个人设置——不会影响其他用户。
-
- * **Tabs** organize your dashboard into sections (like pages within the dashboard)
- * **Widgets** are the individual visualizations (charts, numbers, iFrames) within each tab
+
+ * **选项卡**将你的仪表板组织成多个部分(类似于仪表板内的页面)
+ * **小部件**是每个选项卡中的独立可视化(图表、数值、iFrames)
- Structure: Dashboard → Tabs → Widgets
+ 结构:仪表板 → 选项卡 → 小部件
-
- Bar charts have display limits: 100 bars for horizontal charts, 50 for vertical. If your data exceeds this, add filters to narrow down the results or change the grouping (e.g., group by week instead of day).
+
+ 仪表板级筛选尚不可用,但该功能已在我们的路线图中。 目前需要分别对每个小部件应用筛选器。
-
- Dashboard-level filters are not available yet, but this feature is on our roadmap. Currently, you need to apply filters to each widget individually.
+
+ 还不可以。 仪表图和表格已在我们的路线图中,将在后续版本中加入。
-
- Not yet. Gauge charts and tables are on our roadmap and will be added in a future release.
+
+ 1. 请确保处于查看模式(而非编辑模式)
+ 2. 按 **Cmd + K** 打开命令栏(Windows 上为 **Ctrl + K**)
+ 3. 选择 **复制仪表板**
-
- 1. Make sure you're in view mode (not editing)
- 2. Open the command bar with **Cmd + K** (or **Ctrl + K** on Windows)
- 3. Select **Duplicate dashboard**
-
+
+ 随着你的客户关系管理(CRM)数据变化,小部件会自动更新:
-
- Widgets update automatically as your CRM data changes:
-
- * Real-time updates for most metrics
- * Use the refresh button for a manual update if needed
- * Historical data is preserved for trend analysis
+ * 大多数指标实时更新
+ * 如有需要,可使用刷新按钮手动更新
+ * 历史数据会被保留以用于趋势分析
diff --git a/packages/twenty-docs/l/zh/user-guide/dashboards/how-tos/widget-faq.mdx b/packages/twenty-docs/l/zh/user-guide/dashboards/how-tos/widget-faq.mdx
new file mode 100644
index 0000000000..f3c268529f
--- /dev/null
+++ b/packages/twenty-docs/l/zh/user-guide/dashboards/how-tos/widget-faq.mdx
@@ -0,0 +1,67 @@
+---
+title: 组件常见问题
+description: 常见问题与错误消息说明。
+---
+
+
+
+ 三种方式:
+
+ * **空值百分比/非空值百分比**: 在“显示数据”下,选择“空值百分比”或“非空值百分比”
+ * **比例**: 对于“选择”或“复选框”字段,启用“比例”,将某个特定选项显示为占所有记录的百分比
+ * **后缀**: 对于聚合图表,在“样式设置”中添加 `%` 作为后缀
+
+
+
+ 使用**分组依据**时,可以通过两种方式显示系列:
+
+ * **分组**: 柱形并排显示—最适合比较精确数值
+ * **堆叠**: 柱形相互叠加—最适合展示构成
+
+ 在“样式设置”中切换**堆叠**选项即可。
+
+
+
+ 可用的运算取决于**字段类型**:
+
+ * **数字字段**: 求和、平均值、最小值、最大值
+ * **日期字段**: 最早、最晚(仅限聚合图表)
+ * **复选框字段**: 计数为真、计数为假
+
+ 如果看不到某个选项,请检查是否已选择兼容的字段类型。
+
+
+
+ 许多设置仅在满足前提条件时才会出现:
+
+ * **日期粒度**: 请先选择一个日期字段
+ * **分组依据、图例、堆叠**: 请先设置“来源”
+ * **图例、堆叠开关**: 请先设置“分组依据”
+
+ 如果某个设置缺失,请先配置其前提条件。
+
+
+
+ 图表未找到与您的配置匹配的记录。
+
+ **解决方法:** 删除或调整筛选器,确认您选择了正确的来源对象,或检查在所选日期范围内是否存在记录。
+
+
+
+ 缺少必需的设置,或存在不兼容的设置。
+
+ **解决方法:** 确保已设置来源、配置了显示数据,并选择了所需的分组字段。
+
+
+
+ 您的数据超出显示限制(100 个柱、100 个数据点或 100 个扇区)。
+
+ **解决方法:** 添加筛选器以缩小数据范围,或将日期粒度从“天”更改为“周”或“月”。
+
+
+
+ 所选字段在您的筛选条件中的记录没有值,或者字段类型与预期数据不匹配。
+
+ **解决方法:** 尝试使用其他字段,或检查记录在所选字段上是否有值。
+
+
diff --git a/packages/twenty-docs/l/zh/user-guide/dashboards/overview.mdx b/packages/twenty-docs/l/zh/user-guide/dashboards/overview.mdx
index 4c611ddda3..f6cfbb7791 100644
--- a/packages/twenty-docs/l/zh/user-guide/dashboards/overview.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/dashboards/overview.mdx
@@ -1,79 +1,85 @@
---
-title: Dashboards
-description: Learn the basics of reporting and dashboards in Twenty.
+title: 仪表板
+description: 了解 Twenty 中报表和仪表板的基础知识。
image: /images/user-guide/reporting/pie-chart.png
---
-
+
-## Understanding Dashboards
-
-Dashboards in Twenty provide a visual way to track your key performance metrics and gain insights from your CRM data.
-
-
-
-## Key Concepts
-
-### Dashboards
-
-A dashboard is a collection of tabs that display your CRM data at a glance. You can create multiple dashboards for different purposes:
-
-* Sales performance
-* Team activity
-* Pipeline health
-* Custom metrics
-
-### Tabs
-
-Tabs allow you to organize your dashboard into sections. Each tab contains one or more widgets.
-
-### Widgets
-
-Widgets are individual visualizations that display specific data. Types include:
-
-* Bar charts
-* Pie charts
-* Line charts
-* Number metrics
-* iFrames
-
- **Current limitations**:
-
- * Exporting dashboards and sharing with external users (non-Twenty users) are not available at the moment.
- * Gauge charts and tables are not yet available.
+ 仪表板目前处于测试版阶段。 在 **设置 → 更新 → 早期访问** 中启用它们。
-## Getting Started
+## 了解仪表板
-### Creating Your First Dashboard
+Twenty 中的仪表板提供了一种可视化方式,帮助你跟踪关键绩效指标,并从你的 CRM 数据中获取洞察。
-1. Navigate to the **Dashboards** section
-2. Click **+ New Dashboard**
-3. Give your dashboard a name
-4. Add tabs to organize your content
-5. Add widgets to display your data
-6. Save
+
-### Adding Widgets
+## 关键概念
-1. Open a tab on your dashboard
-2. Click **+ Add Widget**
-3. Select the widget type
-4. Choose the data source (object)
-5. Configure the widget settings
-6. Save and view your widget
+### 仪表板
-## Best Practices
+仪表板是一组选项卡的集合,可一目了然地展示你的 CRM 数据。 你可以为不同目的创建多个仪表板:
-* **Start simple**: Begin with a few key metrics and add more over time
-* **Focus on actionable data**: Display metrics that drive decisions
-* **Regular review**: Check your dashboards regularly to spot trends
-* **Share with team**: Make dashboards visible to relevant team members
+* 销售业绩
+* 团队活动
+* 销售管道健康状况
+* 自定义指标
-## Next Steps
+### 标签
-* [Widgets and visualizations](/l/zh/user-guide/dashboards/capabilities/widgets)
-* [Dashboards FAQ](/l/zh/user-guide/dashboards/how-tos/dashboards-faq)
+选项卡可让你将仪表板组织为多个部分。 每个选项卡包含一个或多个小部件。
+
+### 小部件
+
+小部件是用于展示特定数据的独立可视化。 类型包括:
+
+* 条形图
+* 饼图
+* 折线图
+* 汇总图表
+* iFrame
+* 富文本
+
+
+ **当前限制**:
+
+ * 目前不支持导出仪表板和与外部用户(非 Twenty 用户)共享。
+ * 仪表图和表格尚不可用。
+
+
+## 开始使用
+
+### 创建你的第一个仪表板
+
+1. 转到 **仪表板** 部分
+2. 点击 **+ 新建仪表板**
+3. 为你的仪表板命名
+4. 添加选项卡以组织你的内容
+5. 添加小部件以展示你的数据
+6. 保存
+
+### 添加小部件
+
+1. 在仪表板上打开一个选项卡
+2. 点击 **+ 添加小部件**
+3. 选择小部件类型
+4. 选择数据源(对象)
+5. 配置小部件设置
+6. 保存并查看你的小部件
+
+## 最佳实践
+
+* **从简单开始**:先从几个关键指标入手,再逐步添加更多
+* **聚焦可操作的数据**:展示能驱动决策的指标
+* **定期审查**:定期查看你的仪表板以发现趋势
+* **与团队共享**:使仪表板对相关团队成员可见
+
+## 下一步
+
+* [小部件与可视化](/l/zh/user-guide/dashboards/capabilities/widgets)
+* [图表设置参考](/l/zh/user-guide/dashboards/capabilities/chart-settings)
+* [仪表板常见问题](/l/zh/user-guide/dashboards/how-tos/dashboards-faq)
diff --git a/packages/twenty-docs/l/zh/user-guide/data-migration/capabilities/error-handling.mdx b/packages/twenty-docs/l/zh/user-guide/data-migration/capabilities/error-handling.mdx
index 6de37918bc..343a4bb9c8 100644
--- a/packages/twenty-docs/l/zh/user-guide/data-migration/capabilities/error-handling.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/data-migration/capabilities/error-handling.mdx
@@ -1,76 +1,76 @@
---
-title: Error Handling & Validation
-description: Review and fix import errors directly in the UI before confirming.
+title: 错误处理与验证
+description: 在确认之前,直接在 UI 中查看并修复导入错误。
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-## Pre-Import Validation
+## 导入前验证
-After uploading your file and mapping fields, Twenty validates your data **before** importing. This allows you to catch and fix errors without affecting your existing data.
+上传文件并完成字段映射后,Twenty 会在导入**之前**验证你的数据。 这样可以在不影响现有数据的情况下捕捉并修复错误。
-## How It Works
+## 工作原理
-1. **Upload** your CSV file
-2. **Map** your columns to Twenty fields
-3. **Review** the potential errors highlighted in yellow
-4. **Fix errors** directly in the UI
-5. **Confirm** the import
+1. **上传**您的 CSV 文件
+2. **映射**您的列到 Twenty 的字段
+3. **查看**黄色高亮的潜在错误
+4. 可直接在 UI 中**修复错误**
+5. **确认**导入
-
+
-## Error Display
+## 错误显示
-Rows with issues are highlighted in **yellow**. You can:
+存在问题的行会被高亮为**黄色**。 您可以:
-* **Edit the cell directly** to fix the error
-* **Remove the row** to skip it entirely
+* **直接编辑单元格**以修复错误
+* **删除该行**以完全跳过该行
-This inline editing saves time—no need to go back to your spreadsheet, fix errors, and re-upload.
+这种行内编辑可节省时间—无需返回电子表格、修复错误并重新上传。
-## Common Error Types
+## 常见错误类型
-### Duplicate Values
+### 重复值
-**Cause**: A unique field (email, domain) already exists in Twenty or appears twice in your file.
+**原因**:唯一字段(电子邮件、域名)已在 Twenty 中存在,或在您的文件中出现了两次。
-**Fix**:
+**修复**:
-* Edit the duplicate value in the import UI
-* Remove one of the duplicate rows
+* 在导入 UI 中编辑重复值
+* 删除其中一条重复的行
-See [Uniqueness Constraints](/l/zh/user-guide/data-migration/capabilities/uniqueness-constraints) for more details on how uniqueness is enforced.
+关于如何实施唯一性,详见[唯一性约束](/l/zh/user-guide/data-migration/capabilities/uniqueness-constraints)。
-### Invalid Format
+### 格式无效
-**Cause**: Data doesn't match the expected format (e.g., invalid email, wrong date format).
+**原因**:数据与期望的格式不匹配(例如,电子邮件无效、日期格式错误)。
-**Fix**: Edit the cell to use the correct format.
+**修复**:编辑单元格,使其符合正确格式。
-See [Field Mapping](/l/zh/user-guide/data-migration/capabilities/field-mapping) for the expected format of each field type.
+请参见[字段映射](/l/zh/user-guide/data-migration/capabilities/field-mapping),了解每种字段类型的期望格式。
-### Missing Required Fields
+### 缺少必填字段
-**Cause**: A required field is empty.
+**原因**:必填字段为空。
-**Fix**: Enter a value in the required field or remove the row.
+**修复**:在必填字段中输入值,或删除该行。
-### Relation Not Found
+### 未找到关系
-**Cause**: The referenced record doesn't exist (e.g., a Company domain that wasn't imported).
+**原因**:被引用的记录不存在(例如,公司域名尚未导入)。
-**Fix**:
+**修复**:
-* Import the parent records first
-* Or correct the reference value
+* 先导入父级记录
+* 或更正引用值
-See [Import Relations](/l/zh/user-guide/data-migration/capabilities/import-relations) for the correct import order and how to link records.
+有关正确的导入顺序及如何关联记录,参见[导入关系](/l/zh/user-guide/data-migration/capabilities/import-relations)。
-## Tips for Fewer Errors
+## 减少错误的建议
-1. **Download the template** to see expected format prior to importing your file
-2. **Clean your data** in the spreadsheet first
-3. **Import files in correct order** to import relations (Companies → People → Opportunities)
-4. **Test with small batches** before full import
-5. **Check for duplicates** before uploading
-6. **Limit the size of your file to 10,000 records** per file
+1. **下载模板**,在导入文件前查看期望的格式
+2. 先在电子表格中,**清理您的数据**
+3. **按正确顺序导入文件**以导入关系(公司 → 联系人 → 商机)
+4. **用小批量进行测试**,再进行完整导入
+5. 在上传前,**检查重复项**
+6. **将您的文件大小限制为 10,000 条记录** 每个文件
diff --git a/packages/twenty-docs/l/zh/user-guide/data-migration/capabilities/field-mapping.mdx b/packages/twenty-docs/l/zh/user-guide/data-migration/capabilities/field-mapping.mdx
index 41d4dbc86f..79b1b5e890 100644
--- a/packages/twenty-docs/l/zh/user-guide/data-migration/capabilities/field-mapping.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/data-migration/capabilities/field-mapping.mdx
@@ -1,198 +1,198 @@
---
-title: Field Mapping
-description: How field mapping works during data import.
+title: 字段映射
+description: 数据导入期间字段映射的工作原理。
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-## How Field Mapping Works
+## 字段映射的工作原理
-When you upload a file, Twenty analyzes your columns and attempts to match them to existing fields.
+当您上传文件时,Twenty 会分析您的列,并尝试将其与现有字段匹配。
-### Automatic Mapping
+### 自动映射
-Twenty tries to match columns based on:
+Twenty 将根据以下内容尝试匹配列:
-* Column header names (exact or similar matches)
-* Data type detection (dates, numbers, emails)
-* Common field patterns
+* 列标题名称(精确或相似匹配)
+* 数据类型检测(日期、数字、电子邮件)
+* 常见字段模式
-**Quick tip:** Export a few rows from the object you want to import. The exported file will have the exact column names Twenty expects, making automatic mapping seamless during import.
+**快速提示:** 从您要导入的对象中导出几行数据。 导出的文件将包含 Twenty 期望的精确列名,从而在导入时实现无缝的自动映射。
-### Manual Mapping Options
+### 手动映射选项
-For each column, you can:
+对于每一列,您可以:
-* **Map to a field**: Select the matching Twenty field from a dropdown
-* **Do not map**: Skip the column entirely (data won't be imported)
+* **映射到字段**:从下拉列表中选择匹配的 Twenty 字段
+* **不进行映射**:完全跳过该列(不会导入数据)
-**Fields must exist before import.** The import creates records, not fields. Create custom fields under **Settings → Data Model** before importing.
+**字段必须在导入前已存在。** 导入会创建记录,而不是创建字段。 请在导入前于 **设置 → 数据模型** 中创建自定义字段。
-## Field Type Compatibility
+## 字段类型兼容性
-All field types available in the Data Model are supported for import.
+数据模型中可用的所有字段类型都支持导入。
-You can also import `id` values to either assign a specific ID to new records or update existing ones.
+您也可以导入 `id` 值,以便为新记录指定特定 ID,或更新现有记录。
-## Data Format Requirements
+## 数据格式要求
-**Some fields have special syntax.** We recommend downloading the sample file before preparing your import to see the expected syntax for each field type.
+**某些字段有特殊语法。** 我们建议在准备导入之前下载示例文件,以查看每种字段类型的预期语法。
-### Address Fields
+### 地址字段
-Address is a nested field with multiple columns. Some can be left empty.
+地址是一个嵌套字段,包含多个列。 其中一些可以留空。
-* **Address / Address 1**: Street address line 1
-* **Address / Address 2**: Street address line 2
-* **Address / City**: City name
-* **Address / State**: State or province
-* **Address / Country**: Country name
-* **Address / Post Code**: Postal/ZIP code
+* **Address / Address 1**:街道地址第 1 行
+* **Address / Address 2**:街道地址第 2 行
+* **Address / City**:城市名称
+* **Address / State**:州或省
+* **Address / Country**:国家名称
+* **Address / Post Code**:邮政/ZIP 编码
-### Array Fields
+### 数组字段
-Use the following format:
+使用以下格式:
```
["value1","value2"]
```
-### Boolean Fields
+### 布尔字段
-Use `TRUE` or `FALSE` (uppercase) - not `true` or `false`
+使用 `TRUE` 或 `FALSE`(大写),不要使用 `true` 或 `false`
-### Currency Fields
+### 货币字段
-Currency is a nested field with two columns that **both must be filled**:
+货币是一个**嵌套字段**,需要两列,且**两列都必须填写**:
-* **Amount / Amount**: The numeric value (e.g., `1234.56`)
-* **Amount / Currency**: The currency code (e.g., `USD`, `EUR`)
+* **Amount / Amount**:数值(例如,`1234.56`)
+* **Amount / Currency**:货币代码(例如,`USD`、`EUR`)
-### Date Fields
+### 日期字段
-Supported formats:
+支持的格式:
-* `YYYY-MM-DD` (recommended)
+* `YYYY-MM-DD`(推荐)
* `MM/DD/YYYY`
* `DD/MM/YYYY`
-* ISO 8601 format
+* ISO 8601 格式
-### Domain Fields
+### 域名字段
-* It is recommended to use the format `https://domain.com` to avoid creating duplicates, as this is the format used for Companies created by the mailbox and calendar synchronizations
-* A `Domain Label` and `Domain URL` can be filled: best practice is to fill `domain.com` in the label and `https://domain.com` in the url
-* Domains must be unique within the Companies object
-* **Domains must be unique within the file to import**
+* 建议使用 `https://domain.com` 格式以避免创建重复,因为通过邮箱和日历同步创建的公司会使用该格式
+* 可以填写 `Domain Label` 和 `Domain URL`:最佳做法是在标签中填写 `domain.com`,在 url 中填写 `https://domain.com`
+* 在 Companies 对象内,域名必须唯一
+* **待导入文件中的域名必须唯一**
-### Email Fields
+### 电子邮件字段
-* Must be valid email format
-* Emails must be unique within the People object
-* **Emails must be unique within the file to import**
-* For additional emails: use **Emails / Primary Email** for the main email, and **Emails / Additional Emails** with this format:
+* 必须为有效的电子邮件格式
+* 在 People 对象内,电子邮件必须唯一
+* **待导入文件中的电子邮件必须唯一**
+* 对于附加邮箱:主邮箱请使用 **Emails / Primary Email**,附加邮箱请使用 **Emails / Additional Emails**,并采用以下格式:
```
["jane@twenty.com","jane.doe@twenty.com"]
```
-### Id Fields
+### ID 字段
-Specifying an `id` during import is optional. Twenty auto-generates one if not provided.
+在导入过程中指定 `id` 是可选的。 如未提供,Twenty 将自动生成 ID。
-Use cases for mapping an `id` column:
+映射 `id` 列的用例:
-* **Set a specific ID**: Choose the UUID for newly created records
-* **Update existing records**: Match against existing records to update them instead of creating duplicates. In that case, it is recommended to not map the other unique fields: mapping only one unique field ensures a smoother import.
+* **设置特定 ID**:为新创建的记录选择 UUID
+* **更新现有记录**:与现有记录进行匹配以更新它们,而不是创建重复项。 在这种情况下,建议不要映射其他唯一字段:仅映射一个唯一字段可确保导入更顺畅。
-If you provide an `id`, it must be in UUID format (e.g., `c776ee49-f608-4a77-8cc8-6fe96ae1e43f`).
+如果您提供 `id`,其必须为 UUID 格式(例如,`c776ee49-f608-4a77-8cc8-6fe96ae1e43f`)。
-### JSON Fields
+### JSON 字段
-Use valid JSON format:
+使用有效的 JSON 格式:
```
{"key":"value","key2":"value2"}
```
-### Links Fields
+### 链接字段
-Similar to Domain fields:
+与域名字段类似:
-* Fill both the label and URL columns: **Links / Link URL** and **Links / Link Label**
-* Use full URL format: `https://example.com`
-* For secondary links, use **Links / Secondary Links** column with this format:
+* 同时填写标签和 URL 两列:**Links / Link URL** 和 **Links / Link Label**
+* 使用完整的 URL 格式:`https://example.com`
+* 对于次要链接,请使用 **Links / Secondary Links** 列,并采用以下格式:
```
[{"url":"https://twenty.com","label":"Twenty"}]
```
-### Multi-Select Fields
+### 多选字段
-Use the **API names** (not the display labels) in the following format:
+使用**API 名称**(而非显示标签),格式如下:
```
["VALUE1","VALUE2"]
```
-See [here](#finding-api-names-for-select-fields) where to find the API names.
+请参见[此处](#finding-api-names-for-select-fields)了解如何查找 API 名称。
-New select options will not be created automatically by the import. They must be added under **Settings → Data Model** before importing.
+新的选择项不会通过导入自动创建。 请在导入前于 **设置 → 数据模型** 中添加它们。
- **Import overwrites, it does not add.**
+ **导入会覆盖,不会追加。**
- If a record already has `VALUE2` and `VALUE3` selected, and you import `["VALUE1"]`, the record will only have `VALUE1` after import. The previous selections are replaced, not merged.
+ 如果一条记录已选择了 `VALUE2` 和 `VALUE3`,而您导入了 `["VALUE1"]`,则导入后该记录将只保留 `VALUE1`。 之前的选择会被替换,而不是合并。
-### Number Fields
+### 数字字段
-* Numbers only
-* Decimals use period: `1234.56`
-* No thousands separators
+* 仅限数字
+* 小数使用点号:`1234.56`
+* 不使用千位分隔符
-### Phone Fields
+### 电话字段
-Phone is a nested field with multiple columns that **must be filled**
+电话是一个包含多列的嵌套字段,且**必须填写**
-* **Phones / Primary Phone Number**: The phone number (e.g., `4159095555`)
-* **Phones / Primary Phone Country Code**: Country code (e.g., `US`)
-* **Phones / Primary Phone Calling Code**: Dialing code (e.g., `+1`)
+* **Phones / Primary Phone Number**:电话号码(例如,`4159095555`)
+* **Phones / Primary Phone Country Code**:国家代码(例如,`US`)
+* **Phones / Primary Phone Calling Code**:拨号代码(例如,`+1`)
-### Rating Fields
+### 评分字段
-Use the API name format: `RATING_1`, `RATING_2`, `RATING_3`, `RATING_4`, `RATING_5`
+使用 API 名称格式:`RATING_1`、`RATING_2`、`RATING_3`、`RATING_4`、`RATING_5`
-### Relation Fields
+### 关系字段
-Please see our dedicated article: [Import Relations Between Objects](/l/zh/user-guide/data-migration/capabilities/import-relations)
+请参阅我们的专门文章:[在对象之间导入关联](/l/zh/user-guide/data-migration/capabilities/import-relations)
-### Select Fields
+### 选择字段
-Use the **API name** of the option (not the display label):
+使用选项的**API 名称**(而不是显示标签):
```
VALUE1
```
-See [here](#finding-api-names-for-select-fields) where to find the API names.
-New select options will not be created automatically by the import. They must be added under **Settings → Data Model** before importing.
+请参见[此处](#finding-api-names-for-select-fields)了解如何查找 API 名称。
+新的选择项不会通过导入自动创建。 请在导入前于 **设置 → 数据模型** 中添加它们。
-### Text Fields
+### 文本字段
-* No special formatting required
-* Leading/trailing spaces are trimmed
+* 无需特殊格式
+* 首尾空格会被移除
-## Finding API Names
+## 查找 API 名称
-For Select, Multi-Select, and Array fields with predefined options, you must use the **API names**, not the display labels.
+对于具有预定义选项的 Select、Multi-Select 和 Array 字段,必须使用 **API 名称**,而不是显示标签。
-### How to Find API Names
+### 如何查找 API 名称
-1. Go to **Settings → Data Model**
-2. Select the object and field
-3. Enable **Advanced mode** (toggle at the bottom right of the settings page)
-4. View the API name for each option
+1. 进入 **设置 → 数据模型**
+2. 选择对象和字段
+3. 启用 **高级模式**(在设置页面右下角切换)
+4. 查看每个选项的 API 名称
-
+
diff --git a/packages/twenty-docs/l/zh/user-guide/data-migration/capabilities/file-formats.mdx b/packages/twenty-docs/l/zh/user-guide/data-migration/capabilities/file-formats.mdx
index cb268fb3cb..789d8171d7 100644
--- a/packages/twenty-docs/l/zh/user-guide/data-migration/capabilities/file-formats.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/data-migration/capabilities/file-formats.mdx
@@ -1,48 +1,48 @@
---
-title: Supported File Formats
-description: File formats supported for data import in Twenty.
+title: 支持的文件格式
+description: 在 Twenty 中用于数据导入的受支持文件格式。
---
-## Supported Formats
+## 支持的格式
-Twenty supports three file formats for import:
+Twenty 支持三种导入文件格式:
-| Format | Extension | Notes |
-| ------------------ | --------- | ---------------------------- |
-| **CSV** | .csv | Recommended, most compatible |
-| **Excel** | .xlsx | Modern Excel format |
-| **Excel (Legacy)** | .xls | Older Excel format |
+| 格式 | 扩展名 | 备注 |
+| ------------- | ----- | ----------- |
+| **CSV** | .csv | 推荐,兼容性最佳 |
+| **Excel** | .xlsx | 现代 Excel 格式 |
+| **Excel(旧版)** | .xls | 旧版 Excel 格式 |
-## File Requirements
+## 文件要求
-| Requirement | Value |
-| ---------------- | ------------------------------------- |
-| **Encoding** | UTF-8 recommended |
-| **Record limit** | 10,000 records per file |
-| **Structure** | First row must contain column headers |
-| **Content** | One object type per file |
+| 要求 | 值 |
+| -------- | ----------------- |
+| **编码** | 推荐使用 UTF-8 |
+| **记录上限** | 每个文件最多 10,000 条记录 |
+| **结构** | 第一行必须包含列标题 |
+| **内容** | 每个文件仅包含一种对象类型 |
-## CSV Best Practices
+## CSV 最佳实践
-* **Delimiter**: Use comma (`,`) or semicolon (`;`)
-* **Text qualifier**: Use double quotes (`"`) for text containing commas
-* **Line endings**: Windows (CRLF) or Unix (LF) both supported
-* **Empty values**: Leave cells empty, don't use "NULL" or "N/A"
+* **分隔符**:使用逗号(`,`)或分号(`;`)
+* **文本限定符**:对于包含逗号的文本,请使用双引号(`\"`)
+* **行结束符**:支持 Windows(CRLF)或 Unix(LF)
+* **空值**:将单元格留空,不要使用 "NULL" 或 "N/A"
-## Excel Best Practices
+## Excel 最佳实践
-When exporting from Excel:
+从 Excel 导出时:
-* Remove formulas (export values only)
-* Delete empty rows at the end
-* Ensure no merged cells
-* Use the first sheet only
+* 移除公式(仅导出值)
+* 删除末尾的空行
+* 确保没有合并单元格
+* 仅使用第一个工作表
-## Large Datasets
+## 大型数据集
-For datasets larger than 10,000 records:
+对于超过 10,000 条记录的数据集:
-* Split into multiple files
-* Or use the [API import](/l/zh/user-guide/data-migration/how-tos/import-data-via-api) for unlimited records
+* 拆分为多个文件
+* 或者使用 [API 导入](/l/zh/user-guide/data-migration/how-tos/import-data-via-api) 以导入无限数量的记录
-For very large migrations (100,000+ records), the API is significantly faster and more reliable than CSV imports.
+对于非常大的迁移(100,000+ 条记录),API 比 CSV 导入明显更快且更可靠。
diff --git a/packages/twenty-docs/l/zh/user-guide/data-migration/capabilities/import-relations.mdx b/packages/twenty-docs/l/zh/user-guide/data-migration/capabilities/import-relations.mdx
index b70b925b63..529bec5149 100644
--- a/packages/twenty-docs/l/zh/user-guide/data-migration/capabilities/import-relations.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/data-migration/capabilities/import-relations.mdx
@@ -1,94 +1,94 @@
---
-title: Import Relations Between Objects
-description: Import relationships between records via CSV.
+title: 导入对象之间的关系
+description: 通过 CSV 导入记录之间的关系。
---
-## Overview
+## 概览
-Twenty supports importing relationships between objects during CSV import. This allows you to link records (e.g., attach People to Companies) as part of your data migration.
+Twenty 支持在 CSV 导入过程中导入对象之间的关系。 这使您可以在数据迁移过程中关联记录(例如,将人员关联到公司)。
-**Currently supported for import**: One-to-many relations pointing to a single object type on each side (e.g., People → Companies). Relations pointing to multiple object types are not yet supported in import/export.
+**当前支持导入**:两侧均指向单一对象类型的一对多关系(例如,人员 → 公司)。 指向多个对象类型的关系目前尚不支持导入/导出。
-## How Relations Work in Twenty
+## Twenty 中关系的工作方式
-### One to Many / Many to One
+### 一对多 / 多对一
-Twenty supports standard relations where one record links to many others:
+Twenty 支持一条记录关联到多条记录的标准关系:
-* **One Company → Many People**: A company can have multiple employees, but each person belongs to one company
-* **One Company → Many Opportunities**: A company can have multiple deals, but each opportunity belongs to one company
+* **一个公司 → 多个人员**:一家公司可以有多名员工,但每个人只隶属于一家公司
+* **一个公司 → 多个商机**:一家公司可以有多个商机,但每个商机只属于一家公司
-### Relations That Can Point to Multiple Object Types
+### 可指向多种对象类型的关系
-Some relations can connect to different types of objects. This works in two ways:
+某些关系可以连接到不同类型的对象。 这有两种方式:
-**Pattern 1: Many records linking to one record each from different object types**
+**模式 1:来自不同对象类型的多条记录,各自链接到一条记录**
-Several Notes, Tasks, or Activities can each be attached to multiple object types at once:
+多条笔记、任务或活动可以同时附加到多种对象类型:
-* **Notes** can be linked to one Person, one Company, and one Opportunity simultaneously
-* **Tasks** can be linked to one Person, one Company, and one Opportunity simultaneously
+* **笔记** 可以同时关联到一个人员、一个公司和一个商机
+* **任务** 可以同时关联到一个人员、一个公司和一个商机
-Here, the Notes/Tasks are on the "many" side. Each links to one record per object type.
+在此场景中,笔记/任务位于“多”的一侧。 每条记录在每种对象类型上都仅链接到一条记录。
-**Pattern 2: One record receiving links from many records of different object types**
+**模式 2:一条记录接收来自不同对象类型的多条记录的链接**
-A Project can receive links from multiple records across different object types:
+一个项目可以接收来自不同对象类型的多条记录的链接:
-* **A Project** can have many People linked to it, many Companies linked to it, and many Notes attached to it
+* **一个项目** 可以关联到许多人员、许多公司,并附加许多笔记
-Here, the Project is on the "one" side. Multiple records from different objects can all link to the same Project.
+在此场景中,项目位于“一”的一侧。 来自不同对象的多条记录都可以链接到同一个项目。
- **Import/Export limitation**: Relations that point to multiple object types (like Notes → People/Companies/Opportunities) are **not yet supported** in CSV import or export.
+ **导入/导出限制**:指向多个对象类型的关系(如 笔记 → 人员/公司/商机)在 CSV 导入或导出中**尚不支持**。
- * **Import**: Only one-to-many relations pointing to a single object type on each side can be imported
- * **Export**: Columns for relations pointing to multiple object types are currently left empty
+ * **导入**:仅支持导入两侧均指向单一对象类型的一对多关系
+ * **导出**:指向多个对象类型的关系列目前会留空
- This is on our roadmap.
+ 此功能已在我们的路线图中。
-### What's Not Supported Today
+### 当前不支持的内容
-**Many to Many relations** are not yet available. For example, you cannot currently create a relation where:
+**多对多关系** 目前尚不可用。 例如,您目前无法创建如下关系:
-* Many People are linked to many Projects
+* 多个人员关联到多个项目
-Many to Many relations are planned for H1 2026.
+多对多关系计划在 2026 年上半年推出。
-## Linking Records During Import
+## 在导入过程中关联记录
-**Reminder**: Only one-to-many relations pointing to a single object type can be imported (e.g., People → Companies). Relations pointing to multiple object types (e.g., Notes → People/Companies/Opportunities) are not yet supported.
+**提醒**:仅可导入指向单一对象类型的一对多关系(例如,人员 → 公司)。 指向多个对象类型的关系(例如,笔记 → 人员/公司/商机)目前尚不支持。
-### Step 1: Identify the "One" and "Many" Sides
+### 步骤 1:确定“一”和“多”两侧
-First, determine which object is on the "one" side and which is on the "many" side of the relationship.
+首先,确定关系中哪个对象位于“一”侧,哪个对象位于“多”侧。
-**Example**:
+**示例**:
-* **Company** is the "one" side (one company has many employees)
-* **People** is the "many" side (each person belongs to one company)
+* **公司** 位于“一”侧(一个公司有许多员工)
+* **人员** 位于“多”侧(每个人都隶属于一家公司)
-### Step 2: Ensure the "One" Side Records Exist
+### 步骤 2:确保“一”侧的记录已存在
-Before importing the "many" side, the "one" side records must already exist in Twenty.
+在导入“多”侧之前,“一”侧的记录必须已在 Twenty 中存在。
-* Import or create the "one" side records first (e.g., Companies)
-* Validate their unique identifier. This can be:
- * The `id` (Twenty's UUID)
- * A field set as unique (e.g., `domain` for Companies, or an external ID from your previous system)
+* 请先导入或创建“一”侧的记录(例如,公司)
+* 验证其唯一标识符。 可以是:
+ * `id`(Twenty 的 UUID)
+ * 一个被设置为唯一的字段(例如,公司的 `domain`,或您先前系统中的外部 ID)
-The import will fail if a reference is made to a record that does not exist.
+若引用了不存在的记录,导入将失败。
-### Step 3: Prepare Your CSV File
+### 步骤 3:准备您的 CSV 文件
-Add a column in your "many" side CSV file that references the "one" side record.
+在“多”侧的 CSV 文件中添加一列,用于引用“一”侧的记录。
-**Example**: For a People CSV file linking to Companies:
+**示例**:对于将人员关联到公司的 CSV 文件:
```
firstName,lastName,email,companyDomain
@@ -96,53 +96,53 @@ John,Smith,john@acme.com,https://acme.com
Jane,Doe,jane@widgets.co,https://widgets.co
```
-**Important**:
+**重要**:
-* The value must **exactly match** the unique field on the Company record
-* For domains, use the **Domain URL** (e.g., `https://acme.com`), not the Domain Label
-* Map only **one** unique identifier per relation: this leads to a smoother import
+* 该值必须与公司记录上的唯一字段**完全匹配**
+* 对于域名,请使用**域名 URL**(例如,`https://acme.com`),而不是域名标签
+* 每个关系只映射**一个**唯一标识符:这将使导入更顺畅
-### Step 4: Ensure the Relation Field Exists
+### 步骤 4:核实关系字段是否存在
-Before uploading your file, make sure the relation field exists between your objects.
+在上传文件之前,确保对象之间已存在关系字段。
-If it doesn't exist:
+如果不存在:
-1. Go to **Settings → Data Model**
-2. Select your object (e.g., People)
-3. Create a relation field pointing to the target object (e.g., Company)
+1. 进入 **设置 → 数据模型**
+2. 选择您的对象(例如,人员)
+3. 创建一个指向目标对象(例如,公司)的关系字段
-### Step 5: Upload and Map the Relation
+### 步骤 5:上传并映射关系
-1. Upload your CSV file via the import UI
-2. In the field mapping step, find your relation column (e.g., `companyDomain`)
-3. Map it to the relation field (e.g., Company)
-4. Twenty will automatically link each record to the matching parent
+1. 通过导入界面上传您的 CSV 文件
+2. 在字段映射步骤中,找到您的关系列(例如,`companyDomain`)
+3. 将其映射到关系字段(例如,公司)
+4. Twenty 将自动把每条记录关联到匹配的父级
-### Available Unique Fields for Relations
+### 可用于关系的唯一字段
-| Object | Unique Fields Available |
-| ------------------------------------- | --------------------------------------- |
-| **Companies** | `id`, `domain`, any custom unique field |
-| **People** | `id`, `email`, any custom unique field |
-| **Workspace Members** | `id`, `email` (not name) |
-| **Other standard and custom objects** | `id`, any field marked as unique |
+| 对象 | 可用的唯一字段 |
+| ---------------- | ----------------------- |
+| **公司** | `id`、`domain`,任何自定义唯一字段 |
+| **人员** | `id`、`email`,任何自定义唯一字段 |
+| **工作区成员** | `id`、`email`(而非姓名) |
+| **其他标准对象和自定义对象** | `id`,或任何标记为唯一的字段 |
-**Linking to Workspace Members**: When the relation points to Workspace Members (your team logging into Twenty), reference them by their **email address**, not their name.
+**关联到工作区成员**:当关系指向工作区成员(您的团队登录 Twenty)时,请使用其**电子邮件地址**进行引用,而不是姓名。
-We recommend using `domain` for Companies and `email` for People, as these are human-readable and easy to maintain in spreadsheets.
+我们建议对公司使用 `domain`,对人员使用 `email`,因为这些字段可读性强,且易于在电子表格中维护。
-**Reminder**: Soft-deleted records (visible under Command Menu → See deleted records) count toward uniqueness criteria. If you import a record with the same unique value as a deleted record, the deleted record will be restored. See [Uniqueness Constraints](/l/zh/user-guide/data-migration/capabilities/uniqueness-constraints) for more details.
+**提醒**:软删除的记录(可在“命令菜单 → 查看已删除的记录”中查看)计入唯一性判定标准。 如果您导入的记录与某条已删除记录具有相同的唯一值,该已删除记录将被还原。 详见[唯一性约束](/l/zh/user-guide/data-migration/capabilities/uniqueness-constraints)。
-## Import Order Rule
+## 导入顺序规则
- **Always import the "one" side first!**
+ **务必先导入“一”端!**
- 1. **Companies** first (no dependencies)
- 2. **People** second (linked to Companies)
- 3. **Opportunities** third (linked to Companies/People)
- 4. **Custom objects** following their dependencies
+ 1. **公司** 优先(无依赖关系)
+ 2. **人员** 其次(关联到公司)
+ 3. **商机** 第三(关联到公司/人员)
+ 4. **自定义对象**(按其依赖关系)
- The parent record must exist before you can reference it.
+ 在引用之前,父级记录必须已存在。
diff --git a/packages/twenty-docs/l/zh/user-guide/data-migration/capabilities/uniqueness-constraints.mdx b/packages/twenty-docs/l/zh/user-guide/data-migration/capabilities/uniqueness-constraints.mdx
index 5f6d05701b..00e9d38c9f 100644
--- a/packages/twenty-docs/l/zh/user-guide/data-migration/capabilities/uniqueness-constraints.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/data-migration/capabilities/uniqueness-constraints.mdx
@@ -1,72 +1,72 @@
---
-title: Uniqueness Constraints
-description: How Twenty enforces data uniqueness during import.
+title: 唯一性约束
+description: Twenty 如何在导入过程中强制确保数据唯一性。
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-## Overview
+## 概览
-Twenty enforces uniqueness on certain fields to prevent duplicate records and ensure data integrity. Understanding these constraints is essential for successful imports.
+Twenty 会在特定字段上强制唯一性,以防止重复记录并确保数据完整性。 了解这些约束对于成功导入至关重要。
-## Default Unique Fields
+## 默认唯一字段
-| Object | Unique Fields |
-| ------------------ | ---------------------- |
-| **People** | `id`, `email` |
-| **Companies** | `id`, `domain` |
-| **Custom objects** | `id` only (by default) |
+| 对象 | 唯一字段 |
+| --------- | -------------- |
+| **人员** | `id`, `email` |
+| **公司** | `id`, `domain` |
+| **自定义对象** | 仅 `id`(默认) |
-The `id` field is Twenty's internal identifier, auto-generated for each record. It uses UUID format (e.g., `c776ee49-f608-4a77-8cc8-6fe96ae1e43f`).
+`id` 字段是 Twenty 的内部标识符,为每条记录自动生成。 它使用 UUID 格式(例如,`c776ee49-f608-4a77-8cc8-6fe96ae1e43f`)。
-## Custom Unique Fields
+## 自定义唯一字段
-You can define additional unique fields under **Settings → Data Model**:
+您可以在 **设置 → 数据模型** 下定义其他唯一字段:
-1. Go to **Settings → Data Model**
-2. Select the object
-3. Click on a field
-4. Enable **Unique** in field settings
+1. 进入 **设置 → 数据模型**
+2. 选择一个对象
+3. 点击某个字段
+4. 在字段设置中启用 **Unique**
-### Use Cases for Custom Unique Fields
+### 自定义唯一字段的使用场景
-* **External IDs**: Store IDs from other systems (Salesforce ID, HubSpot ID)
-* **Business identifiers**: Employee numbers, customer codes
-* **Alternative contact info**: LinkedIn profile, phone number
+* **外部 ID**:存储来自其他系统的 ID(Salesforce ID、HubSpot ID)
+* **业务标识符**:员工编号、客户代码
+* **替代联系方式**:LinkedIn 资料、电话号码
-The field name `id` is reserved for Twenty's internal ID. Use a different name like `externalId` or `legacyId` for external identifiers.
+字段名 `id` 保留给 Twenty 的内部 ID。 外部标识符请使用 `externalId` 或 `legacyId` 等其他名称。
-## Import Behavior
+## 导入行为
-### Creating New Records
+### 创建新记录
-If a unique field value doesn't exist, a new record is created.
+如果唯一字段的值不存在,将创建一条新记录。
-### Updating Existing Records
+### 更新现有记录
-If a unique field value matches an existing record, that record is **updated** with the new data.
-To **update existing records**, it is recommended to **only match one unique field**.
+如果唯一字段的值与现有记录匹配,该记录将使用新数据进行**更新**。
+要**更新现有记录**,建议**仅匹配一个唯一字段**。
-### Soft-Deleted Records
+### 软删除的记录
- **Deleted records count toward uniqueness.**
+ **已删除的记录也会计入唯一性。**
- Soft-deleted records (visible under Command Menu → See deleted records) are included in uniqueness checks. If you import a record with the same unique value as a deleted record, the deleted record will be **restored** with the new data.
+ 软删除的记录(可在“命令菜单 → 查看已删除的记录”中查看)会包含在唯一性检查中。 如果您导入的记录与某条已删除记录具有相同的唯一值,该已删除记录将被**还原**,并使用新数据。
-## Duplicate Detection During Import
+## 导入过程中的重复检测
-During the validation phase:
+在验证阶段:
-* Duplicates within your file are highlighted in yellow
-* You can edit or remove duplicate rows from the UI before starting the import
+* 文件中的重复项会以黄色高亮显示
+* 开始导入前,您可以在界面中编辑或移除重复的行
-
+
-## Best Practices
+## 最佳实践
-1. **Remove duplicates** from your file before importing
-2. **Check for existing records** in Twenty before importing
-3. **Use external IDs** when migrating from other systems
-4. **Include unique fields** if you want to update existing records
+1. 在导入前,**从文件中移除重复项**
+2. 在导入前,在 Twenty 中**检查是否存在现有记录**
+3. 从其他系统迁移时,**使用外部 ID**
+4. 如果您希望更新现有记录,请**包含唯一字段**
diff --git a/packages/twenty-docs/l/zh/user-guide/data-migration/how-tos/export-your-data.mdx b/packages/twenty-docs/l/zh/user-guide/data-migration/how-tos/export-your-data.mdx
index e011ecddb6..12863ced6e 100644
--- a/packages/twenty-docs/l/zh/user-guide/data-migration/how-tos/export-your-data.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/data-migration/how-tos/export-your-data.mdx
@@ -1,209 +1,209 @@
---
-title: Export Your Data
-description: Complete step-by-step guide to exporting data from Twenty.
+title: 导出您的数据
+description: 从 Twenty 导出数据的完整分步指南。
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-## Overview
+## 概览
-Export your workspace data to CSV for backups, reporting, or migration.
+将您的工作区数据导出为 CSV,用于备份、报表或迁移。
-**Use cases:**
+**使用场景:**
-* **Regular backups** — keep copies of your data
-* **External reporting** — analyze data in Excel, Google Sheets, or BI tools
-* **Migration** — move data to another system
-* **Bulk updates** — export, edit, and re-import to update records
+* **定期备份** — 保留您的数据副本
+* **外部报表** — 在 Excel、Google 表格或 BI 工具中分析数据
+* **迁移** — 将数据迁移到其他系统
+* **批量更新** — 通过导出、编辑并重新导入来更新记录
-## What You Need to Know
+## 您需要了解的内容
-### Export Limits
+### 导出限制
-* **Maximum 20,000 records** per export
-* Only **visible columns** are exported
-* Only **filtered records** are exported (based on your current view)
+* **每次导出最多 20,000 条记录**
+* 仅导出**可见列**
+* 仅导出**筛选后的记录**(基于您当前视图)
-For larger exports (20,000+ records), use filters to export in batches or use the [API](/l/zh/developers/extend/capabilities/apis).
+对于更大的导出(20,000+ 条记录),请使用筛选器分批导出,或使用 [API](/l/zh/developers/extend/capabilities/apis)。
-### Permissions
+### 权限
-You need the **"Export CSV"** permission to export data. Contact your workspace admin if you don't have this option.
+导出数据需要拥有 **"Export CSV"** 权限。 如果您没有此选项,请联系您的工作区管理员。
-## Step 1: Navigate to the Object
+## 步骤 1:导航到对象
-Go to the object you want to export:
+前往您要导出的对象:
-* **People** — for contacts
-* **Companies** — for organizations
-* **Opportunities** — for deals
-* **Custom objects** — any object you've created
+* **People** — 用于联系人
+* **Companies** — 用于组织
+* **Opportunities** — 用于商机
+* **自定义对象** — 您创建的任意对象
-## Step 2: Configure Your View
+## 步骤 2:配置您的视图
-**Important:** The export includes only what's visible in your current view.
+\*\*重要:\*\*导出仅包含您当前视图中可见的内容。
-### Add/Remove Columns
+### 添加/移除列
-1. Click **Options → Fields** (or the **+** at the end of columns)
-2. Check the fields you want to export
-3. Uncheck fields you don't need
+1. 单击 **Options → Fields**(或单击列末尾的 **+**)
+2. 勾选您要导出的字段
+3. 取消勾选不需要的字段
-### Filter Records (Optional)
+### 筛选记录(可选)
-If you only need a subset of data:
+如果您只需要数据的一个子集:
-1. Click **Filter**
-2. Add filter conditions (e.g., "Created date > January 1, 2024")
-3. Only matching records will be exported
+1. 单击 **Filter**
+2. 添加筛选条件(例如:"Created date > January 1, 2024")
+3. 仅会导出匹配的记录
-### Sort Records (Optional)
+### 排序记录(可选)
-1. Click a column header to sort
-2. The export will follow your sort order
+1. 单击列标题进行排序
+2. 导出将遵循您的排序顺序
-**Create a dedicated export view.** Save a view specifically configured for exports so you don't need to reconfigure each time.
+**创建专用的导出视图。** 保存一个专为导出配置的视图,这样每次就无需重新配置。
-## Step 3: Export the Data
+## 步骤 3:导出数据
-1. Click the **⋮** icon on the top right of the table
-2. Select **Export view**
-3. Choose where to save the CSV file
-4. Wait for the download to complete
+1. 单击表格右上角的 **⋮** 图标
+2. 选择 **Export view**
+3. 选择 CSV 文件的保存位置
+4. 等待下载完成
-## What Gets Exported
+## 导出内容
-| Included | Not Included |
-| -------------------------------- | ---------------------- |
-| All visible columns | Hidden columns |
-| Records matching current filters | Filtered-out records |
-| Custom field values | Fields not in the view |
-| Record IDs | File attachments |
-| Relation IDs | Images |
+| 包含 | 不包含 |
+| ------------ | -------- |
+| 所有可见列 | 隐藏列 |
+| 与当前筛选条件匹配的记录 | 被过滤掉的记录 |
+| 自定义字段值 | 不在视图中的字段 |
+| 记录 ID | 文件附件 |
+| 关系 ID | 图片 |
-### Relation Fields
+### 关系字段
-Relation IDs are only exported on the **"many" side** of a relationship:
+关系 ID 仅在关系的\*\*“多”端\*\*导出:
-* **People export** includes a `companyId` column (People → Company relation)
-* **Companies export** does NOT include `peopleIds` (Companies is the "one" side)
+* **People 导出** 包含一个 `companyId` 列(People → Company 关系)
+* **Companies 导出** 不包含 `peopleIds`(Companies 是“一”端)
-This means you can use the People export to re-import and maintain the Company link, but you'll need to re-import People after Companies to recreate the relationships.
+这意味着您可以使用 People 的导出来重新导入并保持与 Company 的链接,但您需要在导入 Companies 之后再次导入 People 以重新创建这些关系。
-## Exporting for Specific Purposes
+## 针对特定目的的导出
-### For Backups
+### 用于备份
-1. Create a view with **all fields** visible
-2. Remove all filters to include all records
-3. Export each object type separately
-4. Store exports in a secure location
-5. Set a recurring reminder (weekly/monthly)
+1. 创建一个显示**所有字段**的视图
+2. 移除所有筛选器以包含所有记录
+3. 分别导出每种对象类型
+4. 将导出文件存储在安全位置
+5. 设置重复提醒(每周/每月)
-### For External Reporting
+### 用于外部报表
-1. Include only the fields you need for analysis
-2. Apply filters to focus on relevant data
-3. Consider sorting by the field you'll analyze
+1. 只包含您进行分析所需的字段
+2. 应用筛选器以聚焦相关数据
+3. 考虑按您将要分析的字段进行排序
-### For Bulk Updates
+### 用于批量更新
-1. Export the records you want to update
-2. Include the unique identifier (`email`, `domain`, or `id`)
-3. Edit the exported file
-4. Re-import to update records
- See: [How to Update Existing Records](/l/zh/user-guide/data-migration/how-tos/update-existing-records-via-import)
+1. 导出您要更新的记录
+2. 包含唯一标识符(`email`、`domain` 或 `id`)
+3. 编辑导出的文件
+4. 重新导入以更新记录
+ 参见:[如何更新现有记录](/l/zh/user-guide/data-migration/how-tos/update-existing-records-via-import)
-### For Migration
+### 用于迁移
-If you're exporting to migrate to another system:
+如果您为迁移到其他系统而进行导出:
-1. **Export each object separately** — People, Companies, Opportunities, etc.
-2. **Include ID fields** — these help maintain relationships
-3. **Document field mappings** — note how Twenty fields map to your target system
+1. **分别导出每个对象** — People、Companies、Opportunities 等。
+2. **包含 ID 字段** — 有助于维护关系
+3. **记录字段映射** — 记录 Twenty 字段如何映射到您的目标系统
-## Handling Large Datasets (20,000+ Records)
+## 处理大型数据集(20,000+ 条记录)
-The export limit is 20,000 records. For larger datasets:
+导出限制为 20,000 条记录。 对于更大的数据集:
-### Option 1: Export in Batches
+### 选项 1:分批导出
-1. Add a filter (e.g., "Created date" ranges)
-2. Export the first batch
-3. Change the filter
-4. Export the next batch
-5. Combine files in your spreadsheet
+1. 添加一个筛选器(例如 "Created date" 范围)
+2. 导出第一批
+3. 更改筛选器
+4. 导出下一批
+5. 在电子表格中合并文件
-**Example filters for batching:**
+**用于分批的示例筛选器:**
-* By date range (January, February, March...)
-* By owner (Team member A, Team member B...)
-* By status (Active, Inactive...)
+* 按日期范围(1 月、2 月、3 月……)
+* 按所有者(团队成员 A、团队成员 B……)
+* 按状态(活跃、非活跃……)
-### Option 2: Use the API
+### 选项 2:使用 API
-The API has no record limit:
+API 没有记录数量限制:
-1. Get your API key from **Settings → Developers**
-2. Use the GraphQL API to query records
-3. Process results in your application
+1. 在 **Settings → Developers** 中获取您的 API 密钥
+2. 使用 GraphQL API 查询记录
+3. 在您的应用程序中处理结果
-See: [API Documentation](/l/zh/developers/extend/capabilities/apis)
+参见:[API 文档](/l/zh/developers/extend/capabilities/apis)
-## Tips and Best Practices
+## 技巧与最佳实践
-### Create Export Views
+### 创建导出视图
-Save views configured specifically for exports:
+保存专为导出配置的视图:
-1. Configure columns and filters
-2. Click **View options** → **Save as new view**
-3. Name it "Export - [Purpose]"
+1. 配置列和筛选器
+2. 单击 **View options** → **Save as new view**
+3. 将其命名为 "Export - [Purpose]"
-### Secure Your Exports
+### 保护您的导出文件安全
-Exported files may contain sensitive data:
+导出的文件可能包含敏感数据:
-* Store in secure locations
-* Delete old exports when no longer needed
-* Be careful sharing export files
+* 存放在安全位置
+* 不再需要时删除旧的导出文件
+* 共享导出文件时请谨慎
-### Check Before Exporting
+### 导出前检查
-Correct columns are visible
-Filters are set correctly (or removed for full export)
-You have Export permission
+显示了正确的列
+筛选器设置正确(或为完整导出已移除)
+您具有导出权限
-## FAQ
+## 常见问题
-
- Only visible columns are exported. Add the columns you need via **Options → Fields** before exporting.
+
+ 仅导出可见列。 在导出之前通过 **Options → Fields** 添加所需的列。
-
- Check your filters. The export only includes records matching your current view filters. Remove filters to export all records.
+
+ 检查您的筛选器。 导出仅包含与您当前视图筛选条件匹配的记录。 移除筛选器以导出所有记录。
-
- Not in a single export. Use filters to export in batches, or use the API for larger datasets.
+
+ 单次导出不可以。 使用筛选器分批导出,或使用 API 处理更大的数据集。
-
- CSV (Comma Separated Values). Opens in Excel, Google Sheets, or any spreadsheet application.
+
+ CSV(逗号分隔值)。 可在 Excel、Google 表格或任何电子表格应用中打开。
-
- Yes, but only on the "many" side of relationships. For example, a People export includes `companyId`, but a Companies export does not include people IDs.
+
+ 包含,但仅限于关系的“多”端。 例如,People 的导出包含 `companyId`,但 Companies 的导出不包含人员 ID。
-
- Not directly through the UI. Use the API to build automated export workflows.
+
+ 无法直接通过 UI 实现。 使用 API 构建自动化的导出工作流。
-## Next Steps
+## 下一步
-* [How to Update Existing Records](/l/zh/user-guide/data-migration/how-tos/update-existing-records-via-import) — edit and re-import your export
-* [How to Import Data via API](/l/zh/user-guide/data-migration/how-tos/import-data-via-api) — for large datasets
-* [API Documentation](/l/zh/developers/extend/capabilities/apis) — build custom export workflows
+* [如何更新现有记录](/l/zh/user-guide/data-migration/how-tos/update-existing-records-via-import) — 编辑并重新导入您的导出文件
+* [如何通过 API 导入数据](/l/zh/user-guide/data-migration/how-tos/import-data-via-api) — 适用于大型数据集
+* [API 文档](/l/zh/developers/extend/capabilities/apis) — 构建自定义导出工作流
diff --git a/packages/twenty-docs/l/zh/user-guide/data-migration/how-tos/fix-import-errors.mdx b/packages/twenty-docs/l/zh/user-guide/data-migration/how-tos/fix-import-errors.mdx
index a686ca1a05..0ff7817893 100644
--- a/packages/twenty-docs/l/zh/user-guide/data-migration/how-tos/fix-import-errors.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/data-migration/how-tos/fix-import-errors.mdx
@@ -1,122 +1,122 @@
---
-title: Fix Import Errors
-description: Complete troubleshooting guide for resolving CSV import errors.
+title: 修复导入错误
+description: 解决 CSV 导入错误的完整故障排除指南。
---
-## Overview
+## 概览
-Import not working? This guide helps you identify and fix common import errors step by step.
+导入无法正常工作? 本指南将逐步帮助你识别并修复常见的导入错误。
-## How Import Validation Works
+## 导入验证的工作原理
-After uploading your file and mapping columns, Twenty validates your data:
+上传文件并完成列映射后,Twenty 会对你的数据进行验证:
-1. **Validation runs** — Twenty checks each row for errors
-2. **Errors are highlighted** — problematic rows appear in **yellow**
-3. **You can fix in-place** — edit cells directly in the import UI
-4. **Or remove rows** — skip problematic records entirely
+1. **开始验证** — Twenty 会逐行检查是否存在错误
+2. **错误会被高亮** — 有问题的行将以**黄色**显示
+3. **可就地修复** — 可在导入界面中直接编辑单元格
+4. **或移除行** — 完全跳过有问题的记录
-**Fix errors in the UI.** You don't need to go back to your spreadsheet. Edit cells directly during import to save time.
+**在界面中修复错误。** 无需返回电子表格。 在导入过程中直接编辑单元格以节省时间。
-## Step-by-Step Troubleshooting
+## 分步故障排查
-### Step 1: Identify the Error Type
+### 步骤 1:确定错误类型
-Click on a highlighted row to see the specific error message. Common error types:
+点击高亮的行查看具体的错误信息。 常见错误类型:
-| Error Message | What It Means |
-| --------------------------------------------------------------------- | ------------------------------------------------------------ |
-| Duplicate values highlighted in yellow | Value already exists in Twenty or appears twice in your file |
-| `{field} is not a valid {type}` (hover on yellow cell) | Data doesn't match expected format |
-| Required field highlighted | A required field is empty |
-| `Can't connect to {object}. No unique record found...` (import fails) | Referenced record doesn't exist |
-| `Too many records. Up to 10000 allowed` (upload blocked) | File has more than 10,000 records |
+| 错误消息 | 含义 |
+| ------------------------------------------------------------ | ---------------------------- |
+| 重复值以黄色高亮显示 | 该值已存在于 Twenty 中,或在你的文件中出现了两次 |
+| `{field} is not a valid {type}`(将鼠标悬停在黄色单元格上) | 数据与预期格式不匹配 |
+| 必填字段被高亮显示 | 必填字段为空 |
+| `Can't connect to {object}. No unique record found...`(导入失败) | 被引用的记录不存在 |
+| `Too many records. Up to 10000 allowed`(已阻止上传) | 文件包含超过 10,000 条记录 |
-### Step 2: Fix the Error
+### 步骤 2:修复错误
-Follow the specific instructions below for each error type.
+根据下面针对每种错误类型的具体说明进行处理。
---
-## Error: Duplicate Value
+## 错误:重复值
-### What You'll See
+### 您将会看到什么
-Rows with duplicate values are **highlighted in yellow** in the import UI before the import starts.
+在开始导入之前,导入界面中包含重复值的行会被**黄色高亮**。
-### What It Means
+### 含义
-A unique field (email, domain) either:
+唯一字段(电子邮件、域名)可能:
-* Already exists in Twenty
-* Appears twice in your file
+* 已存在于 Twenty 中
+* 在你的文件中出现了两次
-### How to Fix
+### 修复方法
-**Option 1: Edit the duplicate value**
+**选项 1:编辑重复值**
-1. Click the cell with the error
-2. Change to a unique value
-3. Continue with import
+1. 点击包含错误的单元格
+2. 更改为唯一值
+3. 继续导入
-**Option 2: Remove the duplicate row**
+**选项 2:移除重复行**
-1. Click the X next to the row
-2. The row will be skipped during import
+1. 点击该行旁的 X
+2. 导入时将跳过该行
-**Option 3: Let Twenty update the existing record**
+**选项 3:让 Twenty 更新现有记录**
-1. Ensure your file includes a unique identifier (`email`, `domain`, or `id`)
-2. Map the unique identifier field
-3. Twenty will update the existing record instead of creating a duplicate
+1. 确保你的文件包含唯一标识符(`email`、`domain` 或 `id`)
+2. 映射该唯一标识符字段
+3. Twenty 将更新现有记录,而不是创建重复项
- **You can update unique fields too.**
+ **你也可以更新唯一字段。**
- * If you keep the `id` but change the `email` → the email will be updated
- * If you keep the `email` but change the `id` → the id will be updated
+ * 如果保留 `id` 但更改 `email` → 将更新该电子邮件
+ * 如果保留 `email` 但更改 `id` → 将更新该 id
- As long as one unique identifier matches, Twenty updates the record.
+ 只要至少有一个唯一标识符匹配,Twenty 就会更新该记录。
-### How to Prevent This Error
+### 如何避免此错误
-Before importing:
+导入前:
-1. Sort your spreadsheet by the unique field
-2. Remove duplicate rows
-3. Check if records already exist in Twenty
+1. 按唯一字段对电子表格进行排序
+2. 删除重复行
+3. 检查 Twenty 中是否已存在这些记录
- **Soft-deleted records count toward uniqueness.**
+ **软删除的记录也会计入唯一性。**
- Check Command Menu → See deleted records. Records there still enforce uniqueness. Permanently delete them or restore and update.
+ 检查 Command Menu → 查看已删除的记录。 其中的记录仍会参与唯一性校验。 将其永久删除,或还原后再更新。
-For more details: [Uniqueness Constraints](/l/zh/user-guide/data-migration/capabilities/uniqueness-constraints)
+了解更多详情:[唯一性约束](/l/zh/user-guide/data-migration/capabilities/uniqueness-constraints)
---
-## Error: Invalid Format
+## 错误:格式无效
-### What You'll See
+### 您将会看到什么
-The cell value is highlighted in yellow. Hover over it to see the error message:
+该单元格的值会以黄色高亮显示。 将鼠标悬停其上以查看错误信息:
```
{field name} is not a valid {field type}
```
-### What It Means
+### 含义
-The data doesn't match the expected format for that field type.
+该数据与该字段类型的预期格式不匹配。
-### How to Fix — By Field Type
+### 修复方法 — 按字段类型
-#### Email
+#### 电子邮件
-**Problem:** Invalid email format
-**Solution:** Use format `name@domain.com`
+**问题:** 电子邮件格式无效
+**解决方案:** 使用 `name@domain.com` 格式
```
❌ john.smith@
@@ -124,10 +124,10 @@ The data doesn't match the expected format for that field type.
✓ john.smith@acme.com
```
-#### Domain
+#### 域
-**Problem:** Inconsistent format may cause duplicates
-**Solution:** Use `https://domain.com` format (recommended)
+**问题:** 格式不一致可能导致重复
+**解决方案:** 使用 `https://domain.com` 格式(推荐)
```
⚠️ acme.com (valid, but not recommended)
@@ -135,12 +135,12 @@ The data doesn't match the expected format for that field type.
✅ https://acme.com (recommended)
```
-All formats are valid, but `https://domain.com` is recommended because it matches the format used by email/calendar sync. Using other formats may create duplicate companies.
+所有格式都有效,但推荐使用 `https://domain.com`,因为它与电子邮件/日历同步所用的格式一致。 使用其他格式可能会创建重复的公司。
-#### Date
+#### 日期
-**Problem:** Unrecognized date format
-**Solution:** Use consistent format throughout file
+**问题:** 无法识别的日期格式
+**解决方案:** 在整个文件中使用一致的格式
```
✓ 2024-03-15 (YYYY-MM-DD - recommended)
@@ -148,21 +148,21 @@ The data doesn't match the expected format for that field type.
✓ 15/03/2024 (DD/MM/YYYY)
```
-#### Phone
+#### 电话
-**Problem:** Missing required columns
-**Solution:** Include all phone columns
+**问题:** 缺少必需的列
+**解决方案:** 包含所有电话相关列
-| Column | Example |
+| 列 | 示例 |
| --------------------------------------- | ------------ |
| **Phones / Primary Phone Number** | `4159095555` |
| **Phones / Primary Phone Country Code** | `US` |
| **Phones / Primary Phone Calling Code** | `+1` |
-#### Boolean
+#### 布尔值
-**Problem:** Wrong boolean value
-**Solution:** Use uppercase `TRUE` or `FALSE`
+**问题:** 布尔值不正确
+**解决方案:** 使用大写的 `TRUE` 或 `FALSE`
```
❌ true
@@ -172,37 +172,37 @@ The data doesn't match the expected format for that field type.
✓ FALSE
```
-#### Select / Multi-Select
+#### 选择/多选
-**Problem:** Value doesn't match existing options
-**Solution:** Use **API names**, not display labels
+**问题:** 值与现有选项不匹配
+**解决方案:** 使用**API 名称**,而非显示标签
-How to find API names:
+如何查找 API 名称:
-1. Go to **Settings → Data Model**
-2. Select the object and field
-3. Enable **Advanced mode** (toggle at bottom right)
-4. Use the API name (e.g., `OPTION_1`, not "Option 1")
+1. 进入 **设置 → 数据模型**
+2. 选择对象和字段
+3. 启用 **高级模式**(右下角切换)
+4. 使用 API 名称(例如:`OPTION_1`,而不是 "Option 1")
```
❌ High Priority
✓ HIGH_PRIORITY
```
-#### Currency
+#### 货币
-**Problem:** Missing amount or currency code
-**Solution:** Fill both columns
+**问题:** 缺少金额或货币代码
+**解决方案:** 同时填写这两列
-| Column | Example |
+| 列 | 示例 |
| --------------------- | --------- |
| **Amount / Amount** | `1234.56` |
| **Amount / Currency** | `USD` |
-#### Number
+#### 数字
-**Problem:** Non-numeric characters
-**Solution:** Numbers only, period for decimals
+**问题:** 含非数字字符
+**解决方案:** 只能使用数字,小数点用英文句点
```
❌ $1,234.56
@@ -210,221 +210,221 @@ How to find API names:
✓ 1234.56
```
-For complete format reference: [Field Mapping](/l/zh/user-guide/data-migration/capabilities/field-mapping)
+完整格式参考:[字段映射](/l/zh/user-guide/data-migration/capabilities/field-mapping)
---
-## Error: Required Field Missing
+## 错误:缺少必填字段
-### What You'll See
+### 您将会看到什么
-The row is highlighted in yellow with the required field cell marked.
+该行将以黄色高亮,并标出缺失的必填字段单元格。
-### What It Means
+### 含义
-A required field is empty for this row.
+此行存在必填字段为空。
-### How to Fix
+### 修复方法
-**Option 1: Enter a value**
+**选项 1:输入一个值**
-1. Click the empty cell
-2. Enter a value
-3. Continue with import
+1. 点击空白单元格
+2. 输入值
+3. 继续导入
-**Option 2: Remove the row**
+**选项 2:移除该行**
-1. If you don't have the data, click X to skip the row
+1. 如果没有该数据,点击 X 跳过该行
-### How to Prevent This Error
+### 如何避免此错误
-Before importing, identify required fields:
+在导入之前,确定必填字段:
-1. Go to **Settings → Data Model**
-2. Select your object
-3. Check which fields are marked as required
+1. 进入 **设置 → 数据模型**
+2. 选择你的对象
+3. 检查哪些字段被标记为必填
---
-## Error: Relation Not Found
+## 错误:未找到关系
-### What You'll See
+### 您将会看到什么
-This error appears **after the import starts** — the import fails with a message like:
+该错误会在**导入开始之后**出现 — 导入将因如下消息而失败:
```
Can't connect to company. No unique record found with condition: id = 7776ee49-f608-4a77-8cc8-6fe96ae1e43f
```
-This means there is no Company in Twenty with that specific identifier.
+这意味着 Twenty 中没有具有该特定标识符的公司。
-Unlike other errors, this one is not caught during the data review step. The import will start and then fail when it encounters the missing relation.
+与其他错误不同,此错误不会在数据审核步骤中被捕获。 导入会开始执行,但在遇到缺失的关联时失败。
-### What It Means
+### 含义
-You're trying to link to a record that doesn't exist in Twenty.
+你正在尝试关联一条在 Twenty 中不存在的记录。
-### How to Fix
+### 修复方法
-**Option 1: Import parent records first**
+**选项 1:先导入父级记录**
-1. Cancel the current import
-2. Import the parent records (e.g., Companies)
-3. Then import the child records (e.g., People)
+1. 取消当前导入
+2. 导入父级记录(例如,公司)
+3. 然后导入子级记录(例如,人员)
-**Option 2: Fix the reference value**
+**选项 2:修正引用值**
-1. Check the reference value in your file
-2. Ensure it exactly matches an existing record
-3. Verify format: domains should be `https://domain.com`
+1. 检查文件中的引用值
+2. 确保其与现有记录完全匹配
+3. 核对格式:域名应为 `https://domain.com`
-**Option 3: Remove the relation**
+**选项 3:移除该关联**
-1. Clear the cell to import without the relation
-2. Add the relation manually later
+1. 清空该单元格,以不带关联地进行导入
+2. 稍后手动添加该关联
-### How to Prevent This Error
+### 如何避免此错误
-1. **Import in the correct order:**
- * Companies first
- * People second (with company references)
- * Opportunities third
+1. **按正确顺序导入:**
+ * 先导入公司
+ * 其次导入人员(包含公司引用)
+ * 第三导入机会
-2. **Verify reference values:**
- * Export parent records to get exact identifiers
- * Use domain format `https://domain.com`
- * Check for typos and case sensitivity
+2. **核对引用值:**
+ * 导出父级记录以获取精确的标识符
+ * 使用域名格式 `https://domain.com`
+ * 检查拼写错误和大小写是否一致
- **Import will fail if a reference is made to a non-existent record.**
+ **若引用了不存在的记录,导入将失败。**
- Always import parent objects before child objects.
+ 始终先导入父对象,再导入子对象。
-For more details: [Import Relations](/l/zh/user-guide/data-migration/capabilities/import-relations)
+了解更多详情:[导入关系](/l/zh/user-guide/data-migration/capabilities/import-relations)
---
-## Error: File Too Large
+## 错误:文件过大
-### What You'll See
+### 您将会看到什么
-This error appears **when uploading your file** — the upload is blocked entirely:
+在上传文件时会出现该错误 — 上传将被完全阻止:
```
Too many records. Up to 10000 allowed
```
-You won't be able to proceed to the data review step until you reduce the file size.
+在减小文件大小之前,你将无法进入数据审核步骤。
-### What It Means
+### 含义
-Your file has more than 10,000 records.
+你的文件包含超过 10,000 条记录。
-### How to Fix
+### 修复方法
-**Option 1: Split into multiple files**
+**选项 1:拆分为多个文件**
-1. Divide your data into files of 10,000 records or fewer
-2. Import each file separately
-3. Maintain import order (Companies before People)
+1. 将数据分成每个不超过 10,000 条记录的文件
+2. 分别导入每个文件
+3. 保持导入顺序(先公司,后人员)
-**Option 2: Use API import**
-For very large datasets, use the API which has no record limit.
-See: [How to Import Data via API](/l/zh/user-guide/data-migration/how-tos/import-data-via-api)
+**选项 2:使用 API 导入**
+对于非常大的数据集,请使用没有记录数量限制的 API。
+参见:[如何通过 API 导入数据](/l/zh/user-guide/data-migration/how-tos/import-data-via-api)
---
-## Error: Field Not Recognized
+## 错误:无法识别字段
-### What It Means
+### 含义
-A column in your file can't be mapped because the field doesn't exist in Twenty.
+文件中的某一列无法映射,因为 Twenty 中不存在该字段。
-### How to Fix
+### 修复方法
-1. Go to **Settings → Data Model**
-2. Select the object you're importing
-3. Click **+ Add field**
-4. Create the custom field with the appropriate type
-5. Re-upload your file
+1. 进入 **设置 → 数据模型**
+2. 选择你要导入的对象
+3. 点击 **+ 添加字段**
+4. 创建具有适当类型的自定义字段
+5. 重新上传你的文件
-The CSV import creates records, not fields. All fields must exist before importing.
+CSV 导入会创建记录,而不是字段。 在导入之前,所有字段都必须已存在。
---
-## Error: User Relation Empty
+## 错误:用户关联为空
-### What It Means
+### 含义
-You're trying to assign a record to a user (Owner, Assignee) but the relation isn't being mapped.
+你正在尝试将记录分配给某个用户(所有者、被指派者),但该关联未被映射。
-### Common Causes
+### 常见原因
-1. **User hasn't accepted their invitation** — the user doesn't exist in Twenty yet
-2. **Using user ID from old system** — Twenty can't match IDs from another system
-3. **Wrong email format** — the email doesn't match the user's Twenty account
+1. **用户尚未接受邀请** — 该用户在 Twenty 中尚不存在
+2. **使用旧系统的用户 ID** — Twenty 无法匹配来自其他系统的 ID
+3. **电子邮件格式错误** — 该邮箱与用户的 Twenty 账户不匹配
-### How to Fix
+### 修复方法
-1. Ensure all users have **accepted their invitation** to your Twenty workspace
-2. Use the user's **email address** (not their name or old system ID)
-3. Use the same email they used to join Twenty
+1. 确保所有用户都已接受邀请加入你的 Twenty 工作区
+2. 使用用户的电子邮箱地址(而不是姓名或旧系统的 ID)
+3. 使用他们用于加入 Twenty 的同一邮箱
- **Users must accept invitations before importing.**
+ **在导入之前,用户必须先接受邀请。**
- If a user hasn't accepted their invitation, records referencing them will have empty user relations.
+ 如果某个用户尚未接受邀请,引用该用户的记录将出现空的用户关联。
---
-## Pre-Import Checklist
+## 导入前清单
-Avoid errors by checking these before importing:
+导入前检查以下项目以避免错误:
-### File Requirements
+### 文件要求
-File is CSV, XLSX, or XLS format
-File has fewer than 10,000 records
-File uses UTF-8 encoding
+文件为 CSV、XLSX 或 XLS 格式
+文件少于 10,000 条记录
+文件使用 UTF-8 编码
-### Data Quality
+### 数据质量
-No duplicate emails (for People)
-No duplicate domains (for Companies)
-All dates use consistent format
-All domains use `https://domain.com` format
+无重复电子邮件(针对联系人)
+无重复域名(针对公司)
+所有日期采用一致的格式
+所有域名使用 `https://domain.com` 格式
-### Field Formats
+### 字段格式
-Boolean fields use `TRUE` or `FALSE` (uppercase)
-Select fields use API names, not display labels
-Phone fields have all required columns
-Currency fields have both Amount and Currency Code
+布尔字段使用 `TRUE` 或 `FALSE`(大写)
+选择字段使用 API 名称,而非显示标签
+电话字段包含所有必需的列
+货币字段同时包含金额和货币代码
-### Relations
+### 关系
-Parent records imported before child records
-Relation columns reference existing records
-Domain format matches Twenty's format exactly
+先导入父级记录,再导入子级记录
+关联列引用现有记录
+域名格式与 Twenty 的格式完全一致
-### Data Model
+### 数据模型
-All custom fields exist in Settings → Data Model
-Select options exist before importing
+设置 → 数据模型 中已存在所有自定义字段
+在导入前先创建所有选择项
---
-## Still Having Issues?
+## 仍有问题?
-If you've tried the above solutions:
+如果你已尝试以上解决方案:
-1. **Download the sample file** — see the exact format Twenty expects
-2. **Export existing records** — compare your file to working data
-3. **Test with a small batch** — try 5-10 rows first
-4. **Check the reference articles:**
- * [Field Mapping](/l/zh/user-guide/data-migration/capabilities/field-mapping)
- * [Uniqueness Constraints](/l/zh/user-guide/data-migration/capabilities/uniqueness-constraints)
- * [Import Relations](/l/zh/user-guide/data-migration/capabilities/import-relations)
- * [Error Handling](/l/zh/user-guide/data-migration/capabilities/error-handling)
+1. **下载示例文件** — 了解 Twenty 期望的确切格式
+2. **导出现有记录** — 将你的文件与可用数据进行对比
+3. **用小批量测试** — 先尝试 5-10 行
+4. **查看参考文章:**
+ * [字段映射](/l/zh/user-guide/data-migration/capabilities/field-mapping)
+ * [唯一性约束](/l/zh/user-guide/data-migration/capabilities/uniqueness-constraints)
+ * [导入关系](/l/zh/user-guide/data-migration/capabilities/import-relations)
+ * [错误处理](/l/zh/user-guide/data-migration/capabilities/error-handling)
diff --git a/packages/twenty-docs/l/zh/user-guide/data-migration/how-tos/import-companies-via-csv.mdx b/packages/twenty-docs/l/zh/user-guide/data-migration/how-tos/import-companies-via-csv.mdx
index 62c6778497..88a5cdebbd 100644
--- a/packages/twenty-docs/l/zh/user-guide/data-migration/how-tos/import-companies-via-csv.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/data-migration/how-tos/import-companies-via-csv.mdx
@@ -1,71 +1,71 @@
---
-title: Import Companies via CSV
-description: Complete step-by-step guide to importing companies into Twenty.
+title: 通过 CSV 导入公司
+description: 将公司导入 Twenty 的完整分步指南。
---
-## Overview
+## 概览
-This guide walks you through importing your companies into Twenty. **Companies should be imported first** because People and Opportunities link to Companies.
+本指南将引导您将公司导入 Twenty。 **应先导入公司**,因为 People 和 Opportunities 会关联到公司。
-## Before You Start
+## 开始之前
-### Prerequisites Checklist
+### 先决条件清单
- Your file is CSV, XLSX, or XLS format
+ 您的文件为 CSV、XLSX 或 XLS 格式
- File has fewer than 10,000 records
+ 文件包含少于 10,000 条记录
- No duplicate domains in your file
+ 您的文件中没有重复的域名
- All custom fields exist in **Settings → Data Model**
+ 所有自定义字段已存在于 **设置 → 数据模型**
- Need to import more than 10,000 companies? Split into multiple files or use the [API import](/l/zh/user-guide/data-migration/how-tos/import-data-via-api).
+ 需要导入超过 10,000 家公司? 拆分为多个文件,或使用 [API 导入](/l/zh/user-guide/data-migration/how-tos/import-data-via-api)。
-## Step 1: Prepare Your Company Data
+## 步骤 1:准备您的公司数据
-### Required and Recommended Fields
+### 必填与推荐字段
-| Field | Required? | Format | Notes |
-| ----------------- | ----------- | -------------------- | ------------------------ |
-| **Name** | Recommended | Text | Company display name |
-| **Domain** | Recommended | `https://domain.com` | Unique identifier |
-| **Address** | Optional | Multiple columns | See below |
-| **Employees** | Optional | Number | Employee count |
-| **Custom fields** | Optional | Varies | Must exist in Data Model |
+| 字段 | 是否必填? | 格式 | 备注 |
+| ---------- | ----- | -------------------- | ---------- |
+| **Name** | 推荐 | 文本 | 公司显示名称 |
+| **Domain** | 推荐 | `https://domain.com` | 唯一标识符 |
+| **地址** | 可选 | 多列 | 详见下文 |
+| **员工** | 可选 | 数字 | 员工数量 |
+| **自定义字段** | 可选 | 因情况而异 | 必须存在于数据模型中 |
-### Domain Format
+### 域名格式
- **Use the format `https://domain.com` for domains.**
+ **域名请使用 `https://domain.com` 格式。**
- This matches the format used when Companies are auto-created from email/calendar sync, preventing duplicates later.
+ 这与通过电子邮件/日历同步自动创建公司时使用的格式一致,从而防止之后出现重复。
-**Domain columns:**
+**域名列:**
* **Domain / Domain Label**: `acme.com`
* **Domain / Domain URL**: `https://acme.com`
-### Address Format
+### 地址格式
-Address is a nested field with multiple columns:
+地址是一个嵌套字段,包含多个列:
```
Address / Address 1,Address / City,Address / State,Address / Country,Address / Post Code
123 Main Street,San Francisco,CA,USA,94105
```
-### Sample CSV Structure
+### 示例 CSV 结构
```csv
name,Domain / Domain URL,Domain / Domain Label,Address / City,Address / Country,employees
@@ -74,128 +74,128 @@ Widget Co,https://widgets.co,widgets.co,New York,USA,50
```
- **Pro tip:** Click **Download sample file** during import to see the exact column names Twenty expects.
+ **专业提示:** 在导入过程中单击 **Download sample file**,以查看 Twenty 期望的确切列名。
-## Step 2: Access the Import Feature
+## 步骤 2:进入导入功能
-**Option 1: From the Companies View**
+**选项 1:从 Companies 视图**
-1. Navigate to **Companies** in the left sidebar
-2. Click the **⋮** icon on the top right
-3. Select **Import records**
+1. 在左侧边栏中导航到 **Companies**
+2. 单击右上角的 **⋮** 图标
+3. 选择 **Import records**
-**Option 2: Using Command Menu**
+**选项 2:使用命令菜单**
-1. Press `Cmd + K` (Mac) or `Ctrl + K` (Windows)
-2. Type "import"
-3. Select **Import records**
-4. Choose **Companies**
+1. 按 `Cmd + K`(Mac)或 `Ctrl + K`(Windows)
+2. 输入 "import"
+3. 选择 **Import records**
+4. 选择 **Companies**
-## Step 3: Upload Your File
+## 步骤 3:上传您的文件
-1. Click **Select file**
-2. Choose your CSV, XLSX, or XLS file
-3. Wait for Twenty to analyze your file
+1. 单击 **Select file**
+2. 选择您的 CSV、XLSX 或 XLS 文件
+3. 等待 Twenty 分析您的文件
-## Step 4: Map Your Columns
+## 步骤 4:映射您的列
-Twenty automatically tries to match your columns to fields. Review and adjust:
+Twenty 会自动尝试将您的列与字段匹配。 检查并调整:
-1. **Check automatic mappings** — verify they're correct
-2. **Fix incorrect mappings** — click the dropdown to select the right field
-3. **Skip columns** — select **Do not map** for columns you don't want to import
+1. **检查自动映射** — 核实其是否正确
+2. **修正不正确的映射** — 单击下拉菜单选择正确的字段
+3. **跳过列** — 对不想导入的列选择 **Do not map**
-### Important Mapping Rules
+### 重要的映射规则
-* **Domain**: Map to **Domain / Domain URL** (not Domain Label)
-* **Address**: Map each part to its specific column (City, State, etc.)
-* **Select fields**: Values must match existing options (or you'll map them in the next step)
+* **Domain**:映射到 **Domain / Domain URL**(而非 Domain Label)
+* **地址**:将每个部分映射到其对应的列(City、State 等)
+* **选择型字段**:其值必须与现有选项匹配(否则您将在下一步进行映射)
-## Step 5: Map Select Field Values
+## 步骤 5:映射选择字段的值
-If you have Select or Multi-Select fields:
+如果您有选择或多选字段:
-1. Twenty shows your values alongside existing options
-2. Match each value in your file to a Twenty option
-3. Or create new options if needed
+1. Twenty 会将您的值与现有选项并列显示
+2. 将文件中的每个值与一个 Twenty 选项匹配
+3. 或在需要时创建新选项
- Select options use **API names**, not display labels. Check **Settings → Data Model** → Enable **Advanced mode** to see API names.
+ 选择型选项使用 **API 名称**,而不是显示标签。 在 **Settings → Data Model** 中启用 **Advanced mode** 以查看 API 名称。
-## Step 6: Review and Fix Errors
+## 步骤 6:检查并修复错误
-Before completing the import, Twenty validates your data:
+在完成导入之前,Twenty 会验证您的数据:
-1. Click **Next Steps**
-2. Rows with errors are highlighted in **yellow**
-3. **Fix errors directly** — click a cell and edit the value
-4. **Remove problematic rows** — click the X to skip that row
+1. 单击 **Next Steps**
+2. 有错误的行会被高亮为**黄色**
+3. **直接修复错误** — 单击单元格并编辑其值
+4. **移除有问题的行** — 单击 X 以跳过该行
-### Common Company Import Errors
+### 常见公司导入错误
-| Error | Cause | Solution |
-| -------------------------- | ------------------------------- | ------------------------------------------ |
-| **Duplicate domain** | Domain already exists in Twenty | Remove from file or update existing record |
-| **Invalid domain format** | Wrong format | Use `https://domain.com` |
-| **Missing required field** | Required field is empty | Fill in the value or remove the row |
+| 错误 | 原因 | 解决方案 |
+| ---------- | --------------- | ----------------------- |
+| **域名重复** | 域名已存在于 Twenty 中 | 从文件中删除或更新现有记录 |
+| **域名格式无效** | 格式错误 | 使用 `https://domain.com` |
+| **缺少必填字段** | 必填字段为空 | 填写该值或删除该行 |
-## Step 7: Complete the Import
+## 步骤 7:完成导入
-1. Review the import summary
-2. Click **Confirm** to import
-3. Wait for the import to complete
-4. Verify by checking a few records
+1. 查看导入摘要
+2. 单击 **Confirm** 以进行导入
+3. 等待导入完成
+4. 通过抽查几条记录进行验证
-## After Importing Companies
+## 导入公司之后
-Now you can import records that link to Companies:
+现在您可以导入与公司关联的记录:
-1. **[Import People](/l/zh/user-guide/data-migration/how-tos/import-contacts-via-csv)** — link them to Companies using the domain
-2. **Import Opportunities** — link them to Companies
-3. **Verify the import** — spot-check a few records to ensure data is correct
+1. **[导入 People](/l/zh/user-guide/data-migration/how-tos/import-contacts-via-csv)** — 使用域名将其关联到公司
+2. **导入机会** — 将其关联到公司
+3. **验证导入** — 抽查几条记录以确保数据正确
-## Updating Existing Companies
+## 更新现有公司
-To update companies instead of creating new ones:
+若要更新公司而非创建新公司:
-1. Include the `domain` or `id` column in your file
-2. Twenty matches records by this unique identifier
-3. Existing companies are updated; new ones are created
+1. 在文件中包含 `domain` 或 `id` 列
+2. Twenty 将根据此唯一标识符匹配记录
+3. 现有公司会被更新;新公司会被创建
-See [How to Update Existing Records](/l/zh/user-guide/data-migration/how-tos/update-existing-records-via-import) for details.
+详情请参见 [如何更新现有记录](/l/zh/user-guide/data-migration/how-tos/update-existing-records-via-import)。
-## FAQ
+## 常见问题
-
- Domain is a unique identifier in Twenty. This prevents duplicate companies and ensures email sync correctly links emails to the right company.
+
+ 在 Twenty 中,域名是唯一标识符。 这可防止重复公司,并确保电子邮件同步将邮件正确关联到对应的公司。
-
- You can leave the domain empty. However, we recommend adding domains when possible for better data quality and automatic email linking.
+
+ 您可以将域名留空。 不过,我们建议在可能的情况下添加域名,以获得更好的数据质量和自动邮件关联功能。
-
- Yes! You can import companies first, then import People later and link them using the company domain.
+
+ 是! 您可以先导入公司,随后再导入联系人,并通过公司域名将其关联起来。
-
- If you include a unique identifier (domain or id) that matches an existing company, Twenty updates that company instead of creating a duplicate.
+
+ 如果您包含与现有公司匹配的唯一标识符(域名或 id),Twenty 会更新该公司,而不是创建重复项。
-
- Either remove the duplicate from your file, or include the company's `id` to update the existing record instead.
+
+ 您可以从文件中移除重复项,或包含公司的 `id` 以更新现有记录。
-## Troubleshooting
+## 故障排除
-Having issues? Check:
+遇到问题? 请查看:
-* [How to Fix Import Errors](/l/zh/user-guide/data-migration/how-tos/fix-import-errors)
-* [Field Mapping Reference](/l/zh/user-guide/data-migration/capabilities/field-mapping)
-* [Uniqueness Constraints](/l/zh/user-guide/data-migration/capabilities/uniqueness-constraints)
+* [如何修复导入错误](/l/zh/user-guide/data-migration/how-tos/fix-import-errors)
+* [字段映射参考](/l/zh/user-guide/data-migration/capabilities/field-mapping)
+* [唯一性约束](/l/zh/user-guide/data-migration/capabilities/uniqueness-constraints)
diff --git a/packages/twenty-docs/l/zh/user-guide/data-migration/how-tos/import-contacts-via-csv.mdx b/packages/twenty-docs/l/zh/user-guide/data-migration/how-tos/import-contacts-via-csv.mdx
index ac180254af..f39cb55ab3 100644
--- a/packages/twenty-docs/l/zh/user-guide/data-migration/how-tos/import-contacts-via-csv.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/data-migration/how-tos/import-contacts-via-csv.mdx
@@ -1,90 +1,90 @@
---
-title: Import Contacts via CSV
-description: Complete step-by-step guide to importing people/contacts into Twenty.
+title: 通过 CSV 导入联系人
+description: 将人员/联系人导入 Twenty 的完整分步指南。
---
-## Overview
+## 概览
-This guide walks you through importing your contacts (People) into Twenty. **Import Companies first** if you want to link People to Companies.
+本指南将引导您将联系人(People)导入 Twenty。 **请先导入公司**,如果您想将 People 关联到公司。
-## Before You Start
+## 开始之前
-### Prerequisites Checklist
+### 先决条件清单
- Your file is CSV, XLSX, or XLS format
+ 您的文件为 CSV、XLSX 或 XLS 格式
- File has fewer than 10,000 records
+ 文件包含少于 10,000 条记录
- No duplicate email addresses in your file
+ 您的文件中没有重复的电子邮件地址
- **Companies imported first** (if linking People to Companies)
+ **先导入公司**(如果要将 People 关联到公司)
- All custom fields exist in **Settings → Data Model**
+ 所有自定义字段已存在于 **设置 → 数据模型**
- **Import Companies Before People**
+ **先导入公司,再导入 People**
- If you want to link People to Companies, import Companies first. The Company must exist before you can reference it.
+ 如果您想将 People 关联到公司,请先导入公司。 在引用之前,公司必须已存在。
-## Step 1: Prepare Your Contact Data
+## 步骤 1:准备您的联系人数据
-### Required and Recommended Fields
+### 必填与推荐字段
-| Field | Required? | Format | Notes |
-| ----------------- | ----------- | ----------------- | ------------------------- |
-| **Email** | Recommended | `name@domain.com` | Must be unique |
-| **First Name** | Recommended | Text | |
-| **Last Name** | Recommended | Text | |
-| **Company** | Optional | Domain or ID | Links to existing Company |
-| **Phone** | Optional | Multiple columns | See below |
-| **Job Title** | Optional | Text | |
-| **Custom fields** | Optional | Varies | Must exist in Data Model |
+| 字段 | 是否必填? | 格式 | 备注 |
+| --------- | ----- | ----------------- | ---------- |
+| **电子邮件** | 推荐 | `name@domain.com` | 必须唯一 |
+| **名字** | 推荐 | 文本 | |
+| **姓氏** | 推荐 | 文本 | |
+| **公司** | 可选 | 域名或 ID | 链接到现有公司 |
+| **电话** | 可选 | 多列 | 详见下文 |
+| **职位** | 可选 | 文本 | |
+| **自定义字段** | 可选 | 因情况而异 | 必须存在于数据模型中 |
-### Email Format
+### 电子邮件格式
-* Must be valid email format: `name@domain.com`
-* **Must be unique** — no duplicates in your file or in Twenty
-* For additional emails, use the **Emails / Additional Emails** column:
+* 必须为有效的电子邮件格式:`name@domain.com`
+* **必须唯一** — 您的文件或 Twenty 中不得重复
+* 对于附加电子邮件,请使用 **Emails / Additional Emails** 列:
```
["jane@twenty.com","jane.doe@twenty.com"]
```
-### Phone Format
+### 电话格式
-Phone is a **nested field** requiring multiple columns:
+电话是一个 **嵌套字段**,需要多列:
-| Column | Example |
+| 列 | 示例 |
| --------------------------------------- | ------------ |
| **Phones / Primary Phone Number** | `4159095555` |
| **Phones / Primary Phone Country Code** | `US` |
| **Phones / Primary Phone Calling Code** | `+1` |
-### Linking to Companies
+### 关联到公司
-Add a column with the Company's unique identifier:
+添加包含公司唯一标识符的列:
-| Column Name | Format | Example |
-| --------------- | ---------- | -------------------------------------- |
-| `companyDomain` | URL format | `https://acme.com` |
-| `companyId` | UUID | `c776ee49-f608-4a77-8cc8-6fe96ae1e43f` |
+| 列名 | 格式 | 示例 |
+| --------------- | ------ | -------------------------------------- |
+| `companyDomain` | URL 格式 | `https://acme.com` |
+| `companyId` | UUID | `c776ee49-f608-4a77-8cc8-6fe96ae1e43f` |
- **Use Domain URL format** (`https://acme.com`), not the label. This matches how Companies are stored in Twenty.
+ **使用域名 URL 格式**(`https://acme.com`),而不是标签。 这与公司在 Twenty 中的存储方式一致。
-### Sample CSV Structure
+### 示例 CSV 结构
```csv
firstName,lastName,email,jobTitle,companyDomain,Phones / Primary Phone Number,Phones / Primary Phone Country Code
@@ -93,150 +93,150 @@ Jane,Doe,jane@widgets.co,CTO,https://widgets.co,2125551234,US
```
- **Pro tip:** Click **Download sample file** during import or export a few existing People to see the exact column names Twenty expects.
+ **专业提示:** 在导入过程中单击 **Download sample file**,或导出现有的一些 People,以查看 Twenty 期望的确切列名。
-## Step 2: Access the Import Feature
+## 步骤 2:进入导入功能
-**Option 1: From the People View**
+**选项 1:从 People 视图**
-1. Navigate to **People** in the left sidebar
-2. Click the **⋮** icon on the top right
-3. Select **Import records**
+1. 在左侧边栏中导航到 **People**
+2. 单击右上角的 **⋮** 图标
+3. 选择 **Import records**
-**Option 2: Using Command Menu**
+**选项 2:使用命令菜单**
-1. Press `Cmd + K` (Mac) or `Ctrl + K` (Windows)
-2. Type "import"
-3. Select **Import records**
-4. Choose **People**
+1. 按 `Cmd + K`(Mac)或 `Ctrl + K`(Windows)
+2. 输入 "import"
+3. 选择 **Import records**
+4. 选择 **People**
-## Step 3: Upload Your File
+## 步骤 3:上传您的文件
-1. Click **Select file**
-2. Choose your CSV, XLSX, or XLS file
-3. Wait for Twenty to analyze your file
+1. 单击 **Select file**
+2. 选择您的 CSV、XLSX 或 XLS 文件
+3. 等待 Twenty 分析您的文件
-## Step 4: Map Your Columns
+## 步骤 4:映射您的列
-Twenty automatically tries to match your columns to fields. Review and adjust:
+Twenty 会自动尝试将您的列与字段匹配。 检查并调整:
-1. **Check automatic mappings** — verify they're correct
-2. **Fix incorrect mappings** — click the dropdown to select the right field
-3. **Skip columns** — select **Do not map** for columns you don't want to import
+1. **检查自动映射** — 核实其是否正确
+2. **修正不正确的映射** — 单击下拉菜单选择正确的字段
+3. **跳过列** — 对不想导入的列选择 **Do not map**
-### Important Mapping Rules
+### 重要的映射规则
-| Column Type | Map To | Notes |
-| ----------------- | ------------------------------ | ---------------------------------- |
-| Company reference | **Company** relation field | Use domain OR id, not both |
-| Email | **Email** | Primary email address |
-| Additional emails | **Emails / Additional Emails** | Array format |
-| Phone | Separate columns | Number, Country Code, Calling Code |
+| 列类型 | 映射到 | 备注 |
+| ------ | ------------------------------ | ------------------ |
+| 公司引用 | **Company** 关系字段 | 仅使用域名或 ID,不要同时使用二者 |
+| 电子邮件 | **电子邮件** | 主要电子邮件地址 |
+| 附加电子邮件 | **Emails / Additional Emails** | 数组格式 |
+| 电话 | 分列 | 号码、国家代码、拨号代码 |
-### Mapping the Company Relation
+### 映射公司关系
-When mapping the company column:
+当映射公司列时:
-1. Find your company reference column (e.g., `companyDomain`)
-2. Map it to the **Company** relation field
-3. Twenty will link each Person to the matching Company
+1. 找到您的公司引用列(例如,`companyDomain`)
+2. 将其映射到 **Company** 关系字段
+3. Twenty 会将每个 Person 关联到匹配的 Company
- **Map only ONE unique identifier for relations.**
+ **仅为关系映射一个唯一标识符。**
- Don't map both `companyId` AND `companyDomain`. Choose one—preferably domain since it's human-readable.
+ 不要同时映射 `companyId` 和 `companyDomain`。 选择其一——最好使用域名,因为它更易读。
-## Step 5: Map Select Field Values
+## 步骤 5:映射选择字段的值
-If you have Select or Multi-Select fields (like Lead Source):
+如果您有选择或多选字段(如 Lead Source):
-1. Twenty shows your values alongside existing options
-2. Match each value in your file to a Twenty option
-3. Or create new options if needed
+1. Twenty 会将您的值与现有选项并列显示
+2. 将文件中的每个值与一个 Twenty 选项匹配
+3. 或在需要时创建新选项
- Select options use **API names**, not display labels. Check **Settings → Data Model** → Enable **Advanced mode** to see API names.
+ 选择型选项使用 **API 名称**,而不是显示标签。 在 **Settings → Data Model** 中启用 **Advanced mode** 以查看 API 名称。
-## Step 6: Review and Fix Errors
+## 步骤 6:检查并修复错误
-Before completing the import, Twenty validates your data:
+在完成导入之前,Twenty 会验证您的数据:
-1. Click **Next Steps**
-2. Rows with errors are highlighted in **yellow**
-3. **Fix errors directly** — click a cell and edit the value
-4. **Remove problematic rows** — click the X to skip that row
+1. 单击 **Next Steps**
+2. 有错误的行会被高亮为**黄色**
+3. **直接修复错误** — 单击单元格并编辑其值
+4. **移除有问题的行** — 单击 X 以跳过该行
-### Common Contact Import Errors
+### 常见联系人导入错误
-| Error | Cause | Solution |
-| -------------------------- | -------------------------------------- | ------------------------------------------- |
-| **Duplicate email** | Email already exists in Twenty or file | Remove duplicate or update existing record |
-| **Invalid email format** | Email format incorrect | Fix to `name@domain.com` |
-| **Relation not found** | Company doesn't exist | Import Companies first or fix the reference |
-| **Missing required field** | Required field is empty | Fill in the value or remove the row |
+| 错误 | 原因 | 解决方案 |
+| ------------ | -------------------- | --------------------- |
+| **电子邮件重复** | 电子邮件在 Twenty 或文件中已存在 | 删除重复项或更新现有记录 |
+| **电子邮件格式无效** | 电子邮件格式不正确 | 更正为 `name@domain.com` |
+| **未找到关系** | 公司不存在 | 先导入公司,或修复引用 |
+| **缺少必填字段** | 必填字段为空 | 填写该值或删除该行 |
-## Step 7: Complete the Import
+## 步骤 7:完成导入
-1. Review the import summary
-2. Click **Confirm** to import
-3. Wait for the import to complete
-4. Verify by checking a few records and their Company links
+1. 查看导入摘要
+2. 单击 **确认** 以进行导入
+3. 等待导入完成
+4. 通过检查一些记录及其公司关联来验证
-## After Importing Contacts
+## 导入联系人之后
-Your contacts are now in Twenty! Next steps:
+您的联系人现已在 Twenty 中! 后续步骤:
-1. **Verify Company links** — open a few People records to confirm they're linked to the right Company
-2. **Import Opportunities** — if needed, link them to People and Companies
-3. **Set up email sync** — connect your mailbox to see email history on contact records
+1. **验证公司关联** — 打开一些 People 记录,确认它们已关联到正确的公司
+2. **导入机会** — 如有需要,将其关联到 People 和 Companies
+3. **设置电子邮件同步** — 连接您的邮箱,以在联系人记录中查看电子邮件历史
-## Updating Existing Contacts
+## 更新现有联系人
-To update contacts instead of creating new ones:
+若要更新联系人而非创建新联系人:
-1. Include the `email` or `id` column in your file
-2. Twenty matches records by this unique identifier
-3. Existing contacts are updated; new ones are created
+1. 在文件中包含 `email` 或 `id` 列
+2. Twenty 将根据此唯一标识符匹配记录
+3. 现有联系人会被更新;新的联系人会被创建
-See [How to Update Existing Records](/l/zh/user-guide/data-migration/how-tos/update-existing-records-via-import) for details.
+详情请参见 [如何更新现有记录](/l/zh/user-guide/data-migration/how-tos/update-existing-records-via-import)。
-## FAQ
+## 常见问题
-
- Email is a unique identifier in Twenty. This prevents duplicate contacts and ensures email sync correctly links emails to the right person.
+
+ 在 Twenty 中,电子邮件是唯一标识符。 这可防止重复联系人,并确保电子邮件同步将邮件正确关联到对应的人。
-
- You can leave the email empty. However, we recommend adding emails when possible for better data quality and email sync functionality.
+
+ 您可以将电子邮件留空。 不过,我们建议在可能的情况下添加电子邮件,以获得更好的数据质量和电子邮件同步功能。
-
- Add a column with the Company's domain (e.g., `https://acme.com`) or ID. During mapping, connect this column to the Company relation field.
+
+ 添加包含公司域名(例如 `https://acme.com`)或 ID 的列。 在映射过程中,将此列连接到 Company 关系字段。
-
- Import Companies first, then import People. The Company must exist before you can reference it.
+
+ 先导入 Companies,再导入 People。 在引用之前,该 Company 必须已存在。
-
- Yes! Create a custom field marked as "unique" in your data model to store the external ID. Note: the field name `id` is reserved for Twenty's internal ID.
+
+ 是! 在您的数据模型中创建一个标记为“唯一”的自定义字段,用于存储外部 ID。 注意:字段名 `id` 保留给 Twenty 的内部 ID。
-
- The Company you're referencing doesn't exist. Either import the Company first, or check that the domain/ID exactly matches an existing Company.
+
+ 您引用的 Company 不存在。 先导入该 Company,或检查域名/ID 是否与现有 Company 完全匹配。
-## Troubleshooting
+## 故障排除
-Having issues? Check:
+遇到问题? 请查看:
-* [How to Fix Import Errors](/l/zh/user-guide/data-migration/how-tos/fix-import-errors)
-* [How to Import Relations](/l/zh/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv)
-* [Field Mapping Reference](/l/zh/user-guide/data-migration/capabilities/field-mapping)
+* [如何修复导入错误](/l/zh/user-guide/data-migration/how-tos/fix-import-errors)
+* [如何导入关系](/l/zh/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv)
+* [字段映射参考](/l/zh/user-guide/data-migration/capabilities/field-mapping)
diff --git a/packages/twenty-docs/l/zh/user-guide/data-migration/how-tos/import-data-via-api.mdx b/packages/twenty-docs/l/zh/user-guide/data-migration/how-tos/import-data-via-api.mdx
index 420eef0468..3d49e90014 100644
--- a/packages/twenty-docs/l/zh/user-guide/data-migration/how-tos/import-data-via-api.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/data-migration/how-tos/import-data-via-api.mdx
@@ -1,176 +1,176 @@
---
-title: Import Data via API
-description: When and how to use Twenty's APIs for large-scale data imports.
+title: 通过 API 导入数据
+description: 何时以及如何使用 Twenty 的 API 进行大规模数据导入。
---
-## Overview
+## 概览
-Twenty provides both **GraphQL** and **REST APIs** for programmatic data import. Use the API when CSV import isn't practical for your data volume or when you need automated, recurring imports.
+Twenty 提供 **GraphQL** 和 **REST API**,用于以编程方式导入数据。 当 CSV 导入不适合您的数据量,或您需要自动化、定期的导入时,请使用 API。
-## When to Use API Import
+## 何时使用 API 导入
-| Scenario | Recommended Method |
-| ---------------------------------- | ----------------------------- |
-| Under 10,000 records | CSV Import |
-| 10,000 - 50,000 records | CSV Import (split into files) |
-| **50,000+ records** | **API Import** |
-| One-time migration | Either (based on volume) |
-| **Recurring imports** | **API Import** |
-| **Real-time sync** | **API Import** |
-| **Integration with other systems** | **API Import** |
+| 场景 | 推荐方法 |
+| ------------------- | --------------- |
+| 少于 10,000 条记录 | CSV 导入 |
+| 10,000 - 50,000 条记录 | CSV 导入(拆分为多个文件) |
+| **50,000+ 条记录** | **API 导入** |
+| 一次性迁移 | 两者皆可(取决于数据量) |
+| **定期导入** | **API 导入** |
+| **实时同步** | **API 导入** |
+| **与其他系统集成** | **API 导入** |
-For datasets in the hundreds of thousands, the API is significantly faster and more reliable than multiple CSV imports.
+对于包含数十万条记录的数据集,API 比多次 CSV 导入显著更快且更可靠。
-## API Rate Limits
+## API 速率限制
-Twenty enforces rate limits to ensure system stability:
+Twenty 实施速率限制以确保系统稳定性:
-| Limit | Value |
-| -------------------------- | --------------------- |
-| **Requests per minute** | 100 |
-| **Records per batch call** | 60 |
-| **Maximum throughput** | ~6,000 records/minute |
+| 限制 | 值 |
+| -------------- | ------------- |
+| **每分钟请求数** | 100 |
+| **每次批量调用的记录数** | 60 |
+| **最大吞吐量** | ~6,000 条记录/分钟 |
- **Plan your import around these limits.**
+ **围绕这些限制规划您的导入。**
- For 100,000 records at maximum throughput, expect approximately 17 minutes of import time. Add buffer time for error handling and retries.
+ 在最大吞吐量下,导入 100,000 条记录预计约需 17 分钟。 为错误处理和重试预留缓冲时间。
-## Getting Started
+## 开始使用
-### Step 1: Get Your API Key
+### 步骤 1:获取您的 API 密钥
-1. Go to **Settings → Developers**
-2. Click **+ Create API key**
-3. Give your key a descriptive name
-4. Copy the API key immediately (it won't be shown again)
-5. Store it securely
+1. 前往 **设置 → 开发者**
+2. 点击 **+ 创建 API 密钥**
+3. 为您的密钥指定一个描述性名称
+4. 立即复制该 API 密钥(不会再次显示)
+5. 将其安全存储
- **Keep your API key secret.**
+ **请保密您的 API 密钥。**
- Anyone with your API key can access and modify your workspace data. Never commit it to code repositories or share it publicly.
+ 任何获得您 API 密钥的人都可以访问并修改您的工作区数据。 切勿将其提交到代码仓库或公开分享。
-### Step 2: Choose Your API
+### 步骤 2:选择您的 API
-Twenty supports two API types:
+Twenty 支持两种 API 类型:
-| API | Best For | Documentation |
-| ----------- | ----------------------------------------------------------- | ------------------------------------------------ |
-| **GraphQL** | Flexible queries, fetching related data, complex operations | [API Docs](/l/zh/developers/extend/capabilities/apis) |
-| **REST** | Simple CRUD operations, familiar REST patterns | [API Docs](/l/zh/developers/extend/capabilities/apis) |
+| 接口 | 最适合 | 文档 |
+| ----------- | ----------------------- | ---------------------------------------------- |
+| **GraphQL** | 灵活查询、获取关联数据、复杂操作 | [API 文档](/l/zh/developers/extend/capabilities/apis) |
+| **REST** | 简单的 CRUD 操作、熟悉的 REST 模式 | [API 文档](/l/zh/developers/extend/capabilities/apis) |
-Both APIs support:
+两种 API 都支持:
-* Creating, reading, updating, and deleting records
-* **Batch operations** — create or update up to 60 records per call
+* 创建、读取、更新和删除记录
+* **批量操作** — 每次调用最多创建或更新 60 条记录
-**For imports, use batch operations** to maximize throughput within rate limits.
+**对于导入,请使用批量操作**,以在速率限制内最大化吞吐量。
-### Step 3: Plan Your Import Order
+### 步骤 3:规划您的导入顺序
-Just like CSV imports, **order matters** for relations:
+与 CSV 导入一样,对于关联关系,**顺序很重要**:
-1. **Companies** first (no dependencies)
-2. **People** second (can link to Companies)
-3. **Opportunities** third (can link to Companies and People)
-4. **Tasks/Notes** (can link to any of the above)
-5. **Custom objects** (following their dependencies)
+1. **公司** 优先(无依赖)
+2. **人员** 其次(可关联到公司)
+3. **商机** 第三(可关联到公司和人员)
+4. **任务/笔记**(可关联到以上任一项)
+5. **自定义对象**(按照其依赖关系)
-## Best Practices
+## 最佳实践
-### Batch Your Requests
+### 批量处理请求
-* Don't send records one at a time
-* Group up to **60 records per API call**
-* This maximizes throughput within rate limits
+* 不要逐条发送记录
+* 每次 API 调用最多分组处理 **60 条记录**
+* 这可在速率限制内最大化吞吐量
-### Handle Rate Limits
+### 处理速率限制
-* Implement delays between requests (600ms minimum for sustained imports)
-* Use exponential backoff when you hit limits
-* Monitor for 429 (Too Many Requests) responses
+* 在请求之间实施延迟(持续导入时至少 600ms)
+* 达到限制时使用指数退避
+* 监控 429(请求过多)响应
-### Validate Data First
+### 先验证数据
-* Clean and validate your data before importing
-* Check required fields are populated
-* Verify formats match Twenty's requirements (see [Field Mapping](/l/zh/user-guide/data-migration/capabilities/field-mapping))
+* 在导入前清洗并验证数据
+* 检查必填字段是否已填写
+* 验证格式是否符合 Twenty 的要求 (参见 [字段映射](/l/zh/user-guide/data-migration/capabilities/field-mapping))
-### Log Everything
+### 记录一切
-* Log every record imported (including IDs)
-* Log errors with full context
-* This helps debug issues and verify completion
+* 记录每一条导入的记录(包括 ID)
+* 记录错误及其完整上下文
+* 这有助于调试问题并验证完成情况
-### Test First
+### 先进行测试
-* Test with a small batch (10-20 records)
-* Verify data appears correctly in Twenty
-* Then run the full import
+* 使用小批量进行测试(10-20 条记录)
+* 验证数据在 Twenty 中显示是否正确
+* 然后执行完整导入
-### Upsert to Avoid Duplicates
+### 使用合并插入避免重复
-The GraphQL API supports **batch upsert** — update if the record exists, create if not. This prevents duplicates when re-running imports.
+GraphQL API 支持**批量合并插入** — 若记录已存在则更新,不存在则创建。 这可以在重新运行导入时防止重复。
-## Finding Object and Field Names
+## 查找对象和字段名称
-To see available objects and fields:
+查看可用的对象和字段:
-1. Go to **Settings → API and Webhooks**
-2. Browse the **Metadata API**
-3. View all standard and custom objects with their fields
+1. 前往 **设置 → API 和 Webhooks**
+2. 浏览 **Metadata API**
+3. 查看所有标准和自定义对象及其字段
-The documentation shows all standard and custom objects, their fields, and the expected data types.
+文档展示了所有标准和自定义对象、它们的字段以及预期的数据类型。
-## Professional Services
+## 专业服务
-For complex API migrations, our partners can help:
+对于复杂的 API 迁移,我们的合作伙伴可以提供帮助:
-| Service | What's Included |
-| ----------------------- | ---------------------------------- |
-| **Data Model Design** | design your optimal data structure |
-| **Migration Scripts** | write and run the import scripts |
-| **Data Transformation** | handle complex mapping and cleanup |
-| **Validation & QA** | verify the migration is complete |
+| 服务 | 包含内容 |
+| ---------- | ---------- |
+| **数据模型设计** | 设计最优的数据结构 |
+| **迁移脚本** | 编写并运行导入脚本 |
+| **数据转换** | 处理复杂的映射与清理 |
+| **验证与 QA** | 验证迁移是否完成 |
-**Best for:**
+**适用于:**
-* Migrations of 100,000+ records
-* Complex data transformations
-* Tight timelines
-* Teams without developer resources
+* 迁移 100,000+ 条记录
+* 复杂的数据转换
+* 紧迫的时间安排
+* 缺乏开发人员资源的团队
-Contact us at [contact@twenty.com](mailto:contact@twenty.com) or explore our [Implementation Services](/l/zh/user-guide/getting-started/capabilities/implementation-services).
+请通过 [contact@twenty.com](mailto:contact@twenty.com) 与我们联系,或查看我们的 [实施服务](/l/zh/user-guide/getting-started/capabilities/implementation-services)。
-## FAQ
+## 常见问题
-
- GraphQL lets you request exactly the data you need in a single query and is better for complex operations. REST uses standard HTTP methods (GET, POST, PUT, DELETE) and may be more familiar if you've worked with traditional APIs.
+
+ GraphQL 允许您在一次查询中准确请求所需数据,并且更适合复杂操作。 REST 使用标准的 HTTP 方法(GET、POST、PUT、DELETE),如果您使用过传统 API,可能会更熟悉。
-
- Yes! Use update mutations (GraphQL) or PUT/PATCH requests (REST) with the record's `id`.
+
+ 是! 使用 update mutation(GraphQL)或带有记录 `id` 的 PUT/PATCH 请求(REST)。
-
- Query for existing records first using unique identifiers (email, domain). Update if exists, create if not.
+
+ 首先使用唯一标识符(email、domain)查询现有记录。 存在则更新,不存在则创建。
-
- Yes, use delete mutations (GraphQL) or DELETE requests (REST).
+
+ 可以,使用 delete mutation(GraphQL)或 DELETE 请求(REST)。
-
- Not currently, but both APIs work with any HTTP client in any language.
+
+ 目前没有,但这两种 API 可与任何语言中的任意 HTTP 客户端配合使用。
-## API Documentation
+## API 文档
-For full implementation details, code examples, and schema reference:
+有关完整的实现细节、代码示例和架构参考:
-* [API Documentation](/l/zh/developers/extend/capabilities/apis)
+* [API 文档](/l/zh/developers/extend/capabilities/apis)
diff --git a/packages/twenty-docs/l/zh/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv.mdx b/packages/twenty-docs/l/zh/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv.mdx
index e61afe08ee..820087807a 100644
--- a/packages/twenty-docs/l/zh/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv.mdx
@@ -1,103 +1,103 @@
---
-title: Import Relations Between Objects via CSV
-description: Complete step-by-step guide to linking records during CSV import.
+title: 通过 CSV 导入对象之间的关系
+description: 在 CSV 导入过程中关联记录的完整分步指南。
---
-## Overview
+## 概览
-This guide walks you through importing relations between objects—for example, linking People to Companies, or Opportunities to People.
+本指南将引导您导入对象之间的关系——例如,将人员与公司关联,或将商机与人员关联。
-**What can be imported:** Only one-to-many relations pointing to a single object type. Relations pointing to multiple object types (like Notes linking to People AND Companies) are not yet supported for import.
+\*\*可导入内容:\*\*仅限指向单个对象类型的一对多关系。 指向多个对象类型的关系(例如,笔记同时关联到人员和公司)目前尚不支持导入。
-## Understanding Relations
+## 了解关系
-### What is a "One-to-Many" Relation?
+### 什么是“一对多”关系?
-In a one-to-many relation:
+在一对多关系中:
-* **One** Company has **many** People (employees)
-* **One** Company has **many** Opportunities
-* **One** Person has **many** Tasks
+* **一个**公司拥有**多个**人员(员工)
+* **一个**公司拥有**多个**商机
+* **一个**人拥有**多个**任务
-The "one" side is the **parent**. The "many" side is the **child**.
+“一”侧为**父级**。 “多”侧为**子级**。
-### Common Relations in Twenty
+### Twenty 中的常见关系
-| Relation | "One" Side (Parent) | "Many" Side (Child) |
-| ------------------------- | ------------------- | ------------------- |
-| Companies → People | Company | People |
-| Companies → Opportunities | Company | Opportunities |
-| People → Tasks | Person | Tasks |
-| People → Notes | Person | Notes |
+| 关系 | “一”侧(父级) | “多”侧(子级) |
+| ------- | -------- | -------- |
+| 公司 → 人员 | 公司 | 人员 |
+| 公司 → 商机 | 公司 | 机会 |
+| 人员 → 任务 | 人员 | 任务 |
+| 人员 → 笔记 | 人员 | 备注 |
-## Step 1: Identify the "One" and "Many" Sides
+## 步骤 1:确定“一”和“多”两侧
-Before importing, determine which object is the parent and which is the child.
+在导入之前,确定哪个对象是父级,哪个是子级。
-**Ask yourself:** "Does ONE [Object A] have MANY [Object B]?"
+**自问:**“是否一个[对象 A]拥有多个[对象 B]?”
-* One Company → Many People ✓ (Company is parent)
-* One Person → Many Companies ✗ (This is wrong—a person belongs to one company)
+* 一个公司 → 多个人员 ✓(公司为父级)
+* 一个人 → 多个公司 ✗(这是错误的——一个人隶属于一个公司)
-## Step 2: Import the Parent Records First
+## 步骤 2:先导入父级记录
-The parent ("one" side) must exist in Twenty before you can reference it.
+在引用之前,父级(“一”侧)必须已存在于 Twenty 中。
-**Import order:**
+**导入顺序:**
-1. **Companies** first (no dependencies)
-2. **People** second (link to Companies)
-3. **Opportunities** third (link to Companies and/or People)
-4. **Tasks/Notes** (link to any of the above)
+1. **公司** 优先(无依赖关系)
+2. **人员** 其次(关联到公司)
+3. **商机** 第三(关联到公司和/或人员)
+4. **任务/笔记**(可关联到以上任一项)
- **If the parent record doesn't exist, the import will fail.**
+ **如果父级记录不存在,导入将失败。**
- Always verify that Companies are imported before importing People with company references.
+ 在导入包含公司引用的人员之前,请务必确认公司已导入。
-## Step 3: Note the Parent's Unique Identifier
+## 步骤 3:记录父级的唯一标识符
-You need to reference the parent record using a **unique identifier**. Available options:
+您需要使用**唯一标识符**来引用父级记录。 可用选项:
-| Parent Object | Available Unique Identifiers |
-| --------------------- | --------------------------------------------------------------- |
-| **Companies** | `id` (UUID), `domain` (recommended), or any custom unique field |
-| **People** | `id` (UUID), `email`, or any custom unique field |
-| **Workspace Members** | `id` (UUID), `email` (not name) |
-| **Custom Objects** | `id` (UUID), or any field marked as unique |
+| 父级对象 | 可用的唯一标识符 |
+| --------- | --------------------------------- |
+| **公司** | `id`(UUID)、`domain`(推荐)或任何自定义唯一字段 |
+| **人员** | `id`(UUID)、`email`,或任何自定义唯一字段 |
+| **工作区成员** | `id`(UUID)、`email`(而非姓名) |
+| **自定义对象** | `id`(UUID),或任何标记为唯一的字段 |
-**Recommended:** Use `domain` for Companies and `email` for People. These are human-readable and easy to verify in your spreadsheet.
+\*\*建议:\*\*公司使用 `domain`,人员使用 `email`。 这些字段可读性强,且在电子表格中易于核对。
-### Finding the Identifier
+### 查找标识符
-If you need the `id`:
+如果您需要 `id`:
-1. Export the parent records from Twenty
-2. The export includes the `id` column
-3. Use these IDs in your child records file
+1. 从 Twenty 导出父级记录
+2. 导出结果包含 `id` 列
+3. 在子级记录文件中使用这些 ID
-## Step 4: Verify the Relation Field Exists
+## 步骤 4:核实关系字段是否存在
-Before importing, ensure the relation field exists between your objects.
+在导入之前,确保对象之间存在关系字段。
-**To check or create:**
+**检查或创建的方法:**
-1. Go to **Settings → Data Model**
-2. Select your child object (e.g., People)
-3. Look for a relation field pointing to the parent (e.g., Company)
-4. If it doesn't exist, create it:
- * Click **+ Add field**
- * Select **Relation** type
- * Choose the parent object
+1. 进入 **设置 → 数据模型**
+2. 选择您的子级对象(例如,人员)
+3. 查找指向父级的关系字段(例如,公司)
+4. 如果不存在,请创建:
+ * 点击 **+ 添加字段**
+ * 选择 **关系** 类型
+ * 选择父级对象
-## Step 5: Prepare Your CSV File
+## 步骤 5:准备您的 CSV 文件
-Add a column to your child CSV that references the parent using its unique identifier.
+在子级 CSV 中添加一列,使用父级的唯一标识符进行引用。
-### Example: People Linking to Companies
+### 示例:人员关联到公司
-**Your People CSV:**
+**您的人员 CSV:**
```csv
firstName,lastName,email,jobTitle,companyDomain
@@ -106,66 +106,66 @@ Jane,Doe,jane@widgets.co,CTO,https://widgets.co
Bob,Johnson,bob@techstart.io,Developer,https://techstart.io
```
-The `companyDomain` column references the Company's domain.
+`companyDomain` 列引用公司的域名。
-### Format Requirements
+### 格式要求
-| Identifier | Format | Example |
-| ---------- | -------------- | -------------------------------------- |
-| Domain | URL format | `https://acme.com` |
-| Email | Standard email | `john@acme.com` |
-| ID | UUID | `c776ee49-f608-4a77-8cc8-6fe96ae1e43f` |
+| 标识符 | 格式 | 示例 |
+| ---- | ------ | -------------------------------------- |
+| 域 | URL 格式 | `https://acme.com` |
+| 电子邮件 | 标准邮箱 | `john@acme.com` |
+| 编号 | UUID | `c776ee49-f608-4a77-8cc8-6fe96ae1e43f` |
- **Domain format matters!**
+ **域名格式很重要!**
- Use `https://domain.com` (not just `domain.com`). This matches how Twenty stores Company domains and prevents matching errors.
+ 请使用 `https://domain.com`(而不是仅 `domain.com`)。 这与 Twenty 存储公司域名的方式一致,并可避免匹配错误。
-### Important Rules
+### 重要规则
-1. **Exact match required** — the value must exactly match the parent record
-2. **Map only ONE unique identifier** — don't include both `companyId` AND `companyDomain`
-3. **Case sensitive** — `Acme.com` ≠ `acme.com`
+1. **需要精确匹配** — 值必须与父级记录完全一致
+2. **仅映射一个唯一标识符** — 不要同时包含 `companyId` 和 `companyDomain`
+3. **区分大小写** — `Acme.com` ≠ `acme.com`
-## Step 6: Upload and Map the Relation
+## 步骤 6:上传并映射关系
-1. Navigate to the child object (e.g., People)
-2. Click **⋮** → **Import records**
-3. Upload your CSV file
-4. In the field mapping step:
- * Find your relation column (e.g., `companyDomain`)
- * Map it to the **Company** relation field
-5. Complete the remaining mapping
-6. Review errors and confirm
+1. 前往子级对象(例如,人员)
+2. 点击 **⋮** → **导入记录**
+3. 上传您的 CSV 文件
+4. 在字段映射步骤中:
+ * 找到您的关系列(例如,`companyDomain`)
+ * 将其映射到 **Company** 关系字段
+5. 完成其余映射
+6. 检查错误并确认
-Twenty will automatically link each child record to the matching parent.
+Twenty 将自动把每条子级记录关联到匹配的父级。
-## Step 7: Verify the Import
+## 步骤 7:验证导入结果
-After importing:
+导入后:
-1. Open a few child records (e.g., People)
-2. Verify the relation field shows the correct parent (e.g., Company)
-3. Open a parent record and check the related records section
+1. 打开几条子级记录(例如,人员)
+2. 确认关系字段显示正确的父级(例如,公司)
+3. 打开一条父级记录并检查相关记录部分
-## Common Mistakes to Avoid
+## 常见错误及避免方法
-| Mistake | Problem | Solution |
-| -------------------------- | -------------------------------------------------- | ------------------------------------------------------- |
-| **Wrong import order** | Importing People before Companies | Always import parents first, then children |
-| **Wrong domain format** | Using `acme.com` instead of `https://acme.com` | Use full URL format with `https://` |
-| **Multiple unique fields** | Mapping both `companyId` AND `companyDomain` | Map only ONE unique identifier |
-| **Missing relation field** | The relation field doesn't exist in the data model | Create it in **Settings → Data Model** before importing |
-| **Non-existent records** | The parent record doesn't exist in Twenty | Import parent records first, or check for typos |
-| **Case mismatch** | `Acme.com` in file but `acme.com` in Twenty | Ensure exact case matching |
+| 错误 | 问题 | 解决方案 |
+| ---------- | -------------------------------------- | -------------------------- |
+| **导入顺序错误** | 在公司之前导入人员 | 始终先导入父级,再导入子级 |
+| **域名格式错误** | 使用 `acme.com` 而非 `https://acme.com` | 使用带有 `https://` 的完整 URL 格式 |
+| **多个唯一字段** | 同时映射 `companyId` 和 `companyDomain` | 仅映射一个唯一标识符 |
+| **缺少关系字段** | 数据模型中不存在该关系字段 | 请在导入前于 **设置 → 数据模型** 中创建 |
+| **记录不存在** | 父级记录在 Twenty 中不存在 | 先导入父级记录,或检查是否有拼写错误 |
+| **大小写不匹配** | 文件中为 `Acme.com`,但 Twenty 中为 `acme.com` | 确保大小写完全一致 |
-## Linking to Workspace Members
+## 关联到工作区成员
-When linking to Workspace Members (your team):
+当关联到工作区成员(您的团队)时:
-* Use their **email address**, not their name
-* Example: `owner@yourcompany.com`, not "John Smith"
+* 使用他们的**电子邮箱地址**,而不是姓名
+* 例如:`owner@yourcompany.com`,而不是 "John Smith"
```csv
taskName,assignedTo
@@ -173,56 +173,56 @@ Follow up with client,john@yourcompany.com
Review proposal,jane@yourcompany.com
```
-## FAQ
+## 常见问题
-
- You have two options:
+
+ 您有两个选项:
- 1. Use the Twenty `id` (export parent records to get their IDs)
- 2. Create a custom unique field in your data model to store an external ID from your previous system
+ 1. 使用 Twenty 的 `id`(导出父级记录以获取其 ID)
+ 2. 在数据模型中创建自定义唯一字段,用于存储来自旧系统的外部 ID
-
- Yes! Include the child record's unique identifier (e.g., `email` for People) and the new relation value. The import will update the relation.
+
+ 是! 包含子级记录的唯一标识符(例如,人员的 `email`)以及新的关系值。 导入将更新该关系。
-
- Many-to-Many relations are not yet supported for import. This is planned for H1 2026.
+
+ 目前尚不支持导入多对多关系。 计划于 2026 年上半年推出。
-
- Relations pointing to multiple object types are not yet supported for import/export. This is on our roadmap.
+
+ 指向多个对象类型的关系目前尚不支持导入/导出。 此功能已在我们的路线图中。
-
- The import will show an error for that row. You can either:
+
+ 导入会为该行显示错误。 您可以:
- * Import the parent record first, then re-import
- * Fix the reference value
- * Remove the row from import
+ * 先导入父级记录,然后重新导入
+ * 修正引用值
+ * 从导入中移除该行
-
- Common causes:
+
+ 常见原因:
- * Wrong format (use `https://domain.com` for domains)
- * Case mismatch (check exact spelling)
- * Parent doesn't exist (import parents first)
- * Mapping multiple identifiers (use only one)
+ * 格式错误(域名请使用 `https://domain.com`)
+ * 大小写不匹配(检查拼写是否完全一致)
+ * 父级不存在(请先导入父级)
+ * 映射了多个标识符(仅使用一个)
- **Remember: Soft-deleted records count toward uniqueness.**
+ **请注意:软删除的记录也会计入唯一性。**
- If you're getting "not found" errors but the record seems to exist, check Command Menu → See deleted records. The parent may have been soft-deleted.
+ 如果您收到“not found”错误,但记录似乎存在,请检查命令菜单 → 查看已删除的记录。 父级可能已被软删除。
-## Troubleshooting
+## 故障排除
-Having issues? Check:
+遇到问题? 请查看:
-* [How to Fix Import Errors](/l/zh/user-guide/data-migration/how-tos/fix-import-errors)
-* [Import Relations Capabilities](/l/zh/user-guide/data-migration/capabilities/import-relations)
-* [Uniqueness Constraints](/l/zh/user-guide/data-migration/capabilities/uniqueness-constraints)
+* [如何修复导入错误](/l/zh/user-guide/data-migration/how-tos/fix-import-errors)
+* [导入关系功能](/l/zh/user-guide/data-migration/capabilities/import-relations)
+* [唯一性约束](/l/zh/user-guide/data-migration/capabilities/uniqueness-constraints)
diff --git a/packages/twenty-docs/l/zh/user-guide/data-migration/how-tos/migrating-from-other-crms.mdx b/packages/twenty-docs/l/zh/user-guide/data-migration/how-tos/migrating-from-other-crms.mdx
index b83422558b..77f1685f1e 100644
--- a/packages/twenty-docs/l/zh/user-guide/data-migration/how-tos/migrating-from-other-crms.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/data-migration/how-tos/migrating-from-other-crms.mdx
@@ -1,43 +1,43 @@
---
-title: Migrating from Other CRMs
-description: Step-by-step guide to migrate your data from any CRM to Twenty.
+title: 从其他CRM迁移
+description: 分步指南:将您的数据从任何客户关系管理系统迁移到 Twenty。
---
-## Overview
+## 概览
-This guide walks you through migrating your data from any CRM to Twenty. The process involves auditing your data, preparing your Twenty workspace, exporting from your current system, and importing into Twenty.
+本指南将引导您将数据从任何客户关系管理系统迁移到 Twenty。 该过程包括审核您的数据、准备您的 Twenty 工作区、从当前系统导出,并导入到 Twenty。
-Views, workflows, and permissions must be recreated manually after migration. Plan time for this configuration work.
+视图、工作流和权限必须在迁移后手动重新创建。 为这些配置工作预留时间。
-## Step 1: Audit Your Current Data
+## 步骤 1:审核您现有的数据
-Migration is an opportunity for a fresh start. Don't bring over clutter.
+迁移是一个重新开始的机会。 不要把冗余内容带过来。
-**What to keep:**
+**应保留的内容:**
-* Active contacts and companies
-* Open opportunities and deals
-* Important notes and activities
-* Custom fields you actually use
+* 活跃的联系人和公司
+* 进行中的机会和交易
+* 重要的备注和活动
+* 实际使用的自定义字段
-**What to leave behind:**
+**应舍弃的内容:**
-* Outdated contacts (no activity in 2+ years)
-* Duplicate records
-* Test data
-* Unused custom fields
+* 过时的联系人(超过 2 年无任何活动)
+* 重复记录
+* 测试数据
+* 未使用的自定义字段
-## Step 2: Map Your Data Model
+## 步骤 2:映射您的数据模型
-Create a mapping document between your current CRM and Twenty:
+在您当前的客户关系管理系统与 Twenty 之间创建一份映射文档:
-| Your CRM | Twenty |
-| ---------------------- | -------------------- |
-| Account / Organization | **Company** |
-| Contact / Person | **People** |
-| Deal / Opportunity | **Opportunity** |
-| Activity | **Task** or **Note** |
-| Custom Object | **Custom Object** |
+| 您的客户关系管理系统 | Twenty |
+| ------------- | -------------------- |
+| 账户 / 组织 | **公司** |
+| 联系人 / 人员 | **人员** |
+| 交易 / 机会 | **Opportunity** |
+| Activity | **Task** or **Note** |
+| Custom Object | **Custom Object** |
**For each field, document:**
@@ -72,7 +72,7 @@ Before importing data, prepare your Twenty workspace:
If your data includes user references (Account Owner, Assignee, etc.), those users must exist in Twenty before import. Otherwise, those relations cannot be mapped.
-1. Go to **Settings → Members**
+1. 转到 **设置 → 成员**
2. Invite all team members
3. **Wait for everyone to accept** their invitation
4. Verify all users appear in your Members list
@@ -92,7 +92,7 @@ Export your data from your current CRM:
2. Contacts / People
3. Deals / Opportunities
4. Notes and Activities
-5. Custom objects
+5. 自定义对象
## Step 5: Clean and Format Your Data
@@ -109,7 +109,7 @@ Open each exported CSV in a spreadsheet application and prepare it for Twenty.
| Field Type | Required Format |
| ----------------- | ------------------------------------------------- |
| **Domain** | `https://domain.com` |
-| **Email** | `name@domain.com` (must be unique) |
+| **电子邮件** | `name@domain.com` (must be unique) |
| **Date** | `YYYY-MM-DD` |
| **Phone** | Three columns: Number, Country Code, Calling Code |
| **Boolean** | `TRUE` or `FALSE` (uppercase) |
@@ -207,7 +207,7 @@ After importing data, complete your workspace configuration:
* Set up saved views with filters, sorts, and column configurations
* Create any kanban or calendar views you need
-### Recreate Workflows
+### 重新创建工作流
* Rebuild your automations in **Settings → Workflows**
* Start with the most critical workflows
@@ -229,7 +229,7 @@ After importing data, complete your workspace configuration:
* Walk through the new interface together
* Document any team-specific processes
-## Common Issues and Solutions
+## 常见问题及解决方案
| Issue | Cause | Solution |
| ----------------------- | --------------------------- | ------------------------------------------------------------------------------------ |
@@ -241,7 +241,7 @@ After importing data, complete your workspace configuration:
See [How to Fix Import Errors](/l/zh/user-guide/data-migration/how-tos/fix-import-errors) for detailed troubleshooting steps.
-## Post-Migration Checklist
+## 迁移后检查表
### Data Integrity
@@ -251,7 +251,7 @@ See [How to Fix Import Errors](/l/zh/user-guide/data-migration/how-tos/fix-impor
Custom fields populated
No unexpected duplicates
-### Configuration
+### 配置
Views recreated
Workflows recreated and tested
@@ -283,7 +283,7 @@ See [How to Fix Import Errors](/l/zh/user-guide/data-migration/how-tos/fix-impor
-## Need Help?
+## 需要帮助?
For complex migrations or large datasets:
diff --git a/packages/twenty-docs/l/zh/user-guide/data-migration/how-tos/migrating-from-self-hosted-to-cloud.mdx b/packages/twenty-docs/l/zh/user-guide/data-migration/how-tos/migrating-from-self-hosted-to-cloud.mdx
index 07fdbdaa70..8d69f99226 100644
--- a/packages/twenty-docs/l/zh/user-guide/data-migration/how-tos/migrating-from-self-hosted-to-cloud.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/data-migration/how-tos/migrating-from-self-hosted-to-cloud.mdx
@@ -1,171 +1,171 @@
---
-title: Migrating from Self-Hosted to Cloud
-description: Step-by-step guide to migrate your Twenty self-hosted instance to Twenty Cloud.
+title: 从自托管迁移到云
+description: 分步指南:将您的 Twenty 自托管实例迁移到 Twenty Cloud。
---
-## Overview
+## 概览
-This guide walks you through migrating your data from a Twenty self-hosted instance to Twenty Cloud. The process involves setting up your cloud workspace, exporting your data, and re-importing it.
+本指南将引导您把数据从 Twenty 自托管实例迁移到 Twenty Cloud。 该过程包括设置您的云端工作区、导出数据并重新导入。
-Views, workflows, and roles must be recreated manually after migration. Plan time for this configuration work.
+视图、工作流和角色必须在迁移后手动重新创建。 为这些配置工作预留时间。
-## Step 1: Create Your Cloud Workspace
+## 步骤 1:创建您的云端工作区
-1. Go to [app.twenty.com](https://app.twenty.com) and create a new workspace
-2. Complete the initial setup wizard
-3. Note your new workspace URL
+1. 访问 [app.twenty.com](https://app.twenty.com) 并创建一个新的工作区
+2. 完成初始设置向导
+3. 记录您的新工作区 URL
-## Step 2: Recreate Your Data Model
+## 步骤 2:重新创建您的数据模型
-Before importing data, recreate your custom objects and fields:
+在导入数据之前,重新创建您的自定义对象和字段:
-1. Go to **Settings → Data Model** in your cloud instance
-2. Create custom objects that match your self-hosted setup
-3. Add custom fields to standard and custom objects
-4. Configure field settings (unique, required, etc.)
+1. 在您的云端实例中进入 **设置 → 数据模型**
+2. 创建与自托管设置相匹配的自定义对象
+3. 向标准对象和自定义对象添加自定义字段
+4. 配置字段设置(唯一、必填等)
-Take screenshots of your self-hosted data model for reference, or keep both instances open side by side.
+为便于参考,请截取自托管数据模型的屏幕截图,或并排打开两个实例。
-## Step 3: Invite All Users
+## 步骤 3:邀请所有用户
- **Critical: Invite users BEFORE importing data.**
+ **至关重要:在导入数据之前邀请用户。**
- Users must accept their invitations before you import any records that reference them (like Account Owner fields). If users don't exist yet, those relations cannot be mapped.
+ 在您导入任何引用到他们的记录(例如“账户所有者”字段)之前,用户必须先接受邀请。 如果用户尚不存在,则无法映射这些关系。
-1. Go to **Settings → Members** in your cloud instance
-2. Invite all team members who had accounts on self-hosted
-3. **Wait for everyone to accept** their invitation
-4. Verify all users appear in your Members list
+1. 在您的云端实例中进入 **设置 → 成员**
+2. 邀请所有在自托管环境中拥有账户的团队成员
+3. **等待所有人接受** 邀请
+4. 核实所有用户都出现在您的“成员”列表中
-## Step 4: Export Data from Self-Hosted
+## 步骤 4:从自托管导出数据
-Export each object from your self-hosted instance:
+从您的自托管实例中导出每个对象:
-1. Navigate to each object (Companies, People, Opportunities, etc.)
-2. Configure the view to show **all columns** you want to migrate
-3. Click **⋮ → Export view**
-4. Save each CSV file with a clear name (e.g., `companies-export.csv`)
+1. 导航到每个对象(公司、人员、商机等)
+2. 将视图配置为显示您希望迁移的**所有列**
+3. 点击 **⋮** → **导出视图**
+4. 将每个 CSV 文件保存为清晰的名称(例如,`companies-export.csv`)
-**Export in this order** (for reference when importing):
+**按以下顺序导出**(供导入时参考):
-1. Companies
-2. People
-3. Opportunities
-4. Custom objects (following their dependencies)
-5. Tasks, Notes
+1. 公司
+2. 人员
+3. 机会
+4. 自定义对象(按其依赖关系顺序)
+5. 任务、笔记
-## Step 5: Update Workspace Member References
+## 步骤 5:更新工作区成员引用
-The exported CSVs contain user IDs from your self-hosted instance. These IDs won't match your cloud instance, so you need to replace them with emails.
+导出的 CSV 包含来自您自托管实例的用户 ID。 这些 ID 与您的云端实例不匹配,因此需要将其替换为邮箱地址。
-**For each CSV file with user references (Owner, Assignee, etc.):**
+**对于每个包含用户引用(所有者、被指派人等)的 CSV 文件:**
-1. Open the CSV in a spreadsheet application
-2. Add a new column next to each user ID column (e.g., `accountOwnerEmail` next to `accountOwnerId`)
-3. Fill in the **email address** of each user
-4. You can delete the old ID column or leave it (it will be skipped during import)
+1. 在电子表格应用中打开该 CSV
+2. 在每个用户 ID 列旁边添加一个新列(例如,在 `accountOwnerId` 旁添加 `accountOwnerEmail`)
+3. 填写每位用户的邮箱地址
+4. 您可以删除旧的 ID 列或保留它(导入时会被跳过)
-**Example:**
+**示例:**
-Before:
+之前:
```csv
name,domain,accountOwnerId
Acme Corp,https://acme.com,old-uuid-123
```
-After:
+之后:
```csv
name,domain,accountOwnerEmail
Acme Corp,https://acme.com,john@yourcompany.com
```
-Use the same email addresses that users used to accept their cloud workspace invitation.
+请使用用户接受云端工作区邀请时所使用的相同邮箱地址。
-## Step 6: Plan Your Import Order
+## 步骤 6:规划您的导入顺序
-Import files in the correct order to maintain relationships:
+按正确顺序导入文件以保持关系:
-1. **Companies** first (no dependencies)
-2. **People** second (link to Companies)
-3. **Opportunities** third (link to Companies and People)
-4. **Custom objects** (following their dependencies)
-5. **Tasks and Notes** last (link to other records)
+1. **公司** 优先(无依赖关系)
+2. **人员** 其次(关联到公司)
+3. **商机** 第三(关联到公司和人员)
+4. **自定义对象**(按其依赖关系)
+5. **任务和笔记** 最后(关联到其他记录)
-See [How to Import Relations](/l/zh/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv) for details on maintaining relationships.
+有关维护关系的详细信息,请参见[如何导入关系](/l/zh/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv)。
-## Step 7: Import to Cloud
+## 步骤 7:导入到云端
-For each CSV file, in order:
+针对每个 CSV 文件,按顺序进行:
-1. Navigate to the object in your cloud instance
-2. Click **⋮ → Import records**
-3. Upload the CSV file
-4. Map columns to fields:
- * Map user email columns to the appropriate relation fields
- * Map other columns as usual
-5. Review and fix any errors
-6. Confirm the import
-7. Verify a few records before proceeding to the next file
+1. 在云端实例中导航到该对象
+2. 点击 **⋮** → **导入记录**
+3. 上传 CSV 文件
+4. 将列映射到字段:
+ * 将用户邮箱列映射到相应的关系字段
+ * 按常规方式映射其他列
+5. 检查并修复任何错误
+6. 确认导入
+7. 在继续下一个文件之前,先核对几条记录
-## Step 8: Recreate Configuration
+## 步骤 8:重新创建配置
-After importing data, manually recreate:
+导入数据后,请手动重新创建:
-### Views
+### 视图
-* Recreate saved views with filters, sorts, and column configurations
-* Set up any kanban or calendar views
+* 根据筛选、排序和列配置重新创建已保存的视图
+* 设置任何看板或日历视图
-### Workflows
+### 工作流
-* Recreate automations in **Settings → Workflows**
-* Test each workflow before relying on it
+* 在 **设置 → 工作流** 中重新创建自动化
+* 在依赖之前先测试每个工作流
-### Roles and Permissions
+### 角色和权限
-* Configure roles in **Settings → Roles**
-* Assign users to appropriate roles
+* 在 **设置 → 角色** 中配置角色
+* 将用户分配到合适的角色
-### Integrations
+### 集成
-* Reconnect email and calendar sync for each user
-* Reconfigure any API integrations with new API keys
+* 为每位用户重新连接邮件和日历同步
+* 使用新的 API 密钥重新配置任何 API 集成
-## Post-Migration Checklist
+## 迁移后检查表
-All data imported successfully
-Relations between objects working correctly
-User assignments (Owner, Assignee) mapped correctly
-Views recreated
-Workflows recreated and tested
-Roles and permissions configured
-Email/calendar sync reconnected
-API integrations updated with new keys
+所有数据均已成功导入
+对象之间的关系运行正常
+用户分配(所有者、被指派人)映射正确
+视图已重新创建
+工作流已重新创建并通过测试
+角色和权限已配置
+邮件/日历同步已重新连接
+API 集成已使用新密钥更新
-## FAQ
+## 常见问题
-
- Not currently. Workflows must be recreated manually in your cloud instance.
+
+ 目前不可以。 必须在您的云端实例中手动重新创建工作流。
-
- File attachments are not included in CSV exports. You'll need to re-upload any attachments manually, migrate them via API or contact our team for assistance with large migrations.
+
+ CSV 导出不包含文件附件。 您需要手动重新上传任何附件、通过 API 迁移它们,或联系我方团队获取大规模迁移的协助。
-
- Yes, we recommend keeping your self-hosted instance running until you've verified the cloud migration is complete. Just be careful not to create new data in both places.
+
+ 可以。我们建议在您确认云端迁移完成之前,保持自托管实例运行。 只要注意不要在两个环境中同时创建新数据即可。
-
- Records referencing that user will fail to import or the relation will be empty. Ensure all users accept invitations before importing data.
+
+ 引用该用户的记录将导入失败,或其关系字段为空。 在导入数据之前,确保所有用户都已接受邀请。
-## Need Help?
+## 需要帮助?
-For complex migrations or large datasets, contact us at [contact@twenty.com](mailto:contact@twenty.com) or explore our [Implementation Services](/l/zh/user-guide/getting-started/capabilities/implementation-services).
+对于复杂的迁移或大型数据集,请通过 [contact@twenty.com](mailto:contact@twenty.com) 与我们联系,或查看我们的[实施服务](/l/zh/user-guide/getting-started/capabilities/implementation-services)。
diff --git a/packages/twenty-docs/l/zh/user-guide/data-migration/how-tos/prepare-your-csv-files.mdx b/packages/twenty-docs/l/zh/user-guide/data-migration/how-tos/prepare-your-csv-files.mdx
index 49f5a7054c..89bcbc6bab 100644
--- a/packages/twenty-docs/l/zh/user-guide/data-migration/how-tos/prepare-your-csv-files.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/data-migration/how-tos/prepare-your-csv-files.mdx
@@ -1,200 +1,200 @@
---
-title: Prepare Your CSV Files
-description: Complete step-by-step guide to format your data for import into Twenty.
+title: 准备您的 CSV 文件
+description: 完整的分步指南,指导您将数据格式化以导入 Twenty。
---
-## Overview
+## 概览
-This guide walks you through preparing your CSV file for a successful import. Follow these steps in order to avoid errors.
+本指南将引导您准备 CSV 文件,以成功完成导入。 请按照以下步骤操作以避免错误。
-## Step 1: Check File Requirements
+## 步骤 1:检查文件要求
-Before you start, ensure your file meets these requirements:
+开始之前,请确保您的文件满足以下要求:
-| Requirement | Details |
-| -------------- | ------------------------ |
-| **Format** | CSV, XLSX, or XLS |
-| **Size limit** | 10,000 records per file |
-| **Encoding** | UTF-8 recommended |
-| **Structure** | One object type per file |
+| 要求 | 详情 |
+| -------- | ----------------- |
+| **格式** | CSV、XLSX 或 XLS |
+| **大小限制** | 每个文件最多 10,000 条记录 |
+| **编码** | 建议使用 UTF-8 |
+| **结构** | 每个文件仅一种对象类型 |
-For datasets larger than 10,000 records, split into multiple files or use the [API import](/l/zh/user-guide/data-migration/how-tos/import-data-via-api).
+对于超过 10,000 条记录的数据集,请拆分为多个文件,或使用[API 导入](/l/zh/user-guide/data-migration/how-tos/import-data-via-api)。
-## Step 2: Download the Sample File
+## 步骤 2:下载示例文件
-**This is the most important step.** The sample file shows you the exact column names and format Twenty expects.
+**这是最重要的一步。** 示例文件展示了 Twenty 期望的准确列名和格式。
-1. Go to the object view (People, Companies, etc.)
-2. Click **⋮** → **Import records**
-3. Click **Download sample file**
-4. Use this file as your template
+1. 进入对象视图(人员、公司等)
+2. 点击 **⋮** → **导入记录**
+3. 点击 **下载示例文件**
+4. 将此文件用作模板
-**Pro tip:** Export a few existing records instead. This gives you real examples of how data should be formatted, and the column names will map automatically during import.
+**专业提示:** 改为导出少量现有记录。 这将为您提供数据应如何格式化的真实示例,并且在导入过程中列名会自动映射。
-## Step 3: Remove Duplicate Values
+## 步骤 3:移除重复值
-Twenty enforces uniqueness on certain fields. Duplicates will cause import errors.
+Twenty 会对某些字段强制唯一性。 重复项会导致导入错误。
-| Object | Unique Fields |
-| ------------------ | ----------------------------------------- |
-| **People** | `id`, `email` |
-| **Companies** | `id`, `domain` |
-| **Custom objects** | `id`, plus any field you marked as unique |
+| 对象 | 唯一字段 |
+| --------- | ------------------ |
+| **人员** | `id`, `email` |
+| **公司** | `id`, `domain` |
+| **自定义对象** | `id`,以及任何您标记为唯一的字段 |
-**Before importing:**
+**导入之前:**
-1. Sort your spreadsheet by the unique field (email or domain)
-2. Remove or merge duplicate rows
-3. Check for duplicates that already exist in Twenty
+1. 按唯一字段(email 或 domain)对电子表格排序
+2. 删除或合并重复的行
+3. 检查 Twenty 中是否已存在重复项
-**Soft-deleted records count toward uniqueness.** Records in Command Menu → See deleted records will cause duplicate errors. Delete them permanently or restore and update them.
+**软删除的记录计入唯一性。** 位于“命令菜单 → 查看已删除的记录”中的记录会导致重复错误。 请永久删除这些记录,或将其恢复并更新。
-## Step 4: Format Each Field Type Correctly
+## 步骤 4:正确格式化各字段类型
-Different field types require specific formats. Here's the complete reference:
+不同的字段类型需要特定格式。 以下是完整参考:
-### Text Fields
+### 文本字段
-* No special formatting required
-* Leading/trailing spaces are automatically trimmed
+* 无需特殊格式
+* 首尾空格将自动去除
-### Email Fields
+### 电子邮件字段
-* Must be valid email format: `name@domain.com`
-* Must be unique (no duplicates in file or in Twenty)
-* For additional emails, use this format in the **Emails / Additional Emails** column:
+* 必须是有效的电子邮件格式:`name@domain.com`
+* 必须唯一(文件内及 Twenty 中不得重复)
+* 对于附加电子邮件,请在 **Emails / Additional Emails** 列中使用此格式:
```
["jane@twenty.com","jane.doe@twenty.com"]
```
-### Domain Fields
+### 域名字段
-* **Recommended format**: `https://domain.com`
-* This matches the format used by mailbox/calendar sync (prevents duplicates)
-* Fill both columns:
- * **Domain / Domain Label**: `domain.com`
- * **Domain / Domain URL**: `https://domain.com`
-* Must be unique within your file and in Twenty
+* **推荐格式**:`https://domain.com`
+* 这与邮箱/日历同步所使用的格式一致(可防止重复)
+* 填写这两列:
+ * **Domain / Domain Label**:`domain.com`
+ * **Domain / Domain URL**:`https://domain.com`
+* 在您的文件内以及在 Twenty 中必须唯一
-### Phone Fields
+### 电话字段
-Phone is a **nested field** requiring multiple columns:
+电话是一个**嵌套字段**,需要多列:
-| Column | Example |
+| 列 | 示例 |
| --------------------------------------- | ------------ |
| **Phones / Primary Phone Number** | `4159095555` |
| **Phones / Primary Phone Country Code** | `US` |
-| **Phones / Primary Phone Calling Code** | `+1` |
+| **电话 / 主电话号码国际区号** | `+1` |
-### Address Fields
+### 地址字段
-Address is a **nested field** with multiple columns (some can be left empty):
+地址是一个**嵌套字段**,包含多个列(有些可以留空):
-* **Address / Address 1**: Street address line 1
-* **Address / Address 2**: Street address line 2 (optional)
-* **Address / City**: City name
-* **Address / State**: State or province
-* **Address / Country**: Country name
-* **Address / Post Code**: Postal/ZIP code
+* **Address / Address 1**:街道地址第 1 行
+* **Address / Address 2**:街道地址第 2 行(可选)
+* **Address / City**:城市名称
+* **Address / State**:州或省
+* **Address / Country**:国家名称
+* **Address / Post Code**:邮政/ZIP 编码
-### Date Fields
+### 日期字段
-Use consistent formatting throughout your file:
+在整个文件中使用一致的格式:
-* `YYYY-MM-DD` (recommended): `2024-03-15`
-* `MM/DD/YYYY`: `03/15/2024`
-* `DD/MM/YYYY`: `15/03/2024`
-* ISO 8601: `2024-03-15T10:30:00Z`
+* `YYYY-MM-DD`(推荐):`2024-03-15`
+* `MM/DD/YYYY`:`03/15/2024`
+* `DD/MM/YYYY`:`15/03/2024`
+* ISO 8601:`2024-03-15T10:30:00Z`
-### Number Fields
+### 数字字段
-* Numbers only (no text)
-* Use period for decimals: `1234.56`
-* No thousands separators (not `1,234.56`)
+* 仅数字(无文本)
+* 小数使用点号:`1234.56`
+* 不使用千位分隔符(不要写成 `1,234.56`)
-### Currency Fields
+### 货币字段
-Currency is a **nested field** requiring two columns that **both must be filled**:
+货币是一个**嵌套字段**,需要两列,且**两列都必须填写**:
-| Column | Example |
+| 列 | 示例 |
| --------------------- | --------- |
| **Amount / Amount** | `1234.56` |
| **Amount / Currency** | `USD` |
-### Boolean Fields
+### 布尔字段
-Use uppercase: `TRUE` or `FALSE`
+使用大写:`TRUE` 或 `FALSE`
-Lowercase `true` or `false` will not work.
+小写的 `true` 或 `false` 将无法使用。
-### Select Fields
+### 选择字段
-Use the **API name** of the option, not the display label.
+使用选项的**API 名称**,而不是显示标签。
-**How to find API names:**
+**如何查找 API 名称:**
-1. Go to **Settings → Data Model**
-2. Select the object and field
-3. Enable **Advanced mode** (toggle at bottom right)
-4. Copy the API name (e.g., `OPTION_1`, not "Option 1")
+1. 进入 **设置 → 数据模型**
+2. 选择对象和字段
+3. 启用**高级模式**(右下角切换)
+4. 复制该 API 名称(例如:`OPTION_1`,而不是 "Option 1")
-New select options are not created automatically. Add them in **Settings → Data Model** before importing.
+新的选择项不会自动创建。 请在导入前于 **设置 → 数据模型** 中添加它们。
-### Multi-Select Fields
+### 多选字段
-Use API names in array format:
+以数组格式使用 API 名称:
```
["VALUE1","VALUE2"]
```
-### Array Fields
+### 数组字段
-Use JSON array format:
+使用 JSON 数组格式:
```
["value1","value2"]
```
-### Rating Fields
+### 评分字段
-Use the format: `RATING_1`, `RATING_2`, `RATING_3`, `RATING_4`, or `RATING_5`
+使用以下格式:`RATING_1`、`RATING_2`、`RATING_3`、`RATING_4` 或 `RATING_5`
-### Links/URL Fields
+### 链接/URL 字段
-Fill both columns:
+填写两列:
-* **Links / Link Label**: `Twenty`
-* **Links / Link URL**: `https://twenty.com`
+* **Links / Link Label**:`Twenty`
+* **Links / Link URL**:`https://twenty.com`
-For secondary links, use the **Links / Secondary Links** column:
+对于次要链接,请使用 **Links / Secondary Links** 列:
```
[{"url":"https://twenty.com","label":"Twenty"}]
```
-### JSON Fields
+### JSON 字段
-Use valid JSON format:
+使用有效的 JSON 格式:
```
{"key":"value","key2":"value2"}
```
-### ID Fields
+### ID 字段
-* **Optional**: Twenty auto-generates IDs if not provided
-* **Format**: UUID (e.g., `c776ee49-f608-4a77-8cc8-6fe96ae1e43f`)
-* **Use case**: Include ID to update existing records instead of creating new ones
+* **可选**:如未提供,Twenty 将自动生成 ID
+* **格式**:UUID(例如:`c776ee49-f608-4a77-8cc8-6fe96ae1e43f`)
+* **使用场景**:包含 ID 以更新现有记录,而不是创建新记录
-## Step 5: Add Relation Columns (If Linking Records)
+## 步骤 5:添加关系列(如果要关联记录)
-To link records to other objects (e.g., People to Companies), add a column with the unique identifier of the related record.
+要将记录关联到其他对象(例如,将人员关联到公司),请添加包含关联记录唯一标识符的列。
-**Example**: Linking People to Companies
+**示例**:将人员关联到公司
-Add a column to your People CSV:
+在您的人员 CSV 中添加一列:
```
firstName,lastName,email,companyDomain
@@ -202,69 +202,69 @@ John,Smith,john@acme.com,https://acme.com
Jane,Doe,jane@widgets.co,https://widgets.co
```
-**Important rules for relations:**
+**关系的重要规则:**
-* The parent record must already exist in Twenty
-* Use the **Domain URL** format (`https://domain.com`), not the label
-* Map only ONE unique identifier (don't include both `companyId` AND `companyDomain`)
-* For Workspace Members, use their **email** (not name)
+* 父记录必须已存在于 Twenty 中
+* 使用**域名 URL** 格式(`https://domain.com`),而不是标签
+* 仅映射一个唯一标识符(不要同时包含 `companyId` 和 `companyDomain`)
+* 对于工作区成员,请使用其**电子邮箱**(而不是姓名)
- **Import Order Matters!**
+ **导入顺序很重要!**
- Import the "one" side before the "many" side:
+ 先导入“1”端,再导入“多”端:
- 1. **Companies** first
- 2. **People** second (with company reference)
- 3. **Opportunities** third
+ 1. **公司** 优先
+ 2. **人员** 其次(包含公司引用)
+ 3. **机会** 第三
- The parent record must exist before you can reference it.
+ 在引用之前,父记录必须已存在。
-See [How to Import Relations](/l/zh/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv) for detailed instructions.
+详细说明请参见[如何导入关系](/l/zh/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv)。
-## Step 6: Ensure Fields Exist in Twenty
+## 步骤 6:确保 Twenty 中存在这些字段
-The import creates **records**, not **fields**. All fields you want to import must already exist in your data model.
+导入会创建**记录**,而非**字段**。 要导入的所有字段必须已在您的数据模型中存在。
-**Before importing:**
+**导入前:**
-1. Go to **Settings → Data Model**
-2. Select your object
-3. Create any custom fields you need
-4. Note the exact field names (they must match your column headers)
+1. 进入 **设置 → 数据模型**
+2. 选择您的对象
+3. 创建所需的任何自定义字段
+4. 记录准确的字段名称(必须与列标题匹配)
-## Step 7: Final Checklist
+## 步骤 7:最终检查清单
-Before uploading your file, verify:
+在上传文件之前,请确认:
-File is CSV, XLSX, or XLS format
-File has fewer than 10,000 records
-Encoding is UTF-8
-No duplicate emails (for People) or domains (for Companies)
-Dates use consistent format throughout
-Domains use `https://domain.com` format
-Boolean fields use `TRUE` or `FALSE` (uppercase)
-Select fields use API names, not display labels
-All custom fields exist in Settings → Data Model
-Parent records imported before child records
-Relation columns reference existing records
+文件为 CSV、XLSX 或 XLS 格式
+文件少于 10,000 条记录
+编码为 UTF-8
+没有重复的电子邮箱(针对人员)或域名(针对公司)
+日期在全篇使用一致的格式
+域名使用 `https://domain.com` 格式
+布尔字段使用 `TRUE` 或 `FALSE`(大写)
+选择字段使用 API 名称,而非显示标签
+所有自定义字段已存在于 设置 → 数据模型 中
+父记录先于子记录导入
+关系列引用现有记录
-## Common Mistakes to Avoid
+## 常见错误及避免方法
-| Mistake | Solution |
-| -------------------------------------------- | ------------------------------------- |
-| Using `true` instead of `TRUE` | Boolean values must be uppercase |
-| Using display labels for Select fields | Find and use API names in Settings |
-| Importing People before Companies | Always import parent objects first |
-| Missing currency code for Currency fields | Fill both Amount and Currency columns |
-| Wrong domain format | Use `https://domain.com` consistently |
-| Mapping multiple unique fields for relations | Map only ONE (domain OR id, not both) |
+| 错误 | 解决方案 |
+| ------------------- | ---------------------------- |
+| 使用 `true` 而非 `TRUE` | 布尔值必须为大写 |
+| 在选择字段中使用显示标签 | 在“设置”中查找并使用 API 名称 |
+| 在公司之前导入人员 | 始终先导入父对象 |
+| 货币字段缺少货币代码 | 填写金额和货币两列 |
+| 域名格式错误 | 始终使用 `https://domain.com` 格式 |
+| 为关系映射了多个唯一字段 | 仅映射一个(域名或 ID,不要同时映射) |
-## Next Steps
+## 下一步
-Your file is ready! Now:
+您的文件已准备就绪! 现在:
-* [Import Companies](/l/zh/user-guide/data-migration/how-tos/import-companies-via-csv) (import these first)
-* [Import Contacts](/l/zh/user-guide/data-migration/how-tos/import-contacts-via-csv)
-* [Fix any import errors](/l/zh/user-guide/data-migration/how-tos/fix-import-errors)
+* [导入公司](/l/zh/user-guide/data-migration/how-tos/import-companies-via-csv)(先导入这些)
+* [导入联系人](/l/zh/user-guide/data-migration/how-tos/import-contacts-via-csv)
+* [修复任何导入错误](/l/zh/user-guide/data-migration/how-tos/fix-import-errors)
diff --git a/packages/twenty-docs/l/zh/user-guide/data-migration/how-tos/update-existing-records-via-import.mdx b/packages/twenty-docs/l/zh/user-guide/data-migration/how-tos/update-existing-records-via-import.mdx
index e373540115..4aae863cc9 100644
--- a/packages/twenty-docs/l/zh/user-guide/data-migration/how-tos/update-existing-records-via-import.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/data-migration/how-tos/update-existing-records-via-import.mdx
@@ -1,67 +1,67 @@
---
-title: Update Existing Records via Import
-description: Complete step-by-step guide to bulk updating records using CSV import.
+title: 通过导入更新现有记录
+description: 使用 CSV 导入批量更新记录的完整分步指南。
---
-## Overview
+## 概览
-Need to update many records at once? Instead of editing them one by one, use the CSV import to bulk update existing records.
+需要一次更新许多记录吗? 与其逐个编辑,不如使用 CSV 导入批量更新现有记录。
-**Use cases:**
+**使用场景:**
-* Update job titles for multiple people
-* Change company information in bulk
-* Add data to new custom fields
-* Correct data errors across many records
+* 为多人更新职位名称
+* 批量更改公司信息
+* 向新的自定义字段添加数据
+* 更正多条记录中的数据错误
-## How It Works
+## 工作原理
-When you import a file containing a **unique identifier** that matches an existing record, Twenty updates that record instead of creating a duplicate.
+当您导入的文件包含与现有记录匹配的**唯一标识符**时,Twenty 会更新该记录,而不是创建重复项。
-| If unique identifier... | Twenty will... |
-| -------------------------- | ------------------------------------------------ |
-| Matches an existing record | **Update** the existing record |
-| Doesn't match any record | **Create** a new record |
-| Is missing from your file | **Create** a new record (with auto-generated ID) |
+| 如果唯一标识符... | Twenty 将... |
+| ---------- | -------------------- |
+| 与现有记录匹配 | **更新**现有记录 |
+| 与任何记录都不匹配 | **创建**新记录 |
+| 您的文件中缺少 | **创建**新记录(带自动生成的 ID) |
- **Multi-Select fields are overwritten, not merged.**
+ **多选字段会被覆盖,而不是合并。**
- If a record has `Option A` and `Option B` selected, and you import `["Option C"]`, the record will only have `Option C` after import. The import replaces all previous selections—it does not add to them.
+ 如果一条记录已选择了 `Option A` 和 `Option B`,而您导入了 `["Option C"]`,则导入后该记录将只保留 `Option C`。 导入会替换之前的所有选择——不会在其基础上追加。
- To keep existing values, include them all in your import: `["Option A","Option B","Option C"]`
+ 若要保留现有值,请在导入中包含它们全部:`["Option A","Option B","Option C"]`
-## Step 1: Export Your Current Data
+## 步骤 1:导出现有数据
-First, export the records you want to update:
+首先,导出您要更新的记录:
-1. Navigate to the object (People, Companies, etc.)
-2. **Add the columns you need** — click **Options → Fields** to show the fields you want to update
-3. **Filter if needed** — narrow down to only the records you want to update
-4. Click **⋮** → **Export view**
-5. Save the CSV file
+1. 导航到对象(人员、公司等)
+2. **添加所需列** — 点击 **Options → Fields** 以显示您要更新的字段
+3. **如有需要,进行筛选** — 将范围缩小到仅包含您要更新的记录
+4. 点击 **⋮** → **导出视图**
+5. 保存 CSV 文件
-**Why export first?** The exported file has the correct format, includes unique identifiers, and maps automatically during import.
+**为什么先导出?** 导出的文件具有正确的格式,包含唯一标识符,并且在导入时可自动映射。
-### What Gets Exported
+### 导出内容
-* All visible columns in your current view
-* The record's unique identifiers (`id`, `email`, `domain`)
-* Current field values you can modify
+* 当前视图中所有可见列
+* 记录的唯一标识符(`id`、`email`、`domain`)
+* 可供您修改的当前字段值
-## Step 2: Edit the CSV File
+## 步骤 2:编辑 CSV 文件
-Open the exported file in your spreadsheet application (Excel, Google Sheets, etc.):
+在电子表格应用(Excel、Google 表格等)中打开导出的文件:
-1. **Keep the unique identifier column** — don't delete `id`, `email`, or `domain`
-2. **Update the values** in the columns you want to change
-3. **Remove columns you don't need to update** (optional, but cleaner)
-4. **Don't change unique identifier values** — or Twenty will create new records
+1. **保留唯一标识符列** — 不要删除 `id`、`email` 或 `domain`
+2. 在您要更改的列中**更新这些值**
+3. **移除不需要更新的列**(可选,但更简洁)
+4. **不要更改唯一标识符的值** — 否则 Twenty 将创建新记录
-### Example: Updating Job Titles
+### 示例:更新职位名称
-**Exported file:**
+**导出的文件:**
```csv
id,email,firstName,lastName,jobTitle
@@ -70,7 +70,7 @@ id,email,firstName,lastName,jobTitle
550e8400-e29b-41d4-a716-446655440003,bob@acme.com,Bob,Johnson,Sales Rep
```
-**After your edits:**
+**进行编辑后:**
```csv
id,email,firstName,lastName,jobTitle
@@ -80,63 +80,63 @@ id,email,firstName,lastName,jobTitle
```
- **Don't change the unique identifier values.**
+ **不要更改唯一标识符的值。**
- If you change `john@acme.com` to `john.smith@acme.com`, Twenty will create a new record instead of updating the existing one.
+ 如果您将 `john@acme.com` 更改为 `john.smith@acme.com`,Twenty 将创建新记录,而不是更新现有记录。
-## Step 3: Import the Updated File
+## 步骤 3:导入已更新的文件
-1. Navigate to the object
-2. Click **⋮** → **Import records**
-3. Upload your edited CSV file
-4. **Ensure the unique identifier is mapped** — verify `email`, `domain`, or `id` is mapped correctly
-5. Review the field mappings
-6. Check for errors
-7. Click **Confirm**
+1. 导航到对象
+2. 点击 **⋮** → **导入记录**
+3. 上传您已编辑的 CSV 文件
+4. **确保唯一标识符已映射** — 确认 `email`、`domain` 或 `id` 映射正确
+5. 检查字段映射
+6. 检查是否存在错误
+7. 点击 **确认**
-Twenty matches records by the unique identifier and updates them with new values.
+Twenty 根据唯一标识符匹配记录,并使用新值进行更新。
-## Choosing the Right Unique Identifier
+## 选择合适的唯一标识符
-| Object | Recommended | Alternative | Notes |
-| ------------------ | ---------------- | ----------- | ---------------------------- |
-| **People** | `email` | `id` | Email is human-readable |
-| **Companies** | `domain` | `id` | Domain is human-readable |
-| **Custom objects** | Any unique field | `id` | Use your custom unique field |
+| 对象 | 推荐 | 备选 | 备注 |
+| --------- | ------ | ---- | ----------- |
+| **人员** | `电子邮件` | `id` | 电子邮件便于阅读 |
+| **公司** | `域` | `id` | 域名便于阅读 |
+| **自定义对象** | 任何唯一字段 | `id` | 使用您的自定义唯一字段 |
-**Use only ONE unique identifier.** Don't map both `email` AND `id`. This can cause confusion and errors.
+**仅使用一个唯一标识符。** 不要同时映射 `email` 和 `id`。 这可能会引起混淆和错误。
-### Using Custom Unique Fields
+### 使用自定义唯一字段
-If you have a custom field marked as unique (like an external ID from another system):
+如果您有标记为唯一的自定义字段(例如来自其他系统的外部 ID):
-1. Include that field in your export and import
-2. Map it during import
-3. Twenty will match on that field
+1. 在导出和导入中包含该字段
+2. 在导入过程中进行映射
+3. Twenty 将基于该字段进行匹配
-## Step 4: Verify the Updates
+## 步骤 4:验证更新结果
-After importing:
+导入后:
-1. Open a few updated records
-2. Verify the changes were applied
-3. Check that no duplicate records were created
+1. 打开几条已更新的记录
+2. 确认更改已生效
+3. 检查是否未创建重复记录
-## What About Fields Not in Your File?
+## 文件中未包含的字段会怎样?
-**Fields not included in your import file remain unchanged.**
+**未包含在导入文件中的字段将保持不变。**
-| Your file includes... | Result |
-| ---------------------------- | ------------------------------------------------------ |
-| `email`, `jobTitle` | Only `jobTitle` is updated; other fields stay the same |
-| `email`, `jobTitle`, `phone` | `jobTitle` and `phone` are updated |
+| 您的文件包含... | 结果 |
+| -------------------------- | -------------------------- |
+| `email`,`jobTitle` | 只有 `jobTitle` 被更新;其他字段保持不变 |
+| `email`,`jobTitle`,`phone` | `jobTitle` 和 `phone` 被更新 |
-This means you only need to include the fields you want to change (plus the unique identifier).
+这意味着您只需包含想要更改的字段(以及唯一标识符)。
-## Combining Updates and New Records
+## 同时进行更新与创建新记录
-You can update existing records AND create new ones in the same import:
+您可以在同一次导入中更新现有记录并创建新记录:
```csv
email,firstName,lastName,jobTitle
@@ -144,55 +144,55 @@ john@acme.com,John,Smith,Senior Manager ← Updates existing (email matches)
newperson@acme.com,New,Person,Analyst ← Creates new (email doesn't match)
```
-## Common Mistakes to Avoid
+## 常见错误及避免方法
-| Mistake | Problem | Result | Solution |
-| ------------------------------ | ------------------------------------------------------- | -------------------------------------- | ----------------------------------------- |
-| **Changing unique identifier** | Changed `john@acme.com` to `john.smith@acme.com` | Creates new record instead of updating | Keep unique identifiers unchanged |
-| **Multiple unique fields** | Mapping both `email` AND `id` | Potential matching conflicts | Map only ONE unique identifier |
-| **No unique identifier** | File only has `firstName`, `lastName`, `jobTitle` | All rows create new records | Always include `email`, `domain`, or `id` |
-| **Case mismatch** | File has `John@acme.com` but Twenty has `john@acme.com` | Creates new record | Export from Twenty to get exact values |
+| 错误 | 问题 | 结果 | 解决方案 |
+| ----------- | ------------------------------------------------ | ---------- | ---------------------------- |
+| **更改唯一标识符** | 将 `john@acme.com` 更改为 `john.smith@acme.com` | 创建新记录而不是更新 | 保持唯一标识符不变 |
+| **多个唯一字段** | 同时映射 `email` 和 `id` | 可能出现匹配冲突 | 仅映射一个唯一标识符 |
+| **没有唯一标识符** | 文件仅包含 `firstName`、`lastName`、`jobTitle` | 所有行都会创建新记录 | 务必包含 `email`、`domain` 或 `id` |
+| **大小写不匹配** | 文件中为 `John@acme.com`,但 Twenty 中为 `john@acme.com` | 创建新记录 | 从 Twenty 导出以获取精确值 |
-## FAQ
+## 常见问题
-
- Records with unique identifiers that don't match existing records will be created as new records. This lets you update and create in the same import.
+
+ 具有唯一标识符但与现有记录不匹配的记录将被创建为新记录。 这样您就可以在同一次导入中同时进行更新和创建。
-
- Yes, leave the cell empty in your CSV. The import will clear that field's value on the existing record.
+
+ 可以,在 CSV 中将该单元格留空即可。 导入会清除现有记录中该字段的值。
-
- Fields not in your import file remain unchanged on existing records. Only fields you include are updated.
+
+ 未包含在导入文件中的字段在现有记录上将保持不变。 只有您包含的字段会被更新。
-
- Yes! Include the relation's unique identifier (e.g., `companyDomain`) and map it to the relation field. The relation will be updated.
+
+ 是! 包含该关联对象的唯一标识符(例如 `companyDomain`),并将其映射到该关联字段。 该关联将被更新。
-
- During the import review step, Twenty shows you how many records will be updated vs. created based on unique identifier matches.
+
+ 在导入审核步骤中,Twenty 会根据唯一标识符的匹配情况,显示将被更新与被创建的记录数量。
-
- There's no automatic undo. We recommend exporting your data as a backup before making bulk updates.
+
+ 无法自动撤销。 我们建议在进行批量更新之前导出数据作为备份。
-## Best Practices
+## 最佳实践
-1. **Export first** — always start from an export to ensure correct format
-2. **Backup before updating** — export your data before making bulk changes
-3. **Test with a few records** — try updating 5-10 records first before doing a large batch
-4. **Use human-readable identifiers** — `email` and `domain` are easier to verify than `id`
-5. **Only include necessary columns** — fewer columns means less chance for errors
+1. **先导出** — 始终从导出开始,以确保格式正确
+2. **更新前先备份** — 在进行批量更改之前导出您的数据
+3. **先用少量记录进行测试** — 在进行大规模批量处理前,先尝试更新 5-10 条记录
+4. **使用便于阅读的标识符** — `email` 和 `domain` 比 `id` 更容易核对
+5. **只包含必要的列** — 列越少,出错的可能性越低
-## Troubleshooting
+## 故障排除
-Having issues? Check:
+遇到问题? 请查看:
-* [How to Fix Import Errors](/l/zh/user-guide/data-migration/how-tos/fix-import-errors)
-* [Uniqueness Constraints](/l/zh/user-guide/data-migration/capabilities/uniqueness-constraints)
-* [Field Mapping Reference](/l/zh/user-guide/data-migration/capabilities/field-mapping)
+* [如何修复导入错误](/l/zh/user-guide/data-migration/how-tos/fix-import-errors)
+* [唯一性约束](/l/zh/user-guide/data-migration/capabilities/uniqueness-constraints)
+* [字段映射参考](/l/zh/user-guide/data-migration/capabilities/field-mapping)
diff --git a/packages/twenty-docs/l/zh/user-guide/data-migration/overview.mdx b/packages/twenty-docs/l/zh/user-guide/data-migration/overview.mdx
index 3b6b782011..684e7c31be 100644
--- a/packages/twenty-docs/l/zh/user-guide/data-migration/overview.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/data-migration/overview.mdx
@@ -1,89 +1,89 @@
---
-title: Data Migration
-description: Import and export your CRM data via CSV files or API.
+title: 数据迁移
+description: 通过 CSV 文件或 API 导入和导出您的 CRM 数据。
image: /images/user-guide/import-export-data/cloud.png
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-
+
-## Import Methods
+## 导入方法
-Twenty supports two main methods for importing data:
+Twenty 支持两种主要的数据导入方法:
-| Method | Best For | Volume Limit |
-| -------------- | ------------------------------------ | ----------------------- |
-| **CSV Import** | Standard migrations, regular updates | 10,000 records per file |
-| **API Import** | Large-scale migrations, automation | Unlimited |
+| 方法 | 最佳适用 | 数量上限 |
+| ---------- | --------- | --------------- |
+| **CSV 导入** | 标准迁移,定期更新 | 每个文件 10,000 条记录 |
+| **API 导入** | 大规模迁移,自动化 | 无限制 |
-For very large datasets (hundreds of thousands of records), use the API. Our [implementation partners](/l/zh/user-guide/getting-started/capabilities/implementation-services) can help run these scripts if needed.
+对于非常大的数据集(数十万条记录),请使用 API。 我们的[实施合作伙伴](/l/zh/user-guide/getting-started/capabilities/implementation-services)如有需要,可帮助运行这些脚本。
-## CSV Import Basics
+## CSV 导入基础知识
-You can import data for any object using CSV, XLSX, or XLS files. Each file should contain **only one type of object** (e.g., only People records).
+您可以使用 CSV、XLSX 或 XLS 文件导入任何对象的数据。 每个文件应**仅包含一种对象类型**(例如,仅包含“人员”记录)。
-**Fields must exist before import.** Uploading a CSV creates records but does not create fields. If you need custom fields, create them first under **Settings → Data Model**.
+**字段必须在导入前已存在。** 上传 CSV 会创建记录,但不会创建字段。 如果您需要自定义字段,请先在**设置 → 数据模型**中创建它们。
-### Steps
+### 步骤
-1. Navigate to the object where you want to import data
-2. Click the **⋮** icon on the top right (this is the Command Menu) and click on **Import records**
-3. Download the template file to ensure your data is in the expected format
-4. Upload your formatted CSV file
-5. Map your columns to Twenty fields
-6. Review errors (highlighted in yellow) and fix them, directly editing in the UI
-7. Confirm the import
+1. 导航到您要导入数据的对象
+2. 点击右上角的 **⋮** 图标(命令菜单),然后点击 **导入记录**
+3. 下载模板文件以确保您的数据符合预期格式
+4. 上传已按格式整理的 CSV 文件
+5. 将您的列映射到 Twenty 字段
+6. 检查错误(以黄色高亮),并在 UI 中直接编辑进行修复
+7. 确认导入
-### Importing relations between objects
+### 导入对象之间的关系
-You can import relations between objects using the csv import function. You need to reference the related object using a unique field from this object: the `id`, the `email` for People and Workspace Members, the `domain` for companies, any other field set as unique in the data model for any other object.
+您可以使用 CSV 导入功能来导入对象之间的关系。 您需要使用此对象中的唯一字段来引用相关对象:`id`;对于人员和工作区成员,使用 `email`;对于公司,使用 `domain`;对于其他对象,则使用数据模型中设置为唯一的任何字段。
-**Deleted records count toward uniqueness.** Soft-deleted records (visible under Command Menu → See deleted records) are included in uniqueness checks. If you import a record with the same unique value as a deleted record, the deleted record will be restored.
+**已删除的记录也计入唯一性。** 软删除的记录(在“命令菜单 → 查看已删除记录”下可见)会包含在唯一性检查中。 如果您导入的记录与某个已删除记录具有相同的唯一值,该已删除记录将被还原。
- **Import Order Matters!**
+ **导入顺序很重要!**
- When importing related objects, upload files in this order:
+ 在导入相关对象时,请按以下顺序上传文件:
- 1. **Companies** first (the "one" side of relationships)
- 2. **People** second (linked to companies via companyId)
- 3. **Opportunities** third (linked to companies/people)
- 4. **Custom objects** with relations last
+ 1. 首先导入**公司**(关系中的“一”端)
+ 2. 其次导入**人员**(通过 companyId 关联到公司)
+ 3. 第三导入**商机**(关联到公司/人员)
+ 4. 最后导入有关系的**自定义对象**
- Why? The "one" side of a one-to-many relationship must exist before you can reference it. For example, the Company record must exist before you import a Person with that company's ID.
+ 为什么? 在一对多关系中,“一”端必须先存在,才能被引用。 例如,在导入带有该公司 ID 的人员之前,必须先存在该公司的记录。
-Please refer to [this article](/l/zh/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv) for a step-by-step guide on how to proceed.
+有关操作的分步指南,请参阅[这篇文章](/l/zh/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv)。
-## Export Data
+## 导出数据
-Export your workspace data for backups, reporting, or migration.
+导出您的工作区数据,用于备份、报告或迁移。
-### Steps
+### 步骤
-1. Navigate to the object you want to export
-2. Configure the view with the columns you need
-3. Click **⋮** → **Export view**
-4. Save the CSV file
+1. 导航到您要导出的对象
+2. 在视图中配置所需的列
+3. 点击 **⋮** → **导出视图**
+4. 保存该 CSV 文件
-**Only visible columns are exported.** The CSV file will only contain the columns displayed in your current view. Add or hide columns before exporting to control what data is included.
+**仅导出可见列。** CSV 文件只包含当前视图中显示的列。 导出前添加或隐藏列以控制包含的数据。
-**Export limits**: Up to 20,000 records per export.
+**导出限制**:每次导出最多 20,000 条记录。
-## Permissions
+## 权限
-Data import and export require specific permissions:
+数据导入和导出需要特定权限:
-* **Import**: Requires "Import CSV" permission
-* **Export**: Requires "Export CSV" permission
+* **导入**:需要“导入 CSV”权限
+* **导出**:需要“导出 CSV”权限
-Contact your workspace admin if you don't have these permissions.
+如果您没有这些权限,请联系您的工作区管理员。
-## Next Steps
+## 下一步
-* [Prepare your CSV files](/l/zh/user-guide/data-migration/how-tos/prepare-your-csv-files)
-* [Import relations between objects](/l/zh/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv)
-* [Import via API for large datasets](/l/zh/user-guide/data-migration/how-tos/import-data-via-api)
+* [准备您的 CSV 文件](/l/zh/user-guide/data-migration/how-tos/prepare-your-csv-files)
+* [通过 CSV 导入对象之间的关系](/l/zh/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv)
+* [通过 API 导入大型数据集](/l/zh/user-guide/data-migration/how-tos/import-data-via-api)
diff --git a/packages/twenty-docs/l/zh/user-guide/data-model/capabilities/fields.mdx b/packages/twenty-docs/l/zh/user-guide/data-model/capabilities/fields.mdx
index ef477158c2..7bbf3b103f 100644
--- a/packages/twenty-docs/l/zh/user-guide/data-model/capabilities/fields.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/data-model/capabilities/fields.mdx
@@ -1,122 +1,122 @@
---
-title: Fields
-description: Understand the role of fields and how to manage them.
+title: 字段
+description: 了解字段的作用以及如何管理它们。
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-## About Fields
+## 关于字段
-Fields are like columns in a spreadsheet. They store different types of data like text, numbers, or dates. Fields can be standard (built-in) or custom (the ones you create).
+字段就像电子表格中的列。 它们存储不同类型的数据,如文本、数字或日期。 字段可以是标准的(内置的)或自定义的(您创建的)。
-### Standard Fields
+### 标准字段
-Standard fields come built-in with Twenty to handle common business needs.
+标准字段是内置在Twenty中,用于处理常见的业务需求。
-For example, `First Name` and `Last Name` are standard fields in the `People` object. They store text data for individual names.
+例如,`姓`和`名`是`人`对象中的标准字段。 它们用于存储个人姓名的文本数据。
-You cannot delete standard fields, but you can deactivate them if you don't need them.
+您无法删除标准字段,但如果不需要,您可以停用它们。
-You can also customize the options of the standard `SELECT` type fields, for example the options for the `Stage` on Opportunities.
+您还可以自定义标准`SELECT`类型字段的选项,例如机会中的`阶段`选项。
-### Custom Fields
+### 自定义字段
-Custom fields can be added to any object. You can store text, numbers, dates, dropdown selections, and more. Use custom fields to track information that's specific to your business.
+可以将自定义字段添加到任何对象。 您可以存储文本、数字、日期、下拉选择等。 使用自定义字段来跟踪特定于您业务的信息。
-For instance, a custom field for SpaceX could be `Rocket Active Status`, indicating if a rocket is operational.
+例如,SpaceX的自定义字段可以是`火箭活动状态`,指示火箭是否在运作。
-## Field Types
+## 字段类型
-Twenty supports various field types:
+Twenty 支持多种字段类型:
-| Type | Description | Example |
-| ------------ | ----------------------------------------------------------------- | ------------------ |
-| Address | Structured address with street, city, state, country, postal code | Office Address |
-| Array | List of text values | Tags |
-| Boolean | True/false checkbox | Is Active |
-| Currency | Monetary value with currency code | Deal Amount (USD) |
-| Date | Date values | Close Date |
-| Date & Time | Date with time | Meeting Time |
-| Domain | Website domain (used for Companies) | acme.com |
-| Email | Email addresses (with primary + additional) | Contact Email |
-| JSON | Structured JSON data | Custom metadata |
-| Links | URLs with labels (primary + secondary) | Website, LinkedIn |
-| Long Text | Multi-line text | Description, Notes |
-| Multi-Select | Multiple choices from a predefined list | Tags, Categories |
-| Number | Numeric values (integers or decimals) | Quantity, Score |
-| Phone | Phone numbers with country code | Work Phone |
-| Rating | Star rating (1-5) | Priority, Score |
-| Relation | Links to records in other objects | Company → People |
-| Select | Single choice from a predefined list | Stage, Status |
-| Text | Single line of text | Name, Title |
+| 类型 | 描述 | 示例 |
+| ----- | ------------------------- | ----------- |
+| 地址 | 包含街道、城市、州/省、国家、邮政编码的结构化地址 | 办公地址 |
+| 数组 | 文本值列表 | 标签 |
+| 布尔值 | 真/假复选框 | 是否活跃 |
+| 货币 | 带有货币代码的金额 | 交易金额(USD) |
+| 日期 | 日期值 | 关闭日期 |
+| 日期和时间 | 带时间的日期 | 会议时间 |
+| 域 | 网站域名(用于公司) | acme.com |
+| 电子邮件 | 电子邮件地址(含主要 + 附加) | 联系人的电子邮件 |
+| JSON | 结构化 JSON 数据 | 自定义元数据 |
+| 链接 | 带标签的 URL(主要 + 次要) | 网站、LinkedIn |
+| 长文本 | 多行文本 | 描述、备注 |
+| 多选 | 从预定义列表中选择多个选项 | 标签、类别 |
+| 数字 | 数值(整数或小数) | 数量、分数 |
+| 电话 | 带国家代码的电话号码 | 工作电话 |
+| 评分 | 星级评分(1-5) | 优先级、分数 |
+| 关系 | 链接到其他对象中的记录 | 公司 → 人员 |
+| 选择 | 从预定义列表中选择单个选项 | 阶段、状态 |
+| 文本 | 单行文本 | 名称、标题 |
-## Create a Custom Field
+## 创建自定义字段
-To add a custom field to any object, follow these steps:
+要将自定义字段添加到任何对象,请按照以下步骤操作:
-1. Go to `Settings` in the left sidebar.
-2. Go to `Data Model`, then select the object you wish to customize.
-3. Proceed by clicking on `Add Field`.
-4. Choose a field name and type that suits your requirements. Consider adding a field description for better understanding.
+1. 转到左侧栏的`设置`。
+2. 转到`数据模型`,然后选择您想要自定义的对象。
+3. 继续点击`添加字段`。
+4. 选择适合您要求的字段名称和类型。 考虑添加字段描述以便更好地理解。
-Your newly created field is now available within the application's fields. To display it on a specific view, click on the options menu, then select `Fields`.
+您新创建的字段现在可以在应用程序的字段中使用。 要将其显示在特定视图中,请单击选项菜单,然后选择`字段`。
-
+
-**Quick way:** Click the **+** button at the top right of any object table, then select `Customize fields`. This takes you directly to the Data Model settings.
+**快速方法:** 点击任何对象表右上的 **+** 按钮,然后选择`自定义字段`。 这将直接带您进入数据模型设置。
-## Deactivate a Field
+## 停用字段
-You can deactivate a field to hide it from the app without losing your data. Think of it as hiding the field rather than deleting it.
+您可以停用字段以从应用程序中隐藏它,而不会丢失您的数据。 这更像是隐藏字段而不是删除它。
-Here's how you can do it:
+您可以这样做:
-1. Find the field you want to deactivate in your object settings.
+1. 在对象设置中找到您想停用的字段。
-2. Click the three dots `⋮` next to the field to open the menu.
+2. 点击字段旁边的三点`⋮`打开菜单。
-3. Select `Deactivate` from the dropdown.
+3. 从下拉菜单选择`停用`。
-What happens when you deactivate a field?
+停用字段会发生什么?
-1. **In the app:** The field disappears and you can't add new values to it.
+1. **在应用程序中:** 字段消失,您不能向其中添加新值。
-2. **Existing relationships:** If it's a relation field, existing connections stay but you can't create new ones.
+2. **现有关系:** 如果它是一个关系字段,现有连接将保留,但不能创建新连接。
-3. **API access:** You can still access the field and its data through the API.
+3. **通过API访问:** 您仍然可以通过API访问字段及其数据。
-You can reactivate Standard and Custom Fields or have the option to permanently delete them.
+您可以重新激活标准字段和自定义字段,或有选择地将其永久删除。
-## Make Fields Unique
+## 使字段唯一
-Make a field unique to ensure distinct records cannot have the same value. For example, email addresses are unique for each person.
+使字段唯一以确保不同记录无法拥有相同的值。 例如,电子邮件地址对每个人都是唯一的。
-If you get an error when setting uniqueness, check for duplicate values in your data (including deleted records).
+如果在设置唯一性时出现错误,请检查数据中是否有重复值(包括删除的记录)。
-## Field Configuration Best Practices
+## 字段配置最佳实践
-### Naming Conventions and Limitations
+### 命名约定和限制
-* **Singular and plural named must be distinct**: Our GraphQL API needs distinct names for mutations
-* **Protected field names**: some names are reserved for system usage (e.g., `Type`, `Application`)
+* **单数和复数名称必须不同:** 我们的GraphQL API需要为变更提供不同的名称
+* **受保护的字段名称**:某些名称保留供系统使用(例如,`Type`、`Application`)
-### Currency and Phone Fields
+### 货币和电话号码字段
-* **Default currency**: can be configured via the data model
-* **Default country codes**: can be configured for phone fields via the data model
+* **默认货币:** 可以通过数据模型进行配置
+* **默认国家代码:** 可以通过数据模型为电话号码字段进行配置
-### Select Fields
+### 选择字段
-* **A default option can be selected** for each Select field
+* **可以为每个选择字段选择默认选项**
-### Record Text Fields
+### 记录文本字段
-* **Each object has one main display field**: This field appears in the leftmost column and represents the record when linked to other objects. It must be a text field. For example, People uses `Name` as the main field, so when you link a person to a company, you'll see their name in the company's view.
+* **每个对象都有一个主要显示字段:** 此字段出现在最左列,并在与其他对象关联时代表记录。 它必须是文本字段。 例如,`人`使用`姓名`作为主要字段,因此当您将某人关联到公司时,您将在公司的视图中看到他们的姓名。
diff --git a/packages/twenty-docs/l/zh/user-guide/data-model/capabilities/objects.mdx b/packages/twenty-docs/l/zh/user-guide/data-model/capabilities/objects.mdx
index f2f1105277..0ca5435707 100644
--- a/packages/twenty-docs/l/zh/user-guide/data-model/capabilities/objects.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/data-model/capabilities/objects.mdx
@@ -1,91 +1,91 @@
---
-title: Objects
-description: Learn about standard and custom objects in Twenty.
+title: 对象
+description: 了解 Twenty 中的标准对象和自定义对象。
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-## Standard Objects
+## 标准对象
-Standard objects are predefined entities in your workspace to help you get started. They're part of a shared data model accessible to all users of Twenty. You can use them as-is, customize them or deactivate them.
+标准对象是工作区中预定义的实体,帮助您入门。 它们是共享数据模型的一部分,所有Twenty用户均可访问。 您可以直接使用、进行自定义或将其停用。
-### People
+### 人员
-The `People` object stores your contacts. It includes contact details and interaction history, so you can see all your customer interactions in one place.
+`People`对象存储您的联系人。 它包含联系信息和交互历史记录,因此您可以在一个地方查看所有客户互动。
-### Company
+### 公司
-The `Companies` object stores your business accounts. It includes details like industry, size and location. Companies connect to both `People` and `Opportunities` objects.
+`Companies`对象存储您的业务帐户。 它包括行业、规模和位置等详细信息。 公司连接到`People`和`Opportunities`对象。
-### Opportunities
+### 机会
-The `Opportunities` object stores deal-related data. It tracks the progression of potential sales, from prospecting to closure, recording stages, deal sizes, associated account, and expected close date. You can view your sales pipeline in a kanban layout.
+`Opportunities`对象存储与交易相关的数据。 它用于跟踪潜在销售从开发到成交的全过程,记录阶段、交易规模、关联公司以及预计成交日期。 您可以在看板布局中查看您的销售流程。
-### Notes
+### 备注
-The `Notes` object stores free-form notes that can be attached to People, Companies, Opportunities, and other records. Use notes to capture meeting summaries, important details, or any contextual information.
+`Notes` 对象存储自由格式笔记,可附加到联系人、公司、商机及其他记录。 使用笔记记录会议摘要、重要细节或任何上下文信息。
-### Tasks
+### 任务
-The `Tasks` object stores to-dos and action items. Tasks can be linked to People, Companies, Opportunities, and other records. Track due dates, assignees, and completion status to stay on top of your follow-ups.
+`Tasks` 对象存储待办事项和行动项。 任务可以关联到联系人、公司、商机及其他记录。 跟踪到期日期、负责人和完成状态,以便掌控后续跟进。
-## Custom Objects
+## 自定义对象
-Custom objects let you store information that's unique to your organization and that standard objects can't handle. For example, if you're SpaceX, you may want to create a custom object for Rockets and Launches.
+自定义对象可以存储标准对象无法处理的、组织特有的信息。 例如,如果您是SpaceX,您可能想为火箭和发射创建自定义对象。
-### Creating a New Custom Object
+### 创建新的自定义对象
-To create a new custom object:
+要创建新的自定义对象:
-1. Go to Settings in the sidebar on the left.
-2. Under Workspace, go to Data model. Here you'll be able to see an overview of all your existing Standard and Custom objects (both active and disabled).
+1. 转到左侧边栏中的设置。
+2. 在工作区下,转到数据模型。 在这里,您将能够查看所有现有的标准和自定义对象(包括活动和禁用)。
-
+
-3. Click on `+ New object` at the top. Enter the name (both singular and plural), choose an icon, and add a description for your custom object and hit Save (at the top right). Using Listing as an example of custom object, the singular would be "listing" and the plural would be "listings" along with a description like "Listings that hosts created to showcase their property."
+3. 点击顶部的`+ 新对象`。 输入名称(单数和复数),选择图标,添加自定义对象的描述,然后点击保存(在右上角)。 以Listing作为自定义对象的示例,单数为"listing",复数为"listings",以及像“房东创建的用于展示其物业的列表”这样的描述。
-4. Your custom object is now created and will appear in your sidebar. You can start adding records to it right away.
+4. 您的自定义对象已创建,并会显示在侧边栏中。 您可以立即开始向其中添加记录。
-## Managing Objects
+## 管理对象
-### Deactivating Objects
+### 停用对象
-If you don't need a standard or custom object:
+如果您不再需要某个标准对象或自定义对象:
-1. Go to Settings → Data Model
-2. Find the object you want to deactivate
-3. Click the toggle to deactivate it
-4. The object will be hidden from your workspace but data is preserved
+1. 进入 设置 → 数据模型
+2. 找到您要停用的对象
+3. 点击切换开关将其停用
+4. 该对象将在您的工作区中隐藏,但数据会被保留
-### Reactivating Objects
+### 重新启用对象
-To bring back a deactivated object:
+要恢复已停用的对象:
-1. Go to Settings → Data Model
-2. Look for deactivated objects (they'll be grayed out)
-3. Click the toggle to reactivate it
-4. The object and all its data will be restored
+1. 进入 设置 → 数据模型
+2. 查找已停用的对象(它们会显示为灰色)
+3. 点击切换开关将其重新启用
+4. 该对象及其所有数据将被恢复
-## Best Practices
+## 最佳实践
-### When to Create Custom Objects
+### 何时创建自定义对象
-* **Unique business entities**: Things specific to your industry or process
-* **Complex relationships**: When you need to track connections between multiple entities
-* **Scalable data**: When you might have many instances of something
+* **独特的业务实体**:特定于您的行业或流程的事物
+* **复杂关系**:当您需要跟踪多个实体之间的关联时
+* **可扩展的数据**:当某类事物可能有大量实例时
-### When to Use Fields Instead
+### 何时改用字段
-* **Simple attributes**: Properties that describe existing objects
-* **Categories or labels**: Ways to classify existing records
-* **Single values**: Information that doesn't need its own lifecycle
+* **简单属性**:用于描述现有对象的属性
+* **类别或标签**:对现有记录进行分类的方式
+* **单一值**:不需要独立生命周期的信息
-### Object Naming
+### 对象命名
-* **Use clear, descriptive names**: Make it obvious what the object represents
-* **Follow conventions**: Use singular for the object name, plural for the collection
-* **Consider your team**: Choose names everyone will understand
+* **使用清晰、具有描述性的名称**:让对象所代表的内容一目了然
+* **遵循约定**:对象名称使用单数形式,集合使用复数形式
+* **考虑您的团队**:选择人人都能理解的名称
diff --git a/packages/twenty-docs/l/zh/user-guide/data-model/capabilities/relation-fields.mdx b/packages/twenty-docs/l/zh/user-guide/data-model/capabilities/relation-fields.mdx
index ddcd3c709e..6c6a1374ad 100644
--- a/packages/twenty-docs/l/zh/user-guide/data-model/capabilities/relation-fields.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/data-model/capabilities/relation-fields.mdx
@@ -1,92 +1,96 @@
---
-title: Relation Fields
-description: Connect records across different objects using relation fields.
+title: 关系字段
+description: 使用关系字段在不同对象之间关联记录。
---
-## Types of Relations
+## 关系类型
-### One-to-Many
+### 一对多
-One record in Object A can be linked to many records in Object B.
+对象 A 中的一条记录可以关联到对象 B 中的多条记录。
-**Example:** One Company can have many People (employees).
+**示例:** 一个公司可以拥有许多人员(员工)。
-### Many-to-One
+### 多对一
-Many records in Object A can be linked to one record in Object B.
+对象 A 中的多条记录可以关联到对象 B 中的一条记录。
-**Example:** Many People can belong to one Company.
+**示例:** 许多人员可以隶属于一个公司。
-### Relations to Multiple Object Types
+### 可指向多种对象类型的关系
-Some objects can link to multiple object types on one side of the relation.
+某些对象在关系的一侧可以关联到多种对象类型。
-**Example:** A Note can be attached to one Person AND one Company AND one Opportunity simultaneously. The Note is on the "many" side, connecting to multiple "one" sides.
+**示例:** 一条备注可以同时附加到一个人员、一个公司和一个商机。 该备注位于 "多" 侧,连接到多个 "一" 侧。
-Similarly, a Project (on the "one" side) could receive links from multiple People, multiple Companies, and multiple Notes.
+类似地,一个项目(位于 "一" 侧)可以接收来自多个人员、多个公司和多条备注的关联。
- **Import/Export limitation**: Relations pointing to multiple object types are not yet supported for CSV import/export. This is on our roadmap.
+ **导入/导出限制**:指向多个对象类型的关系目前尚不支持 CSV 导入/导出。 此功能已在我们的路线图中。
-### Many-to-Many
+### 多对多
-Many records in Object A can be linked to many records in Object B.
+对象 A 中的多条记录可以关联到对象 B 中的多条记录。
-**Example:** Many People can be linked to many Projects, and vice versa.
+**示例:** 许多人员可以关联到许多项目,反之亦然。
+
+多对多关系采用**连接对象**模式:一个连接双方的中间对象。 借助连接关系功能,Twenty 会直接显示最终关联的记录,并在界面中隐藏该中间对象。
+
+
- **Many-to-Many is not yet supported.**
-
- This relation type is planned for H1 2026. As a workaround, create an intermediate "junction" object (e.g., "Project Assignments") that has Many-to-One relations to both objects.
+ **实验功能**:使用前必须在 **Settings → Updates → Lab** 中启用连接关系。
-## Creating a Relation Field
+请参阅 [如何创建多对多关系](/l/zh/user-guide/data-model/how-tos/create-many-to-many-relations) 以获取完整的分步指南。
-1. Go to **Settings → Data Model**
-2. Select the object where you want to add the relation
-3. Click **+ Add Field**
-4. Select **Relation** as the field type
-5. Choose the target object(s) to relate to
-6. Configure the relation settings:
- * **Field name on source object**: The name of the relation field on the object you're editing
- * **Field name on destination object**: The name of the relation field that will appear on the target object
- * Relation type (one-to-many, many-to-one)
-7. Click **Save**
+## 创建关系字段
-## Standard Relations
+1. 进入 **设置 → 数据模型**
+2. 选择要添加关系的对象
+3. 点击 **+ 添加字段**
+4. 将字段类型选择为 **关系**
+5. 选择要关联到的目标对象
+6. 配置关系设置:
+ * **源对象上的字段名称**:你正在编辑的对象上的关系字段名称
+ * **目标对象上的字段名称**:将显示在目标对象上的关系字段名称
+ * 关系类型(一对多、多对一)
+7. 单击 **保存**
-Twenty comes with pre-built relations between standard objects:
+## 标准关系
-| From Object | To Object | Relation Type |
-| ------------- | --------- | ------------- |
-| People | Companies | Many-to-One |
-| Opportunities | Companies | Many-to-One |
-| Opportunities | People | Many-to-One |
+Twenty 内置了标准对象之间的预设关系:
-## Best Practices
+| 来源对象 | 目标对象 | 关系类型 |
+| ---- | ---- | ---- |
+| 人员 | 公司 | 多对一 |
+| 机会 | 公司 | 多对一 |
+| 机会 | 人员 | 多对一 |
-### Planning Relations
+## 最佳实践
-* **Map your data model**: Plan relations before creating them
-* **Consider direction**: Think about which object "owns" the relationship
-* **Avoid circular dependencies**: Keep your data model clean
+### 规划关系
-### Naming Relations
+* **梳理你的数据模型**:在创建关系之前先进行规划
+* **考虑方向**:思考由哪个对象 "拥有" 该关系
+* **避免循环依赖**:保持数据模型简洁清晰
-* **Use clear names**: Make it obvious what the relation represents
-* **Be consistent**: Use similar naming patterns across relations
-* **Consider both sides**: Name both sides of the relation appropriately
+### 关系命名
-### Performance
+* **使用清晰的名称**:使关系所代表的含义一目了然
+* **保持一致**:在各个关系中使用类似的命名模式
+* **兼顾两端**:为关系的两端分别起合适的名称
-* **Don't over-relate**: Too many relations can slow down your workspace
+### 性能
-## Limitations
+* **不要过度关联**:过多的关系会拖慢你的工作区
-* **Deleting relations** removes the link but not the related records
-* **Circular relations** should be avoided for data integrity
+## 限制
+
+* **删除关系**会移除链接,但不会删除相关记录
+* **循环关系**应当避免,以确保数据完整性
diff --git a/packages/twenty-docs/l/zh/user-guide/data-model/how-tos/create-custom-fields.mdx b/packages/twenty-docs/l/zh/user-guide/data-model/how-tos/create-custom-fields.mdx
index 61c35b86ab..9ce3ddd715 100644
--- a/packages/twenty-docs/l/zh/user-guide/data-model/how-tos/create-custom-fields.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/data-model/how-tos/create-custom-fields.mdx
@@ -1,72 +1,72 @@
---
-title: Create Custom Fields
-description: Step-by-step guide to adding custom fields to any object.
+title: 创建自定义字段
+description: 逐步指南:向任何对象添加自定义字段。
---
-Custom fields let you capture information specific to your business. Add them to any object—standard or custom.
+使用自定义字段可捕获特定于您业务的信息。 可将其添加到任何对象——标准或自定义。
-## Steps
+## 步骤
-1. Go to **Settings → Data Model**
-2. Select the object you want to add a field to
-3. Click **+ Add Field**
-4. Choose a **field type** (see [Fields](/l/zh/user-guide/data-model/capabilities/fields) for all types)
-5. Enter the **field name** and optional description
-6. Configure field-specific settings (see below)
-7. Click **Save**
+1. 进入 **设置 → 数据模型**
+2. 选择要添加字段的对象
+3. 点击 **+ 添加字段**
+4. 选择**字段类型**(所有类型请参见[字段](/l/zh/user-guide/data-model/capabilities/fields))
+5. 输入**字段名称**和可选描述
+6. 配置特定于该字段的设置(见下文)
+7. 单击 **保存**
-**Quick method:** Click the **+** at the end of column headers in any table view → **Customize fields**.
+**快速方法:** 在任意表格视图的列标题末尾点击 **+** → **自定义字段**。
-## Show the Field in Views
+## 在视图中显示字段
-New fields aren't automatically visible. To display:
+新字段不会自动显示。 要显示:
-1. Open the object's table view
-2. Click **Options → Fields**
-3. Click the **eye icon** next to your field to show it
-4. Drag to reorder
+1. 打开该对象的表格视图
+2. 点击 **选项 → 字段**
+3. 点击字段旁的 **眼睛图标** 以显示该字段
+4. 拖动以重新排序
-## Configuration Options
+## 配置选项
-### For Select / Multi-Select
+### 用于选择/多选
-1. Click **+ Add option** to create choices
-2. Set a **default option** if desired
-3. Drag to reorder options
+1. 点击 **+ 添加选项** 以创建选项
+2. 如有需要,设置**默认选项**
+3. 拖动以重新排序选项
- **Use API names for imports.** Enable **Advanced mode** in Settings to see API names. See [Field Mapping](/l/zh/user-guide/data-migration/capabilities/field-mapping).
+ **导入时请使用 API 名称。** 在设置中启用 **高级模式** 以查看 API 名称。 请参见[字段映射](/l/zh/user-guide/data-migration/capabilities/field-mapping)。
-### For Currency Fields
+### 适用于货币字段
-Set the **default currency** (USD, EUR, etc.) for new records.
+设置**默认货币**(USD、EUR 等) 用于新记录。
-### For Phone Fields
+### 适用于电话字段
-Set the **default country code** to pre-fill for new phone numbers.
+设置**默认国家代码**,用于预填新的电话号码。
-### Making a Field Unique
+### 将字段设置为唯一
-Toggle **Unique** to prevent duplicate values across records.
+切换**唯一**选项,以防止各记录之间出现重复值。
- If duplicates exist (including in deleted records), you'll get an error. Clean up duplicates first.
+ 如果存在重复项(包括已删除记录中的重复项),将会出现错误。 请先清理重复项。
-### Setting Default Values
+### 设置默认值
-For Select fields, you can choose which option is pre-selected for new records. For Checkbox fields, set whether it's checked or unchecked by default.
+对于选择字段,您可以选择新记录预先选中的选项。 对于复选框字段,设置默认是否选中。
-## Deactivating a Field
+## 停用字段
-1. Go to **Settings → Data Model**
-2. Find the field
-3. Click **⋮ → Deactivate**
+1. 进入 **设置 → 数据模型**
+2. 找到该字段
+3. 点击 **⋮ → 停用**
-Data is preserved. You can reactivate or permanently delete later.
+数据将被保留。 您可以稍后重新启用或永久删除。
-## Related
+## 相关内容
-* [Fields](/l/zh/user-guide/data-model/capabilities/fields) — all field types explained
-* [Data Model FAQ](/l/zh/user-guide/data-model/how-tos/data-model-faq) — common questions
+* [字段](/l/zh/user-guide/data-model/capabilities/fields) — 所有字段类型说明
+* [数据模型常见问题解答](/l/zh/user-guide/data-model/how-tos/data-model-faq) — 常见问题
diff --git a/packages/twenty-docs/l/zh/user-guide/data-model/how-tos/create-custom-objects.mdx b/packages/twenty-docs/l/zh/user-guide/data-model/how-tos/create-custom-objects.mdx
index 8816057173..88fd36d857 100644
--- a/packages/twenty-docs/l/zh/user-guide/data-model/how-tos/create-custom-objects.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/data-model/how-tos/create-custom-objects.mdx
@@ -1,51 +1,51 @@
---
-title: Create Custom Objects
-description: Step-by-step guide to creating custom objects in Twenty.
+title: 创建自定义对象
+description: 在 Twenty 中创建自定义对象的分步指南。
---
-Custom objects let you store information unique to your business that standard objects don't cover. For example: Projects, Products, Tickets, or Listings.
+自定义对象可用于存储您业务独有而标准对象未涵盖的信息。 例如:项目、产品、工单或列表项。
- **Not sure if you need an object or a field?** See [Understanding Your Data Model](/l/zh/user-guide/data-model/overview) for guidance.
+ **不确定该创建对象还是字段?** 请参阅[了解您的数据模型](/l/zh/user-guide/data-model/overview)以获取指导。
-## Steps
+## 步骤
-1. Go to **Settings → Data Model**
-2. Click **+ New object**
-3. Fill in:
- * **Singular name** (e.g., "Listing")
- * **Plural name** (e.g., "Listings")
- * **Icon**
- * **Description** (optional)
-4. Click **Save**
+1. 进入 **设置 → 数据模型**
+2. 点击 **+ 新建对象**
+3. 填写:
+ * **单数名称**(例如,"Listing")
+ * **复数名称**(例如,"Listings")
+ * **图标**
+ * **描述**(可选)
+4. 单击 **保存**
-Your object appears in the sidebar immediately.
+您的对象会立即显示在侧边栏中。
-## Next: Add Fields
+## 下一步:添加字段
-New objects start with basic fields. Add custom fields to capture the data you need:
+新建对象默认包含一些基础字段。 添加自定义字段以捕获所需数据:
-1. In **Settings → Data Model**, select your object
-2. Click **+ Add Field**
-3. Choose a field type, configure, and save
+1. 在 **设置 → 数据模型** 中,选择您的对象
+2. 点击 **+ 添加字段**
+3. 选择字段类型,配置并保存
-See [How to Create Custom Fields](/l/zh/user-guide/data-model/how-tos/create-custom-fields) for details on field types and configuration.
+有关字段类型和配置的详细信息,请参阅[如何创建自定义字段](/l/zh/user-guide/data-model/how-tos/create-custom-fields)。
-## Connecting to Other Objects
+## 连接到其他对象
-To link your object to People, Companies, or other objects, create a relation field. See [How to Create Relation Fields](/l/zh/user-guide/data-model/how-tos/create-relation-fields).
+要将您的对象与人员、公司或其他对象关联,请创建关系字段。 请参阅[如何创建关系字段](/l/zh/user-guide/data-model/how-tos/create-relation-fields)。
-## Deactivating an Object
+## 停用对象
-If you no longer need an object:
+如果您不再需要某个对象:
-1. Go to **Settings → Data Model**
-2. Toggle the object off
+1. 进入 **设置 → 数据模型**
+2. 将该对象切换为关闭状态
-The object is hidden but data is preserved. You can reactivate or permanently delete later.
+该对象会被隐藏,但数据会被保留。 您可以稍后重新启用或永久删除。
-## Related
+## 相关内容
-* [Objects](/l/zh/user-guide/data-model/capabilities/objects) — standard vs custom objects
-* [Data Model FAQ](/l/zh/user-guide/data-model/how-tos/data-model-faq) — common questions
+* [对象](/l/zh/user-guide/data-model/capabilities/objects) — 标准对象与自定义对象
+* [数据模型常见问题解答](/l/zh/user-guide/data-model/how-tos/data-model-faq) — 常见问题
diff --git a/packages/twenty-docs/l/zh/user-guide/data-model/how-tos/create-many-to-many-relations.mdx b/packages/twenty-docs/l/zh/user-guide/data-model/how-tos/create-many-to-many-relations.mdx
new file mode 100644
index 0000000000..7f053dbe67
--- /dev/null
+++ b/packages/twenty-docs/l/zh/user-guide/data-model/how-tos/create-many-to-many-relations.mdx
@@ -0,0 +1,180 @@
+---
+title: 创建多对多关系
+description: 当双方都有多个条目时,使用连接对象将记录相互关联。
+---
+
+多对多关系使您能够在关系双方连接多个记录。 例如:许多 People 可以参与许多 Projects,并且每个 Project 可以包含许多 People。
+
+
+ **Lab 功能**:连接关系目前位于 Lab 中。 在按照本指南操作之前,请在 **Settings → Updates → Lab** 中启用它们。
+
+
+
+ 此功能还需要启用 **Advanced mode**(在 Settings 的右下角切换)。
+
+
+## 何时使用多对多
+
+当关系双方都可能存在多个关联时,请使用多对多:
+
+| 关系 | 示例 |
+| ----------------- | -------------------------- |
+| People ↔ Projects | 一个人参与多个项目;一个项目包含多名团队成员 |
+| Companies ↔ Tags | 一个公司可以拥有多个标签;一个标签可以应用于多家公司 |
+| Products ↔ Orders | 一个产品可以出现在多个订单中;一个订单包含多个产品 |
+
+## 工作原理
+
+Twenty 在多对多关系中使用 **连接对象** 模式。 连接对象位于两个对象之间,并存储它们之间的关联:
+
+```
+People ←→ Project Assignments ←→ Projects
+```
+
+该 **Project Assignments** 对象(连接对象)具有:
+
+* 到 People 的关系(多对一)
+* 到 Projects 的关系(多对一)
+
+启用连接关系开关后,Twenty 将直接显示已关联的记录,而不再展示中间的连接对象记录。
+
+## 先决条件
+
+1. **在 Lab 中启用连接关系**:前往 **Settings → Updates → Lab** 并启用 **Junction Relations**
+2. **启用 Advanced mode**:在 Settings 侧边栏的右下角开启 **Advanced mode**
+3. 规划您的数据模型:
+ * 您要连接哪两个对象?
+ * 连接对象应如何命名?
+
+## 步骤 1:创建连接对象
+
+首先,创建用于保存关联的中间对象。
+
+1. 进入 **设置 → 数据模型**
+2. 点击 **+ 新建对象**
+3. 使用描述性名称(例如,"Project Assignment"、"Team Member"、"Product Order")
+4. 单击 **保存**
+
+
+ **命名约定**:使用能描述关系的名称,例如 "Project Assignment" 或 "Team Membership"。 这会让数据模型更易理解。
+
+
+## 步骤 2:从连接对象创建关系
+
+从连接对象向您要连接的两个对象添加关系字段。
+
+### 第一条关系(连接对象 → 对象 A)
+
+1. 在 **Settings → Data Model** 中选择您的连接对象
+2. 点击 **+ 添加字段**
+3. 将字段类型选择为 **Relation**
+4. 选择第一个对象(例如,"People")
+5. 将关系类型设置为 **Many-to-One**(多个分配可关联到一个人)
+6. 为这些字段命名:
+ * 连接对象上的字段:例如,"Person"
+ * People 上的字段:例如,"Project Assignments"
+7. 单击 **保存**
+
+### 第二条关系(连接对象 → 对象 B)
+
+1. 仍在连接对象中,点击 **+ Add Field**
+2. 将字段类型选择为 **Relation**
+3. 选择第二个对象(例如,"Projects")
+4. 将关系类型设置为 **Many-to-One**
+5. 为这些字段命名:
+ * 连接对象上的字段:例如,"Project"
+ * Projects 上的字段:例如,"Team Members"
+6. 单击 **保存**
+
+## 步骤 3:配置连接关系的显示方式
+
+现在配置源对象以直接显示已关联的记录,跳过中间的连接对象。
+
+1. 进入 **设置 → 数据模型**
+2. 选择第一个对象(例如,"People")
+3. 找到指向连接对象的关系字段(例如,"Project Assignments")
+4. 点击以编辑该字段
+5. 启用 **"This is a relation to a Junction Object"**
+6. 选择 **Target relation**(例如,"Project" —— 连接对象上指向另一侧的字段)
+7. 单击 **保存**
+
+{/* TODO: Add image
+
+*/}
+
+对另一侧对象重复上述操作:
+
+1. 在 Data Model 中选择 "Projects"
+2. 编辑 "Team Members" 关系字段
+3. 启用连接关系开关
+4. 将目标关系选择为 "Person"
+5. 保存
+
+## 结果
+
+配置完成后:
+
+* 在 **Person** 记录中,"Project Assignments" 字段将直接显示 **Projects**(而非分配记录)
+* 在 **Project** 记录中,"Team Members" 字段将直接显示 **People**
+
+连接对象仍然存在并存储关联,但 UI 呈现的是更简洁的多对多视图。
+
+## 示例:People ↔ Projects
+
+以下是完整的操作演示:
+
+### 创建连接对象
+
+* 名称:**Project Assignment**
+* 描述:"将人员与其参与的项目关联起来"
+
+### 添加关系
+
+1. **Project Assignment → People**
+ * 类型:Many-to-One
+ * Assignment 上的字段:"Person"
+ * People 上的字段:"Project Assignments"
+
+2. **Project Assignment → Projects**
+ * 类型:Many-to-One
+ * Assignment 上的字段:"Project"
+ * Projects 上的字段:"Team Members"
+
+### 配置连接关系显示
+
+1. 在 **People** 对象上:
+ * 编辑 "Project Assignments" 字段
+ * 启用连接关系开关
+ * 目标:"Project"
+
+2. 在 **Projects** 对象上:
+ * 编辑 "Team Members" 字段
+ * 启用连接关系开关
+ * 目标:"Person"
+
+### 开始使用
+
+* 打开某个 Person 记录 → 直接查看其 Projects
+* 打开某个 Project 记录 → 直接查看其团队成员
+* 可从任一侧创建新的关联
+
+## 为关联添加额外数据
+
+由于连接对象是一个真实对象,您可以添加自定义字段来存储关系相关的信息:
+
+* **角色**:"Developer"、"Designer"、"Manager"
+* **开始日期**:他们加入项目的时间
+* **分配时长**:每周在该项目上的工时
+
+要访问这些数据,请直接导航到连接对象,或通过 API 查询。
+
+## 限制
+
+* **CSV 导入/导出**:不支持直接导入多对多关系。 请改为将记录导入连接对象。
+* **筛选器**:按多对多关系进行筛选的选项可能有限。
+
+## 相关内容
+
+* [关系字段](/l/zh/user-guide/data-model/capabilities/relation-fields) — 关系类型说明
+* [创建自定义对象](/l/zh/user-guide/data-model/how-tos/create-custom-objects) — 如何创建对象
+* [创建关系字段](/l/zh/user-guide/data-model/how-tos/create-relation-fields) — 基本关系设置
diff --git a/packages/twenty-docs/l/zh/user-guide/data-model/how-tos/create-relation-fields.mdx b/packages/twenty-docs/l/zh/user-guide/data-model/how-tos/create-relation-fields.mdx
index 76dc37da9f..bd1406cb67 100644
--- a/packages/twenty-docs/l/zh/user-guide/data-model/how-tos/create-relation-fields.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/data-model/how-tos/create-relation-fields.mdx
@@ -1,60 +1,60 @@
---
-title: Create Relation Fields
-description: Step-by-step guide to connecting objects with relation fields.
+title: 创建关系字段
+description: 通过关系字段逐步将对象连接起来。
---
-Relation fields connect records from different objects—for example, linking People to Companies.
+关系字段可连接不同对象的记录——例如,将人员链接到公司。
- **Relation names cannot be changed after creation** (they affect the API). Plan your names carefully.
+ **关系名称在创建后无法更改**(它们会影响 API)。 请谨慎规划名称。
-## Before You Start
+## 开始之前
-Decide:
+请确定:
-* Which objects are you connecting? (e.g., People → Companies)
-* Which is the "one" side? (e.g., Company)
-* Which is the "many" side? (e.g., People — many people work at one company)
-* What should the field be named on each side?
+* 要连接哪些对象? (例如,人员 → 公司)
+* 哪一方是“一”端? (例如,公司)
+* 哪一方是“多”端? (例如,人员—许多人在同一家公司工作)
+* 两端的字段应如何命名?
-See [Relation Fields](/l/zh/user-guide/data-model/capabilities/relation-fields) for relation types explained.
+请参阅[关系字段](/l/zh/user-guide/data-model/capabilities/relation-fields),了解关系类型的说明。
-## Steps
+## 步骤
-1. Go to **Settings → Data Model**
-2. Select the object where you want the relation (typically the "many" side)
-3. Click **+ Add Field**
-4. Select **Relation** as the field type
-5. Choose the **target object**
-6. Select **One-to-Many** or **Many-to-One**
-7. Enter field names for **both sides** of the relation
-8. Click **Save**
+1. 进入 **设置 → 数据模型**
+2. 选择要创建关系的对象(通常为“多”端)
+3. 点击 **+ 添加字段**
+4. 将字段类型选择为 **关系**
+5. 选择**目标对象**
+6. 选择 **一对多** 或 **多对一**
+7. 为关系的**两端**输入字段名称
+8. 单击 **保存**
-## Example: People → Companies
+## 示例:人员 → 公司
-* Go to **Settings → Data Model → People**
-* Add a Relation field
-* Target: **Companies**
-* Type: **Many-to-One**
-* Field on People: **Company**
-* Field on Companies: **Employees**
+* 进入 **设置 → 数据模型 → 人员**
+* 添加关系字段
+* 目标:**公司**
+* 类型:**多对一**
+* 人员中的字段:**公司**
+* 公司中的字段:**员工**
-Now each Person can be linked to a Company, and each Company shows its People.
+现在,每个人员都可以关联到一家公司,每家公司都会显示其人员。
-## Deleting a Relation
+## 删除关系
-1. Go to **Settings → Data Model**
-2. Find the relation field
-3. Click **⋮ → Deactivate**
+1. 进入 **设置 → 数据模型**
+2. 找到该关系字段
+3. 点击 **⋮ → 停用**
-Links are preserved but hidden. Reactivate to restore.
+关联会被保留但隐藏。 重新启用即可恢复。
- **Deleting a relation doesn't delete records.** Only the link between them is removed.
+ **删除关系不会删除记录。** 只会移除它们之间的关联。
-## Related
+## 相关内容
-* [Relation Fields](/l/zh/user-guide/data-model/capabilities/relation-fields) — types and limitations
-* [How to Import Relations](/l/zh/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv) — bulk import linked records
+* [关系字段](/l/zh/user-guide/data-model/capabilities/relation-fields) — 类型和限制
+* [如何导入关系](/l/zh/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv) — 批量导入关联记录
diff --git a/packages/twenty-docs/l/zh/user-guide/data-model/how-tos/customize-your-data-model.mdx b/packages/twenty-docs/l/zh/user-guide/data-model/how-tos/customize-your-data-model.mdx
index dfc1ed75a4..40f8f2c13a 100644
--- a/packages/twenty-docs/l/zh/user-guide/data-model/how-tos/customize-your-data-model.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/data-model/how-tos/customize-your-data-model.mdx
@@ -1,22 +1,22 @@
---
-title: Customize Your Data Model
-description: Overview of data model customization options.
+title: 自定义您的数据模型
+description: 数据模型自定义选项概览。
---
-Twenty's data model is fully customizable. Create objects, fields, and relations to match your business.
+Twenty 的数据模型完全可自定义。 创建对象、字段和关系,以符合您的业务。
-## Quick Links
+## 快速链接
-| I want to... | Guide |
-| ------------------------ | -------------------------------------------------------------------------------------- |
-| Create a new object | [How to Create Custom Objects](/l/zh/user-guide/data-model/how-tos/create-custom-objects) |
-| Add fields to an object | [How to Create Custom Fields](/l/zh/user-guide/data-model/how-tos/create-custom-fields) |
-| Connect objects together | [How to Create Relation Fields](/l/zh/user-guide/data-model/how-tos/create-relation-fields) |
+| 我想要... | 指南 |
+| ------- | ----------------------------------------------------------------- |
+| 创建新对象 | [如何创建自定义对象](/l/zh/user-guide/data-model/how-tos/create-custom-objects) |
+| 为对象添加字段 | [如何创建自定义字段](/l/zh/user-guide/data-model/how-tos/create-custom-fields) |
+| 将对象关联起来 | [如何创建关联字段](/l/zh/user-guide/data-model/how-tos/create-relation-fields) |
-## Learn More
+## 了解更多
-* [Understanding Your Data Model](/l/zh/user-guide/data-model/overview) — key concepts and planning tips
-* [Objects](/l/zh/user-guide/data-model/capabilities/objects) — standard vs custom objects
-* [Fields](/l/zh/user-guide/data-model/capabilities/fields) — all field types
-* [Relation Fields](/l/zh/user-guide/data-model/capabilities/relation-fields) — connecting objects
-* [Data Model FAQ](/l/zh/user-guide/data-model/how-tos/data-model-faq) — common questions
+* [理解您的数据模型](/l/zh/user-guide/data-model/overview) — 关键概念与规划建议
+* [对象](/l/zh/user-guide/data-model/capabilities/objects) — 标准对象与自定义对象
+* [字段](/l/zh/user-guide/data-model/capabilities/fields) — 所有字段类型
+* [关联字段](/l/zh/user-guide/data-model/capabilities/relation-fields) — 连接对象
+* [数据模型常见问题](/l/zh/user-guide/data-model/how-tos/data-model-faq) — 常见问题
diff --git a/packages/twenty-docs/l/zh/user-guide/data-model/how-tos/data-model-faq.mdx b/packages/twenty-docs/l/zh/user-guide/data-model/how-tos/data-model-faq.mdx
index b6d1b5a4ac..58b59529b8 100644
--- a/packages/twenty-docs/l/zh/user-guide/data-model/how-tos/data-model-faq.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/data-model/how-tos/data-model-faq.mdx
@@ -1,155 +1,155 @@
---
-title: Data Model FAQ
-description: Frequently asked questions about Twenty's data model.
+title: 数据模型常见问题解答
+description: 关于 Twenty 数据模型的常见问题。
---
-## Object Management
+## 对象管理
-
- Yes, custom objects can be deleted. You can also deactivate them first, which hides the object and its data from the interface while preserving the data.
+
+ 是的,可以删除自定义对象。 您也可以先将其停用,这会在界面中隐藏该对象及其数据,同时保留这些数据。
-
- No, standard objects cannot be deleted. You can only deactivate them, which hides them from the interface but preserves the data.
+
+ 不可以,标准对象无法删除。 您只能将其停用,这会在界面中将其隐藏,但会保留数据。
-
- You can create as many custom objects and fields as you need — the price doesn't change.
+
+ 您可以根据需要创建任意多的自定义对象和字段 — 价格不会变。
-
- You can rename the label of standard objects (People, Companies, Opportunities), but not their API names. The API names are fixed for consistency across all Twenty workspaces.
+
+ 您可以重命名标准对象的标签(People、Companies、Opportunities),但不能更改其 API 名称。 为了在所有 Twenty 工作区中保持一致性,API 名称是固定的。
-
- Yes, you can change the icon for both standard and custom objects in **Settings → Data Model**.
+
+ 可以,您可以在 **设置 → 数据模型** 中更改标准对象和自定义对象的图标。
-
- Not yet. Object ordering in the navigation is currently fixed, but this feature is planned for a future release.
+
+ 还不可以。 导航中的对象排序目前是固定的,但该功能计划于未来发布。
-
- All active objects appear in the navigation. You can deactivate objects you don't need under **Settings → Data Model**.
+
+ 所有活动对象都将出现在导航中。 您可以在 **设置 → 数据模型** 下停用不需要的对象。
-## Field Capabilities
+## 字段功能
-
- No, field types cannot be changed after creation. If you need a different type, create a new field with the correct type, migrate your data, then deactivate the old field.
+
+ 不可以,字段类型在创建后无法更改。 如果您需要其他类型,请创建一个具有正确类型的新字段,迁移您的数据,然后停用旧字段。
-
- Our GraphQL API uses both forms for different operations:
+
+ 我们的 GraphQL API 针对不同操作使用单复数形式:
- * `createPerson` (singular) for single record actions
- * `createPeople` (plural) for bulk operations
+ * `createPerson`(单数)用于单个记录操作
+ * `createPeople`(复数)用于批量操作
- This creates limitations when singular and plural forms are the same, but it improves the developer experience.
+ 当单复数形式相同时,这会产生限制,但它改善了开发者的体验。
-
- Certain field names like `Type` or `Application` are reserved for system use. Choose alternative names like `Category` or `Classification` instead.
+
+ 某些字段名称如 `Type` 或 `Application` 被保留用于系统使用。 请选择其他名称,如 `Category` 或 `Classification`。
-
- * The field is hidden from the interface
- * Existing data is preserved
- * You can still access the field via API
- * Existing relations remain but you can't create new ones
- * You can reactivate the field later
+
+ * 该字段会在界面中被隐藏
+ * 现有数据将被保留
+ * 您仍可通过 API 访问该字段
+ * 现有关联将保留,但您无法创建新的关联
+ * 您可以稍后重新启用该字段
-
- Currently, you cannot make custom fields required. All fields accept empty values. You can use workflows to enforce required fields by sending alerts or blocking actions when fields are empty.
+
+ 目前,您无法将自定义字段设为必填。 所有字段都接受空值。 您可以使用工作流在字段为空时发送警报或阻止操作,以强制执行必填字段。
-
- * **Unique**: No two records can have the same value in this field
- * **Required**: The field must have a value (not currently supported for custom fields)
+
+ * **唯一**:任意两条记录在该字段中的值不能相同
+ * **必填**:该字段必须有值(目前不支持自定义字段)
-
- Formula fields are coming in **Q1 2026**. In the meantime, you can use workflows to calculate and update field values automatically.
+
+ 公式字段将在 **2026 年第一季度** 推出。 同时,您可以使用工作流程来自动计算和更新字段值。
-
- Nested fields are coming in **Q1 2026**. Currently, you can use workflows to bring field values from related objects. For example, to display a company's industry on a Person record, create a custom field on People and use a workflow to synchronize the value.
+
+ 嵌套字段将在 **2026 年第一季度** 推出。 目前,您可以使用工作流程从相关对象中获取字段值。 例如,要在人员记录上显示公司的行业信息,可以在人员自定义字段中创建一个自定义字段,并使用工作流程来同步该值。
-
- Field reordering will be available with custom layouts in **Q4 2025**. Currently, fields appear in alphabetical order.
+
+ 字段重新排序将伴随自定义布局在 **2025 年第四季度** 推出。 目前,字段按字母顺序显示。
-## Relations
+## 关系
-
- Yes! Self-referencing relations are supported and recommended for use cases like account hierarchies. For example, create a relation from Companies to Companies to track parent/child accounts.
+
+ 是! 支持自引用关系,并建议在账户层级等用例中使用。 例如,从"公司"到"公司"创建关系,以跟踪父/子账户。
-
- Many-to-many relationships are coming in **H1 2026**. Currently, create an intermediate object with two one-to-many relationships as a workaround.
+
+ 多对多关系将在 **2026 年上半年** 推出。 目前,可以创建一个中间对象,建立两个一对多关系作为替代方案。
- For example, to link People and Projects (many-to-many), create a "Project Assignments" object with:
+ 例如,要关联人员和项目(多对多),请创建一个 "项目分配" 对象,其中包含:
- * A relation to People (many assignments → one person)
- * A relation to Projects (many assignments → one project)
+ * 到人员的关系(多个分配 → 一名人员)
+ * 到项目的关系(多个分配 → 一个项目)
-
- These allow one object to relate to multiple different object types through a single field. For example, Notes can be attached to People AND Companies AND Opportunities simultaneously.
+
+ 这使单个对象能够通过一个字段关联到多种不同的对象类型。 例如,备注可以同时附加到人员、公司和商机。
- Each Note links to one Person, one Company, and one Opportunity at the same time.
+ 每条备注同时关联到一名人员、一家公司和一个商机。
- Learn more in [Relation Fields](/l/zh/user-guide/data-model/capabilities/relation-fields).
+ 在 [关系字段](/l/zh/user-guide/data-model/capabilities/relation-fields) 中了解更多。
-
- Yes, you can create multiple relations between the same two objects. For example, a Company could have both a "Primary Contact" and "Billing Contact" relation to People.
+
+ 可以,您可以在同一对对象之间创建多个关系。 例如,一个公司可以同时与人员建立 "主要联系人" 和 "账单联系人" 两个关系。
-
- When you delete a record, the relation link is removed from the related records. The related records themselves are not deleted.
+
+ 当您删除记录时,相关记录中的关系链接会被移除。 相关记录本身不会被删除。
-
- While technically possible, circular relations (A → B → C → A) should be avoided as they can cause confusion and potential performance issues.
+
+ 尽管在技术上可行,循环关系(A → B → C → A)应尽量避免,因为它们可能导致混淆并带来潜在的性能问题。
-## Access and Permissions
+## 访问权限
-
- Go to **Settings → Data Model** to view and edit all your objects and fields.
+
+ 前往 **设置 → 数据模型** 查看并编辑您的所有对象和字段。
-
- Reach out to your workspace administrator. Data model access is usually restricted to administrators only.
+
+ 请联系您的工作区管理员。 数据模型访问通常仅限于管理员。
-## Data Management
+## 数据管理
-
- There's no hard limit on record counts. However, very large datasets may impact performance in some views. Use filters and views to manage large datasets effectively.
+
+ 记录数量没有硬性上限。 但是,非常大的数据集可能会影响某些视图中的性能。 使用筛选器和视图高效管理大型数据集。
-
- Yes, you can import CSV data into any object, including custom objects. The import process supports field mapping for custom fields. See [How to Prepare Your CSV Files](/l/zh/user-guide/data-migration/how-tos/prepare-your-csv-files).
+
+ 是的,您可以将 CSV 数据导入任何对象,包括自定义对象。 导入过程支持自定义字段的映射。 参见 [如何准备 CSV 文件](/l/zh/user-guide/data-migration/how-tos/prepare-your-csv-files)。
-
- Currently, there's no built-in export for data model configuration. Contact support if you need to migrate your data model between workspaces.
+
+ 目前,数据模型配置没有内置导出功能。 如果您需要在工作区之间迁移数据模型,请联系支持团队。
-## Need More Help?
+## 需要更多帮助吗?
-Check our [Implementation Services](/l/zh/user-guide/getting-started/capabilities/implementation-services) for help with complex data model design.
+查看我们的 [实施服务](/l/zh/user-guide/getting-started/capabilities/implementation-services) 以获取复杂数据模型设计方面的帮助。
diff --git a/packages/twenty-docs/l/zh/user-guide/data-model/overview.mdx b/packages/twenty-docs/l/zh/user-guide/data-model/overview.mdx
index dc33390f06..58451bc988 100644
--- a/packages/twenty-docs/l/zh/user-guide/data-model/overview.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/data-model/overview.mdx
@@ -1,180 +1,180 @@
---
-title: Data Model
-description: Learn what a data model is and how to design one that fits your business.
+title: 数据模型
+description: 了解什么是数据模型,以及如何设计一个适合您业务的模型。
image: /images/user-guide/fields/custom_data_model.png
---
-
+
-## What is a Data Model?
+## 什么是数据模型?
-A data model is the structure that defines how information is organized in your CRM. Think of it as the **blueprint** of your customer data — you design it once, then fill it with your actual data.
+数据模型是定义信息在您的CRM中如何组织的结构。 可以把它看作您的客户数据的**蓝图** — 您只需设计一次,然后用实际数据将其填充。
-## Key Concepts
+## 关键概念
-### Objects
+### 对象
-**Objects** are the main categories of data in your CRM. Each object represents a type of thing you want to track.
+**对象**是您的 CRM 中数据的主要类别。 每个对象代表您想跟踪的一类事物。
-Twenty comes with standard objects:
+Twenty 自带标准对象:
-* **People** — individuals (contacts, leads, partners)
-* **Companies** — organizations
-* **Opportunities** — deals or sales
-* **Notes** — attached notes on records
-* **Tasks** — to-dos linked to records
+* **People** — 个人(联系人、潜在客户、合作伙伴)
+* **Companies** — 组织
+* **Opportunities** — 交易或销售
+* **Notes** — 附加到记录的备注
+* **Tasks** — 与记录关联的待办事项
-You can also create **custom objects** for anything specific to your business (e.g., Projects, Subscriptions, Events).
+您也可以为特定于您业务的任何内容创建**自定义对象**(例如,Projects、Subscriptions、Events)。
-### Fields
+### 字段
-**Fields** are the properties or attributes that describe each object. They store the actual information.
+**字段**是用于描述每个对象的属性或特征。 它们存储实际信息。
-For example, the **People** object has fields like:
+例如,**People** 对象具有如下字段:
-* Name
-* Email
-* Phone
-* Job Title
-* Company (a relation to the Companies object)
+* 名称
+* 电子邮件
+* 电话
+* 职位
+* 公司(与 Companies 对象的关联)
-Fields have different **types**: text, number, date, select, multi-select, relation, and more. You can add custom fields to any object.
+字段有不同的**类型**:文本、数字、日期、单选、多选、关联等。 您可以向任何对象添加自定义字段。
-### Records
+### 记录
-**Records** are the individual entries within an object — the actual data you create and manage.
+**记录**是对象中的单个条目 — 您创建和管理的实际数据。
-For example:
+例如:
-* "John Smith" is a **record** in the People object
-* "Acme Corp" is a **record** in the Companies object
+* "John Smith" 是 People 对象中的一个**记录**
+* "Acme Corp" 是 Companies 对象中的一个**记录**
-**An analogy:**
+**类比:**
-| Data Model Concept | Real-World Analogy |
-| ------------------ | ------------------------------------------ |
-| **Objects** | Sections in a book (the categories) |
-| **Fields** | Columns in a spreadsheet (the properties) |
-| **Records** | Rows in a spreadsheet (the actual entries) |
+| 数据模型概念 | 现实类比 |
+| ------ | ------------- |
+| **对象** | 书中的章节(类别) |
+| **字段** | 电子表格中的列(属性) |
+| **记录** | 电子表格中的行(实际条目) |
-You design the data model (objects + fields) once, then create many records within that structure.
+您只需设计一次数据模型(对象 + 字段),然后在该结构内创建许多记录。
-## Why Customize Your Data Model?
+## 为什么要自定义您的数据模型?
-Every business works differently. Customizing your data model means you can shape Twenty around **your** processes instead of forcing yours into a rigid system.
+每个企业的运作方式都不尽相同。 自定义数据模型意味着您可以围绕**您的**流程来塑造 Twenty,而不是把您的流程硬塞进一个僵化的系统。
-Twenty offers full flexibility:
+Twenty 提供完全的灵活性:
-* Create as many custom objects as you need
-* Add unlimited custom fields
-* The price doesn't change based on customization
+* 根据需要创建任意数量的自定义对象
+* 无限添加自定义字段
+* 价格不会因自定义而变化
-## Tips to Design Your Data Model
+## 设计数据模型的提示
-### 1. Start with Your Core Objects
+### 1. 从您的核心对象开始
-Identify the main concepts you work with. Twenty already provides:
+识别您所使用的主要概念。 Twenty 已提供:
-* **People** — your contacts
-* **Companies** — your accounts
-* **Opportunities** — your deals
+* **People** — 您的联系人
+* **Companies** — 您的客户
+* **Opportunities** — 您的商机
-Think about what else you might need:
+想想您还可能需要什么:
-* Stripe would need a `Subscriptions` object
-* Airbnb would need a `Trips` object
-* An accelerator would need a `Batches` object
+* Stripe 需要一个 `Subscriptions` 对象
+* Airbnb 需要一个 `Trips` 对象
+* 加速器需要一个 `Batches` 对象
-### 2. Use Fields for Variations, Not New Objects
+### 2. 用字段表达变体,而不是创建新对象
-If something is just a characteristic of an existing object, make it a **field**.
+如果某项只是现有对象的一个特征,请将其设为**字段**。
-**Use fields for:**
+**字段适用于:**
-* Categories and labels (e.g., `Industry` for Companies)
-* Status values (e.g., `Stage` for Opportunities)
-* Attributes and properties
+* 类别和标签(例如,Companies 的 `Industry`)
+* 状态值(例如,Opportunities 的 `Stage`)
+* 属性和特性
-### 3. Create an Object When It Stands on Its Own
+### 3. 当某个概念可独立存在时创建对象
-If the concept has its own lifecycle, properties, or relationships, it deserves an object.
+如果该概念有自己的生命周期、属性或关系,就值得设为一个对象。
-**Create an object for:**
+**为以下情况创建对象:**
-* **Projects** — have deadlines, owners, and tasks
-* **Subscriptions** — connect companies, products, and invoices
-* **Events** — involve attendees and follow-up actions
+* **Projects** — 具有截止日期、所有者和任务
+* **Subscriptions** — 连接公司、产品和发票
+* **Events** — 涉及与会者和后续行动
-These go beyond a single field because they carry their own data and relationships.
+这些超出单个字段的范围,因为它们携带自己的数据和关系。
-### 4. Create an Object When Records Are Open-Ended
+### 4. 当记录数量不确定时创建对象
-If something can be linked multiple times and you don't know how many, use an object.
+如果某个事物可以被多次关联且数量不确定,请使用对象。
-**Bad approach:**
-Creating fields like `Product 1`, `Product 2`, `Product 3`...
+**不佳的做法:**
+创建诸如 `Product 1`、`Product 2`、`Product 3` 等字段...
-**Good approach:**
-Create a `Products` object and relate it to records. This supports one, two, or a hundred products without changing your model.
+**较佳的做法:**
+创建一个 `Products` 对象并将其关联到记录。 这样就能在不更改模型的情况下支持一个、两个,甚至上百个产品。
-### 5. Keep It Simple First
+### 5. 先保持简单
-Start with fields. Move to new objects only when you feel the limits:
+从字段开始。 仅当您感到受限时,才迁移到新对象:
-* Too many fields on one object
-* Repeated records that should be separate
-* Relationships that don't fit neatly
+* 单个对象上的字段过多
+* 重复的记录,本应分开
+* 不够契合的关系
-## Special Note on People, Companies, and Opportunities
+## 关于人、公司和机会的特别注意事项
- **Email and calendar sync only works with People, Companies, and Opportunities.**
+ **电子邮件和日历同步仅适用于人、公司和机会。**
- These are the only objects where you can access synchronized emails and meetings from your mailbox/calendar. We recommend using them as much as possible.
+ 只有在这些对象中,您才能从您的邮箱/日历访问已同步的电子邮件和会议。 我们建议尽可能多地使用它们。
-**Best practices:**
+**最佳实践:**
-* If you need categories of People, use fields (not new objects)
-* Example: Use a `Person Type` field with values "Prospect" and "Partner" instead of creating separate objects
-* Create different **views** to filter: one showing partners, another showing prospects
+* 如果您需要对人进行分类,请使用字段(而不是新对象)
+* 示例:使用 `Person Type` 字段,取值为“潜在客户”和“合作伙伴”,而不是创建单独的对象
+* 创建不同的**视图**进行筛选:一个显示合作伙伴,另一个显示潜在客户
-**It's okay to have fields that don't apply to every record.** For example, a `Referral Link` field on People that only applies when `Person Type = Partner`. Hide this field from views where it's not relevant.
+**并非每条记录都适用的字段是可以接受的。** 例如,在“人”对象上设置 `Referral Link` 字段,仅当 `Person Type = Partner` 时适用。 在不相关的视图中隐藏此字段。
-## Questions to Guide Your Choice
+## 指导选择的问题
-Ask yourself:
+问问自己:
-Is this just a property of something I already have, or does it need its own properties?
-Will I ever need to track multiple of these per record, without knowing how many?
-Does this concept connect to several different objects, not just one?
-Will it have its own lifecycle (stages, start/end dates)?
+这只是我已拥有的事物的属性,还是需要它自己的属性?
+我是否需要为每个记录跟踪多个此类项目,而无法提前知道有多少?
+这一概念是否连接多个不同对象,而不仅仅是一个?
+它是否有其自身的生命周期(阶段、开始/结束日期)?
-If the answer is "yes" to one or more, it's probably time for a new object.
+如果对一个或多个问题的回答是“是”,可能是时候创建一个新对象了。
-## Accessing Your Data Model
+## 访问您的数据模型
-1. Go to **Settings** in the left sidebar
-2. Click **Data Model**
-3. View all your objects (standard and custom)
-4. Click any object to see and edit its fields
+1. 转到左侧边栏中的**设置**
+2. 单击 **数据模型**
+3. 查看您的所有对象(标准和自定义)
+4. 单击任一对象以查看并编辑其字段
- **Don't see Data Model in Settings?**
+ **在设置中看不到数据模型?**
- Access to the data model is usually restricted to administrators. Contact your workspace admin if you need access.
+ 对数据模型的访问通常仅限于管理员。 如果您需要访问权限,请联系您的工作区管理员。
-## Next Steps
+## 下一步
-Once you've planned your data model:
+一旦您规划好数据模型:
-* [How to Create Custom Objects](/l/zh/user-guide/data-model/how-tos/create-custom-objects)
-* [How to Create Custom Fields](/l/zh/user-guide/data-model/how-tos/create-custom-fields)
-* [How to Create Relation Fields](/l/zh/user-guide/data-model/how-tos/create-relation-fields)
+* [如何创建自定义对象](/l/zh/user-guide/data-model/how-tos/create-custom-objects)
+* [如何创建自定义字段](/l/zh/user-guide/data-model/how-tos/create-custom-fields)
+* [如何创建关系字段](/l/zh/user-guide/data-model/how-tos/create-relation-fields)
-## Need Help?
+## 需要帮助?
-Our team can help you design and create the data model you need. Discover our [Implementation Services](/l/zh/user-guide/getting-started/capabilities/implementation-services).
+我们的团队可以协助您设计和创建所需的数据模型。 发现我们的[实施服务](/l/zh/user-guide/getting-started/capabilities/implementation-services)。
diff --git a/packages/twenty-docs/l/zh/user-guide/getting-started/capabilities/glossary.mdx b/packages/twenty-docs/l/zh/user-guide/getting-started/capabilities/glossary.mdx
index 71ac91622f..86f4eb3e4c 100644
--- a/packages/twenty-docs/l/zh/user-guide/getting-started/capabilities/glossary.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/getting-started/capabilities/glossary.mdx
@@ -1,108 +1,104 @@
---
-title: Glossary
-description: Get familiar with essential terminology used in Twenty.
+title: 术语表
+description: 了解 Twenty 使用的基本术语。
---
-## API
+## 接口
-API (Application Programming Interface) allows you to connect Twenty with other software systems and build custom integrations.
+API(应用程序接口)允许您将 Twenty 与其他软件系统连接并构建自定义集成。
-## Apps
+## 应用
-Apps are custom extensions built as code that can define data models and serverless functions. They enable developers to create reusable customizations that can be deployed across multiple workspaces.
+应用是以代码构建的自定义扩展,可定义数据模型和无服务器函数。 它使开发者能够创建可复用的自定义内容,并可部署到多个工作区。
-## Code Actions
+## 代码操作
-Code Actions are workflow steps that let you write custom JavaScript to transform data, make calculations, or perform complex logic that isn't possible with built-in actions.
+代码操作是工作流步骤,允许你编写自定义 JavaScript 来转换数据、进行计算,或执行内置操作无法实现的复杂逻辑。
-## Command Menu
+## 命令菜单
-The Command Menu is a quick-access interface (opened with `Cmd + K` on Mac and `Ctrl + K` on Windows) that lets you perform actions, create records, and navigate your workspace efficiently.
+命令菜单是一个快速访问界面(在 Mac 上用 `Cmd + K` 打开,Windows 上用 `Ctrl + K` 打开),可以让您执行操作、创建记录并高效地导航您的工作区。
-## Company & People
+## 公司与人员
-The CRM has two fundamental types of records:
+CRM 有两种基本类型的记录:
-* A `Company` represents a business or organization.
-* `People` represent your company's current and prospective customers or clients.
+* `公司` 表示一个企业或组织。
+* `人员` 代表您的公司当前和潜在的客户。
-## Custom Fields
+## 自定义字段
-Custom Fields are data fields you create to capture information specific to your business needs and processes.
+自定义字段是您创建的数据字段,用于捕获特定于您的业务需求和流程的信息。
-## Data Model
+## 数据模型
-A Data Model is the structure that defines how information is organized in your CRM, including what objects exist, their properties (fields), and how they relate to each other.
+数据模型是定义信息在您的 CRM 中如何组织的结构,包括哪些对象存在、它们的属性(字段)以及它们如何相互关联。
-## Favorites
+## 收藏夹
-Favorites are records you've marked for quick access, appearing in your sidebar for instant navigation to important data.
+收藏是你标记用于快速访问的记录,会显示在侧边栏,便于即时导航到重要数据。
-## Field
+## 字段
-A field refers to a specific area where particular data is stored for an entity.
+字段是指为某个实体存储特定数据的特定区域。
-## Integration
+## 迭代器
-Integrations are built-in tools that allow you to link Twenty with other software or systems.
+迭代器是一种工作流操作,用于遍历项目数组,并为列表中的每个项目执行后续操作。
-## Iterator
+## 看板
-An Iterator is a workflow action that loops through an array of items, executing subsequent actions for each item in the list.
+`看板` 是一种使用卡片和列来跟踪业务流程的可视化方法。 每一列代表您的流程中的一个阶段(例如:新建、进行中、赢得、失去),您可以随着进度将记录在这些阶段中移动。
-## Kanban
+## 对象
-A `Kanban` is a visual way to track your business processes using cards and columns. Each column represents a stage in your process (for example: new, ongoing, won, lost), and you move records through these stages as they progress.
+对象是一种数据结构,表示 CRM 中的特定类型的实体(如人员、公司或机会)。 对象可以是标准的(内置)或自定义的(由您创建)。
-## Object
+## 机会
-An Object is a data structure that represents a specific type of entity in your CRM (like People, Companies, or Opportunities). Objects can be standard (built-in) or custom (created by you).
+在 Twenty CRM 中,机会是与帐户或联系人潜在的交易或销售。
-## Opportunities
+## 记录
-Opportunities in Twenty CRM are potential deals or sales with accounts or contacts.
+记录表示一个对象的实例,比如特定的帐户或联系人。
-## Record
+## 关系字段
-A Record indicates an instance of an object, like a specific account or contact.
+关系字段在不同对象之间创建连接,允许您将记录链接在一起(例如连接一个人到一个公司)。
-## Relation Fields
+## 标准字段
-Relation Fields create connections between different objects, allowing you to link records together (like connecting a Person to a Company).
+标准字段是默认附带对象的预构建数据字段,并在所有工作空间中提供常见功能。
-## Standard Fields
+## 任务
-Standard Fields are pre-built data fields that come with objects by default and provide common functionality across all workspaces.
+在 Twenty CRM 中,任务是与联系人、帐户或机会相关的分配活动。
-## Tasks
+## 触发器
-Tasks in Twenty CRM are assigned activities relating to contacts, accounts, or opportunities.
+触发器是工作流的起点——用于启动自动化的事件或条件。 示例包括记录创建、记录更新、Webhook 或预定时间。
-## Triggers
+## 视图
-Triggers are the starting point of a workflow — the event or condition that initiates the automation. Examples include record creation, record updates, webhooks, or scheduled times.
+您可以使用视图自定义记录的显示,为每个视图设置不同的过滤器、布局和排序选项。
-## Views
+## 更新或插入
-You can customize the display of your records using views, setting different filters, layouts and sorting options for each view.
-
-## Upsert
-
-Upsert is an operation that combines "update" and "insert" — it updates an existing record if a match is found, or creates a new record if no match exists.
+更新或插入是一种将“更新”和“插入”合并的操作——如果找到匹配项,则更新现有记录;如果没有匹配,则创建新记录。
## Webhooks
-Webhooks are automated messages sent from Twenty to other applications when specific events occur, enabling real-time data synchronization.
+Webhook 是在特定事件发生时从 Twenty 发送到其他应用的自动消息,实现实时数据同步。
-## Workflows
+## 工作流
-Workflows are automated processes that trigger actions based on specific conditions, helping you automate repetitive tasks and business processes.
+工作流是基于特定条件触发动作的自动化过程,帮助您自动化重复性任务和业务流程。
-## Workspace
+## 工作区
-A `Workspace` typically represents a company using Twenty. It holds all the records and data that you and your team members add to Twenty.
-It has a single domain name, which is typically the domain name your company uses for employee email addresses.
+一个 `工作区` 通常代表使用 Twenty 的公司。 它保存您和您的团队成员添加到 Twenty 的所有记录和数据。
+它有一个单一的域名,通常是您公司用于员工电子邮件地址的域名。
-## Workspace Members
+## 工作区成员
-Workspace Members are the Twenty users from your team who have access to your workspace. They can be assigned as owners or assignees for records.
+工作区成员是您的团队中有权访问您的工作区的 Twenty 用户。 他们可以被指定为记录的所有者或被分配人。
diff --git a/packages/twenty-docs/l/zh/user-guide/getting-started/capabilities/implementation-services.mdx b/packages/twenty-docs/l/zh/user-guide/getting-started/capabilities/implementation-services.mdx
index 706de4d2a0..e120de3001 100644
--- a/packages/twenty-docs/l/zh/user-guide/getting-started/capabilities/implementation-services.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/getting-started/capabilities/implementation-services.mdx
@@ -1,16 +1,16 @@
---
-title: Implementation Services
-description: Whether you need help getting started or creating advanced customizations, we have a solution.
+title: 实施服务
+description: 无论您是需要帮助起步还是创建高级自定义,我们都有解决方案。
---
-## Onboarding Packs
+## 入门包
-Get help from our core team to set up your Twenty workspace with our 4-hour Onboarding packs:
+通过我们的 4 小时入门包,获取我们核心团队的帮助,设置您的 Twenty 工作区:
-* **Data Model Design**: Design and create your custom data model with objects, fields, and relationships
-* **Data Migration**: Migrate your existing data from your current CRM to Twenty
-* **Workflow Creation**: Create custom workflows to support your business processes
+* **数据模型设计**:设计和创建具有对象、字段和关系的自定义数据模型
+* **数据迁移**:将您现有的数据从当前的 CRM 迁移到 Twenty
+* **工作流创建**:创建自定义工作流以支持您的业务流程
-## Implementation Partners
+## 实施合作伙伴
-Work with certified Twenty partners for more advanced customizations and integrations. Reach out to our team via [contact@twenty.com](mailto:contact@twenty.com) to be matched with our partners.
+与获得认证的 Twenty 合作伙伴合作,进行更高级的自定义和集成。 请通过 [contact@twenty.com](mailto:contact@twenty.com) 联系我们的团队,以便为您匹配我们的合作伙伴。
diff --git a/packages/twenty-docs/l/zh/user-guide/getting-started/capabilities/what-is-twenty.mdx b/packages/twenty-docs/l/zh/user-guide/getting-started/capabilities/what-is-twenty.mdx
index 137775eed1..98c5ffaa63 100644
--- a/packages/twenty-docs/l/zh/user-guide/getting-started/capabilities/what-is-twenty.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/getting-started/capabilities/what-is-twenty.mdx
@@ -1,42 +1,42 @@
---
-title: What is Twenty
-description: Twenty is an open-source CRM that gives you the building blocks to create exactly what your business needs.
+title: 什么是Twenty
+description: Twenty 是一款开源 CRM,为您提供构建模块,助您精确打造企业所需的功能。
---
-## Vision
+## 愿景
-Creating a good CRM is hard because it's a balancing act.
-For each business, the requirements seem straightforward, yet everyone's needs are distinct.
-The result is a CRM that's either too basic, or one that's attempting to be a jack-of-all-trades but ending up as a master of none.
+创建一个优秀的 CRM 是困难的,因为它需要找到平衡。
+对于每个企业来说,需求看似简单,但每个人的需求都是独特的。
+结果是,CRM 不是过于简单,就是试图面面俱到,但什么也没做好。
-At first, Twenty looks like most CRMs you already know: you can track deals, organize contacts, manage tasks and notes.
-**But what sets it apart is our approach to extensibility. We are building an open platform that provides the building blocks for you to solve your unique business problems.**
+起初,Twenty看起来像您已知的大多数CRM:您可以跟踪交易、组织联系人、管理任务和笔记。
+**但真正与众不同之处在于我们对可扩展性的处理方式。 我们正在打造一个开放平台,为您提供解决您的独特业务问题的构建模块。**
-We prioritize universal principles and common patterns over feature lists.
-We don't try to have all the answers and instead empower users to find what works best for them.
-Open-source is the bedrock of our approach, ensuring that Twenty evolves with its community, for its community.
+我们优先考虑普遍原则和共同模式,而不是功能列表。
+我们不试图找到所有答案,而是赋予用户找到最适合他们的解决方案的能力。
+开源是我们方法的基石,确保Twenty与其社区共同发展,为其社区服务。
-## Benefits
+## 优势
-**Customizable:** Designed to fit your business needs.
+\*\*可定制:\*\*旨在满足您的业务需求。
-**Community-driven:** Built and maintained by a large open-source community.
+**社区驱动:** 由庞大的开源社区构建和维护。
-**Cost-effective:** You'll never be vendor-locked, because you can always self-host.
+\*\*经济实惠:\*\*您永远不会被供应商锁定,因为您始终可以自行托管。
-## Main Features
+## 主要功能
-* **Calendar & Emails:** Sync your mailbox and calendar to see all communications on your CRM records. [Learn more](/l/zh/user-guide/calendar-emails/overview).
-* **Data Model:** Create custom objects and fields to match your unique business processes. [Explore](/l/zh/user-guide/data-model/overview).
-* **Data Migration:** Import and export your data via CSV or API. [Get started](/l/zh/user-guide/data-migration/overview).
-* **Views & Pipelines:** Organize your data with table views, kanban boards, and sales pipelines. [Discover](/l/zh/user-guide/views-pipelines/overview).
-* **Workflows:** Automate your business processes and integrate with external tools. [Build automations](/l/zh/user-guide/workflows/overview).
-* **AI:** Enhance your CRM with AI-powered features and agents. [Explore AI](/l/zh/user-guide/ai/overview).
-* **Dashboards:** Track performance with custom reports and visualizations. [View dashboards](/l/zh/user-guide/dashboards/overview).
-* **Permissions & Access:** Control who can view, edit, and manage your data with role-based permissions. [Configure access](/l/zh/user-guide/permissions-access/overview).
-* **Notes & Tasks:** Create notes and tasks linked to your records for better collaboration.
-* **API & Webhooks:** Connect to other apps and build custom integrations. [Start integrating](/l/zh/developers/extend/capabilities/apis).
+* **日历与电子邮件:** 将您的邮箱和日历同步,以便在 CRM 记录中查看所有沟通。 [了解更多](/l/zh/user-guide/calendar-emails/overview)。
+* **数据模型:** 创建自定义对象和字段,以匹配您独特的业务流程。 [探索](/l/zh/user-guide/data-model/overview)。
+* **数据迁移:** 通过 CSV 或 API 导入和导出您的数据。 [开始使用](/l/zh/user-guide/data-migration/overview)。
+* **视图与管道:** 使用表格视图、看板和销售管道来组织您的数据。 [发现](/l/zh/user-guide/views-pipelines/overview)。
+* **工作流:** 自动化您的业务流程,并与外部工具集成。 [构建自动化流程](/l/zh/user-guide/workflows/overview)。
+* **AI:** 借助 AI 驱动的功能和智能体,增强您的 CRM。 [探索 AI](/l/zh/user-guide/ai/overview)。
+* **仪表板:** 通过自定义报表和可视化跟踪绩效。 [查看仪表板](/l/zh/user-guide/dashboards/overview)。
+* **权限与访问:** 通过基于角色的权限控制谁可以查看、编辑和管理您的数据。 [配置访问](/l/zh/user-guide/permissions-access/overview)。
+* **笔记与任务:** 创建与您的记录关联的笔记和任务,以便更好地协作。
+* **API 与 Webhook:** 连接到其他应用,并构建自定义集成。 [开始集成](/l/zh/developers/extend/capabilities/apis)。
-## Join now
+## 立即加入
-[Register here](https://app.twenty.com) or [become a contributor on GitHub](https://github.com/twentyhq/twenty).
+[在此注册](https://app.twenty.com)或[成为GitHub上的贡献者](https://github.com/twentyhq/twenty)。
diff --git a/packages/twenty-docs/l/zh/user-guide/getting-started/how-tos/configure-your-workspace.mdx b/packages/twenty-docs/l/zh/user-guide/getting-started/how-tos/configure-your-workspace.mdx
index 9f4682442c..880cdd0257 100644
--- a/packages/twenty-docs/l/zh/user-guide/getting-started/how-tos/configure-your-workspace.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/getting-started/how-tos/configure-your-workspace.mdx
@@ -1,77 +1,77 @@
---
-title: Configure Your Workspace
-description: Every business works differently. Start with these 3 steps to shape Twenty around your needs.
+title: 配置您的工作区
+description: 每个企业的运作方式都不尽相同。 从以下 3 个步骤开始,使 Twenty 更符合您的需求。
---
-**Quick Win**: Start with connecting your mailbox. This gives you immediate value and helps your team see Twenty in action with real data. You can do so under Settings → Accounts.
+**速成技巧**: 请先连接您的邮箱。 这将立即为您带来价值,并帮助您的团队通过真实数据看到 Twenty 运行的效果。 您可以在 设置 → 账户 中进行操作。
-## 1. Customize your data model
+## 1. 自定义您的数据模型
-Twenty offers the flexibility you need to shape the data model that will best support your day-to-day.
-Create objects and fields of any type, including relations between your different objects. You can do so under Settings → Data Model.
-Here are a few tips:
+Twenty提供所需的灵活性以构建最能支持您日常工作的数据模型。
+创建任何类型的对象和字段,包括不同对象之间的关系。 您可以在 设置 → 数据模型 下操作。
+以下是一些提示:
-* **You are not limited in the number of custom fields nor custom objects**. Adding custom objects and fields will not lead to upgrading your plan.
-* **People, Companies and Opportunities are the three objects from where you can access the emails and meetings synchronized from your mailbox and calendar**. We recommend using those as much as possible, adding fields to categorize your records if need be. Here is an example:
- * It is best to use the People object for your prospects and partners, creating a field on the People object named `Person Type`, instead of creating a Partner custom object. Because you would not be able to access the emails exchanged with this person from the Partner records.
- * Create different views under People, one to display partners and one to display prospects.
-* Two People cannot have the same email address. Two Companies cannot have the same domain.
-* You can deactivate standard fields and objects you do not want to use.
-* You can hide fields from views: don't be afraid of creating fields, you won't have to display all of them.
+* **自定义字段和对象数量不受限制**。 添加自定义对象和字段不会导致升级您的计划。
+* **人员、公司和机会是您可以访问从邮箱和日历同步的电子邮件和会议的三个对象**。 我们建议尽可能多使用这些,必要时添加字段以对记录进行分类。 以下是一个示例:
+ * 最好将“人员”对象用于您的潜在客户和合作伙伴,在“人员”对象上创建一个名为“人员类型”的字段,而不是创建合作伙伴自定义对象。 因为您将无法从合作伙伴记录中访问与此人交换的电子邮件。
+ * 在人员中创建不同的视图,一种用于显示合作伙伴,一种用于显示潜在客户。
+* 两个人不能拥有相同的电子邮件地址。 两家公司不能拥有相同的域名。
+* 您可以停用您不想使用的标准字段和对象。
+* 您可以从视图中隐藏字段:不要害怕创建字段,您无需展示所有字段。
-Read [this article](/l/zh/user-guide/data-model/overview) to learn how to design your data model.
+阅读[这篇文章](/l/zh/user-guide/data-model/overview)了解如何设计您的数据模型。
-## 2. Bring your data in
+## 2. 导入您的数据
-Bringing your existing data into Twenty gives your team context from the start.
+将现有数据导入 Twenty 为您的团队从一开始就提供了背景信息。
-### Connect your mailbox
+### 连接您的邮箱
-If you have not done so when creating your workspace, connect your **Google or Microsoft account** under Settings → Accounts. This allows Twenty to:
+如果您在创建工作区时尚未这样做,请在 设置 → 帐户 下连接您的**Google 或 Microsoft 帐户**。 这允许 Twenty:
-* Import your messages and meetings
-* Auto-create contacts based on interactions (optional)
-* Keep communication history visible for your team
+* 导入您的邮件和会议
+* 根据互动自动创建联系人(可选)
+* 确保您的团队可以看到通信历史
-**Using another provider?**
-You can add another mailbox via SMTP or another calendar via CalDAV. You will need to activate the feature under Settings → Releases → Lab, and then go back to the Settings → Accounts tab.
+**使用其他提供商?**
+您可以通过 SMTP 添加另一个邮箱或通过 CalDAV 添加其他日历。 前往 **设置 → 账户** 进行配置。
-### Import data via csv
+### 通过 csv 导入数据
-Use the Command menu (`Cmd + K` or `Ctrl + K`) to import People, Companies, Opportunities, or any custom objects via CSV.
+使用命令菜单(`Cmd + K` 或 `Ctrl + K`)通过 CSV 导入人员、公司、机会或任何自定义对象。
-**Key guidelines**:
+**关键指南**:
-* Download the sample file to understand the expected format
-* Limit each file to 10k records
-* Remove duplicate emails for People or duplicate domains for Companies
-* Review and fix errors (highlighted in yellow) before importing
+* 下载示例文件以了解预期格式
+* 每个文件限制为 10k 条记录
+* 删除人员的重复电子邮件或公司的重复域名
+* 在导入之前检查并修复错误(以黄色高亮显示)
-Read [this article](/l/zh/user-guide/data-migration/overview) to learn more about data import.
+阅读[这篇文章](/l/zh/user-guide/data-migration/overview)以了解更多关于数据导入的信息。
-## 3. Create your first view
+## 3. 创建您的第一个视图
-Creating different views is key to make the data actionable for your team.
-Here is how to proceed:
+创建不同的视图是使数据对您的团队具有可操作性的关键。
+以下是操作步骤:
-* **Add or hide columns**
- Manage the fields visible in a given view clicking on Options → Fields (from the top right). You can show/hide fields from there.
+* **添加或隐藏列**
+ 在视图中单击选项 → 字段,以管理可见字段。 您可以从中显示/隐藏字段。
-* **Reorder fields**
- Reorder the fields from a given view clicking on Options → Fields (from the top right). Drag and drop the fields to reorder them.
+* **重新排序字段**
+ 在视图中单击选项 → 字段,以重新排序字段。 拖放字段即可重新排列它们。
-* **Filter your view**
- Narrow down the records displayed using the Filters from the top right.
+* **筛选您的视图**
+ 使用顶部右边的筛选器来缩小显示的记录。
-* **Sort records**
- Reorder records displayed using the Sort function from the top right, or by clicking directly on the column name.
+* **对记录排序**
+ 使用顶部右边的排序功能重新排列显示的记录,或直接点击列名。
-* **Choose the layout**
- You can switch to a **Kanban layout** or a list **Group By** layout, as long as the object has a `Stage` or similar select-type field.
+* **选择布局**
+ 您可以切换到 **看板布局** 或以 **组方式** 列表,只要对象有 `阶段` 或类似的选择类型字段。
-* **Save your view as Favorites**
- This can be done using the dropdown menu showing the different views.
+* **将您的视图保存为收藏夹**
+ 您可以使用显示不同视图的下拉菜单进行此操作。
-## What's next?
+## 接下来是什么?
-Start creating automations using [workflows](/l/zh/user-guide/workflows/overview).
+开始使用[工作流程](/l/zh/user-guide/workflows/overview)创建自动化。
diff --git a/packages/twenty-docs/l/zh/user-guide/getting-started/how-tos/create-workspace.mdx b/packages/twenty-docs/l/zh/user-guide/getting-started/how-tos/create-workspace.mdx
index f93617f83f..ebd6cc8849 100644
--- a/packages/twenty-docs/l/zh/user-guide/getting-started/how-tos/create-workspace.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/getting-started/how-tos/create-workspace.mdx
@@ -1,48 +1,48 @@
---
-title: Create a Workspace
-description: Follow a step-by-step guide on how to register on Twenty, choose a subscription plan, and set up your account.
+title: 创建工作区
+description: 按照分步指南了解如何在 Twenty 上注册,选择订阅计划,并设置您的账户。
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-## Step 1: Registration
+## 步骤 1: 注册
-1. Navigate to [Twenty Sign Up](https://app.twenty.com).
-2. Select your preferred sign-up method:
- * **Continue with Google** for Google account registration.
- * **Continue with Microsoft** for Microsoft account registration.
- * Or, **Continue With Email** for email registration.
+1. 前往 [Twenty 注册](https://app.twenty.com)。
+2. 选择您偏好的注册方式:
+ * **继续使用 Google** 进行 Google 账户注册。
+ * **继续使用 Microsoft** 进行 Microsoft 账户注册。
+ * 或者,**继续使用电子邮件** 进行注册。
-
+
-## Step 2: Choosing a Trial Period
+## 步骤 2:选择试用期
-Choose between two trial periods:
+请选择两个试用期之一:
-### 30 days
+### 30 天
-With credit card
+需要信用卡
-### 7 days
+### 7 天
-Without credit card
+无需信用卡
-Both trials include:
+两个试用均包括:
-* Full access
-* Unlimited contacts
-* Email integration
-* Custom objects
-* API & Webhooks
+* 完全访问
+* 无限联系人
+* 电子邮件集成
+* 自定义对象
+* API 和 Webhooks
-You can click on "Change plan" to choose a different plan or billing interval.
+您可以点击 "更改计划" 选择不同的计划或计费间隔。
-## Step 3: Payment Confirmation & Account Setup
+## 步骤 3:支付确认及账户设置
-Post payment approval via Stripe, you're directed to create your workspace and user profile. Remember that you can cancel your subscription anytime.
+通过 Stripe 批准付款后,您将被引导创建您的工作区和用户资料。 请记住您可以随时取消您的订阅。
-## Support
+## 支持
-For queries or help, connect with the dedicated support team at [contact@twenty.com](mailto:contact@twenty.com) or send a message on [Discord](https://discord.gg/cx5n4Jzs57).
+如有疑问或帮助,请通过[contact@twenty.com](mailto:contact@twenty.com)与专门的支持团队联系,或在[Discord](https://discord.gg/cx5n4Jzs57)上发送消息。
diff --git a/packages/twenty-docs/l/zh/user-guide/getting-started/how-tos/navigate-around-twenty.mdx b/packages/twenty-docs/l/zh/user-guide/getting-started/how-tos/navigate-around-twenty.mdx
index e6dbdaba6a..e5b58c6400 100644
--- a/packages/twenty-docs/l/zh/user-guide/getting-started/how-tos/navigate-around-twenty.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/getting-started/how-tos/navigate-around-twenty.mdx
@@ -1,83 +1,84 @@
---
-title: Navigate Around Twenty
-description: Get a quick overview of how to navigate through the platform and where to take different types of actions.
+title: 在 Twenty 中导航
+description: 快速了解如何浏览平台以及采取不同类型的操作。
---
-## The Main Layout
+## 主布局
-The center of the screen is **where your records live**: people, companies, opportunities, tasks, notes, dashboards, workflows and any other object you created. This is where the day-to-day work happens.
-You can **view, edit, delete records** from there as well as **creating new views**.
+屏幕的中心是**记录的所在**:人员、公司、商机、任务、注释、仪表板、工作流,以及您创建的任何其他对象。 这是日常工作的地方。
+您可以在此**查看、编辑、删除记录**,以及**创建新视图**。
-## The Navigation Bar
+## 导航栏
-On the left side, from the top to the bottom, you'll be able to:
+在左侧,从上到下,您可以:
-* Switch between your **several workspaces** using the dropdown menu or create a new workspace
-* Use the **search bar** (press `/` to focus on it instantly)
-* Open the **Settings** section
-* Have direct access to your **Favourites views**. Favourites are unique for each user.
-* Switch between different objects
-* **Create automations** using workflows
-* Reach out to Support and open our User Guide.
+* 使用下拉菜单在您的**多个工作区**之间切换,或创建新工作区
+* 使用**搜索栏**(按`/`可立即聚焦)
+* 打开**设置**部分
+* 直接访问您的**收藏视图**。 收藏对每个用户都是唯一的。
+* 在不同对象之间切换
+* 通过工作流**创建自动化**
-## The Command Menu
+## 命令菜单
-The command menu gives you **quick access to actions** in Twenty. You can access it in two ways:
+命令菜单让您在 Twenty 中**快速访问操作**。 您可以通过两种方式访问它:
-* **Keyboard shortcut**: Press `Cmd + K` (Mac) or `Ctrl + K` (Windows)
-* **Mouse**: Click the three dots in the top right corner
- From there, you can:
-* Create new records
-* **Import and export data via csv**
-* Create new views
-* Access deleted records (Twenty supports soft and hard deletes)
-* See the keyboard shortcuts to quickly access objects in your workspace
+* **键盘快捷键**:按`Cmd + K`(Mac)或`Ctrl + K`(Windows)
+* **鼠标**:点击右上角的三个点
+ 然后您可以:
+* 创建新记录
+* **通过 csv 导入和导出数据**
+* 创建新视图
+* 访问已删除的记录(Twenty 支持软删除和硬删除)
+* 查看键盘快捷键以快速访问您的工作区对象
-## The Search Bar
+## 搜索栏
-The search bar is accesible via the Command Menu, at the top of your navigation bar, or by pressing `/` to focus on it instantly. Search works across all object.
+可以通过命令菜单、导航栏顶部,或按下 `/` 立即聚焦到搜索栏。 搜索适用于所有对象。
-## The Side Panel
+## 侧边栏
-When you click on a record, the side panel appears on the right. This gives you a quick overview of the record's key information, without bringing you to another page. From there, you can decide to close this overview or to get additional information about this record, clicking on the Open button.
+当您点击某条记录时,右侧会显示侧边栏。 这可让您快速查看该记录的关键信息,而无需跳转到其他页面。 在此,您可以选择关闭此概览,或点击“打开”按钮以获取该记录的更多信息。
-## Views
+## 视图
-Every object (like Opportunities or People) supports multiple views. You're not limited in the number of views per object.
+每个对象(如商机或人员)支持多种视图。 每个对象的视图数量没有限制。
-Use the dropdown menu at the top left of the main layout to switch between the different views. For example:
+在主布局的左上方使用下拉菜单在不同视图之间切换。 例如:
-* Use a Kanban view to track opportunities by stage
-* Use Group By view to create sections and improve efficiency
-* Use filters to focus on specific records (e.g. leads created last week)
-* Save filtered views to reuse them later
-* Favourite views for fast access
+* 使用看板视图按阶段跟踪商机
+* 使用分组视图创建部分并提高效率
+* 使用过滤器专注于特定记录(例如,上周创建的潜在客户)
+* 保存过滤后的视图以便稍后重用
+* 收藏视图以便快速访问
-If you're new to Views, read our [Views & Pipelines guide](/l/zh/user-guide/views-pipelines/overview) to learn how to create and customize them.
+如果您是视图的新手,请阅读我们的[视图与管道指南](/l/zh/user-guide/views-pipelines/overview),了解如何创建和自定义它们。
-## Settings
+## 设置
-Open your Settings from the top left to:
+从左上角打开您的设置:
-* **Connect your mailbox and calendar** accounts for seamless email and calendar sync
-* Customize your **data model**: create custom objects, fields, and relationships
-* **Access the API playground and configure webhooks**
-* **Manage user permissions** and workspace access controls
-* Invite team members and manage user roles
-* Edit your profile and workspace preferences
-* Configure billing and monitor workflow credits usage
-* Discover the latest releases and upcoming features (under Releases → Lab tab)
+* **连接您的邮箱和日历**帐户以实现无缝的电子邮件和日历同步
+* 自定义您的**数据模型**:创建自定义对象、字段和关系
+* **访问 API 操作台并配置 Webhook**
+* **管理用户权限**和工作区访问控制
+* 邀请团队成员和管理用户角色
+* 编辑您的个人资料和工作区首选项
+* 配置账单并监控工作流额度使用情况
+* 发现并启用即将推出的功能(在 Updates → Early Access 下)
+* **访问支持**,通过实时聊天与支持团队联系
+* **打开文档**,浏览用户指南和开发者文档
-If you do not see all those sections under Settings, reach out to your workspace administrator - some of them have restricted access.
+如果您未在设置下看到所有这些部分,请联系您的工作区管理员 - 其中一些部分具有访问限制。
diff --git a/packages/twenty-docs/l/zh/user-guide/introduction.mdx b/packages/twenty-docs/l/zh/user-guide/introduction.mdx
index e737b3b87a..20f0b4fb81 100644
--- a/packages/twenty-docs/l/zh/user-guide/introduction.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/introduction.mdx
@@ -1,63 +1,63 @@
---
-title: Discover Twenty
-description: Welcome to Twenty User Guide, your resources for advanced configurations and best practices.
+title: 发现 Twenty
+description: 欢迎使用 Twenty 用户指南,这是您获取高级配置和最佳实践的资源。
---
import { CardTitle } from "/snippets/card-title.mdx"
- Discover Twenty
- Learn what Twenty is and how it can help your business.
+ 发现 Twenty
+ 了解 Twenty 是什么,以及它如何助力您的业务。
- Data Model
- Customize your data model to fit your business processes.
+ 数据模型
+ 定制您的数据模型,使其适配您的业务流程。
- Data Migration
- Import and export your data via CSV or API.
+ 数据迁移
+ 通过 CSV 或 API 导入和导出您的数据。
- Calendar & Emails
- Centralize your team's meetings and emails.
+ 日历与电子邮件
+ 集中管理您团队的会议和电子邮件。
- Workflows
- Automate processes and integrate with external tools.
+ 工作流
+ 自动化流程并与外部工具集成。
AI
- Enhance your team with AI agents.
+ 使用 AI 代理提升您团队的能力。
- Views & Pipelines
- Organize your data with actionable views and pipelines.
+ 视图与管道
+ 使用可操作的视图和管道来组织您的数据。
- Dashboards
- Real-time insights to track performance.
+ 仪表板
+ 实时洞察以跟踪绩效。
- Permissions & Access
- Manage roles and access to Twenty.
+ 权限与访问
+ 管理 Twenty 的角色和访问权限。
- Billing
- Understand how Twenty pricing and billing works.
+ 计费
+ 了解 Twenty 的定价和计费如何运作。
- Settings
- Configure your workspace preferences.
+ 设置
+ 配置您的工作区首选项。
diff --git a/packages/twenty-docs/l/zh/user-guide/permissions-access/capabilities/permissions.mdx b/packages/twenty-docs/l/zh/user-guide/permissions-access/capabilities/permissions.mdx
index ba8c87e608..dcb8ce4d86 100644
--- a/packages/twenty-docs/l/zh/user-guide/permissions-access/capabilities/permissions.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/permissions-access/capabilities/permissions.mdx
@@ -1,198 +1,198 @@
---
-title: Permissions
-description: Control access to objects, fields, and settings with role-based permissions.
+title: 权限
+description: 使用基于角色的权限来控制对对象、字段和设置的访问。
image: /images/user-guide/permissions/permissions.png
---
-Twenty's permission system allows you to control access to three main areas:
+Twenty 的权限系统允许您控制对三个主要区域的访问:
-* **Objects and Fields**: Control who can view, edit, or delete records and individual fields
-* **Settings**: Manage access to workspace configuration and administrative functions
-* **Actions**: Control general workspace actions like importing data or sending emails
+* **对象和字段**:控制谁可以查看、编辑或删除记录和单个字段
+* **设置**:管理对工作区配置和管理功能的访问
+* **操作**:控制一般工作区操作,如导入数据或发送邮件
-## Create a Role
+## 创建角色
-To create a new role:
+要创建新角色:
-1. Go to **Settings → Roles**
-2. Under **All Roles**, click on **+ Create Role**
-3. Enter a role name
-4. In the default **Permissions** tab, [configure permissions](#customize-permissions)
-5. Click **Save** to finish
+1. 进入 **设置 → 角色**
+2. 在 **所有角色** 下,单击 **+ 创建角色**
+3. 输入角色名称
+4. 在默认的 **权限** 选项卡中,[配置权限](#customize-permissions)
+5. 单击 **保存** 完成
-## Delete a Role
+## 删除角色
-To delete a role:
+要删除角色:
-1. Go to **Settings → Roles**
-2. Click on the role you want to remove
-3. Open the **Settings** tab, then click **Delete Role**
-4. Click **Confirm** in the modal
+1. 进入 **设置 → 角色**
+2. 单击您要删除的角色
+3. 打开 **设置** 选项卡,然后单击 **删除角色**
+4. 在模态框中单击 **确认**
- If a role is deleted, any workspace member assigned to it will be automatically reassigned to the default role. All except the **Admin** role can be deleted. There must always be at least one member assigned to the **Admin** role.
+ 如果删除某个角色,分配到该角色的任何工作区成员将会自动重新分配到默认角色。 除了 **管理员** 角色外,所有角色都可以被删除。 必须始终至少有一个成员分配到 **管理员** 角色。
-## Assign Roles to Members
+## 将角色分配给成员
-### View Current Assignments
+### 查看当前分配
-* Go to **Settings → Roles**
-* See all roles and how many members are assigned to each
-* View which members have which roles
+* 进入 **设置 → 角色**
+* 查看所有角色以及分配给每个角色的成员数
+* 查看哪些成员具有哪些角色
-### Assign a Role to a Member
+### 将角色分配给成员
-1. Go to **Settings → Roles**
-2. Click on the role you want to assign
-3. Open the **Assignment** tab
-4. Click **+ Assign to member**
-5. Select the workspace member from the list
-6. Confirm the assignment
+1. 进入 **设置 → 角色**
+2. 单击您要分配的角色
+3. 打开 **分配** 选项卡
+4. 单击 **+ 分配给成员**
+5. 从列表中选择工作区成员
+6. 确认分配
-### Set Default Role
+### 设置默认角色
-1. Go to **Settings → Roles**
-2. In the **Options** section, find **Default Role**
-3. Select which role new members should automatically receive
-4. New workspace members will be assigned this role when they join
+1. 进入 **设置 → 角色**
+2. 在 **选项** 部分,找到 **默认角色**
+3. 选择新成员应该自动接收的角色
+4. 新工作区成员加入时将被分配此角色
- You can only assign roles to existing workspace members. To invite new members, use [Member Management](/l/zh/user-guide/settings/capabilities/member-management).
+ 您只能将角色分配给现有的工作区成员。 要邀请新成员,请使用 [成员管理](/l/zh/user-guide/settings/capabilities/member-management)。
-## Customize Permissions
+## 自定义权限
-Permissions determine what each role can access or modify within your workspace, including workspace objects records, settings, and actions.
+权限决定每个角色在您的工作区中可以访问或修改的内容,包括工作区对象记录、设置和操作。
-### Object Permissions
+### 对象权限
-The **Objects** section controls what this role can do with records across your workspace.
+**Objects** 部分控制此角色在整个工作区中对记录可以执行的操作。
-#### Set Default Permissions (All Objects)
+#### 设置默认权限(所有对象)
-First, configure the baseline permissions that apply to **all objects** by default:
+首先,配置默认适用于**所有对象**的基线权限:
-| Permission | Description |
-| ---------------------------------- | -------------------------------------- |
-| **See Records on All Objects** | View records in lists and detail pages |
-| **Edit Records on All Objects** | Modify existing records |
-| **Delete Records on All Objects** | Soft-delete records (can be restored) |
-| **Destroy Records on All Objects** | Permanently delete records |
+| 权限 | 描述 |
+| -------------- | ------------ |
+| **查看所有对象上的记录** | 在列表和详情页中查看记录 |
+| **编辑所有对象上的记录** | 修改现有记录 |
+| **删除所有对象上的记录** | 软删除记录(可恢复) |
+| **销毁所有对象上的记录** | 永久删除记录 |
-Select or unselect based on what should be the default behavior for this role.
+根据该角色的默认行为应为何来勾选或取消勾选。
- **Example — Intern role**: An intern should be able to see all objects but not edit them by default. Enable "See Records on All Objects" but leave "Edit Records on All Objects" unchecked.
+ **示例 — 实习生角色**:默认情况下,实习生应该可以查看所有对象,但不能编辑它们。 启用 "在所有对象上查看记录",但保持 "在所有对象上编辑记录" 未勾选。
-#### Add Object-Level Exceptions
+#### 添加对象级例外
-After setting defaults, use the **Object-Level** sub-section to add rules that override the defaults for specific objects.
+设置默认值后,使用 **Object-Level** 子部分添加规则,以覆盖特定对象的默认设置。
-Click **+ Add rule** and select an object to create an exception.
+点击 **+ Add rule** 并选择一个对象以创建例外。
-**Example rules for an Intern role:**
+**实习生角色的示例规则:**
-| Rule | Effect |
-| ------------------------------------- | ------------------------------------------------------ |
-| Opportunities → disable "See Records" | Intern cannot see the Opportunities object at all |
-| People → enable "Edit Records" | Intern can edit People records (but not other objects) |
+| 规则 | 效果 |
+| ------------------------- | ---------------------------- |
+| Opportunities → 禁用 "查看记录" | 实习生完全无法查看 Opportunities 对象 |
+| People → 启用 "编辑记录" | 实习生可以编辑 People 记录(但不能编辑其他对象) |
-### Field Permissions
+### 字段权限
-Within each object-level rule, you can go further and configure **field-level permissions** to control access to specific fields.
+在每个对象级规则内,您还可以进一步配置**字段级权限**,以控制对特定字段的访问。
-| Permission | Description |
-| -------------- | -------------------------- |
-| **See Field** | View the field value |
-| **Edit Field** | Modify the field value |
-| **No Access** | Field is completely hidden |
+| 权限 | 描述 |
+| --------- | -------- |
+| **查看字段** | 查看该字段的值 |
+| **编辑字段** | 修改该字段的值 |
+| **无访问权限** | 字段将被完全隐藏 |
-**Example — Restrict sensitive fields:**
+**示例 — 限制敏感字段:**
-For the Intern role with People edit access, you might want to restrict certain fields:
+对于具有 People 编辑权限的实习生角色,您可能希望限制某些字段:
-* People → Email → **See Field** only (cannot edit)
-* People → Address → **No Access** (completely hidden)
+* People → Email → 仅**查看字段**(不可编辑)
+* People → Address → **无访问权限**(完全隐藏)
-This allows the intern to edit most People fields while protecting sensitive information.
+这使得实习生可以编辑大多数 People 字段,同时保护敏感信息。
-### How Permission Inheritance Works
+### 权限继承如何工作
-Permissions cascade from general to specific:
+权限从全局到具体逐级生效:
-1. **All Objects** → sets the baseline for all objects
-2. **Object-Level rules** → override the baseline for specific objects
-3. **Field-Level rules** → override the object setting for specific fields
+1. **所有对象** → 为所有对象设定基线
+2. **对象级规则** → 覆盖特定对象的基线设置
+3. **字段级规则** → 覆盖特定字段的对象级设置
-More specific settings always take precedence.
+更具体的设置始终优先生效。
-### Managing Permission Overrides
+### 管理权限覆盖
-To override inherited permissions:
+要覆盖继承的权限:
-1. Click **X** to remove the inherited rule
-2. Select the specific permissions you want
-3. Click the orange **Undo** icon (circular arrow) to revert changes
+1. 单击 **X** 以移除继承的规则
+2. 选择您想要的具体权限
+3. 单击橙色 **撤销** 图标(圆形箭头)以还原更改
-When done, click **Finish**, then **Save** once redirected to the role page.
+完成后,单击 **完成**,然后在重定向到角色页面后单击 **保存**。
-### Workspace Settings Permissions
+### 工作区设置权限
-Control access to workspace settings in two ways:
+有两种方式控制对工作区设置的访问:
-* Toggle **Settings All Access** to grant full access
-* Or enable specific permissions (e.g., API key generation, workspace preferences, role assignment, data model configuration, security settings, and workflow management)
+* 切换 **设置全访问** 以授予完全访问权限
+* 或者启用特定权限(例如,API 密钥生成、工作区首选项、角色分配、数据模型配置、安全设置和工作流管理)
- **Current limitation**: Access to workflow management is currently required to manually trigger workflows. This behavior may change in future releases.
+ **当前限制**:目前需要具有工作流管理的访问权限才能手动触发工作流。 此行为可能会在未来的版本中发生变化。
-### Workspace Action Permissions
+### 工作区操作权限
-Control access to general workspace actions:
+控制对一般工作区操作的访问:
-* Toggle **Application All Access** to grant full permissions
-* Or enable individual actions such as **Send Email**, **Import CSV**, and **Export CSV**
+* 切换 **应用全访问** 以授予所有权限
+* 或者启用个人操作,例如 **发送电子邮件**、**导入 CSV** 和 **导出 CSV**
-## Assigning Roles to API Keys and AI Agents
+## 将角色分配给 API 密钥和 AI 代理
-Beyond workspace members, roles can also be assigned to **API Keys** and **AI Agents**. This is particularly helpful for teams who want to control exactly "who" can do what in their workspace—including automated processes and integrations.
+除了工作区成员之外,还可以将角色分配给 **API Keys** 和 **AI Agents**。 这对于希望精确控制在其工作区中 "谁" 可以执行哪些操作的团队特别有用——包括自动化流程和集成。
-### Why Assign Roles to API Keys and AI Agents?
+### 为什么要将角色分配给 API 密钥和 AI 代理?
-* **Security**: Limit what automated processes can access or modify
-* **Compliance**: Ensure integrations only touch the data they need
-* **Control**: Prevent accidental data changes from misconfigured automations
-* **Auditability**: Track which actions were performed by which integration or agent
+* **安全性**:限制自动化流程可以访问或修改的内容
+* **合规性**:确保集成仅接触其所需的数据
+* **可控性**:防止因自动化配置错误而导致的数据意外更改
+* **可审计性**:追踪由哪个集成或代理执行了哪些操作
-### Assign a Role to an API Key
+### 将角色分配给 API 密钥
-1. Go to **Settings → Roles**
-2. Click on the role you want to assign
-3. Open the **Assignment** tab
-4. Under **API Keys**, click **+ Assign to API key**
-5. Select the API key from the list
-6. Confirm the assignment
+1. 进入 **设置 → 角色**
+2. 单击您要分配的角色
+3. 打开 **分配** 选项卡
+4. 在 **API Keys** 下,点击 **+ Assign to API key**
+5. 从列表中选择该 API 密钥
+6. 确认分配
-The API key will now inherit all permissions defined by that role. Any API calls made with this key will be restricted accordingly.
+该 API 密钥现在将继承该角色定义的所有权限。 使用该密钥发起的任何 API 调用都将相应受限。
- API keys without an assigned role use default permissions. For tighter security, always assign a specific role to production API keys.
+ 未分配角色的 API 密钥将使用默认权限。 为提高安全性,请始终为生产环境的 API 密钥分配特定角色。
-### Assign a Role to an AI Agent
+### 将角色分配给 AI 代理
-1. Go to **Settings → Roles**
-2. Click on the role you want to assign
-3. Open the **Assignment** tab
-4. Under **AI Agents**, click **+ Assign to AI agent**
-5. Select the AI agent from the list
-6. Confirm the assignment
+1. 进入 **设置 → 角色**
+2. 单击您要分配的角色
+3. 打开 **分配** 选项卡
+4. 在 **AI Agents** 下,点击 **+ Assign to AI agent**
+5. 从列表中选择该 AI 代理
+6. 确认分配
-The AI agent will only be able to access data and perform actions allowed by its assigned role.
+该 AI 代理只能访问其被分配角色所允许的数据并执行相应操作。
- For AI agents running within workflows, this ensures the agent cannot access or modify data outside its intended scope—even if the workflow has broader permissions.
+ 对于在工作流中运行的 AI 代理,这可确保其无法访问或修改超出其预期范围的数据——即使该工作流具有更广泛的权限。
diff --git a/packages/twenty-docs/l/zh/user-guide/permissions-access/capabilities/sso-configuration.mdx b/packages/twenty-docs/l/zh/user-guide/permissions-access/capabilities/sso-configuration.mdx
index 310c161605..49be26d53f 100644
--- a/packages/twenty-docs/l/zh/user-guide/permissions-access/capabilities/sso-configuration.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/permissions-access/capabilities/sso-configuration.mdx
@@ -1,125 +1,125 @@
---
-title: SSO Configuration
-description: Configure Single Sign-On for secure enterprise authentication.
+title: SSO 配置
+description: 配置单点登录(SSO),以实现安全的企业级身份验证。
---
-## About SSO
+## 关于 SSO
-Single Sign-On (SSO) allows your team members to log into Twenty using your organization's identity provider. This provides:
+单点登录(SSO)允许您的团队成员使用您组织的身份提供商登录 Twenty。 这将提供:
-* **Centralized access control**: Manage access from one place
-* **Enhanced security**: Leverage your existing security policies
-* **Better user experience**: One set of credentials for all tools
+* **集中式访问控制**:在一个位置管理访问
+* **增强的安全性**:利用您现有的安全策略
+* **更佳的用户体验**:一组凭据适用于所有工具
-## Supported Providers
+## 支持的提供商
-Twenty supports SSO with:
+Twenty 支持以下 SSO:
-* **SAML 2.0**: Works with most enterprise identity providers
-* **Google Workspace**: For organizations using Google
-* **Microsoft Entra ID**: (formerly Azure AD) For Microsoft environments
+* **SAML 2.0**:适用于大多数企业身份提供商
+* **Google Workspace**:适用于使用 Google 的组织
+* **Microsoft Entra ID**(原 Azure AD):适用于 Microsoft 环境
-## Setting Up SSO
+## 设置 SSO
-### Prerequisites
+### 先决条件
-* Organization plan (cloud and self-hosted workspaces)
-* Admin access to your identity provider
-* Admin access to Twenty workspace
+* 组织计划(云端和自托管工作区)
+* 对您的身份提供商的管理员访问权限
+* 对 Twenty 工作区的管理员访问权限
- **For self-hosting users willing to set up SSO**, reach out to contact@twenty.com
+ **对于希望设置 SSO 的自托管用户**,请联系 contact@twenty.com
-### Configuration Steps
+### 配置步骤
-#### 1. Access SSO Settings
+#### 1. 访问 SSO 设置
-1. Go to **Settings → Security**
-2. Find the **SSO Configuration** section
-3. Click **Configure SSO**
+1. 转到 **设置 → 安全**
+2. 找到 **SSO 配置** 部分
+3. 点击 **配置 SSO**
-#### 2) Choose Your Provider
+#### 2) 选择服务提供商
-Select your identity provider from the list or choose "Custom SAML" for other providers.
+从列表中选择您的身份提供商,或为其他提供商选择“Custom SAML”。
-#### 3. Configure Your Identity Provider
+#### 3. 配置您的身份提供商
-You'll need to configure your identity provider with:
+您需要为身份提供商配置以下内容:
-* **Entity ID**: Provided by Twenty
-* **ACS URL**: The callback URL for authentication
-* **Certificate**: For secure communication
+* **实体 ID**:由 Twenty 提供
+* **ACS URL**:用于身份验证的回调 URL
+* **证书**:用于安全通信
-#### 4. Enter Provider Details in Twenty
+#### 4. 在 Twenty 中输入提供商详细信息
-* **SSO URL**: Login URL from your provider
-* **Entity ID**: Your provider's identifier
-* **Certificate**: X.509 certificate from your provider
+* **SSO URL**:来自您的提供商的登录 URL
+* **实体 ID**:您的提供商的标识符
+* **证书**:来自您的提供商的 X.509 证书
-#### 5. Test and Enable
+#### 5. 测试并启用
-1. Click **Test Configuration** to verify setup
-2. Enable SSO when testing is successful
-3. Configure user provisioning preferences
+1. 点击 **测试配置** 以验证设置
+2. 测试成功后启用 SSO
+3. 配置用户预配偏好设置
-## User Provisioning
+## 用户预配
-### Just-in-Time (JIT) Provisioning
+### 即时(JIT)预配
-* Users are created automatically on first login
-* Assigned default role automatically
-* No manual user creation needed
+* 用户在首次登录时自动创建
+* 自动分配默认角色
+* 无需手动创建用户
-### Manual Provisioning
+### 手动预配
-* Invite users before they can log in
-* Pre-assign specific roles
-* More control over who can access
+* 在登录前邀请用户
+* 预先分配特定角色
+* 更好地控制谁可以访问
-## Managing SSO Users
+## 管理 SSO 用户
-### Role Assignment
+### 角色分配
-SSO users can be assigned roles like regular users:
+与普通用户一样,可以为 SSO 用户分配角色:
-1. Go to **Settings → Members**
-2. Find the user
-3. Change their role as needed
+1. 转到 **设置 → 成员**
+2. 找到该用户
+3. 根据需要更改其角色
-### Access Revocation
+### 撤销访问权限
-To remove access for SSO users:
+要移除 SSO 用户的访问权限:
-* Remove them from your identity provider, or
-* Remove them from the Twenty workspace
+* 将其从您的身份提供商中移除,或
+* 将其从 Twenty 工作区中移除
-## Best Practices
+## 最佳实践
-### Security
+### 安全
-* **Require SSO**: Disable password login for SSO users
-* **Regular audits**: Review access periodically
-* **Strong IdP policies**: Enforce MFA at the identity provider
+* **要求使用 SSO**:为 SSO 用户禁用密码登录
+* **定期审计**:定期审查访问权限
+* **严格的 IdP 策略**:在身份提供商处强制执行 MFA
-### User Management
+### 用户管理
-* **Clear naming**: Use consistent naming from your directory
-* **Group mapping**: Map IdP groups to Twenty roles (if available)
-* **Offboarding process**: Include Twenty in your deprovisioning workflow
+* **清晰的命名**:使用与您的目录一致的命名
+* **组映射**:将 IdP 的组映射到 Twenty 角色(如可用)
+* **离职流程**:将 Twenty 纳入您的停用工作流
-## Troubleshooting
+## 故障排除
-### Common Issues
+### 常见问题
-* **Certificate errors**: Ensure certificate hasn't expired
-* **URL mismatches**: Verify ACS URL matches exactly
-* **User not found**: Check JIT provisioning settings
+* **证书错误**:确保证书未过期
+* **URL 不匹配**:验证 ACS URL 完全一致
+* **未找到用户**:检查 JIT 预配设置
-### Getting Help
+### 获取帮助
-If you encounter issues, contact support with:
+如果您遇到问题,请联系支持并提供:
-* Error messages received
-* Identity provider being used
-* Configuration details (without sensitive data)
+* 收到的错误消息
+* 所使用的身份提供商
+* 配置详情(不含敏感数据)
diff --git a/packages/twenty-docs/l/zh/user-guide/permissions-access/how-tos/permissions-faq.mdx b/packages/twenty-docs/l/zh/user-guide/permissions-access/how-tos/permissions-faq.mdx
index 6700b48297..023707917a 100644
--- a/packages/twenty-docs/l/zh/user-guide/permissions-access/how-tos/permissions-faq.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/permissions-access/how-tos/permissions-faq.mdx
@@ -1,126 +1,126 @@
---
-title: Permissions FAQ
-description: Frequently asked questions about roles and permissions.
+title: 权限常见问题
+description: 关于角色和权限的常见问题。
---
-## Roles
+## 角色
-
- Twenty comes with an **Admin** and **Member** roles by default. You can create additional custom roles based on your team's needs (e.g., Sales Rep, Manager, Read-Only User).
+
+ Twenty 默认提供 **管理员** 和 **成员** 角色。 您可以根据团队需求创建额外的自定义角色(例如:销售代表、经理、只读用户)。
-
- No, the Admin role cannot be deleted. There must always be at least one member assigned to the Admin role.
+
+ 不可以,无法删除管理员角色。 必须始终至少有一名成员被分配到管理员角色。
-
- Any workspace member assigned to that role will be automatically reassigned to the default role.
+
+ 任何分配了该角色的工作区成员都会自动重新分配到默认角色。
-
- Go to **Settings → Roles**, find the **Default Role** option, and select which role new members should automatically receive when they join.
+
+ 前往 **设置 → 角色**,找到 **默认角色** 选项,并选择新成员加入时应自动获得的角色。
-
- No, each user can only have one role at a time. Create a custom role if you need a combination of permissions.
+
+ 不可以,每个用户在同一时间只能拥有一个角色。 如果需要组合权限,请创建自定义角色。
-## Permissions
+## 权限
-
- * **Object permissions**: Control access to entire records (e.g., can see/edit/delete People records)
- * **Field permissions**: Control access to specific fields within an object (e.g., can see but not edit the Salary field)
+
+ * **对象权限**:控制对整条记录的访问(例如,是否可查看/编辑/删除 People 记录)
+ * **字段权限**:控制对象内特定字段的访问(例如,可查看但不能编辑 Salary 字段)
- Field permissions allow more granular control over sensitive data.
+ 字段权限可对敏感数据进行更细粒度的控制。
-
- Permissions cascade from global to specific:
+
+ 权限从全局到具体逐级生效:
- 1. **All Objects** sets the baseline for all objects
- 2. **Object-Level Permissions** can override the global setting for specific objects
- 3. **Field-Level Permissions** can override the object setting for specific fields
+ 1. **所有对象** 为所有对象设定基线。
+ 2. **对象级权限** 可覆盖特定对象的全局设置。
+ 3. **字段级权限** 可覆盖特定字段的对象级设置。
- More specific settings always take precedence.
+ 更具体的设置始终优先生效。
-
- For objects:
+
+ 针对对象:
- * **See Records**: View records in lists and detail pages
- * **Edit Records**: Modify existing records
- * **Delete Records**: Soft-delete records (can be restored)
- * **Destroy Records**: Permanently delete records
+ * **查看记录**:在列表和详情页中查看记录
+ * **编辑记录**:修改现有记录
+ * **删除记录**:软删除记录(可恢复)
+ * **彻底删除记录**:永久删除记录
- For fields:
+ 针对字段:
- * **See Field**: View the field value
- * **Edit Field**: Modify the field value
- * **No Access**: Field is completely hidden
+ * **查看字段**:查看该字段的值
+ * **编辑字段**:修改该字段的值
+ * **无访问权限**:该字段将被完全隐藏
-
- Row-level permissions will be available on the **Organization** plan by Q1 2026. This allows you to restrict access to specific records based on criteria (e.g., only see your own opportunities).
+
+ 行级权限将在 2026 年第一季度于 **Organization** 方案中提供。 这将允许您根据条件限制对特定记录的访问(例如,仅查看自己的商机)。
-
- 1. Go to **Settings → Roles**
- 2. Select the role
- 3. Navigate to the object containing the field
- 4. Set the field permission to **See Field** (without Edit Field)
+
+ 1. 进入 **设置 → 角色**
+ 2. 选择角色
+ 3. 导航到包含该字段的对象
+ 4. 将字段权限设置为 **查看字段**(不启用“编辑字段”)
-## Settings & Actions
+## 设置与操作
-
- You can control access to:
+
+ 您可以控制对以下内容的访问:
- * API key generation
- * Workspace preferences
- * Role assignment
- * Data model configuration
- * Security settings
- * Workflow management
+ * API 密钥生成
+ * 工作区首选项
+ * 角色分配
+ * 数据模型配置
+ * 安全设置
+ * 工作流管理
- Use **Settings All Access** to grant full access, or enable specific permissions.
+ 使用 **Settings All Access** 授予完全访问权限,或仅启用特定权限。
-
- You can control:
+
+ 您可以控制:
- * **Send Email**: Ability to send emails from Twenty
- * **Import CSV**: Ability to import data via CSV
- * **Export CSV**: Ability to export data to CSV
+ * **发送电子邮件**:可从 Twenty 发送邮件
+ * **导入 CSV**:可通过 CSV 导入数据
+ * **导出 CSV**:可导出数据为 CSV
- Use **Application All Access** to grant all actions, or enable specific ones.
+ 使用 **Application All Access** 授予所有操作权限,或仅启用特定操作。
## SSO
-
- No, SSO is a Premium feature available on the **Organization** plan only.
+
+ 不,SSO 是高级功能,仅在 **Organization** 方案中提供。
-
- Twenty supports:
+
+ Twenty 支持:
- * **SAML 2.0** (works with most enterprise identity providers)
+ * **SAML 2.0**(适用于大多数企业身份提供商)
* **Google Workspace**
- * **Microsoft Entra ID** (formerly Azure AD)
+ * **Microsoft Entra ID**(原 Azure AD)
-
- With JIT provisioning, user accounts are automatically created in Twenty when someone logs in via SSO for the first time. They're assigned the default role automatically.
+
+ 启用 JIT 预配后,用户首次通过 SSO 登录时,会在 Twenty 中自动创建其账户。 系统会自动为其分配默认角色。
-
- Yes, once SSO is configured, you can disable password login for SSO users to enforce authentication through your identity provider.
+
+ 可以。配置好 SSO 后,您可以为 SSO 用户禁用密码登录,以强制其通过您的身份提供商进行身份验证。
diff --git a/packages/twenty-docs/l/zh/user-guide/permissions-access/overview.mdx b/packages/twenty-docs/l/zh/user-guide/permissions-access/overview.mdx
index fb3d2ca5dd..88b0648e83 100644
--- a/packages/twenty-docs/l/zh/user-guide/permissions-access/overview.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/permissions-access/overview.mdx
@@ -1,40 +1,40 @@
---
-title: Permissions & Access
-description: Manage roles, permissions, and access control in your workspace.
+title: 权限与访问
+description: 在您的工作区中管理角色、权限和访问控制。
---
-
+
-Twenty's permission system lets you control who can access and modify data in your workspace. Create roles, assign permissions, and configure SSO for secure access.
+Twenty 的权限系统使您能够控制谁可以在您的工作区中访问和修改数据。 创建角色、分配权限,并配置 SSO 以实现安全访问。
-## What's in this section
+## 本节内容
-
- Create roles and configure object, field, and settings permissions.
+
+ 创建角色并配置对象、字段和设置权限。
-
- Set up Single Sign-On with your identity provider.
+
+ 使用您的身份提供商设置单点登录(SSO)。
-
- Common questions about roles, permissions, and SSO.
+
+ 关于角色、权限和 SSO 的常见问题。
-## Key features
+## 关键功能
-* **Role-based access**: Create custom roles with specific permissions
-* **Object permissions**: Control who can view, edit, or delete records
-* **Field permissions**: Restrict access to sensitive fields
-* **Settings permissions**: Control access to workspace configuration
-* **SSO integration**: Configure single sign-on for enterprise security (Organization plan)
+* **基于角色的访问**:创建具有特定权限的自定义角色
+* **对象权限**:控制谁可以查看、编辑或删除记录
+* **字段权限**:限制对敏感字段的访问
+* **设置权限**:控制对工作区配置的访问
+* **SSO 集成**:为企业安全配置单点登录(Organization 计划)
-## Quick links
+## 快速链接
-* [Create a role](/l/zh/user-guide/permissions-access/capabilities/permissions#create-a-role)
-* [Configure SSO](/l/zh/user-guide/permissions-access/capabilities/sso-configuration)
-* [Manage team members](/l/zh/user-guide/settings/capabilities/member-management)
+* [创建角色](/l/zh/user-guide/permissions-access/capabilities/permissions#create-a-role)
+* [配置 SSO](/l/zh/user-guide/permissions-access/capabilities/sso-configuration)
+* [管理团队成员](/l/zh/user-guide/settings/capabilities/member-management)
diff --git a/packages/twenty-docs/l/zh/user-guide/settings/capabilities/domains-settings.mdx b/packages/twenty-docs/l/zh/user-guide/settings/capabilities/domains-settings.mdx
index b2c49c5ae2..f900b4c0a6 100644
--- a/packages/twenty-docs/l/zh/user-guide/settings/capabilities/domains-settings.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/settings/capabilities/domains-settings.mdx
@@ -9,7 +9,7 @@ Configure domain settings under **Settings → Domains**.
Edit your subdomain name or set a custom domain for your workspace.
-### Customize Domain
+### 自定义域名
1. Click **Customize Domain**
2. Edit your subdomain (e.g., `yourcompany.twenty.com`)
@@ -17,15 +17,15 @@ Edit your subdomain name or set a custom domain for your workspace.
For custom domains, you'll need to configure DNS settings with your domain provider.
-## Approved Domains
+## 批准的域名
Anyone with an email address at these domains is allowed to sign up for this workspace automatically.
-### Add Approved Access Domain
+### 添加批准的访问域
1. Click **Add Approved Access Domain**
2. Enter your company domain (e.g., `yourcompany.com`)
-3. Save
+3. 保存
Once configured, anyone with an email address at that domain can join your workspace without needing a direct invitation.
@@ -35,7 +35,7 @@ Once configured, anyone with an email address at that domain can join your works
## Public Domains
-Provision a complete and secure hosting environment on these domains.
+在这些域名上提供一个完整且安全的托管环境。
### Add Public Domain
diff --git a/packages/twenty-docs/l/zh/user-guide/settings/capabilities/experience-settings.mdx b/packages/twenty-docs/l/zh/user-guide/settings/capabilities/experience-settings.mdx
index e279f7d88b..560a61c6fb 100644
--- a/packages/twenty-docs/l/zh/user-guide/settings/capabilities/experience-settings.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/settings/capabilities/experience-settings.mdx
@@ -1,38 +1,38 @@
---
-title: Experience Settings
-description: Customize your interface theme and regional preferences.
+title: 体验设置
+description: 自定义界面主题和地区偏好。
---
-Personalize your Twenty experience under **Settings → Experience**.
+在 **设置 → 体验** 中个性化您的 Twenty 体验。
-## Appearance
+## 外观
-Choose your visual theme:
+选择您的外观主题:
-* **Light**: Clean, bright interface
-* **Dark**: Easier on the eyes in low-light conditions
-* **System settings**: Automatically matches your device's theme
+* **浅色**:清爽明亮的界面
+* **深色**:在低光照条件下对眼睛更友好
+* **系统设置**:自动匹配您设备的主题
-## Language
+## 语言
-Select your preferred language for the Twenty interface from the dropdown menu.
+从下拉菜单中选择您在 Twenty 界面中偏好的语言。
-## Formats
+## 格式
-Configure date, time, number, timezone, and calendar start day.
+配置日期、时间、数字、时区和日历开始日。
-| Setting | Description |
-| ---------------------- | ---------------------------------------------------------- |
-| **Time zone** | Your local timezone for accurate timestamps and scheduling |
-| **Date format** | How dates appear (e.g., Dec 12, 2025) |
-| **Time format** | 12-hour (7:22 PM) or 24-hour format |
-| **Number format** | Decimal and thousands separators (e.g., 1,234.56) |
-| **Calendar start day** | First day of the week (Sunday or Monday) |
+| 设置 | 描述 |
+| --------- | ---------------------------- |
+| **时区** | 您的本地时区,用于确保时间戳和日程安排的准确性 |
+| **日期格式** | 日期的显示方式(例如:2025 年 12 月 12 日) |
+| **时间格式** | 12 小时制(下午 7:22)或 24 小时制 |
+| **数字格式** | 小数和千位分隔符(例如:1,234.56) |
+| **日历开始日** | 一周的第一天(周日或周一) |
-Each setting can be set to **System settings** to automatically match your device preferences, or you can choose a specific format.
+每个设置都可以设为**系统设置**以自动匹配您设备的偏好,或者您可以选择特定的格式。
-## How to Update
+## 如何更新
-1. Go to **Settings → Experience**
-2. Adjust your preferences in each section
-3. Changes save automatically
+1. 进入 **设置 → 体验**
+2. 在各个部分中调整偏好
+3. 更改会自动保存
diff --git a/packages/twenty-docs/l/zh/user-guide/settings/capabilities/member-management.mdx b/packages/twenty-docs/l/zh/user-guide/settings/capabilities/member-management.mdx
index c7fd84ee85..7ad686f02b 100644
--- a/packages/twenty-docs/l/zh/user-guide/settings/capabilities/member-management.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/settings/capabilities/member-management.mdx
@@ -1,87 +1,87 @@
---
-title: Member Management
-description: Invite team members and manage workspace access.
+title: 成员管理
+description: 邀请团队成员并管理工作区访问权限。
---
-Manage who has access to your workspace under **Settings → Members**.
+在 **设置 → 成员** 下管理谁可以访问您的工作区。
-## Invite New Members
+## 邀请新成员
-### Using Email Invitation
+### 使用电子邮件邀请
-1. Go to **Settings → Members**
-2. Click **+ Invite**
-3. Enter the person's email address
-4. Select a role for the new member
-5. Click **Send invite**
+1. 转到 **设置 → 成员**
+2. 点击 **+ 邀请**
+3. 输入该人的电子邮件地址
+4. 为新成员选择一个角色
+5. 点击 **发送邀请**
-The invited person will receive an email with a link to join your workspace.
+受邀者将收到一封包含用于加入您工作区的链接的电子邮件。
-### Using Invite Link
+### 使用邀请链接
-1. Go to **Settings → Members**
-2. Copy the workspace invite link
-3. Share the link with new team members
-4. They'll receive access once they sign up
+1. 转到 **设置 → 成员**
+2. 复制工作区邀请链接
+3. 与新团队成员分享链接
+4. 注册后他们将获得访问权限
-## View and Manage Members
+## 查看并管理成员
-### View All Members
+### 查看所有成员
-Go to **Settings → Members** to see:
+转到 **设置 → 成员** 以查看:
-* All active members
-* Pending invitations
+* 所有活跃成员
+* 待处理的邀请
-### Edit a Member's Profile
+### 编辑成员的个人资料
-Click on a member to open their profile page. As an admin, you can:
+点击某位成员以打开其个人资料页面。 作为管理员,您可以:
-* Edit their **name**
-* Update their **profile picture**
-* **Impersonate** their account (useful for troubleshooting)
-* **Delete** their account
+* 编辑其**姓名**
+* 更新其**头像**
+* **模拟登录**其账户(有助于故障排查)
+* **删除**其账户
-### Change a Member's Role
+### 更改成员角色
-On the member's profile page:
+在该成员的个人资料页面上:
-1. Open the **Permissions** tab
-2. View the currently assigned role
-3. Select a different role from the dropdown
-4. The change takes effect immediately
+1. 打开 **权限** 选项卡
+2. 查看当前分配的角色
+3. 从下拉菜单中选择不同的角色
+4. 更改将立即生效
-→ [Learn more about roles and permissions](/l/zh/user-guide/permissions-access/capabilities/permissions)
+→ [了解角色与权限的更多信息](/l/zh/user-guide/permissions-access/capabilities/permissions)
-### Remove a Member
+### 移除成员
-1. Click on the member to open their profile
-2. Click **Delete** to remove them from the workspace
+1. 点击该成员以打开其个人资料
+2. 点击 **删除**,将其从工作区移除
- Removed members lose access immediately. Their data (records, notes, tasks) remains in the workspace.
+ 被移除的成员将立即失去访问权限。 其数据(记录、备注、任务)将保留在工作区中。
- **Email sync is also removed.** If the deleted user was the only one who synced certain emails, those emails will be permanently removed from the workspace.
+ **电子邮件同步也会被移除。** 如果被删除的用户是唯一同步某些邮件的人,这些邮件将从工作区中永久移除。
-## Pending Invitations
+## 待处理的邀请
-Manage invitations that haven't been accepted:
+管理尚未被接受的邀请:
-* **Resend**: Send the invitation email again
-* **Cancel**: Revoke the invitation before it's accepted
+* **重新发送**:再次发送邀请邮件
+* **取消**:在被接受之前撤销该邀请
-## Approved Access Domains
+## 批准的访问域
-Allow team members to join automatically based on their email domain:
+根据其电子邮件域允许团队成员自动加入:
-1. Go to **Settings → Domains**
-2. Add your company domain (e.g., `yourcompany.com`)
-3. Anyone with that email domain can join without an invitation
+1. 前往 **设置 → 域**
+2. 添加您公司的域名(例如,`yourcompany.com`)
+3. 使用该电子邮件域的任何人都可无需邀请加入。
-## Related
+## 相关内容
-* [Permissions](/l/zh/user-guide/permissions-access/capabilities/permissions) — configure what each role can do
-* [Domains Settings](/l/zh/user-guide/settings/capabilities/domains-settings) — configure approved domains
+* [权限](/l/zh/user-guide/permissions-access/capabilities/permissions) — 配置每个角色可以执行的操作
+* [域名设置](/l/zh/user-guide/settings/capabilities/domains-settings) — 配置已批准的域名
diff --git a/packages/twenty-docs/l/zh/user-guide/settings/capabilities/profile-settings.mdx b/packages/twenty-docs/l/zh/user-guide/settings/capabilities/profile-settings.mdx
index febfa4a86f..fe9c5618e1 100644
--- a/packages/twenty-docs/l/zh/user-guide/settings/capabilities/profile-settings.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/settings/capabilities/profile-settings.mdx
@@ -1,43 +1,43 @@
---
-title: Profile Settings
-description: Manage your personal profile and security settings.
+title: 个人资料设置
+description: 管理您的个人资料和安全设置。
---
-## Personal Information
+## 个人信息
-### Name and Email
+### 姓名和邮箱
-* **Display Name**: Update how your name appears to other workspace members
-* **Email Address**: Change your login email (requires verification)
-* **Profile Picture**: Upload a custom avatar or use your initials
+* **显示名称**:更新您的姓名对其他工作空间成员的显示方式
+* **电子邮件地址**:更改您的登录电子邮件(需要验证)
+* **个人头像**:上传自定义头像或使用您的姓名首字母
-## Security Settings
+## 安全设置
-### Two-Factor Authentication (2FA)
+### 双因素认证 (2FA)
-Enable 2FA to add an extra layer of security to your account:
+启用 2FA 为您的帐户增加一个额外的安全层:
-1. Go to **Settings → Profile Settings**
-2. Click **Enable 2FA**
-3. Scan the QR code with your authenticator app
-4. Enter the verification code to confirm
+1. 转到 **设置 → 个人资料设置**
+2. 单击 **启用 2FA**
+3. 使用您的身份验证应用扫描 QR 码
+4. 输入验证码以确认
-### Password Management
+### 密码管理
-* **Change Password**: Update your current password
-* **Password Requirements**: Must be at least 8 characters long
+* **更改密码**:更新您当前的密码
+* **密码要求**:至少 8 个字符
-## Profile Management
+## 个人资料管理
-### Delete Account
+### 删除帐户
- Deleting your account will permanently remove your access to all workspaces. This action cannot be undone, you'll lose access to all workspaces where you're a member, and you should consider leaving individual workspaces instead if you only want to exit specific teams.
+ 删除您的帐户将永久移除您对所有工作空间的访问权限。 此操作无法撤销。您将失去对所有工作空间的访问权限。如果您只想退出特定团队,您应该考虑单独退出工作空间。
-To delete your account:
+要删除您的帐户:
-1. Go to **Settings → Profile Settings**
-2. Scroll to **Danger Zone**
-3. Click **Delete Account**
-4. Confirm by typing your email address
+1. 转到 **设置 → 个人资料设置**
+2. 滚动至 **危险区**
+3. 单击 **删除帐户**
+4. 输入您的电子邮箱地址以确认
diff --git a/packages/twenty-docs/l/zh/user-guide/settings/capabilities/updates-settings.mdx b/packages/twenty-docs/l/zh/user-guide/settings/capabilities/updates-settings.mdx
new file mode 100644
index 0000000000..49b4083acb
--- /dev/null
+++ b/packages/twenty-docs/l/zh/user-guide/settings/capabilities/updates-settings.mdx
@@ -0,0 +1,36 @@
+---
+title: 更新设置
+description: 在 Twenty 中启用早期访问功能。
+---
+
+## 关于更新设置
+
+“更新”部分允许您在它们普遍可用之前启用早期访问功能。
+
+## 早期访问功能
+
+早期访问功能是在全面可用之前仍在测试的功能。
+
+**当前处于早期访问:**
+
+* **仪表板** — 可视化报表与分析
+
+### 如何启用早期访问功能
+
+1. 进入 **设置 → 更新**
+2. 转到 **早期访问** 部分
+3. 找到您想要启用的功能
+4. 将其切换为开启
+5. 该功能将立即可用
+
+
+ 早期访问功能可能会根据用户反馈而改变。 您的反馈有助于我们改进 Twenty!
+
+
+## 功能反馈
+
+您的反馈有助于改进 Twenty:
+
+* 报告早期访问功能的问题
+* 分享您如何使用新功能
+* 通过社区 Discord 提出改进建议
diff --git a/packages/twenty-docs/l/zh/user-guide/settings/capabilities/workspace-settings.mdx b/packages/twenty-docs/l/zh/user-guide/settings/capabilities/workspace-settings.mdx
index f72f71a814..8978a8eb9a 100644
--- a/packages/twenty-docs/l/zh/user-guide/settings/capabilities/workspace-settings.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/settings/capabilities/workspace-settings.mdx
@@ -1,30 +1,30 @@
---
-title: Workspace Settings
-description: Customize your workspace name and branding.
+title: 工作区设置
+description: 自定义您的工作区名称和品牌。
---
-Those are accessible under **Settings → General**.
+这些可在 **设置 → 常规** 中访问。
-## Workspace Picture
+## 工作区图片
-* **Upload Logo**: Add a custom workspace logo
-* **Supported formats**: PNG, JPEG, and GIF files under 10MB
-* **Remove**: Delete the current workspace logo
+* **上传徽标**:添加自定义工作区徽标
+* **支持格式**:PNG、JPEG 和小于 10MB 的 GIF 文件
+* **移除**:删除当前工作区徽标
-## Workspace Name
+## 工作区名称
-* **Name**: Change your workspace display name
-* This name appears to all workspace members
+* **名称**:更改您的工作区显示名称
+* 此名称将显示给所有工作区成员
-## Danger Zone
+## 危险区
- Deleting your workspace permanently removes all data and cannot be undone. All workspace data will be lost forever, all members will lose access immediately, and this action cannot be reversed.
+ 删除工作区将永久删除所有数据,且无法撤销。 所有工作区数据将永久丢失,所有成员将立即失去访问权限,此操作无法撤销。
-To delete your workspace:
+要删除您的工作区:
-1. Click **Delete workspace** button
-2. Confirm the deletion when prompted
+1. 点击 **删除工作区** 按钮
+2. 出现提示时确认删除
-**Note**: Only workspace administrators can delete workspaces.
+**注意**:只有工作区管理员可以删除工作区。
diff --git a/packages/twenty-docs/l/zh/user-guide/settings/how-tos/settings-faq.mdx b/packages/twenty-docs/l/zh/user-guide/settings/how-tos/settings-faq.mdx
index 19aa50e5a0..ab692dfd58 100644
--- a/packages/twenty-docs/l/zh/user-guide/settings/how-tos/settings-faq.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/settings/how-tos/settings-faq.mdx
@@ -1,171 +1,171 @@
---
-title: Settings FAQ
-description: Frequently asked questions about Twenty settings.
+title: 设置FAQ
+description: 关于 Twenty 设置的常见问题。
image: /images/user-guide/setup/settings.png
---
-## Workspace Settings
+## 工作区设置
-
- 1. Go to **Settings → General**
- 2. Find the Workspace Name field
- 3. Enter your new name
- 4. Changes save automatically
+
+ 1. 转到 **设置 → 常规**
+ 2. 找到“工作空间名称”字段
+ 3. 输入您的新名称
+ 4. 更改会自动保存
-
- 1. Go to **Settings → General**
- 2. Click on the current logo or upload area
- 3. Select an image file (PNG, JPEG, or GIF under 10MB)
- 4. The logo updates immediately
+
+ 1. 转到 **设置 → 常规**
+ 2. 点击当前徽标或上传区域
+ 3. 选择图像文件(PNG、JPEG 或 GIF,大小小于 10MB)
+ 4. 徽标会立即更新
-
- Yes, you can create and be a member of multiple workspaces. Each workspace has its own data, settings, and subscription.
+
+ 可以,您可以创建并成为多个工作空间的成员。 每个工作空间都有自己独立的数据、设置和订阅。
-
- 1. Go to **Settings → General**
- 2. Scroll to Danger Zone
- 3. Click **Delete workspace**
- 4. Confirm the deletion
+
+ 1. 转到 **设置 → 常规**
+ 2. 滚动到危险区域
+ 3. 点击 **删除工作空间**
+ 4. 确认删除
- Note: This permanently deletes all data and cannot be undone.
+ 注意:此操作将永久删除所有数据,且无法撤销。
-
- Delete the workspaces you no longer need under **Settings → General → Delete workspace**.
+
+ 在 **设置 → 常规 → 删除工作空间** 中删除不再需要的工作空间。
- Do not delete your **account** (accessible under Settings → Profile): your account is shared among all your workspaces. Deleting your account removes access to ALL workspaces.
+ 不要删除您的 **账户**(可在 设置 → 个人资料 下访问):您的账户在所有工作空间中共享。 删除您的账户会移除您对所有工作空间的访问权限。
-
- If you want to temporarily disable your workspace (not permanently delete it), go to **Settings → Billing** and click **Cancel Plan**. Your data will be preserved for a grace period.
+
+ 如果您想暂时禁用您的工作空间(而非永久删除),请前往 **设置 → 账单** 并点击 **取消计划**。 您的数据将在宽限期内保留。
-## Profile Settings
+## 个人资料设置
-
- 1. Go to **Settings → Profile**
- 2. Find the Password section
- 3. Enter your current password
- 4. Enter your new password
- 5. Save changes
+
+ 1. 转到 **设置 → 个人资料**
+ 2. 找到“密码”部分
+ 3. 输入您的当前密码
+ 4. 输入您的新密码
+ 5. 保存更改
-
- 1. Go to **Settings → Profile**
- 2. Find the 2FA section
- 3. Click **Enable 2FA**
- 4. Scan the QR code with your authenticator app
- 5. Enter the verification code
+
+ 1. 转到 **设置 → 个人资料**
+ 2. 找到“2FA”部分
+ 3. 单击 **启用 2FA**
+ 4. 使用您的身份验证应用扫描 QR 码
+ 5. 输入验证码
-
- To change your email address, please reach out to [contact@twenty.com](mailto:contact@twenty.com).
+
+ 若要更改您的电子邮件地址,请联系 [contact@twenty.com](mailto:contact@twenty.com)。
-
- 1. Go to **Settings → Profile**
- 2. Scroll to Danger Zone
- 3. Click **Delete Account**
- 4. Confirm by typing your email
+
+ 1. 转到 **设置 → 个人资料**
+ 2. 滚动到危险区域
+ 3. 单击 **删除帐户**
+ 4. 输入您的电子邮件地址以确认
- Note: This removes your access to all workspaces and deletes all emails synced from your connected accounts.
+ 注意:此操作会移除您对所有工作空间的访问权限,并删除从已连接账户同步的所有电子邮件。
-## Experience Settings
+## 体验设置
-
- 1. Go to **Settings → Experience**
- 2. Find the Theme section
- 3. Select Light, Dark, or System
+
+ 1. 转到 **设置 → 体验**
+ 2. 找到“主题”部分
+ 3. 选择浅色、深色或系统
-
- 1. Go to **Settings → Experience**
- 2. Find Date Format
- 3. Select your preferred format
- 4. Changes apply immediately
+
+ 1. 转到 **设置 → 体验**
+ 2. 找到“日期格式”
+ 3. 选择您偏好的格式
+ 4. 更改会立即生效
-
- 1. Go to **Settings → Experience**
- 2. Find Time Zone
- 3. Select your local time zone
- 4. All timestamps will adjust
+
+ 1. 转到 **设置 → 体验**
+ 2. 找到“时区”
+ 3. 选择您所在的时区
+ 4. 所有时间戳都会相应调整
-
- 1. Go to **Settings → Experience**
- 2. Find Language
- 3. Select from available languages
- 4. The interface updates to your selection
+
+ 1. 转到 **设置 → 体验**
+ 2. 找到“语言”
+ 3. 从可用语言中进行选择
+ 4. 界面将根据您的选择进行更新
-## Account Settings
+## 账户设置
-
- 1. Go to **Settings → Accounts**
- 2. Click **Add account**
- 3. Choose Google or Microsoft
- 4. Authorize access
- 5. Configure sync settings
+
+ 1. 转到 **设置 → 账户**
+ 2. 点击**添加账户**
+ 3. 选择 Google 或 Microsoft
+ 4. 授权访问
+ 5. 配置同步设置
-
- Yes, you can connect multiple email accounts. Go to **Settings → Accounts** and add additional accounts as needed.
+
+ 可以,您可以连接多个电子邮件账户。 转到 **设置 → 账户**,按需添加其他账户。
-
- 1. Go to **Settings → Accounts**
- 2. Find the account to remove
- 3. Click **Disconnect**
- 4. Confirm the action
+
+ 1. 转到 **设置 → 账户**
+ 2. 找到要移除的账户
+ 3. 点击 **断开连接**
+ 4. 确认该操作
-## Domains
+## 域名
-
- Yes! Go to **Settings → Domains** and click **Customize Domain**. You have two options:
+
+ 是! 转到 **设置 → 域名** 并点击 **自定义域名**。 您有两个选项:
- * **Subdomain**: Use a Twenty subdomain like `yourcompany.twenty.com`
- * **Custom domain**: Use your own domain like `crm.yourcompany.com` (requires DNS configuration)
+ * **子域名**:使用一个 Twenty 子域名,如 `yourcompany.twenty.com`
+ * **自定义域名**:使用您自己的域名,如 `crm.yourcompany.com`(需要 DNS 配置)
- A subdomain is quick to set up, while a custom domain provides a fully branded experience for your team.
+ 子域名设置快捷,而自定义域名可为您的团队提供完整的品牌化体验。
-
- You can configure approved access domains so team members with company email addresses can automatically join your workspace. Go to **Settings → Domains** and add your company domain (e.g., `yourcompany.com`).
+
+ 您可以配置批准的访问域名,使拥有公司电子邮件地址的团队成员能够自动加入您的工作空间。 转到 **设置 → 域名** 并添加您的公司域名(例如,`yourcompany.com`)。
-## Lab Features
+## 早期访问功能
-
- Lab features are experimental capabilities being tested before general release. They may change or be removed without notice.
+
+ 早期访问功能是在正式发布前进行测试的功能。 目前,只有**仪表板**处于早期访问阶段。 它们可能会根据用户反馈而改变。
-
- Lab features are functional but may have bugs or unexpected behavior. Use them cautiously in production environments.
+
+ 早期访问功能可正常使用,但可能会根据用户反馈而改变。 它们可以安全使用,但在正式发布之前可能会有所变化。
-
- 1. Go to **Settings → Releases → Lab**
- 2. Find the feature you want
- 3. Toggle it on
- 4. The feature becomes available immediately
+
+ 1. 前往 **设置 → 更新 → 早期访问**
+ 2. 找到您想要的功能
+ 3. 将其切换为开启
+ 4. 该功能将立即可用
diff --git a/packages/twenty-docs/l/zh/user-guide/settings/overview.mdx b/packages/twenty-docs/l/zh/user-guide/settings/overview.mdx
index 974134cd13..4bd89e9332 100644
--- a/packages/twenty-docs/l/zh/user-guide/settings/overview.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/settings/overview.mdx
@@ -1,67 +1,67 @@
---
-title: Settings
-description: Set up your Twenty workspace with essential configurations.
+title: 设置
+description: 通过关键配置来设置您的 Twenty 工作区。
image: /images/user-guide/setup/settings.png
---
-
+
-## Initial Setup
+## 初始设置
-When you first create your workspace, there are several key settings to configure.
+首次创建工作区时,需要配置一些关键设置。
-### Workspace Name and Logo
+### 工作区名称和徽标
-1. Go to **Settings → General**
-2. Update your workspace name
-3. Upload your company logo
-4. Save your changes
+1. 转到 **设置 → 常规**
+2. 更新您的工作区名称
+3. 上传您的公司徽标
+4. 保存更改
-### Time Zone and Date Format
+### 时区和日期格式
-1. Go to **Settings → Experience**
-2. Select your time zone
-3. Choose your preferred date format
-4. Save your changes
+1. 转到 **设置 → 体验**
+2. 选择您的时区
+3. 选择您首选的日期格式
+4. 保存更改
-## Essential Configurations
+## 关键配置
-### Connect Email and Calendar
+### 连接电子邮件和日历
-Set up email and calendar sync:
+设置电子邮件和日历同步:
-1. Go to **Settings → Accounts**
-2. Click **Add account**
-3. Connect your Google or Microsoft account
-4. Configure sync settings
+1. 转到 **设置 → 账户**
+2. 点击**添加账户**
+3. 连接您的 Google 或 Microsoft 账户
+4. 配置同步设置
-→ [Complete email & calendar setup guide](/l/zh/user-guide/calendar-emails/overview)
+→ [完整的电子邮件与日历设置指南](/l/zh/user-guide/calendar-emails/overview)
-### Invite Your Team
+### 邀请您的团队
-Add team members to your workspace:
+将团队成员添加到您的工作区:
-1. Go to **Settings → Members**
-2. Click **+ Invite**
-3. Enter email addresses
-4. Assign appropriate roles
+1. 转到 **设置 → 成员**
+2. 点击 **+ 邀请**
+3. 输入电子邮件地址
+4. 分配合适的角色
- Before inviting your team, check the default role under **Settings → Roles**. New members are automatically assigned this role when they join.
+ 在邀请团队之前,请在 **设置 → 角色** 中检查默认角色。 新成员加入时会自动被分配此角色。
-## Workspace Settings Checklist
+## 工作区设置清单
-* Workspace name and logo configured
-* Time zone and date format set
-* Email and calendar connected
-* Team members invited
-* Roles and permissions configured
+* 工作区名称和徽标已配置
+* 已设置时区和日期格式
+* 已连接电子邮件和日历
+* 已邀请团队成员
+* 已配置角色与权限
-## Next Steps
+## 下一步
-* [Workspace settings](/l/zh/user-guide/settings/capabilities/workspace-settings)
-* [Profile settings](/l/zh/user-guide/settings/capabilities/profile-settings)
-* [Experience settings](/l/zh/user-guide/settings/capabilities/experience-settings)
+* [工作区设置](/l/zh/user-guide/settings/capabilities/workspace-settings)
+* [个人资料设置](/l/zh/user-guide/settings/capabilities/profile-settings)
+* [体验设置](/l/zh/user-guide/settings/capabilities/experience-settings)
diff --git a/packages/twenty-docs/l/zh/user-guide/views-pipelines/capabilities/calendar-view.mdx b/packages/twenty-docs/l/zh/user-guide/views-pipelines/capabilities/calendar-view.mdx
index 84649f6e30..2356835683 100644
--- a/packages/twenty-docs/l/zh/user-guide/views-pipelines/capabilities/calendar-view.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/views-pipelines/capabilities/calendar-view.mdx
@@ -1,46 +1,46 @@
---
-title: Calendar View
-description: Display records with date fields on a calendar.
+title: 日历视图
+description: 在日历上显示带有日期字段的记录。
---
-## About Calendar View
+## 关于日历视图
-Calendar view displays your records on a calendar based on a date field. Each record appears as an event on the corresponding date.
+日历视图会根据某个日期字段在日历上显示您的记录。 每条记录会在相应日期显示为一个事件。
-## Creating a Calendar View
+## 创建日历视图
-1. Navigate to an object with date fields
-2. Click the view dropdown → **+ Add view**
-3. Name your view and click **Create**
-4. Open the **Options** on the right
-5. Select **Calendar** as the layout
-6. Choose the **date field** to use for positioning records
-7. Click **Update view**
+1. 导航到包含日期字段的对象
+2. 单击视图下拉菜单 → **+ 添加视图**
+3. 为视图命名并单击 **创建**
+4. 打开右侧的 **选项**
+5. 选择 **日历** 作为布局
+6. 选择用于定位记录的 **日期字段**
+7. 单击 **更新视图**
-## Configuring the Calendar
+## 配置日历
-### Choose the Date Field
+### 选择日期字段
-Under **Options**, select which date field determines where records appear on the calendar.
+在 **选项** 中,选择决定记录在日历上显示位置的日期字段。
-### Display Fields
+### 显示字段
-Configure which fields show on each calendar event:
+配置每个日历事件上显示的字段:
-1. Click **Options → Fields**
-2. Toggle fields on/off
-3. Drag to reorder
+1. 单击 **选项 → 字段**
+2. 切换字段开/关
+3. 拖动以重新排序
-## Use Cases
+## 使用场景
-* **Meetings and calls**: View upcoming appointments
-* **Deadlines**: Track due dates and close dates
-* **Events**: Plan and visualize scheduled activities
-* **Follow-ups**: See when tasks are due
+* **会议和通话**:查看即将到来的预约
+* **截止日期**:跟踪到期日期和关闭日期
+* **事件**:规划并可视化已安排的活动
+* **跟进**:查看任务的到期时间
-## Related
+## 相关内容
-* [Views Overview](/l/zh/user-guide/views-pipelines/overview) — creating and managing views
-* [Filters and Sorting](/l/zh/user-guide/views-pipelines/capabilities/filters-and-sorting) — filtering calendar data
+* [视图概览](/l/zh/user-guide/views-pipelines/overview) — 创建和管理视图
+* [筛选与排序](/l/zh/user-guide/views-pipelines/capabilities/filters-and-sorting) — 筛选日历数据
diff --git a/packages/twenty-docs/l/zh/user-guide/views-pipelines/capabilities/fields-and-columns.mdx b/packages/twenty-docs/l/zh/user-guide/views-pipelines/capabilities/fields-and-columns.mdx
index 4024621fcc..89ae22ba74 100644
--- a/packages/twenty-docs/l/zh/user-guide/views-pipelines/capabilities/fields-and-columns.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/views-pipelines/capabilities/fields-and-columns.mdx
@@ -1,52 +1,52 @@
---
-title: Fields & Columns
-description: Choose which fields to display and how to organize them.
+title: 字段与列
+description: 选择要显示的字段,并决定如何组织它们。
---
-## Selecting Fields to Display
+## 选择要显示的字段
-Each view can show a different set of fields. Customize what's visible to focus on the information that matters.
+每个视图都可以显示不同的字段集。 自定义可见内容,以专注于关键信息。
-### Show or Hide Fields
+### 显示或隐藏字段
-1. Click **Options** in the top right
-2. Click **Fields**
-3. Click the **eye icon** next to each field to show/hide it
+1. 点击右上角的 **选项**
+2. 点击 **字段**
+3. 点击每个字段旁的 **眼睛图标** 以显示或隐藏它
-### Reorder Fields
+### 重新排序字段
-Change the order fields appear in your view:
+更改字段在视图中的显示顺序:
-1. Click **Options → Fields**
-2. Drag fields up or down
-3. Changes save automatically
+1. 点击 **选项 → 字段**
+2. 上下拖动字段
+3. 更改会自动保存
-## Field Display by View Type
+## 按视图类型显示字段
-### Table Views
+### 表视图
-* Fields appear as columns
-* Resize columns by dragging borders
+* 字段显示为列
+* 通过拖动边框调整列宽
-### Kanban Views
+### 看板视图
-* Fields appear on cards
-* Reorder via Options → Fields
-* Use Compact view to hide all fields
+* 字段显示在卡片上
+* 通过选项 → 字段重新排序
+* 使用紧凑视图隐藏所有字段
-### Calendar Views
+### 日历视图
-* Selected fields show on calendar events
-* Configure via Options → Fields
+* 在日历事件中显示所选字段
+* 通过选项 → 字段进行配置
-## Best Practices
+## 最佳实践
-* **Show only what's needed** — too many fields clutters the view
-* **Put important fields first** — most-used columns on the left
-* **Create multiple views** — different field sets for different purposes
-* **Use field visibility per view** — same object, different focus
+* **只显示所需内容** — 过多字段会使视图杂乱
+* **将重要字段放在前面** — 最常用的列放在左侧
+* **创建多个视图** — 针对不同目的使用不同的字段集
+* **按视图设置字段可见性** — 同一对象,不同侧重
-## Related
+## 相关内容
-* [Table Views](/l/zh/user-guide/views-pipelines/capabilities/table-views) — list view features
-* [Kanban Views](/l/zh/user-guide/views-pipelines/capabilities/kanban-views) — card-based views
+* [表格视图](/l/zh/user-guide/views-pipelines/capabilities/table-views) — 列表视图功能
+* [看板视图](/l/zh/user-guide/views-pipelines/capabilities/kanban-views) — 基于卡片的视图
diff --git a/packages/twenty-docs/l/zh/user-guide/views-pipelines/capabilities/filters-and-sorting.mdx b/packages/twenty-docs/l/zh/user-guide/views-pipelines/capabilities/filters-and-sorting.mdx
index 7047b6c9f0..a89be0cc3a 100644
--- a/packages/twenty-docs/l/zh/user-guide/views-pipelines/capabilities/filters-and-sorting.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/views-pipelines/capabilities/filters-and-sorting.mdx
@@ -1,78 +1,78 @@
---
-title: Filters & Sorting
-description: Filter and sort records to find exactly what you need.
+title: 过滤与排序
+description: 过滤并排序记录,以准确找到您需要的内容。
---
-## Filtering Data
+## 过滤数据
-Filters help you focus on specific records by showing only those that match your criteria.
+过滤器通过仅显示符合您条件的记录,帮助您专注于特定记录。
-### Adding a Filter
+### 添加过滤器
-1. Click the **Filter** button in the toolbar
-2. Select the field to filter by
-3. Choose the operator (equals, contains, etc.)
-4. Enter the filter value
-5. Click **Apply**
+1. 点击工具栏中的 **过滤** 按钮
+2. 选择用于过滤的字段
+3. 选择运算符(等于、包含等)
+4. 输入过滤条件的值
+5. 点击 **应用**
-### Filter Operators
+### 过滤运算符
-| Field Type | Available Operators |
-| ---------- | -------------------------------------------------- |
-| Text | Equals, Contains, Starts with, Ends with, Is empty |
-| Number | Equals, Greater than, Less than, Between, Is empty |
-| Date | Equals, Before, After, Between, Is empty |
-| Select | Equals, Is any of, Is empty |
-| Checkbox | Is true, Is false |
-| Relation | Equals, Is empty |
+| 字段类型 | 可用的运算符 |
+| ---- | ------------------ |
+| 文本 | 等于、包含、以…开头、以…结尾、为空 |
+| 数字 | 等于、大于、小于、介于、为空 |
+| 日期 | 等于、早于、晚于、介于、为空 |
+| 选择 | 等于、属于以下任一、为空 |
+| 复选框 | 为真、为假 |
+| 关系 | 等于、为空 |
-### Multiple Filters
+### 多个过滤器
-Combine multiple filters to narrow down results:
+组合多个过滤器以缩小结果范围:
-* All filters are applied with AND logic
-* Each additional filter further restricts results
+* 所有过滤器均按 AND 逻辑应用
+* 每个额外的过滤器都会进一步限制结果
-### Removing Filters
+### 移除过滤器
-* Click the **X** on individual filter chips
-* Click **Clear all** to remove all filters
+* 点击单个过滤条件标签上的 **X**
+* 点击 **全部清除** 以移除所有过滤器
-## Sorting Data
+## 排序数据
-Sorting determines the order records appear.
+排序决定记录的显示顺序。
-### Adding a Sort
+### 添加排序
-1. Click the **Sort** button in the toolbar
-2. Select the field to sort by
-3. Choose ascending (A-Z, 0-9) or descending (Z-A, 9-0)
-4. Click **Apply**
+1. 点击工具栏中的 **排序** 按钮
+2. 选择用于排序的字段
+3. 选择升序(A-Z、0-9)或降序(Z-A、9-0)
+4. 点击 **应用**
-### Multiple Sorts
+### 多级排序
-Add multiple sort levels:
+添加多个排序级别:
-* First sort is primary
-* Subsequent sorts apply within groups of equal values
+* 第一个排序为主排序
+* 后续排序在相同值的分组内应用
-### Quick Column Sorting
+### 快速列排序
-Click any column header to sort:
+单击任意列标题进行排序:
-* First click: Ascending
-* Second click: Descending
-* Third click: Remove sort
+* 第一次点击:升序
+* 第二次点击:降序
+* 第三次点击:移除排序
-## Saving Filter and Sort Settings
+## 保存过滤与排序设置
-Filters and sorts are saved with the view:
+过滤与排序会随视图保存:
-1. Configure your filters and sorts
-2. Click **Save** to update the current view
-3. Or click **Save as new view** to create a variant
+1. 配置您的过滤与排序
+2. 点击 **保存** 以更新当前视图
+3. 或点击 **另存为新视图** 以创建一个变体
-## Related
+## 相关内容
-* [Table Views](/l/zh/user-guide/views-pipelines/capabilities/table-views) — group by feature
-* [Views Overview](/l/zh/user-guide/views-pipelines/overview) — building and managing views
+* [表格视图](/l/zh/user-guide/views-pipelines/capabilities/table-views) — 分组功能
+* [视图概览](/l/zh/user-guide/views-pipelines/overview) — 创建和管理视图
diff --git a/packages/twenty-docs/l/zh/user-guide/views-pipelines/capabilities/kanban-views.mdx b/packages/twenty-docs/l/zh/user-guide/views-pipelines/capabilities/kanban-views.mdx
index fa616d2f3d..ea5752dca2 100644
--- a/packages/twenty-docs/l/zh/user-guide/views-pipelines/capabilities/kanban-views.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/views-pipelines/capabilities/kanban-views.mdx
@@ -1,99 +1,99 @@
---
-title: Kanban Board Views
-description: Learn how to use Kanban views to visualize and manage your workflows.
+title: 看板视图
+description: 了解如何使用看板视图来可视化并管理您的工作流。
image: /images/user-guide/kanban-views/kanban.png
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-## About Kanban Views
+## 关于看板视图
-Kanban views visually map out process flows, where each column stands for a distinct stage and each card represents a record.
+看板视图以视觉方式映射出处理流程,其中每个列代表一个不同阶段,每个卡片代表一个记录。
-## Move Cards between Stages
+## 在阶段间移动卡片
-You can move each card between stages as it goes through your workflow by dragging and dropping. To proceed, hold your click on a card and move it to the next stage.
+您可以通过拖动来在工作流程中将卡片在阶段之间移动。 要继续,请在卡片上按住鼠标,将其移到下一个阶段。
-
+
-## Add and Delete Stages
+## 添加和删除阶段
-You can tailor your workflow to suit your needs using stages, which represent a value in a Select Field:
+您可以使用阶段来定制工作流以满足您的需求,这些阶段对应于选择字段中的一个值:
-### Add Stages
+### 添加阶段
-To add a stage, access the Select field settings by navigating to Settings > Data Model, selecting your object, and then the field your Kanban board depends on.
+要添加阶段,请通过导航到 设置 > 数据模型,选择您的对象,然后选择您的看板所依赖的字段,进入选择字段设置。
-
+
-### Remove Stages
+### 移除阶段
-To remove a stage, hover the stage name or the `⋮` icon, click `Edit from settings` in the Select field settings, and then click **Delete** next to the relevant stage.
+要删除阶段,悬停在阶段名称或 `⋮` 图标上,单击选择字段设置中的 `从设置编辑`,然后在相关阶段旁边单击 **删除**。
-## Display Fields
+## 显示字段
-You can configure your Kanban board to display some fields and hide others. To hide a field, click on **Options** on the top right, then on **Fields** to bring up the list of options. Look for the field needed in the Hidden Fields section and click on the eye button to display the field.
+您可以配置看板板以显示一些字段并隐藏其他字段。 要隐藏字段,请点击右上角的 **选项**,然后点击 **字段** 以打开选项列表。 在隐藏字段部分找到所需字段,然后点击眼睛图标以显示该字段。
-You can also rearrange the order of fields by holding down the field name and dragging it to where you want it.
+您还可以通过按住字段名称并将其拖到所需位置来重新排列字段顺序。
-## Compact View
+## 紧凑视图
-You can hide all the fields and get an overview of all records at a glance. To enable:
+您可以隐藏所有字段,从而一目了然地总览所有记录。 启用方法:
-1. Click **Options** on the top right
-2. Turn on the toggle for **Compact view**
+1. 单击右上角的 **选项**
+2. 打开 **紧凑视图** 开关
-## Column Aggregations
+## 列聚合
-Each column in a Kanban view can display aggregated values at the top, helping you understand your data at a glance.
+看板视图中的每一列都可以在顶部显示聚合值,帮助您一目了然地了解数据。
-### Available Aggregations
+### 可用的聚合
-| Aggregation | Description |
-| ----------- | --------------------------------------------- |
-| **Count** | Number of records in the column |
-| **Sum** | Total of a numeric field (e.g., deal amounts) |
-| **Average** | Average value of a numeric field |
-| **Min** | Lowest value |
-| **Max** | Highest value |
+| 聚合 | 描述 |
+| ------ | ---------------- |
+| **计数** | 该列中的记录数量 |
+| **总和** | 数值字段的总计(例如,交易金额) |
+| **平均** | 数值字段的平均值 |
+| **最小** | 最小值 |
+| **最大** | 最大值 |
-### Configuring Aggregations
+### 配置聚合
-1. Click on the number displayed next to the Stage value, at the top of a column
-2. Select the aggregation type
-3. Choose the field to aggregate
+1. 单击列顶部显示在阶段值旁边的数字
+2. 选择聚合类型
+3. 选择要聚合的字段
-**Example:** Show total deal value per stage by aggregating the Amount field with Sum.
+**示例:** 通过对 Amount 字段进行求和,显示每个阶段的交易总金额。
-## When to Use Kanban Views
+## 何时使用看板视图
-Kanban views are ideal for:
+看板视图非常适用于:
-* **Sales pipelines**: Track deals through stages from lead to close
-* **Project management**: Monitor tasks through workflow states
-* **Recruitment**: Track candidates through hiring stages
-* **Any staged process**: Visualize any workflow with defined stages
+* **销售管道**:从线索到成交,按阶段跟踪交易
+* **项目管理**:按工作流状态监控任务
+* **招聘**:按招聘阶段跟踪候选人
+* **任何分阶段的流程**:以可视化方式呈现具有已定义阶段的任何工作流
-## Best Practices
+## 最佳实践
-### Organize Your Stages
+### 组织您的阶段
-* **Limit stages**: 5-7 stages is ideal for visibility
-* **Clear naming**: Use descriptive stage names
-* **Logical order**: Arrange stages in process order
+* **限制阶段数量**:以 5–7 个阶段为宜
+* **命名清晰**:使用具有描述性的阶段名称
+* **逻辑顺序**:按流程顺序排列阶段
-### Optimize Card Display
+### 优化卡片显示
-* **Show key fields**: Display only the most important information
-* **Use compact view**: For high-level overviews
-* **Color coding**: Use stage colors to quickly identify status
+* **显示关键字段**:只显示最重要的信息
+* **使用紧凑视图**:用于高层级概览
+* **颜色编码**:使用阶段颜色快速识别状态
-### Maintain Data Quality
+### 保持数据质量
-* **Update regularly**: Keep cards moving through stages
-* **Archive completed**: Move closed items out of active view
-* **Review stale cards**: Follow up on cards stuck in stages
+* **定期更新**:让卡片在各阶段持续流转
+* **归档已完成项**:将已关闭的条目移出活动视图
+* **检查滞留卡片**:跟进停留在某个阶段的卡片
diff --git a/packages/twenty-docs/l/zh/user-guide/views-pipelines/capabilities/table-views.mdx b/packages/twenty-docs/l/zh/user-guide/views-pipelines/capabilities/table-views.mdx
index b835bc7488..91492aa949 100644
--- a/packages/twenty-docs/l/zh/user-guide/views-pipelines/capabilities/table-views.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/views-pipelines/capabilities/table-views.mdx
@@ -1,64 +1,64 @@
---
-title: Table Views
-description: Display your data in a spreadsheet-like list format.
+title: 表视图
+description: 以类似电子表格的列表格式显示您的数据。
---
-## About Table Views
+## 关于表视图
-Table views display records in rows with customizable columns—like a spreadsheet. This is the default view type for most objects.
+表格视图以行显示记录,并带有可自定义的列——类似电子表格。 这是大多数对象的默认视图类型。
-## Features
+## 功能
-### Column Configuration
+### 列配置
-* Show or hide columns (fields)
-* Resize column widths
-* Reorder columns by dragging
+* 显示或隐藏列(字段)
+* 调整列宽
+* 通过拖动重新排序列
-### Group By a Select Field
+### 按 Select 字段分组
-Organize records into collapsible groups based on a field of select type.
+根据 Select 类型的字段将记录组织为可折叠的分组。
-1. Click **Options**
-2. Select **Group**
-3. Choose a Select field
-4. Configure group order under **Options → Group → Sort**:
- * **Alphabetical** or **Reverse alphabetical**
- * **Manual order**: Drag groups under "Visible groups" to reorder
- * Click the **eye icon** next to a group to hide it
+1. 单击 **选项**
+2. 选择 **分组**
+3. 选择一个 Select 字段
+4. 在 **选项 → 分组 → 排序** 下配置分组顺序:
+ * **字母顺序** 或 **反向字母顺序**
+ * **手动排序**:在 "可见分组" 下拖动分组以重新排序
+ * 单击分组旁的 **眼睛图标** 以将其隐藏
-**Use cases:**
+**使用场景:**
-* Group Company by Type
-* Group Opportunities by Stage
-* Group Tasks by Status
+* 按类型对公司分组
+* 按阶段对商机分组
+* 按状态对任务分组
- **For best performance, limit to 10-15 visible groups per view.** If you need more groups, consider using a Dashboard instead.
+ **为获得最佳性能,请将每个视图的可见分组限制在 10-15 个。** 如果需要更多分组,建议改用仪表板。
-### Column Widths
+### 列宽
-Resize columns to show more or less content:
+调整列宽以显示更多或更少的内容:
-1. Hover between two column headers
-2. Click and drag the column border
-3. Release to set the new width
+1. 将鼠标悬停在两个列标题之间
+2. 单击并拖动列边框
+3. 松开以设置新宽度
-## When to Use Table Views
+## 何时使用表格视图
-Table views work best for:
+表格视图最适用于:
-* **Browsing large datasets** — scan many records quickly
-* **Data entry** — edit multiple records efficiently
-* **Detailed analysis** — see many fields at once
-* **Sorting and filtering** — find specific records
+* **浏览大型数据集** — 快速扫描大量记录
+* **数据录入** — 高效编辑多条记录
+* **详细分析** — 同时查看多个字段
+* **排序与筛选** — 查找特定记录
-## Related
+## 相关内容
-* [Fields and Columns](/l/zh/user-guide/views-pipelines/capabilities/fields-and-columns) — configuring which fields to display
-* [Filters and Sorting](/l/zh/user-guide/views-pipelines/capabilities/filters-and-sorting) — narrowing down records
+* [字段和列](/l/zh/user-guide/views-pipelines/capabilities/fields-and-columns) — 配置要显示的字段
+* [筛选与排序](/l/zh/user-guide/views-pipelines/capabilities/filters-and-sorting) — 缩小记录范围
diff --git a/packages/twenty-docs/l/zh/user-guide/views-pipelines/capabilities/view-settings.mdx b/packages/twenty-docs/l/zh/user-guide/views-pipelines/capabilities/view-settings.mdx
index d875f28c7e..e1f4cc33c2 100644
--- a/packages/twenty-docs/l/zh/user-guide/views-pipelines/capabilities/view-settings.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/views-pipelines/capabilities/view-settings.mdx
@@ -1,74 +1,74 @@
---
-title: View Settings
-description: Manage view visibility, naming, icons, and organization.
+title: 视图设置
+description: 管理视图的可见性、命名、图标和组织方式。
---
-## View Visibility
+## 视图可见性
-Control who can see your custom views.
+控制谁可以查看您的自定义视图。
-### Visibility Options
+### 可见性选项
-| Setting | Who Can See |
-| ------------- | --------------------- |
-| **Workspace** | All workspace members |
-| **Unlisted** | Only you |
+| 设置 | 谁可以查看 |
+| ------- | ------- |
+| **工作区** | 所有工作区成员 |
+| **未列出** | 仅您 |
-### Changing Visibility
+### 更改可见性
-1. Open the view
-2. Click **Options → Visibility**
-3. Select **Workspace** or **Unlisted**
+1. 打开该视图
+2. 单击 **选项 → 可见性**
+3. 选择 **工作区** 或 **未列出**
- The default "All [Object Name]" views cannot have their visibility changed.
+ 默认的 "All [Object Name]" 视图无法更改其可见性。
-## Rename a View
+## 重命名视图
-1. Open the view dropdown
-2. Click the **⋮** menu next to the view
-3. Select **Edit**
-4. Enter the new name
+1. 打开视图下拉菜单
+2. 单击视图旁的 **⋮** 菜单
+3. 选择 **编辑**
+4. 输入新名称
-## Change View Icon
+## 更改视图图标
-1. Open the view dropdown
-2. Click the **⋮** menu next to the view
-3. Select **Edit**
-4. Click the icon to change it
+1. 打开视图下拉菜单
+2. 单击视图旁的 **⋮** 菜单
+3. 选择 **编辑**
+4. 单击图标以更改
-## Reorder Views
+## 调整视图顺序
-Change the order views appear in the dropdown:
+更改视图在下拉菜单中的显示顺序:
-1. Open the view dropdown
-2. Drag views by their handle
-3. Drop in the desired position
-4. Order saves automatically
+1. 打开视图下拉菜单
+2. 通过手柄拖动视图
+3. 放置到所需位置
+4. 顺序会自动保存
-## Favorites
+## 收藏夹
-Pin frequently used views for quick access:
+固定常用视图以便快速访问:
-1. Open the view dropdown
-2. Click the **⋮** menu next to a view
-3. Select **Add to favorites**
+1. 打开视图下拉菜单
+2. 单击某个视图旁的 **⋮** 菜单
+3. 选择 **添加到收藏夹**
-Favorited views appear in a dedicated section for easy access.
+已收藏的视图会显示在专门的区域,便于快速访问。
-## Delete a View
+## 删除视图
-1. Open the view dropdown
-2. Click the **⋮** menu next to the view
-3. Select **Delete**
-4. Confirm deletion
+1. 打开视图下拉菜单
+2. 单击视图旁的 **⋮** 菜单
+3. 选择 **删除**
+4. 确认删除
- Deleted views cannot be recovered.
+ 已删除的视图无法恢复。
-## Related
+## 相关内容
-* [Views Overview](/l/zh/user-guide/views-pipelines/overview) — creating views
-* [How to Restrict Access](/l/zh/user-guide/views-pipelines/how-tos/restrict-access-to-your-view) — step-by-step guide
+* [视图概览](/l/zh/user-guide/views-pipelines/overview) — 创建视图
+* [如何限制访问](/l/zh/user-guide/views-pipelines/how-tos/restrict-access-to-your-view) — 分步指南
diff --git a/packages/twenty-docs/l/zh/user-guide/views-pipelines/how-tos/create-a-calendar-view-for-tasks-due.mdx b/packages/twenty-docs/l/zh/user-guide/views-pipelines/how-tos/create-a-calendar-view-for-tasks-due.mdx
index 06c68b9b71..485e93a550 100644
--- a/packages/twenty-docs/l/zh/user-guide/views-pipelines/how-tos/create-a-calendar-view-for-tasks-due.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/views-pipelines/how-tos/create-a-calendar-view-for-tasks-due.mdx
@@ -1,61 +1,61 @@
---
-title: Create a Calendar View for Tasks Due
-description: Visualize your tasks and deadlines on a calendar.
+title: 为到期任务创建日历视图
+description: 在日历上直观展示你的任务和截止日期。
---
-## Prerequisites
+## 先决条件
-Your Tasks object needs a **Due Date** field (Date or Date & Time type).
+你的 Tasks 对象需要一个 **Due Date** 字段(Date 或 Date & Time 类型)。
-## Steps
+## 步骤
-1. Navigate to **Tasks**
-2. Click the view dropdown → **+ Add view**
-3. Name your view (e.g., "Tasks Calendar")
-4. Click **Create**
-5. Click **Options** and select **Calendar** as the layout
-6. Choose **Due Date** as the date field
-7. Click **Save**
+1. 导航到 **Tasks**
+2. 单击视图下拉菜单 → **+ 添加视图**
+3. 为视图命名(例如:“任务日历”)
+4. 单击 **创建**
+5. 单击 **选项**,并选择 **日历** 作为布局
+6. 选择 **Due Date** 作为日期字段
+7. 单击 **保存**
-## Configure Your Calendar
+## 配置日历
-### Display Fields on Events
+### 在事件中显示字段
-1. Click **Options → Fields**
-2. Click the **eye icon** to show/hide fields
-3. Drag to reorder
+1. 单击 **选项 → 字段**
+2. 单击 **眼睛图标** 以显示/隐藏字段
+3. 拖动以重新排序
-Recommended fields to display:
+建议显示的字段:
-* **Title** — task name
-* **Assignee** — who's responsible
-* **Status** — current progress
+* **Title** — 任务名称
+* **Assignee** — 负责人
+* **Status** — 当前进度
-### Filter Your Calendar
+### 筛选日历
-Create focused views:
+创建聚焦视图:
-* **My Tasks**: Filter by Assignee = Me
-* **This Week**: Filter by Due Date = This week
-* **Overdue**: Filter by Due Date < Today, Status ≠ Done
+* **My Tasks**:按 Assignee = Me 筛选
+* **本周**:按到期日期筛选 = 本周
+* **逾期**:按到期日期筛选 < 今天,状态 ≠ 已完成
-## Other Calendar Use Cases
+## 其他日历使用场景
-| Object | Date Field | Purpose |
-| ------------- | ---------- | ------------------------- |
-| Opportunities | Close Date | Track expected closes |
-| Custom Events | Event Date | Plan activities |
-| Projects | Deadline | Monitor project timelines |
+| 对象 | 日期字段 | 目的 |
+| ----- | ---- | -------- |
+| 机会 | 关闭日期 | 跟踪预计关闭时间 |
+| 自定义事件 | 事件日期 | 规划活动 |
+| 项目 | 截止日期 | 监控项目时间线 |
-## Tips
+## 提示
-* **Review weekly**: Start each week by checking your calendar view
-* **Combine with table view**: Use calendar for overview, table for details
-* **Set visibility**: Keep personal task calendars as Unlisted
+* **每周回顾**:每周开始时先检查您的日历视图
+* **与表格视图结合**:使用日历查看概览,用表格查看详细信息
+* **设置可见性**:将个人任务日历设为未列出
-## Related
+## 相关内容
-* [Calendar View](/l/zh/user-guide/views-pipelines/capabilities/calendar-view) — all calendar features
-* [Filters and Sorting](/l/zh/user-guide/views-pipelines/capabilities/filters-and-sorting) — filter your calendar
+* [日历视图](/l/zh/user-guide/views-pipelines/capabilities/calendar-view) — 所有日历功能
+* [筛选与排序](/l/zh/user-guide/views-pipelines/capabilities/filters-and-sorting) — 筛选您的日历
diff --git a/packages/twenty-docs/l/zh/user-guide/views-pipelines/how-tos/create-a-kanban-view-for-projects.mdx b/packages/twenty-docs/l/zh/user-guide/views-pipelines/how-tos/create-a-kanban-view-for-projects.mdx
index e7c9f0a09b..29419c6597 100644
--- a/packages/twenty-docs/l/zh/user-guide/views-pipelines/how-tos/create-a-kanban-view-for-projects.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/views-pipelines/how-tos/create-a-kanban-view-for-projects.mdx
@@ -1,80 +1,80 @@
---
-title: Create a Kanban View for Projects
-description: Track projects through stages using a visual board.
+title: 为项目创建看板视图
+description: 使用可视化看板按阶段跟踪项目。
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-Use a Kanban view to visualize your projects (or any object with stages) as cards moving through columns.
+使用看板视图将您的项目(或任何具有阶段的对象)可视化为在列间移动的卡片。
-
+
-## Prerequisites
+## 先决条件
-Your object needs a **Select field** to use as columns (e.g., Status, Stage, Phase).
+您的对象需要一个用作列的 **选择字段**(例如:状态、阶段、环节)。
-If you don't have one:
+如果您还没有:
-1. Go to **Settings → Data Model**
-2. Select your object
-3. Add a Select field with your stage options
+1. 进入 **设置 → 数据模型**
+2. 选择你的对象
+3. 添加一个包含阶段选项的选择字段
-## Steps
+## 步骤
-1. Navigate to your object (e.g., Projects, Tasks)
-2. Click the view dropdown → **+ Add view**
-3. Name your view (e.g., "Project Board")
-4. Click **Create**
-5. Click **Options** and select **Kanban** as the layout
-6. The view uses your Select field for columns automatically
-7. Click **Save**
+1. 导航到您的对象(例如:项目、任务)
+2. 单击视图下拉菜单 → **+ 添加视图**
+3. 为视图命名(例如:“项目看板”)
+4. 单击 **创建**
+5. 单击 **选项**,并选择 **看板** 作为布局
+6. 该视图会自动使用您的选择字段作为列
+7. 单击 **保存**
-## Configure Your Board
+## 配置您的看板
-### Show Key Fields on Cards
+### 在卡片上显示关键字段
-1. Click **Options → Fields**
-2. Find fields in the "Hidden Fields" section
-3. Click the **eye icon** to display them on cards
-4. Drag to reorder
+1. 点击 **选项 → 字段**
+2. 在 "隐藏字段" 部分查找字段
+3. 单击 **眼睛图标** 以在卡片上显示它们
+4. 拖动以重新排序
-### Enable Compact View
+### 启用紧凑视图
-For a high-level overview:
+用于高层概览:
-1. Click **Options**
-2. Turn on **Compact view**
+1. 单击 **选项**
+2. 开启 **紧凑视图**
-Cards show only the record name.
+卡片仅显示记录名称。
-### Add Aggregations
+### 添加聚合
-Show counts or totals at the top of each column:
+在每列顶部显示计数或总计:
-1. Click the number next to a column name
-2. Select an aggregation (Count, Sum, etc.)
-3. Choose a field if needed
+1. 单击列名旁边的数字
+2. 选择一种聚合(计数、求和等)
+3. 如有需要,选择一个字段
-## Moving Cards
+## 移动卡片
-Drag and drop cards between columns to update their status.
+在列之间拖放卡片以更新其状态。
-
+
-## Example: Task Board
+## 示例:任务看板
-| Column (Status) | Cards |
-| --------------- | ----------------- |
-| **To Do** | New tasks |
-| **In Progress** | Active work |
-| **Review** | Awaiting approval |
-| **Done** | Completed |
+| 列(状态) | 卡片 |
+| ------- | ------ |
+| **待办** | 新任务 |
+| **进行中** | 进行中的工作 |
+| **审核** | 等待批准 |
+| **已完成** | 已完成 |
-## Related
+## 相关内容
-* [Kanban Views](/l/zh/user-guide/views-pipelines/capabilities/kanban-views) — aggregations, compact view, stages
-* [How to Set Up a Sales Pipeline](/l/zh/user-guide/views-pipelines/how-tos/set-up-a-sales-pipeline) — Kanban for Opportunities
+* [看板视图](/l/zh/user-guide/views-pipelines/capabilities/kanban-views) — 聚合、紧凑视图、阶段
+* [如何设置销售管道](/l/zh/user-guide/views-pipelines/how-tos/set-up-a-sales-pipeline) — 用于商机的看板
diff --git a/packages/twenty-docs/l/zh/user-guide/views-pipelines/how-tos/create-a-table-view-with-grouping.mdx b/packages/twenty-docs/l/zh/user-guide/views-pipelines/how-tos/create-a-table-view-with-grouping.mdx
index ee98214ec2..42734d7c58 100644
--- a/packages/twenty-docs/l/zh/user-guide/views-pipelines/how-tos/create-a-table-view-with-grouping.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/views-pipelines/how-tos/create-a-table-view-with-grouping.mdx
@@ -1,51 +1,51 @@
---
-title: Create a Table View with Grouping
-description: Organize your records into collapsible groups by field value.
+title: 创建带分组的表格视图
+description: 按字段值将记录组织为可折叠的分组。
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-Group your table view by a Select field to organize records into collapsible sections.
+使用 Select 字段对表格视图进行分组,将记录组织到可折叠的部分。
-## Steps
+## 步骤
-1. Navigate to the object (People, Companies, etc.)
-2. Click the view dropdown → **+ Add view**
-3. Name your view (e.g., "Companies by Type")
-4. Click **Create**
-5. Click **Options → Group**
-6. Choose a Select field to group by
-7. Click **Save**
+1. 导航到对象(人员、公司等)
+2. 单击视图下拉菜单 → **+ 添加视图**
+3. 为视图命名(例如:“按类型的公司”)
+4. 单击 **创建**
+5. 单击 **选项 → 分组**
+6. 选择一个 Select 字段进行分组
+7. 单击 **保存**
-## Configure Group Order
+## 配置分组顺序
-Under **Options → Group → Sort**, choose how groups are ordered:
+在 **选项 → 分组 → 排序** 下,选择分组的排序方式:
-| Option | Description |
-| ------------------------ | --------------------------------------------- |
-| **Alphabetical** | A to Z |
-| **Reverse alphabetical** | Z to A |
-| **Manual order** | Drag groups to reorder under "Visible groups" |
+| 选项 | 描述 |
+| --------- | ----------------- |
+| **按字母顺序** | A 到 Z |
+| **逆字母顺序** | Z 到 A |
+| **手动排序** | 在“可见分组”下拖动分组以重新排序 |
-Click the **eye icon** next to a group to hide it from the view.
+单击组旁的 **眼睛图标**,将其从视图中隐藏。
- **For best performance, limit to 10-15 visible groups.** If you need more, consider using a Dashboard instead.
+ **为获得最佳性能,请将可见分组限制在 10-15 个。** 如果需要更多,建议改用仪表板。
-## Example: Companies by Industry
+## 示例:按行业分类的公司
-1. Go to **Companies**
-2. Create a new view named "By Industry"
-3. Click **Options → Group**
-4. Select the **Industry** field
-5. Save
+1. 前往 **公司**
+2. 创建一个名为“按行业”的新视图
+3. 单击 **选项 → 分组**
+4. 选择 **行业** 字段
+5. 保存
-Now your companies are organized by industry, making it easy to focus on one segment at a time.
+现在,您的公司已按行业组织,便于一次专注于一个细分市场。
-## Related
+## 相关内容
-* [Table Views](/l/zh/user-guide/views-pipelines/capabilities/table-views) — all table view features
-* [Filters and Sorting](/l/zh/user-guide/views-pipelines/capabilities/filters-and-sorting) — combine grouping with filters
+* [表格视图](/l/zh/user-guide/views-pipelines/capabilities/table-views) — 所有表格视图功能
+* [筛选和排序](/l/zh/user-guide/views-pipelines/capabilities/filters-and-sorting) — 将分组与筛选结合使用
diff --git a/packages/twenty-docs/l/zh/user-guide/views-pipelines/how-tos/restrict-access-to-your-view.mdx b/packages/twenty-docs/l/zh/user-guide/views-pipelines/how-tos/restrict-access-to-your-view.mdx
index 1901e1c197..640c8cedc3 100644
--- a/packages/twenty-docs/l/zh/user-guide/views-pipelines/how-tos/restrict-access-to-your-view.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/views-pipelines/how-tos/restrict-access-to-your-view.mdx
@@ -1,32 +1,32 @@
---
-title: Restrict Access to Your View
-description: Control who can see your custom views.
+title: 限制对您的视图的访问
+description: 控制谁可以查看你的自定义视图。
---
-Each view (except the default "All [Object Name]" views) has its own visibility setting.
+每个视图(默认的 "All [Object Name]" 视图除外)都有其自己的可见性设置。
-## Steps
+## 步骤
-1. Open the view you want to restrict
-2. Click **Options** in the top right
-3. Click **Visibility**
-4. Select **Unlisted**
+1. 打开你想要限制的视图
+2. 点击右上角的 **选项**
+3. 点击 **可见性**
+4. 选择 **未列出**
-Your view is now visible only to you.
+你的视图现在仅对你可见。
-## Visibility Options
+## 可见性选项
-| Setting | Who Can See |
-| ------------- | --------------------- |
-| **Workspace** | All workspace members |
-| **Unlisted** | Only you |
+| 设置 | 谁可以查看 |
+| ------- | ------- |
+| **工作区** | 所有工作区成员 |
+| **未列出** | 仅你 |
-## Notes
+## 备注
-* The default "All [Object Name]" views cannot be made unlisted
-* Unlisted views don't appear in other users' view dropdowns
-* You can change visibility back to Workspace at any time
+* 默认的 "All [Object Name]" 视图无法设为未列出
+* 未列出的视图不会出现在其他用户的视图下拉菜单中
+* 你可以随时将可见性改回工作区
-## Related
+## 相关
-* [View Settings](/l/zh/user-guide/views-pipelines/capabilities/view-settings) — all view configuration options
+* [视图设置](/l/zh/user-guide/views-pipelines/capabilities/view-settings) — 所有视图配置选项
diff --git a/packages/twenty-docs/l/zh/user-guide/views-pipelines/how-tos/set-up-a-sales-pipeline.mdx b/packages/twenty-docs/l/zh/user-guide/views-pipelines/how-tos/set-up-a-sales-pipeline.mdx
index ab8aef1974..a4192db17b 100644
--- a/packages/twenty-docs/l/zh/user-guide/views-pipelines/how-tos/set-up-a-sales-pipeline.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/views-pipelines/how-tos/set-up-a-sales-pipeline.mdx
@@ -1,120 +1,120 @@
---
-title: Set Up a Sales Pipeline
-description: Configure your sales pipeline to track opportunities through stages.
+title: 设置销售管道
+description: 配置您的销售管道,以通过各个阶段跟踪机会。
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-A sales pipeline in Twenty is a Kanban view of your Opportunities object, where each column represents a stage in your sales process.
+在 Twenty 中,销售管道是您的机会对象的看板视图,其中每一列代表销售流程中的一个阶段。
-## Step 1: Configure Your Stages
+## 步骤 1:配置您的阶段
-Stages are defined in the Opportunities object's **Stage** field.
+阶段在“机会”对象的 **Stage** 字段中定义。
-1. Go to **Settings → Data Model**
-2. Select **Opportunities**
-3. Find and click the **Stage** field
-4. Add, remove, or rename stages to match your process
+1. 进入 **设置 → 数据模型**
+2. 选择 **机会**
+3. 找到并单击 **Stage** 字段
+4. 添加、删除或重命名阶段以匹配您的流程
-
+
-### Recommended Stages
+### 推荐阶段
-| Stage | Purpose |
-| --------------- | ----------------------------------- |
-| **New** | Fresh opportunities just identified |
-| **Qualified** | Confirmed as a good fit |
-| **Meeting** | Engaged in discussions |
-| **Proposal** | Proposal sent |
-| **Negotiation** | Working on terms |
-| **Closed Won** | Deal successful |
-| **Closed Lost** | Deal unsuccessful |
+| 阶段 | 目的 |
+| ------ | -------- |
+| **新** | 刚识别出的新机会 |
+| **合格** | 已确认契合良好 |
+| **会议** | 已展开讨论 |
+| **提案** | 已发送提案 |
+| **谈判** | 正在协商条款 |
+| **赢单** | 交易成功 |
+| **丢单** | 交易失败 |
- **5-7 stages is optimal.** Too many stages makes the pipeline hard to scan; too few loses visibility into deal progress.
+ **5-7 个阶段最优。** 阶段过多会使管道难以浏览;过少则会降低对交易进展的可见性。
-## Step 2: Create a Pipeline View
+## 步骤 2:创建管道视图
-1. Go to **Opportunities**
-2. Click the view dropdown → **+ Add view**
-3. Name it "Sales Pipeline"
-4. Click **Create**
-5. Open **Options** and select **Kanban** as the layout
+1. 前往 **机会**
+2. 单击视图下拉菜单 → **+ 添加视图**
+3. 将其命名为 "销售管道"
+4. 单击 **创建**
+5. 打开 **选项**,并选择 **看板** 作为布局
-The view automatically uses the Stage field for columns.
+该视图会自动使用 Stage 字段作为列。
-## Step 3: Configure Your View
+## 步骤 3:配置您的视图
-### Show Key Fields
+### 显示关键字段
-1. Click **Options → Fields**
-2. Look for fields in the "Hidden Fields" section
-3. Click the **eye icon** to display: Company, Amount, Close Date, Owner
+1. 单击 **选项 → 字段**
+2. 在 "隐藏字段" 部分查找字段
+3. 单击 **眼睛图标** 以显示:Company、Amount、Close Date、Owner
-### Enable Aggregations
+### 启用聚合
-Show totals at the top of each column:
+在每列顶部显示总计:
-1. Click the number displayed next to a Stage name at the top of a column
-2. Select the aggregation type (Count, Sum, Average, etc.)
-3. Choose the field to aggregate (e.g., Amount)
+1. 单击列顶部显示在某个 Stage 名称旁边的数字
+2. 选择聚合类型(计数、求和、平均值等)
+3. 选择要聚合的字段(例如,Amount)
-**Example:** Show total deal value per stage by aggregating Amount with Sum.
+**示例:** 通过对 Amount 进行求和来显示每个阶段的交易总金额。
-### Use Compact View (Optional)
+### 使用紧凑视图(可选)
-For a high-level overview with minimal card content:
+若需以更少卡片内容获得高层次概览:
-1. Click **Options**
-2. Turn on the toggle for **Compact view**
+1. 单击 **选项**
+2. 打开 **紧凑视图** 开关
-## Step 4: Create Personal and Team Views
+## 步骤 4:创建个人和团队视图
-### "My Pipeline"
+### "我的管道"
-* **Filter**: Owner = Me
-* **Visibility**: Unlisted (personal view)
+* **筛选**:Owner = Me
+* **可见性**:未列出(个人视图)
-### "Team Pipeline"
+### "团队管道"
-* **Filter**: None (show all)
-* **Visibility**: Workspace (shared view)
+* **筛选**:无(显示全部)
+* **可见性**:工作区(共享视图)
-### "Closing This Month"
+### "本月关闭"
-* **Type**: Table
-* **Filter**: Close Date = This month, Stage ≠ Closed Won, Stage ≠ Closed Lost
-* **Sort**: Close Date ascending
+* **类型**:表格
+* **筛选**:Close Date = This month,Stage ≠ Closed Won,Stage ≠ Closed Lost
+* **排序**:Close Date 升序
-## Working with Opportunities
+## 处理机会
-### Creating Opportunities
+### 创建机会
-* Click **+ New** in the Opportunities view
-* Or click **+** in a specific stage column
+* 在“机会”视图中单击 **+ 新建**
+* 或在特定阶段的列中单击 **+**
-### Moving Through Stages
+### 在各阶段间移动
-Drag and drop opportunity cards between columns to update their stage.
+在列之间拖放机会卡片以更新其阶段。
-
+
-## Best Practices
+## 最佳实践
-### Pipeline Hygiene
+### 管道卫生
-* Update deals daily as they progress
-* Move or close stale deals promptly
-* Keep close dates realistic
+* 随进展每日更新交易
+* 及时移动或关闭停滞的交易
+* 确保关闭日期切合实际
-### Stage Discipline
+### 阶段纪律
-* Define clear criteria for each stage
-* Move deals promptly when criteria are met
-* Don't let deals sit in stages too long
+* 为每个阶段定义清晰的判定标准
+* 当满足标准时及时移动交易
+* 不要让交易在阶段中停留过久
-## Related
+## 相关内容
-* [Kanban Views](/l/zh/user-guide/views-pipelines/capabilities/kanban-views) — aggregations and compact view
-* [Filters and Sorting](/l/zh/user-guide/views-pipelines/capabilities/filters-and-sorting) — creating filtered views
+* [看板视图](/l/zh/user-guide/views-pipelines/capabilities/kanban-views) — 聚合与紧凑视图
+* [筛选与排序](/l/zh/user-guide/views-pipelines/capabilities/filters-and-sorting) — 创建筛选视图
diff --git a/packages/twenty-docs/l/zh/user-guide/views-pipelines/how-tos/show-expected-amount-in-pipeline.mdx b/packages/twenty-docs/l/zh/user-guide/views-pipelines/how-tos/show-expected-amount-in-pipeline.mdx
index 70f425df81..71666f90e4 100644
--- a/packages/twenty-docs/l/zh/user-guide/views-pipelines/how-tos/show-expected-amount-in-pipeline.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/views-pipelines/how-tos/show-expected-amount-in-pipeline.mdx
@@ -1,149 +1,149 @@
---
-title: Show Expected Amount in Your Pipeline
-description: Calculate and display weighted deal values based on stage probability.
+title: 在您的销售管道中显示预期金额
+description: 根据阶段概率计算并显示加权交易金额。
---
-The Expected Amount is a calculated value: **Amount × Probability**. This helps you forecast revenue by weighting deals based on how likely they are to close.
+预期金额是一个计算值:**Amount × Probability**。 这有助于根据成交可能性为交易加权,从而预测收入。
- This is an example of creating [Formula Fields](/l/zh/user-guide/workflows/how-tos/crm-automations/formula-fields) using workflows.
+ 这是使用工作流创建[公式字段](/l/zh/user-guide/workflows/how-tos/crm-automations/formula-fields)的示例。
-This guide walks you through setting up the custom fields and workflows needed to calculate and display expected amounts in your pipeline.
+本指南将引导您设置在管道中计算并显示预期金额所需的自定义字段和工作流。
-## Step 1: Create Custom Fields
+## 步骤 1:创建自定义字段
-You need two custom fields on the Opportunities object.
+您需要在商机对象上创建两个自定义字段。
-### Create the Probability Field
+### 创建 Probability 字段
-1. Go to **Settings → Data Model → Opportunities**
-2. Click **+ Add Field**
-3. Configure:
- * **Name**: Probability
- * **Type**: Number
- * **Description**: Stage-based probability (0-100%)
-4. Click **Save**
+1. 前往 **设置 → 数据模型 → 商机**
+2. 点击 **+ 添加字段**
+3. 配置:
+ * **名称**:Probability
+ * **类型**:数字
+ * **描述**:基于阶段的概率(0–100%)
+4. 单击 **保存**
-### Create the Expected Amount Field
+### 创建 Expected Amount 字段
-1. Click **+ Add Field**
-2. Configure:
- * **Name**: Expected Amount
- * **Type**: Currency
- * **Description**: Calculated: Amount × Probability
-3. Click **Save**
+1. 点击 **+ 添加字段**
+2. 配置:
+ * **名称**:Expected Amount
+ * **类型**:货币
+ * **描述**:计算值:Amount × Probability
+3. 单击 **保存**
-### Optional: Make Fields Read-Only for Users
+### 可选:将字段设置为对用户只读
-If you don't want users manually editing these calculated fields:
+如果您不希望用户手动编辑这些计算字段:
-1. Go to **Settings → Roles**
-2. Select the role to configure
-3. Find the Opportunities object
-4. Set **Probability** and **Expected Amount** fields to read-only
+1. 进入 **设置 → 角色**
+2. 选择要配置的角色
+3. 找到商机对象
+4. 将 **Probability** 和 **Expected Amount** 字段设为只读
-This ensures only the workflows can update these values.
+这可确保只有工作流可以更新这些值。
-## Step 2: Create Workflow #1 — Update Probability on Stage Change
+## 步骤 2:创建工作流 #1 — 阶段变更时更新 Probability
-This workflow automatically sets the Probability when an opportunity moves to a new stage.
+当商机进入新阶段时,此工作流会自动设置 Probability。
-### Create the Workflow
+### 创建工作流
-1. Go to **Workflows**
-2. Click **+ New Workflow**
-3. Name it "Update Probability on Stage Change"
+1. 前往 **工作流**
+2. 点击 **+ 新建工作流**
+3. 将其命名为 "Update Probability on Stage Change"
-### Configure the Trigger
+### 配置触发器
-1. Add a **Record Created or Updated** trigger
-2. Select **Opportunities** as the object
-3. Filter on: **Stage** field is updated
+1. 添加一个 **Record Created or Updated** 触发器
+2. 选择 **Opportunities** 作为对象
+3. 筛选条件:**Stage** 字段已更新
-### Add Branches for Each Stage
+### 为每个阶段添加分支
-Create a branch for each stage with its probability:
+为每个阶段创建一个分支,并设置相应的概率:
-| Stage | Probability |
-| ----------- | ----------- |
-| New | 10% |
-| Qualified | 25% |
-| Meeting | 40% |
-| Proposal | 60% |
-| Negotiation | 80% |
-| Closed Won | 100% |
-| Closed Lost | 0% |
+| 阶段 | 概率 |
+| ------- | ---- |
+| 新 | 10% |
+| 合格 | 25% |
+| 会议 | 40% |
+| 提案 | 60% |
+| 谈判 | 80% |
+| 已成交(赢单) | 100% |
+| 已关闭(丢单) | 0% |
- To create a new branch, right click on the workflow canvas and click **New action**. Then, link this action to the previous node by dragging the arrow from the previous node to this new action.
+ 要创建新分支,在工作流画布上单击右键,然后点击 **新建操作**。 然后,从上一个节点拖动箭头到此新操作,将其与前一个节点连接。
-For each stage:
+对于每个阶段:
-1. Add a **Filter** node: Stage = [stage name]
-2. Add an **Update Record** action:
- * Record: The triggering Opportunity
- * Field: Probability
- * Value: [probability for that stage]
+1. 添加一个 **筛选** 节点:Stage = [阶段名称]
+2. 添加一个 **更新记录** 操作:
+ * 记录:触发的商机
+ * 字段:Probability
+ * 值:[该阶段的概率]
-### Calculate Expected Amount
+### 计算 Expected Amount
-After the branches rejoin:
+在分支汇合之后:
-1. Add a **Filter** node: Amount is not empty
-2. Add an **Update Record** action:
- * Record: The triggering Opportunity
- * Field: Expected Amount
- * Value: Amount × Probability
+1. 添加一个 **筛选** 节点:Amount 不为空
+2. 添加一个 **更新记录** 操作:
+ * 记录:触发的商机
+ * 字段:Expected Amount
+ * 值:Amount × Probability
-## Step 3: Create Workflow #2 — Recalculate on Amount Change
+## 步骤 3:创建工作流 #2 — 当 Amount 发生变化时重新计算
-This workflow updates the Expected Amount when the deal Amount changes.
+当交易的 Amount 更改时,此工作流会更新 Expected Amount。
-### Create the Workflow
+### 创建工作流
-1. Go to **Workflows**
-2. Click **+ New Workflow**
-3. Name it "Recalculate Expected Amount on Amount Change"
+1. 前往 **工作流**
+2. 点击 **+ 新建工作流**
+3. 将其命名为 "Recalculate Expected Amount on Amount Change"
-### Configure the Trigger
+### 配置触发器
-1. Add a **Record Created or Updated** trigger
-2. Select **Opportunities** as the object
-3. Filter on: **Amount** field is updated
+1. 添加一个 **Record Created or Updated** 触发器
+2. 选择 **Opportunities** 作为对象
+3. 筛选条件:**Amount** 字段已更新
-### Add the Logic
+### 添加逻辑
-1. Add a **Filter** node: Amount is not empty
-2. Add an **Update Record** action:
- * Record: The triggering Opportunity
- * Field: Expected Amount
- * Value: Amount × Probability
+1. 添加一个 **筛选** 节点:Amount 不为空
+2. 添加一个 **更新记录** 操作:
+ * 记录:触发的商机
+ * 字段:Expected Amount
+ * 值:Amount × Probability
-## Step 4: Display in Your Pipeline
+## 步骤 4:在您的管道中显示
-Now show the Expected Amount totals in your Kanban view:
+现在在看板视图中显示 Expected Amount 的总计:
-1. Open your **Sales Pipeline** Kanban view
-2. Click the **number** next to any Stage name at the top of a column
-3. Select **Sum**
-4. Choose **Expected Amount**
+1. 打开您的 **销售管道** 看板视图
+2. 点击列顶部任一阶段名称旁的**数字**
+3. 选择 **求和**
+4. 选择 **Expected Amount**
-Each column now shows the total weighted pipeline value for that stage.
+现在,每列都会显示该阶段的加权管道总值。
-## Summary
+## 摘要
-| Component | Purpose |
-| ------------------------- | ------------------------------------------------------------------------- |
-| **Probability field** | Stores the stage-based win probability |
-| **Expected Amount field** | Stores Amount × Probability |
-| **Workflow #1** | Updates Probability when Stage changes, then recalculates Expected Amount |
-| **Workflow #2** | Recalculates Expected Amount when Amount changes |
-| **Aggregation** | Displays Sum of Expected Amount per stage |
+| 组件 | 用途 |
+| ---------------------- | ------------------------------------------------ |
+| **Probability 字段** | 存储基于阶段的赢单概率 |
+| **Expected Amount 字段** | 存储 Amount × Probability |
+| **工作流 #1** | 当 Stage 变化时更新 Probability,然后重新计算 Expected Amount |
+| **工作流 #2** | 当 Amount 变化时重新计算 Expected Amount |
+| **聚合** | 按阶段显示 Expected Amount 的求和 |
-## Related
+## 相关内容
-* [Formula Fields](/l/zh/user-guide/workflows/how-tos/crm-automations/formula-fields) — create calculated fields using workflows
-* [Kanban Views](/l/zh/user-guide/views-pipelines/capabilities/kanban-views) — column aggregations
-* [How to Create Custom Fields](/l/zh/user-guide/data-model/how-tos/create-custom-fields) — field configuration
+* [公式字段](/l/zh/user-guide/workflows/how-tos/crm-automations/formula-fields) — 使用工作流创建计算字段
+* [看板视图](/l/zh/user-guide/views-pipelines/capabilities/kanban-views) — 列聚合
+* [如何创建自定义字段](/l/zh/user-guide/data-model/how-tos/create-custom-fields) — 字段配置
diff --git a/packages/twenty-docs/l/zh/user-guide/views-pipelines/how-tos/track-time-in-stage.mdx b/packages/twenty-docs/l/zh/user-guide/views-pipelines/how-tos/track-time-in-stage.mdx
index 852856cce6..bdf1d02c46 100644
--- a/packages/twenty-docs/l/zh/user-guide/views-pipelines/how-tos/track-time-in-stage.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/views-pipelines/how-tos/track-time-in-stage.mdx
@@ -1,104 +1,104 @@
---
-title: Track How Long Opportunities Stay in Each Stage
-description: Monitor deal velocity by tracking when opportunities enter each stage.
+title: 跟踪商机在各阶段停留的时长
+description: 通过跟踪商机进入各阶段的时间来监控交易速度。
---
- This is an example of creating [Formula Fields](/l/zh/user-guide/workflows/how-tos/crm-automations/formula-fields) using workflows — specifically date calculations.
+ 这是一个使用工作流创建[公式字段](/l/zh/user-guide/workflows/how-tos/crm-automations/formula-fields)的示例——具体为日期计算。
-Tracking when opportunities enter each stage helps you identify bottlenecks and measure deal velocity.
+跟踪商机进入各阶段的时间有助于识别瓶颈并衡量交易速度。
-This guide walks you through setting up custom fields and a workflow to automatically record when an opportunity moves to each stage, and calculate how many days it spent in the previous stage.
+本指南将引导你设置自定义字段和一个工作流,以自动记录商机进入各阶段的时间,并计算其在上一个阶段停留的天数。
-## Step 1: Create Custom Fields
+## 步骤 1:创建自定义字段
-You need two types of fields for each stage:
+每个阶段需要两种字段:
-* **Date & Time fields**: Record when the opportunity entered each stage
-* **Number fields**: Store how many days the opportunity spent in each stage
+* **日期与时间字段**:记录商机进入各阶段的时间
+* **数字字段**:存储商机在各阶段停留的天数
-### Create the "Last Entered" Fields
+### 创建“最近进入”字段
-1. Go to **Settings → Data Model → Opportunities**
-2. For each stage, click **+ Add Field** and configure:
- * **Name**: Last Entered [Stage Name] (e.g., "Last Entered New", "Last Entered Qualified")
- * **Type**: Date & Time
- * **Description**: Timestamp when opportunity entered this stage
-3. Click **Save**
+1. 进入 **设置 → 数据模型 → 商机**
+2. 针对每个阶段,点击 **+ 添加字段** 并进行配置:
+ * **名称**:最近进入[阶段名称](例如:"最近进入 新建"、"最近进入 已合格")
+ * **类型**:日期与时间
+ * **描述**:商机进入此阶段的时间戳
+3. 单击 **保存**
-Create these fields:
+创建以下字段:
-* Last Entered New
-* Last Entered Qualified
-* Last Entered Meeting
-* Last Entered Proposal
-* Last Entered Negotiation
-* Last Entered Closed Won
-* Last Entered Closed Lost
+* 最近进入 新建
+* 最近进入 已合格
+* 最近进入 会面
+* 最近进入 提案
+* 最近进入 谈判
+* 最近进入 赢单
+* 最近进入 输单
-### Create the "Days in Stage" Fields
+### 创建“阶段停留天数”字段
-1. For each stage, click **+ Add Field** and configure:
- * **Name**: Days in [Stage Name] (e.g., "Days in New", "Days in Qualified")
- * **Type**: Number
- * **Description**: Number of days spent in this stage
-2. Click **Save**
+1. 针对每个阶段,点击 **+ 添加字段** 并进行配置:
+ * **名称**:[阶段名称]停留天数(例如:"新建停留天数"、"已合格停留天数")
+ * **类型**:数字
+ * **描述**:在此阶段停留的天数
+2. 单击 **保存**
-Create these fields:
+创建以下字段:
-* Days in New
-* Days in Qualified
-* Days in Meeting
-* Days in Proposal
-* Days in Negotiation
+* 新建停留天数
+* 已合格停留天数
+* 会面停留天数
+* 提案停留天数
+* 谈判停留天数
- You don't need "Days in" fields for Closed Won and Closed Lost since those are final stages.
+ 赢单和输单为最终阶段,因此无需创建“停留天数”字段。
-### Optional: Make Fields Read-Only
+### 可选:将字段设为只读
-If you don't want users manually editing these calculated fields:
+如果不希望用户手动编辑这些计算字段:
-1. Go to **Settings → Roles**
-2. Select the role to configure
-3. Find the Opportunities object
-4. Set the "Last Entered" and "Days in" fields to read-only
+1. 进入 **设置 → 角色**
+2. 选择要配置的角色
+3. 找到商机对象
+4. 将“最近进入”和“停留天数”字段设置为只读
-## Step 2: Create the Workflow
+## 步骤 2:创建工作流
-This single workflow handles both tasks:
+此单个工作流同时处理两项任务:
-* Records the timestamp when entering a new stage
-* Calculates days spent in the previous stage
+* 记录进入新阶段的时间戳
+* 计算在上一个阶段停留的天数
-### Create the Workflow
+### 创建工作流
-1. Go to **Workflows**
-2. Click **+ New Workflow**
-3. Name it "Track Stage Time"
+1. 进入 **工作流**
+2. 点击 **+ 新建工作流**
+3. 命名为"跟踪阶段时长"
-### Configure the Trigger
+### 配置触发器
-1. Add a **Record Updated** trigger
-2. Select **Opportunities** as the object
-3. Filter on: **Stage** field is updated
+1. 添加一个**记录已更新**触发器
+2. 将对象选择为**商机**
+3. 筛选条件:**阶段**字段已更新
-### Add Branches for Each Stage
+### 为每个阶段添加分支
- To create a new branch, right click on the workflow canvas and click **New action**. Then, link this action to the previous node by dragging the arrow from the previous node to this new action.
+ 要创建新分支,在工作流画布上右键点击并选择 **新建操作**。 然后,从上一个节点拖动箭头到此新操作,将其与上一个节点连接。
---
-**Branch 1: Stage = New (first stage)**
+**分支 1:阶段 = 新建(第一阶段)**
-Since this is the first stage, we only record the entry timestamp—no previous stage to calculate.
+由于这是第一阶段,我们只需记录进入时间戳——无需计算上一阶段。
-1. Add a **Filter** node: Stage = New
-2. Add a **Code** action:
+1. 添加一个**筛选**节点:阶段 = 新建
+2. 添加一个**代码**操作:
```javascript
export const main = async (): Promise => {
@@ -106,19 +106,19 @@ export const main = async (): Promise => {
};
```
-3. Add an **Update Record** action:
- * Record: The triggering Opportunity
- * Field: Last Entered New
- * Value: `now` from Code node
+3. 添加一个**更新记录**操作:
+ * 记录:触发的商机
+ * 字段:最近进入 新建
+ * 值:来自代码节点的`now`
---
-**Branch 2: Stage = Qualified**
+**分支 2:阶段 = 已合格**
-When moving to Qualified, record entry time AND calculate days spent in New.
+当进入“已合格”阶段时,同时记录进入时间并计算在“新建”阶段停留的天数。
-1. Add a **Filter** node: Stage = Qualified
-2. Add a **Code** action:
+1. 添加一个**筛选**节点:阶段 = 已合格
+2. 添加一个**代码**操作:
```javascript
export const main = async (params: {
@@ -138,21 +138,21 @@ export const main = async (params: {
};
```
-3. Configure the Code node input: map `lastEnteredPreviousStage` to the **Last Entered New** field
-4. Add an **Update Record** action:
- * Record: The triggering Opportunity
- * Fields to update:
- * Last Entered Qualified = `now`
- * Days in New = `daysInPreviousStage`
+3. 配置代码节点输入:将`lastEnteredPreviousStage`映射到**最近进入 新建**字段
+4. 添加一个**更新记录**操作:
+ * 记录:触发的商机
+ * 要更新的字段:
+ * 最近进入 已合格 = `now`
+ * 新建停留天数 = `daysInPreviousStage`
---
-**Branch 3: Stage = Meeting**
+**分支 3:阶段 = 会面**
-When moving to Meeting, record entry time AND calculate days spent in Qualified.
+当进入“会面”阶段时,同时记录进入时间并计算在“已合格”阶段停留的天数。
-1. Add a **Filter** node: Stage = Meeting
-2. Add a **Code** action:
+1. 添加一个**筛选**节点:阶段 = 会面
+2. 添加一个**代码**操作:
```javascript
export const main = async (params: {
@@ -172,60 +172,60 @@ export const main = async (params: {
};
```
-3. Configure the Code node input: map `lastEnteredPreviousStage` to the **Last Entered Qualified** field
-4. Add an **Update Record** action:
- * Record: The triggering Opportunity
- * Fields to update:
- * Last Entered Meeting = `now`
- * Days in Qualified = `daysInPreviousStage`
+3. 配置代码节点输入:将`lastEnteredPreviousStage`映射到**最近进入 已合格**字段
+4. 添加一个**更新记录**操作:
+ * 记录:触发的商机
+ * 要更新的字段:
+ * 最近进入 会面 = `now`
+ * 已合格停留天数 = `daysInPreviousStage`
---
-**Continue for remaining stages:**
+**对剩余阶段继续如下操作:**
-| Stage | Records | Calculates |
-| ----------- | ------------------------ | ------------------- |
-| Proposal | Last Entered Proposal | Days in Meeting |
-| Negotiation | Last Entered Negotiation | Days in Proposal |
-| Closed Won | Last Entered Closed Won | Days in Negotiation |
-| Closed Lost | Last Entered Closed Lost | Days in Negotiation |
+| 阶段 | 记录 | 计算 |
+| -- | ------- | ------ |
+| 提案 | 最近进入 提案 | 会面停留天数 |
+| 谈判 | 最近进入 谈判 | 提案停留天数 |
+| 赢单 | 最近进入 赢单 | 谈判停留天数 |
+| 输单 | 最近进入 输单 | 谈判停留天数 |
-The branches do not need to rejoin—each runs independently when its stage condition is met.
+各分支无需合并——当满足其阶段条件时,各自独立运行。
-## Step 3: Analyze Time in Stage
+## 步骤 3:分析阶段时长
-With timestamps and day counts recorded, you can now analyze deal velocity.
+在记录了时间戳和天数后,你现在可以分析交易速度。
-### Create a "Slow Deals" View
+### 创建“慢速交易”视图
-1. Create a Table view of Opportunities
-2. Add columns: Name, Stage, Days in [previous stage], Amount
-3. Sort by "Days in" field (descending)
-4. Filter by Stage to focus on one stage at a time
+1. 创建商机的表格视图
+2. 添加列:名称、阶段、[上一阶段]停留天数、金额
+3. 按“停留天数”字段排序(降序)
+4. 按阶段筛选,以便一次专注一个阶段
-Deals at the top spent the most time in the previous stage.
+位于顶部的交易在上一阶段停留时间最长。
-### Use Aggregations
+### 使用汇总
-In your pipeline Kanban view:
+在你的销售管道看板视图中:
-1. Click the number next to a Stage name
-2. Select **Average**
-3. Choose a "Days in" field
+1. 点击阶段名称旁的数字
+2. 选择**平均值**
+3. 选择一个“停留天数”字段
-This shows the average time deals spend in each stage.
+即可显示交易在各阶段的平均停留时间。
-## Summary
+## 摘要
-| Component | Purpose |
-| ------------------------ | ------------------------------------------------- |
-| **Last Entered fields** | Store when opportunity entered each stage |
-| **Days in fields** | Store how many days spent in each stage |
-| **Workflow** | Records timestamp AND calculates days in one pass |
-| **Views & Aggregations** | Analyze deal velocity and identify bottlenecks |
+| 组件 | 用途 |
+| ------------ | ------------- |
+| **“最近进入”字段** | 存储商机进入各阶段的时间 |
+| **“停留天数”字段** | 存储在各阶段停留的天数 |
+| **工作流** | 一次性记录时间戳并计算天数 |
+| **视图与汇总** | 分析交易速度并识别瓶颈 |
-## Related
+## 相关内容
-* [Workflows](/l/zh/user-guide/workflows/overview) — automation basics
-* [How to Create Custom Fields](/l/zh/user-guide/data-model/how-tos/create-custom-fields) — field configuration
-* [Kanban Views](/l/zh/user-guide/views-pipelines/capabilities/kanban-views) — aggregations
+* [工作流](/l/zh/user-guide/workflows/overview) — 自动化基础
+* [如何创建自定义字段](/l/zh/user-guide/data-model/how-tos/create-custom-fields) — 字段配置
+* [看板视图](/l/zh/user-guide/views-pipelines/capabilities/kanban-views) — 汇总
diff --git a/packages/twenty-docs/l/zh/user-guide/views-pipelines/overview.mdx b/packages/twenty-docs/l/zh/user-guide/views-pipelines/overview.mdx
index 1c5689ba4d..d96a989bb9 100644
--- a/packages/twenty-docs/l/zh/user-guide/views-pipelines/overview.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/views-pipelines/overview.mdx
@@ -1,137 +1,137 @@
---
-title: Views & Pipelines
-description: Learn how to create and manage views in Twenty.
+title: 视图与管道
+description: 了解如何在 Twenty 中创建和管理视图。
image: /images/user-guide/table-views/table.png
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-
+
-## Understanding Views
+## 了解视图
-Views are saved configurations that determine how your data is displayed. Each view can have its own:
+视图是已保存的配置,用于决定数据的显示方式。 每个视图都可以有:
-* **Layout**: Table, Kanban, or Calendar
-* **Filters**: Which records to show
-* **Sorting**: How records are ordered
-* **Fields**: Which columns are visible
+* **布局**:表格、看板或日历
+* **筛选器**:显示哪些记录
+* **排序**:记录的排序方式
+* **字段**:哪些列可见
-## View Types
+## 视图类型
-### Table View
+### 表视图
-The default spreadsheet-like view showing records in rows with customizable columns.
+默认的类似电子表格的视图,以行显示记录,并可自定义列。
-### Kanban View
+### 看板视图
-A visual board view where records appear as cards organized by stages. Ideal for:
+记录以卡片形式按阶段组织显示的可视化看板视图。 适用于:
-* Sales pipelines
-* Project tracking
-* Any workflow with defined stages
+* 销售管道
+* 项目跟踪
+* 任何具有明确阶段的工作流
-### Calendar View
+### 日历视图
-Display records with date fields on a calendar. Perfect for:
+在日历上显示包含日期字段的记录。 非常适合:
-* Meetings and events
-* Deadlines and due dates
-* Time-based planning
+* 会议和活动
+* 截止日期和到期日
+* 基于时间的计划
-## Creating a View
+## 创建视图
-There are two ways to create a new view.
+有两种方法可以创建新视图。
-### Use the View Dropdown Menu
+### 使用视图下拉菜单
-1. Navigate to any object (People, Companies, etc.)
-2. Click the view name at the top left (shows current view with a dropdown arrow)
-3. Click **+ Add view**
-4. Name your view and click **Create**
-5. Choose a layout (Table, Kanban, or Calendar) under **Options**
-6. Add filters and sorting as needed
-7. Select which fields to display and reorder them
-8. Click **Save**
+1. 导航到任意对象(人员、公司等)
+2. 点击左上角的视图名称(显示当前视图并带有下拉箭头)
+3. 点击 **+ 添加视图**
+4. 为视图命名并点击 **创建**
+5. 在 **选项** 下选择布局(表格、看板或日历)
+6. 按需添加筛选器和排序
+7. 选择要显示的字段并重新排序它们
+8. 单击 **保存**
-
+
-### Start by editting an existing view
+### 从编辑现有视图开始
-1. Navigate to any object (People, Companies, etc.)
-2. Choose a layout (Table, Kanban, or Calendar) under **Options** or Add filters and sorting as needed
-3. Click on **Save as new view**
-4. Name your view and click **Create**
-5. Keep editing your new view
-6. Click on **Update view** to save your additional configurations
+1. 导航到任意对象(人员、公司等)
+2. 在 **选项** 下选择布局(表格、看板或日历),或按需添加筛选器和排序
+3. 点击 **另存为新视图**
+4. 为视图命名并点击 **创建**
+5. 继续编辑新视图
+6. 点击 **更新视图** 以保存新增的配置
-
+
-## Managing Views
+## 管理视图
-### Edit a View
+### 编辑视图
-1. Select the view from the dropdown
-2. Make your changes (filters, sorting, columns)
-3. Click **Save** to update the view
+1. 从下拉菜单中选择视图
+2. 进行更改(筛选器、排序、列)
+3. 点击 **保存** 以更新视图
-### Rename a View or Change Its Icon
+### 重命名视图或更改其图标
-1. Open the view dropdown
-2. Click the **⋮** menu next to the view name
-3. Select **Edit**
-4. Change the name or icon
-5. Click **Save**
+1. 打开视图下拉菜单
+2. 点击视图名称旁的 **⋮** 菜单
+3. 选择 **编辑**
+4. 更改名称或图标
+5. 单击 **保存**
-### Reorder Views
+### 重新排序视图
-1. Open the view dropdown
-2. Click and drag a view by its handle
-3. Drop it in the desired position
-4. The new order is saved automatically
+1. 打开视图下拉菜单
+2. 点击并通过其手柄拖动视图
+3. 将其放到所需位置
+4. 新的顺序会自动保存
-### Add to Favorites
+### 添加到收藏夹
-Pin frequently used views for quick access:
+将常用视图固定,便于快速访问:
-1. Open the view dropdown
-2. Click the **⋮** menu next to a view
-3. Select **Add to favorites**
-4. The view appears in your favorites section
+1. 打开视图下拉菜单
+2. 点击视图旁的 **⋮** 菜单
+3. 选择 **添加到收藏夹**
+4. 该视图会显示在收藏夹区域
-### Delete a View
+### 删除视图
-1. Select the view to delete
-2. Click the view dropdown
-3. Click the **⋮** menu next to the view
-4. Select **Delete**
-5. Confirm deletion
+1. 选择要删除的视图
+2. 点击视图下拉菜单
+3. 点击该视图旁的 **⋮** 菜单
+4. 选择 **删除**
+5. 确认删除
- Deleted views cannot be recovered. Make sure you want to remove it before confirming.
+ 已删除的视图无法恢复。 确认前请确保确实要将其删除。
-## View Visibility
+## 视图可见性
-Each view (except the default "All [Object Name]" views) has its own visibility setting.
+每个视图(默认的 "All [Object Name]" 视图除外)都有其各自的可见性设置。
-To change visibility:
+要更改可见性:
-1. Open the view
-2. Click **Options → Visibility**
-3. Choose:
- * **Workspace**: Visible to all workspace members
- * **Unlisted**: Visible only to you
+1. 打开视图
+2. 点击 **选项 → 可见性**
+3. 选择:
+ * **工作区**:对所有工作区成员可见
+ * **未列出**:仅对自己可见
- The default "All [Object Name]" views cannot have their visibility changed.
+ 默认的 "All [Object Name]" 视图的可见性无法更改。
-## Next Steps
+## 下一步
-* [Table Views](/l/zh/user-guide/views-pipelines/capabilities/table-views)
-* [Kanban Views](/l/zh/user-guide/views-pipelines/capabilities/kanban-views)
-* [Filters and Sorting](/l/zh/user-guide/views-pipelines/capabilities/filters-and-sorting)
-* [View Settings](/l/zh/user-guide/views-pipelines/capabilities/view-settings)
+* [表视图](/l/zh/user-guide/views-pipelines/capabilities/table-views)
+* [看板视图](/l/zh/user-guide/views-pipelines/capabilities/kanban-views)
+* [筛选与排序](/l/zh/user-guide/views-pipelines/capabilities/filters-and-sorting)
+* [视图设置](/l/zh/user-guide/views-pipelines/capabilities/view-settings)
diff --git a/packages/twenty-docs/l/zh/user-guide/workflows/capabilities/send-emails-from-workflows.mdx b/packages/twenty-docs/l/zh/user-guide/workflows/capabilities/send-emails-from-workflows.mdx
index 6343f06e42..1eb333d36b 100644
--- a/packages/twenty-docs/l/zh/user-guide/workflows/capabilities/send-emails-from-workflows.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/workflows/capabilities/send-emails-from-workflows.mdx
@@ -1,149 +1,168 @@
---
-title: Send Emails from Workflows
-description: Send personalized emails automatically using workflow actions.
+title: 通过工作流发送电子邮件
+description: 使用工作流操作自动发送个性化电子邮件。
image: /images/user-guide/workflows/workflow.png
---
-Automatically send emails when specific events occur in your CRM—welcome new contacts, follow up on opportunities, or notify team members.
+当您的 CRM 中发生特定事件时自动发送电子邮件——欢迎新联系人、跟进机会,或通知团队成员。
-## Prerequisites
+## 先决条件
-Before you can send emails from workflows:
+在您可以通过工作流发送电子邮件之前:
-1. Connect an email account under **Settings → Accounts**
-2. Ensure the account has sending permissions enabled
+1. 在 **Settings → Accounts** 下连接电子邮件帐户
+2. 确保该帐户已启用发送权限
-## Basic Email Workflow
+## 基础电子邮件工作流
-### Example: Welcome Email for New Contacts
+### 示例:新联系人的欢迎电子邮件
-**Goal**: Send a welcome email when a new person is added to the CRM.
+**目标**:当 CRM 中添加新联系人时,发送一封欢迎电子邮件。
-**Setup**:
+**设置**:
-1. **Create workflow**: Go to **Settings → Workflows** and click **+ New Workflow**
+1. **创建工作流**:转到 **Settings → Workflows** 并点击 **+ New Workflow**
-2. **Add trigger**: Select **Record is Created** → **People**
+2. **添加触发器**:选择 **Record is Created** → **People**
-3. **Add Send Email action**:
- * Click **+** to add an action
- * Select **Send Email**
- * Configure the email:
+3. **添加 Send Email 操作**:
+ * 点击 **+** 以添加一个操作
+ * 选择 **Send Email**
+ * 配置电子邮件:
-| Field | Value |
-| ----------- | -------------------------------------- |
-| **To** | `{{trigger.object.email}}` |
-| **Subject** | `Welcome to {{Your Company Name}}` |
-| **Body** | `Hi {{trigger.object.firstName}}, ...` |
+| 字段 | 值 |
+| ------- | -------------------------------------- |
+| **收件人** | `{{trigger.object.email}}` |
+| **主题** | `欢迎来到 {{Your Company Name}}` |
+| **正文** | `Hi {{trigger.object.firstName}}, ...` |
-4. **Test and activate**: Test with a sample record, then activate
+4. **测试并激活**:使用示例记录进行测试,然后激活
-## Using Variables in Emails
+## 在电子邮件中使用变量
-Reference data from previous steps using `{{variable}}` syntax:
+使用 `{{variable}}` 语法引用前面步骤中的数据:
```text
Hi {{trigger.object.firstName}},
-Thank you for connecting with us!
+感谢与我们建立联系!
-Your company, {{trigger.object.company.name}}, is now in our system.
+贵公司 {{trigger.object.company.name}} 现已加入我们的系统。
-Best regards,
-The Team
+此致敬礼,
+团队
```
-### Available Variables from Triggers
+### 触发器中的可用变量
-| Trigger Type | Common Variables |
-| -------------------------- | -------------------------------------- |
-| **Record Created/Updated** | `{{trigger.object.fieldName}}` |
-| **Manual** | `{{trigger.selectedRecord.fieldName}}` |
-| **Webhook** | `{{trigger.body.fieldName}}` |
+| 触发类型 | 常用变量 |
+| ------------- | -------------------------------------- |
+| **记录已创建/已更新** | `{{trigger.object.fieldName}}` |
+| **手动** | `{{trigger.selectedRecord.fieldName}}` |
+| **Webhook** | `{{trigger.body.fieldName}}` |
-## Advanced: Conditional Emails
+## 高级:条件邮件
-### Example: Different Emails Based on Lead Source
+### 示例:基于线索来源发送不同邮件
-**Goal**: Send different welcome emails based on where the lead came from.
+**目标**:根据线索来源发送不同的欢迎邮件。
-**Setup**:
+**设置**:
-1. **Trigger**: Record is Created (People)
+1. **触发器**:Record is Created(People)
-2. **Add Filter action**:
- * Condition: `{{trigger.object.source}}` equals `"Website"`
- * If true → continue to website welcome email
+2. **添加 Filter 操作**:
+ * 条件:`{{trigger.object.source}}` 等于 "Website"
+ * 如果为真 → 继续发送网站渠道的欢迎邮件
-3. **Branch for other sources**:
- * Create parallel branches for different sources
- * Each branch has its own Send Email action
+3. **其他来源的分支**:
+ * 为不同来源创建并行分支
+ * 每个分支都有其自己的 Send Email 操作
-## Sending Emails to Multiple Recipients
+## 向多个收件人发送电子邮件
-### Example: Notify Team When Deal Closes
+### 示例:交易达成时通知团队
-**Goal**: Email the sales rep and their manager when an opportunity is won.
+**目标**:当机会赢单时,向销售代表及其经理发送电子邮件。
-**Setup**:
+**设置**:
-1. **Trigger**: Record is Updated (Opportunities, Stage = "Closed Won")
+1. **触发器**:记录已更新(Opportunities,Stage = "Closed Won")
-2. **Search Records**: Find the opportunity owner's manager
+2. **搜索记录**:查找机会所有者的经理
-3. **Send Email #1**: To opportunity owner
- * To: `{{trigger.object.owner.email}}`
- * Subject: `Congratulations on closing {{trigger.object.name}}!`
+3. **发送邮件 #1**:发送给机会所有者
+ * 收件人:`{{trigger.object.owner.email}}`
+ * 主题:`Congratulations on closing {{trigger.object.name}}!`
-4. **Send Email #2**: To manager
- * To: `{{searchRecords.manager.email}}`
- * Subject: `Deal Won: {{trigger.object.name}}`
+4. **发送邮件 #2**:发送给经理
+ * 收件人:`{{searchRecords.manager.email}}`
+ * 主题:`Deal Won: {{trigger.object.name}}`
-## Scheduled Follow-up Emails
+## 定时跟进邮件
-### Example: Follow Up 3 Days After Meeting
+### 示例:会议后 3 天进行跟进
-**Goal**: Send a follow-up email 3 days after a meeting is logged.
+**目标**:在会议被记录后 3 天发送一封跟进邮件。
-**Setup**:
+**设置**:
-1. **Trigger**: Record is Created (Activities, Type = "Meeting")
+1. **触发器**:记录创建(Activities,Type = "Meeting")
-2. **Delay action**: Wait 3 days
+2. **延迟操作**:等待 3 天
-3. **Send Email**:
- * To: Meeting attendee
- * Subject: Following up on our conversation
- * Body: Reference meeting details from trigger
+3. **发送邮件**:
+ * 收件人:会议参与者
+ * 主题:就我们的交流进行跟进
+ * 正文:参考触发器中的会议详细信息
-## Best Practices
+## 电子邮件附件
-### Email Content
+您可以将文件附加到由工作流发送的电子邮件中。 该附件是在配置工作流时上传的静态文件。
-* Keep subject lines concise and relevant
-* Personalize with recipient's name
-* Include a clear call to action
-* Test emails before activating
+### 如何添加附件
-### Deliverability
+1. 在 **Send Email** 操作中,点击 **Attachments** 按钮
+2. 点击以从您的计算机上传文件
+3. 该文件将附加到此操作发送的所有电子邮件中
-* Don't send too many emails too quickly
-* Use professional email signatures
-* Avoid spam trigger words
-* Ensure unsubscribe options for marketing emails
+### 常见使用案例
-### Troubleshooting
-
-* Verify email account is connected and active
-* Check recipient email address is valid
-* Review workflow runs for error messages
-* Test with your own email address first
+| 用例 | 示例文件 |
+| -------- | ----------- |
+| **欢迎邮件** | 公司宣传册 (PDF) |
+| **入门序列** | 入门指南 |
+| **销售跟进** | 产品目录或价目表 |
+| **活动确认** | 活动详情或议程 |
- **Coming soon**: Email attachments will be available in Q1 2026.
+ 附件是静态的——将向所有收件人发送相同的文件。 对于动态文档(如个性化报价),请使用 [无服务器函数](/l/zh/user-guide/workflows/how-tos/connect-to-other-tools/generate-pdf-from-twenty) 生成并附加文件。
-## Related
+## 最佳实践
-* [Workflow Triggers](/l/zh/user-guide/workflows/capabilities/workflow-triggers)
-* [Workflow Actions](/l/zh/user-guide/workflows/capabilities/workflow-actions)
+### 电子邮件内容
+
+* 保持主题行简洁且相关
+* 使用收件人姓名进行个性化
+* 包含明确的行动号召
+* 在激活之前测试邮件
+
+### 送达率
+
+* 不要在短时间内发送过多电子邮件
+* 使用专业的电子邮件签名
+* 避免使用垃圾邮件触发词
+* 确保营销邮件提供退订选项
+
+### 故障排除
+
+* 确认电子邮件帐户已连接且处于活动状态
+* 检查收件人的电子邮件地址是否有效
+* 查看工作流运行中的错误消息
+* 先使用您自己的电子邮件地址进行测试
+
+## 相关内容
+
+* [工作流触发器](/l/zh/user-guide/workflows/capabilities/workflow-triggers)
+* [工作流操作](/l/zh/user-guide/workflows/capabilities/workflow-actions)
diff --git a/packages/twenty-docs/l/zh/user-guide/workflows/capabilities/use-branches-in-workflows.mdx b/packages/twenty-docs/l/zh/user-guide/workflows/capabilities/use-branches-in-workflows.mdx
index ef90f84b9c..8bc2f30c87 100644
--- a/packages/twenty-docs/l/zh/user-guide/workflows/capabilities/use-branches-in-workflows.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/workflows/capabilities/use-branches-in-workflows.mdx
@@ -1,90 +1,90 @@
---
-title: Use Branches in Workflows
-description: Understand how branches work and how to control which path is executed.
+title: 在工作流中使用分支
+description: 了解分支如何工作,以及如何控制执行哪条路径。
---
-## How Branches Work
+## 分支的工作方式
-In the workflow editor, you can create multiple paths (branches) going out from a single node. This allows you to build complex automations with different outcomes.
+在工作流编辑器中,您可以从单个节点延伸出多条路径(分支)。 这使您能够构建具有不同结果的复杂自动化流程。
-**Important**: When a workflow runs, **all branches execute in parallel by default**. There is no built-in "if/else" logic to choose one branch over another—every path will run simultaneously.
+**重要**:当工作流运行时,默认情况下**所有分支都会并行执行**。 没有内置的 "if/else" 逻辑来在分支间做出选择——每条路径都会同时运行。
-## Controlling Which Branch Runs
+## 控制执行哪个分支
-To execute only one branch based on specific conditions, **add a Filter node at the beginning of each branch**.
+若要根据特定条件仅执行一个分支,**在每个分支的开头添加一个 Filter 节点**。
-### Example Setup
+### 示例设置
-1. Create your workflow with multiple branches from a single node
-2. Add a **Filter** node as the first step in each branch
-3. Set conditions on each Filter to determine when that branch should continue
-4. Only the branch(es) whose Filter conditions are met will proceed
+1. 从单个节点创建包含多个分支的工作流
+2. 在每个分支的第一步添加一个**Filter** 节点
+3. 在每个 Filter 上设置条件,以确定该分支何时继续
+4. 只有满足其 Filter 条件的分支会继续
-### How Filters Work
+### Filter 的工作方式
-* If the Filter condition is **met**: The branch continues executing
-* If the Filter condition is **not met**: The branch stops at the Filter node
+* 如果 Filter 条件被**满足**:该分支继续执行
+* 如果 Filter 条件**未满足**:该分支会在 Filter 节点停止
-This effectively creates conditional logic where only the appropriate branch runs based on your data.
+这实际上创建了条件逻辑,使只有与您的数据相匹配的合适分支会运行。
-## Example: Route by Deal Size
+## 示例:按交易金额路由
-**Scenario**: When a deal is closed, send different notifications based on deal size.
+**场景**:当交易达成时,根据交易金额发送不同的通知。
-1. **Trigger**: Opportunity updated (Stage = Closed Won)
-2. **Branch 1**: Filter for Amount > $10,000 → Send Slack message to #big-deals
-3. **Branch 2**: Filter for Amount ≤ $10,000 → Send email to sales manager
+1. **触发器**:Opportunity 已更新(Stage = Closed Won)
+2. **分支 1**:Filter 条件:Amount > $10,000 → 向 #big-deals 发送 Slack 消息
+3. **分支 2**:Filter 条件:Amount ≤ $10,000 → 向销售经理发送电子邮件
-Both branches start, but only the one matching the deal amount will continue past its Filter.
+两个分支都会启动,但只有与交易金额匹配的分支会通过其 Filter 继续执行。
-## Creating Branches
+## 创建分支
- To create a new branch from an existing step, click the **+** button on the step and add your action. You can add multiple branches by clicking **+** multiple times.
+ 要从现有步骤创建新分支,请点击该步骤上的 **+** 按钮并添加您的操作。 您可以多次点击 **+** 来添加多个分支。
-1. In the workflow editor, select the step you want to branch from
-2. Click the **+** button to add an action
-3. This creates one branch
-4. Click **+** again on the same step to create additional branches
-5. Each branch can have its own sequence of actions
+1. 在工作流编辑器中,选择您想要从其分支出去的步骤
+2. 点击 **+** 以添加一个操作
+3. 这将创建一个分支
+4. 在同一步骤上再次点击 **+** 以创建更多分支
+5. 每个分支都可以拥有自己的一系列操作
-## Merging Branches Back Together
+## 合并分支
-After parallel branches complete their work, you can merge them back into a single path:
+并行分支完成其工作后,您可以将它们合并回单一路径:
-1. Complete your branched actions
-2. Add a new step that should run after all branches
-3. Drag a connection from the last step of each branch to this new step
-4. The merged step waits for all connected branches to complete before executing
+1. 完成您的分支内操作
+2. 在所有分支之后添加一个应运行的新步骤
+3. 将每个分支末端的连接拖拽到这个新步骤
+4. 合并后的步骤会在所有连接的分支完成后才执行
-### Example: Process Then Notify
+### 示例:先处理后通知
```
-Trigger
+触发器
│
- ├── Branch A: Update Customer Record
+ ├── 分支 A:更新客户记录
│
- └── Branch B: Create Support Ticket
+ └── 分支 B:创建支持工单
↘ ↙
- Merged Step: Send Confirmation Email
+ 合并步骤:发送确认电子邮件
```
-The confirmation email sends only after both the customer update and ticket creation are done.
+仅在客户更新和工单创建都完成后才会发送确认电子邮件。
-## Best Practices
+## 最佳实践
-* Always use **Filter nodes** at the start of branches when you want conditional execution
-* Keep branch conditions **mutually exclusive** to avoid duplicate actions
-* Test your workflows with different data to ensure the correct branches run
-* **Rename branch steps** descriptively so it's clear what each path does
-* **Merge branches** when you need a final action after parallel processing
+* 当您需要条件执行时,请始终在分支开始处使用**Filter 节点**
+* 使分支条件**互斥**,以避免重复操作
+* 使用不同数据测试您的工作流,以确保运行正确的分支
+* **重命名分支步骤**,使每条路径的作用清晰明了
+* **合并分支**,当您在并行处理后需要执行最终操作时
-## Related
+## 相关内容
-* [Workflows FAQ](/l/zh/user-guide/workflows/how-tos/need-more-help/workflows-faq) — answers about parallel execution
-* [Workflow Actions](/l/zh/user-guide/workflows/capabilities/workflow-actions) — available actions for branches
+* [工作流常见问题](/l/zh/user-guide/workflows/how-tos/need-more-help/workflows-faq) — 关于并行执行的解答
+* [工作流操作](/l/zh/user-guide/workflows/capabilities/workflow-actions) — 分支可用的操作
diff --git a/packages/twenty-docs/l/zh/user-guide/workflows/capabilities/use-iterator.mdx b/packages/twenty-docs/l/zh/user-guide/workflows/capabilities/use-iterator.mdx
index 7a3c80af44..d9d9519023 100644
--- a/packages/twenty-docs/l/zh/user-guide/workflows/capabilities/use-iterator.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/workflows/capabilities/use-iterator.mdx
@@ -1,92 +1,88 @@
---
-title: Use Iterator
-description: Loop through arrays of records to perform actions on each item.
+title: 使用迭代器
+description: 遍历记录数组,对每个项执行操作。
image: /images/user-guide/workflows/workflow.png
---
-Iterator lets you loop through an array of records and perform actions on each one. It's essential for workflows that need to process multiple records returned by Search Records or received via webhooks.
+迭代器可让你遍历记录数组,并对其中每一项执行操作。 对于需要处理由搜索记录返回或通过 Webhook 接收的多条记录的工作流,它至关重要。
-
- Iterator is currently in beta. Activate it under **Settings → Releases → Lab**.
-
+## 何时使用迭代器
-## When to Use Iterator
+| 场景 | 示例 |
+| ----------------- | --------------- |
+| **处理搜索结果** | 向每位找到的人员发送电子邮件。 |
+| **处理 Webhook 数组** | 按顺序为每个项目创建记录 |
+| **批量更新** | 使用计算得出的值更新多条记录 |
+| **通知** | 就某个事件通知多位人员 |
-| Scenario | Example |
-| -------------------------- | ---------------------------------------------- |
-| **Process search results** | Send email to each person found |
-| **Handle webhook arrays** | Create records for each item in order |
-| **Bulk updates** | Update multiple records with calculated values |
-| **Notifications** | Alert multiple people about an event |
+## 了解迭代器
-## Understanding Iterator
+迭代器需要一个**数组**作为输入。 然后:
-Iterator expects an **array** as input. It then:
+1. 从数组中取出第一个元素
+2. 使用该元素运行迭代器内的所有操作
+3. 移动到下一个元素
+4. 重复,直到所有元素处理完毕
-1. Takes the first item from the array
-2. Runs all actions inside the iterator with that item
-3. Moves to the next item
-4. Repeats until all items are processed
+## 基本设置
-## Basic Setup
+### 示例:向搜索结果中的所有人发送电子邮件
-### Example: Email Everyone in Search Results
+**目标**:查找特定公司的所有联系人,并向每个人发送个性化电子邮件。
-**Goal**: Find all contacts in a specific company and send each one a personalized email.
+### 步骤 1:搜索记录
-### Step 1: Search for Records
+1. 添加 **搜索记录** 操作
+2. 对象:**People**
+3. 筛选条件:公司等于 "Acme Inc"
+4. 这将返回一个人员数组
-1. Add **Search Records** action
-2. Object: **People**
-3. Filter: Company equals "Acme Inc"
-4. This returns an array of people
+### 步骤 2:检查是否有结果
-### Step 2: Check Results Exist
+1. 添加 **过滤** 操作
+2. 条件:`{{searchRecords.length}}` 大于 0
+3. 这可防止在结果为空时出现迭代器错误
-1. Add **Filter** action
-2. Condition: `{{searchRecords.length}}` is greater than 0
-3. This prevents Iterator errors on empty results
+### 步骤 3:添加迭代器
-### Step 3: Add Iterator
+1. 添加 **Iterator** 操作
+2. 数组输入:选择 `{{searchRecords}}`
+3. 这会创建一个循环
-1. Add **Iterator** action
-2. Array input: Select `{{searchRecords}}`
-3. This creates a loop
+### 步骤 4:在迭代器内添加操作
-### Step 4: Add Actions Inside Iterator
+在迭代器之后放置的操作会针对每个项运行:
-Actions placed after Iterator run for each item:
+1. 添加 **Send Email** 操作(在迭代器内)
+2. 收件人:`{{iterator.currentItem.email}}`
+3. 主题:你好,`{{iterator.currentItem.firstName}}`!
+4. 正文:使用当前项字段的个性化消息
-1. Add **Send Email** action (inside iterator)
-2. To: `{{iterator.currentItem.email}}`
-3. Subject: Hello `{{iterator.currentItem.firstName}}`!
-4. Body: Personalized message using current item fields
+### 结果
-### Result
+如果 Search Records 返回 5 个人,迭代器将:
-If Search Records returns 5 people, the Iterator:
+* 向第 1 个人发送电子邮件
+* 向第 2 个人发送电子邮件
+* ... 对全部 5 人继续执行
-* Sends email to person 1
-* Sends email to person 2
-* ... continues for all 5
+## 访问当前项数据
-## Accessing Current Item Data
+在迭代器内,使用 `{{iterator.currentItem}}` 访问当前记录:
-Inside Iterator, use `{{iterator.currentItem}}` to access the current record:
+| 变量 | 描述 |
+| --------------------------------------- | ----------------- |
+| `{{iterator.currentItem}}` | 整个当前记录对象 |
+| `{{iterator.currentItem.id}}` | 记录 ID |
+| `{{iterator.currentItem.email}}` | 电子邮件字段 |
+| `{{iterator.currentItem.company.name}}` | 关联的公司名称 |
+| `{{iterator.index}}` | 在数组中的当前位置(从 0 开始) |
-| Variable | Description |
-| --------------------------------------- | ----------------------------------- |
-| `{{iterator.currentItem}}` | The entire current record object |
-| `{{iterator.currentItem.id}}` | Record ID |
-| `{{iterator.currentItem.email}}` | Email field |
-| `{{iterator.currentItem.company.name}}` | Related company name |
-| `{{iterator.index}}` | Current position in array (0-based) |
+## 常见模式
-## Common Patterns
+### 更新多条记录
-### Update Multiple Records
-
-**Goal**: Mark all overdue tasks as "Late"
+**目标**:将所有逾期任务标记为 "Late"
```
1. Search Records (Tasks, Due Date < Today, Status ≠ Completed)
@@ -98,9 +94,9 @@ Inside Iterator, use `{{iterator.currentItem}}` to access the current record:
- Status: Late
```
-### Create Records from Array
+### 从数组创建记录
-**Goal**: Webhook receives order with multiple items, create a record for each
+**目标**:Webhook 接收到包含多个项目的订单,为每个项目创建一条记录。
```
1. Webhook Trigger (receives items array)
@@ -113,9 +109,9 @@ Inside Iterator, use `{{iterator.currentItem}}` to access the current record:
- Related Order: {{trigger.body.orderId}}
```
-### Conditional Processing Inside Loop
+### 在循环内进行条件处理
-**Goal**: Only send email to contacts with valid emails
+**目标**:仅向电子邮件地址有效的联系人发送邮件
```
1. Search Records (People)
@@ -125,56 +121,56 @@ Inside Iterator, use `{{iterator.currentItem}}` to access the current record:
- To: {{iterator.currentItem.email}}
```
-## Troubleshooting
+## 故障排除
-### "Iterator expects an array"
+### "迭代器需要一个数组"
-**Cause**: You passed a single record instead of an array.
+**原因**:你传递的是单个记录而不是数组。
-**Fix**: Make sure you're passing the result of Search Records or an array field, not a single record.
+**修复方法**:请确保传递的是 Search Records 的结果或数组字段,而不是单个记录。
```
✅ Correct: {{searchRecords}}
❌ Wrong: {{searchRecords[0]}}
```
-### Iterator Doesn't Run
+### 迭代器未运行
-**Cause**: The array is empty.
+**原因**:数组为空。
-**Fix**: Add a Filter before Iterator to check array length:
+**修复方法**:在迭代器之前添加筛选条件以检查数组长度:
```
Filter: {{searchRecords.length}} > 0
```
-### Actions Run Too Many Times
+### 操作运行次数过多
-**Cause**: Search Records returned more records than expected.
+**原因**:Search Records 返回的记录数超出预期。
-**Fix**:
+**修复方法**:
-* Add more specific filters to Search Records
-* Set a limit on Search Records (max 200)
-* Add Filter inside Iterator for additional conditions
+* 在 Search Records 中添加更具体的筛选条件
+* 在 Search Records 中设置限制(最多 200)
+* 在迭代器内部添加筛选条件用于附加条件
-## Performance Considerations
+## 性能注意事项
-* **Credit usage**: Each iteration consumes credits for its actions
-* **Time**: Large arrays take longer to process
-* **Limits**: Consider batching very large operations
-* **Rate limits**: External API calls may hit rate limits with many iterations
+* **额度使用**:每次迭代都会为其操作消耗额度
+* **时间**:较大的数组处理时间更长
+* **限制**:对于非常大的操作,考虑分批处理
+* **速率限制**:大量迭代的外部 API 调用可能触发速率限制
-## Best Practices
+## 最佳实践
-1. **Always check array length** before Iterator to avoid errors
-2. **Add filters inside loops** when not all items need processing
-3. **Rename your Iterator step** to describe what it's looping through
-4. **Test with small arrays** before processing large datasets
-5. **Monitor workflow runs** to ensure iterations complete as expected
+1. **在迭代器之前始终检查数组长度**,以避免错误
+2. **当并非所有项都需要处理时,在循环中添加筛选条件**
+3. **重命名你的迭代器步骤**,以描述它正在遍历的内容
+4. **先使用小数组进行测试**,再处理大型数据集
+5. **监控工作流运行**,以确保迭代按预期完成
-## Related
+## 相关内容
-* [Workflow Actions](/l/zh/user-guide/workflows/capabilities/workflow-actions)
-* [How to Use Branches](/l/zh/user-guide/workflows/capabilities/use-branches-in-workflows)
-* [Workflows FAQ](/l/zh/user-guide/workflows/how-tos/need-more-help/workflows-faq)
+* [工作流操作](/l/zh/user-guide/workflows/capabilities/workflow-actions)
+* [如何使用分支](/l/zh/user-guide/workflows/capabilities/use-branches-in-workflows)
+* [工作流常见问题](/l/zh/user-guide/workflows/how-tos/need-more-help/workflows-faq)
diff --git a/packages/twenty-docs/l/zh/user-guide/workflows/capabilities/workflow-actions.mdx b/packages/twenty-docs/l/zh/user-guide/workflows/capabilities/workflow-actions.mdx
index 0e07230314..372e3add35 100644
--- a/packages/twenty-docs/l/zh/user-guide/workflows/capabilities/workflow-actions.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/workflows/capabilities/workflow-actions.mdx
@@ -1,311 +1,311 @@
---
-title: Workflow Actions
-description: Learn about the actions available in Twenty workflows.
+title: 工作流动作
+description: 了解 Twenty 工作流中可用的操作。
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-## About Actions
+## 关于操作
-Actions define what happens after a trigger fires. You can chain multiple actions together to build complex automations.
+动作定义触发后将发生的事件。 你可以将多个操作串联在一起,以构建复杂的自动化流程。
- * Use the variable picker (click the `(x+)` icon) to browse available data from previous steps
- * Hover over any input field to see which step a variable comes from — helpful when the same field (e.g., ID) exists in multiple previous steps
- * Give each action a descriptive name for easier maintenance
+ * 使用变量选择器(点击`(x+)`图标)浏览来自先前步骤的可用数据
+ * 将鼠标悬停在任意输入字段上即可查看变量来自哪个步骤——当相同字段(例如,ID)存在于多个先前步骤时,这很有帮助
+ * 为每个操作指定一个具有描述性的名称,以便于维护
-## Record Actions
+## 记录操作
-### Create a Record
+### 创建记录
-Adds a new record to a selected object.
+在选定的对象中添加新记录。
-**Configuration**:
+**配置**:
-* Select the target object
-* Fill out the required and optional fields
-* Use data from previous steps or input values manually to populate fields
+* 选择目标对象
+* 填写必填和可选字段
+* 使用来自先前步骤的数据,或手动输入值来填充字段
-**Output**: The newly created record data is available for use in subsequent steps.
+**输出**:新创建的记录数据可在后续步骤中使用。
-### Update Record
+### 更新记录
-Modifies an existing record in a selected object.
+修改选定对象中的现有记录。
-**Configuration**:
+**配置**:
-* Select the target object
-* Choose the specific record to update.
- * You can either choose a fixed record, using the drop down menu displaying all available records.
- * Or you can have the record dynamically selected, by designating a record found in a previous step, using the `(x+)`. You cannot search for the record based on different criteria at this stage. If you've not yet identified the record, add a `Search Record` step before this `Update Record` step.
-* Select fields to modify and enter new values
+* 选择目标对象
+* 选择要更新的特定记录.
+ * 你可以通过下拉菜单选择一个固定记录,该菜单会显示所有可用记录。
+ * 或者通过使用`(x+)`指定在先前步骤中找到的记录,让记录被动态选择。 此阶段无法根据不同条件搜索该记录。 如果你尚未确定该记录,请在此`Update Record`步骤之前添加一个`Search Record`步骤。
+* 选择要修改的字段并输入新值
-**Output**: The updated record data is available for use in subsequent steps.
+**输出**:更新后的记录数据可用于后续步骤。
-### Delete Record
+### 删除记录
-Removes a record from a selected object.
+从选定的对象中删除记录。
-**Configuration**:
+**配置**:
-* Select the target object
-* Choose the specific record to delete
+* 选择目标对象
+* 选择要删除的特定记录
-**Output**: The deleted record data remains available for use in subsequent steps.
+**输出**:已删除的记录数据可继续用于后续步骤。
-### Search Records
+### 搜索记录
-Finds records within a selected object using filter conditions.
+在选定对象中使用过滤条件查找记录。
-**Configuration**:
+**配置**:
-* Select the object to search
-* Set filter criteria to narrow results
-* Configure sorting and limits
+* 选择要搜索的对象
+* 设置过滤条件以缩小结果
+* 配置排序和限制
-**Output**: Returns matching records that can be used in subsequent steps.
+**输出**:返回可在后续步骤中使用的匹配记录。
- **Limit**: Search Records returns a maximum of **200 records**. If you need to process more, add specific filters to reduce results or use scheduled workflows to process in batches.
+ **限制**:Search Records 最多返回 **200 条记录**。 如果需要处理更多,请添加特定筛选器以减少结果,或使用计划的工作流分批处理。
-**Best Practice**: Use [branches](/l/zh/user-guide/workflows/capabilities/workflow-branches) after Search Records to handle "found" vs "not found" scenarios.
+**最佳实践**:在 Search Records 之后使用[分支](/l/zh/user-guide/workflows/capabilities/workflow-branches)来处理"找到"与"未找到"场景。
-### Upsert Record
+### Upsert 记录
-Creates a new record or updates an existing one based on matching criteria. This is useful when you're not sure if a record already exists.
+根据匹配条件创建新记录或更新现有记录。 当你不确定记录是否已存在时,这非常有用。
-**Configuration**:
+**配置**:
-* Select the target object
-* Note which fields can be used for matching: email for People, domain for Companies, ID for any object, or any field marked as Unique. You'll need to populate at least one of these below.
-* Fill out the field values. Do not forget to populate at least one of the unique identifiers.
+* 选择目标对象
+* 请注意哪些字段可用于匹配:People 使用 email,Companies 使用 domain,任何对象使用 ID,或任何标记为 "Unique" 的字段。 你需要在下方至少填充其中一个。
+* 填写字段值。 别忘了至少填充一个唯一标识符。
- **Matching usually works even better when adding only one unique identifier.** For example, the screenshot below will match companies based on their domain. The ID is not necessarily needed.
+ **仅添加一个唯一标识符时,匹配通常效果更好。** 例如,下面的截图将基于其域名匹配公司。 不一定需要 ID。
-* Use data from previous steps to populate fields
+* 使用来自先前步骤的数据填充字段
-**How it works**:
+**工作原理**:
-1. Searches for a record matching your criteria
-2. If found → updates the existing record
-3. If not found → creates a new record
+1. 搜索与您的条件匹配的记录
+2. 如果找到 → 更新现有记录
+3. 如果未找到 → 创建新记录
-**Output**: The created or updated record data is available for use in subsequent steps.
+**输出**:已创建或已更新的记录数据可用于后续步骤。
-## Flow Actions
+## 工作流操作
-### Iterator
+### 迭代器
-**Loops through an array of records** returned from a previous step, allowing you to perform actions on each record individually.
+**循环遍历**前一步返回的记录数组,允许你对每条记录分别执行操作。
-**Configuration**:
+**配置**:
-* Select the array of records from a previous step (e.g., results from Search Records, from a Manual trigger with Bulk availability, from a code node)
-* Define the actions to perform on each record in the loop.
+* 从前一步中选择记录数组(例如,来自“搜索记录”的结果、来自具有批量可用性的手动触发、来自代码节点)
+* 定义要对循环中每个记录执行的动作.
- - You can add several actions within an iterator.
- - When using branches inside an iterator, make sure the last step of each branch connects back to the iterator to close the loop.
+ - 你可以在迭代器中添加多个操作。
+ - 在迭代器中使用分支时,确保每个分支的最后一步连接回迭代器以闭合循环。
-* Access `Current Item` Fields: to use fields from the record currently being processed, click on the **Iterator** step, then select **Current item**. The list of available fields from that record will be displayed and can be selected for use in subsequent actions.
+* 访问 `Current Item` 字段:要使用当前正在处理的记录中的字段,点击 **Iterator** 步骤,然后选择 **Current item**。 将显示该记录可用字段的列表,并可选择用于后续操作。
-
+
-### Filter
+### 过滤
-Filters records based on specified conditions, allowing only records that meet the criteria to pass through.
+根据指定条件过滤记录,仅允许满足条件的记录通过。
-**Configuration**:
+**配置**:
-* Select the record to filter
-* Define filter conditions and criteria
-* Configure which records should pass through to subsequent steps
+* 选择要过滤的记录
+* 定义过滤条件和标准
+* 配置哪些记录应通过到后续步骤
- 1. **Output**: Filter nodes don't return data—they act as gates. If the conditions are met, the workflow continues. If not, the workflow stops at that branch.
- 2. The `IS` operator can be used with numeric fields. It performs as an `EQUAL`.
+ 1. **输出**:筛选器节点不返回数据——它们充当闸门。 如果满足条件,工作流将继续。 否则,工作流会在该分支停止。
+ 2. `IS` 运算符可用于数值字段。 其作用等同于 `EQUAL`。
-### Delay
+### 延迟
-Pauses workflow execution for a specified duration or until a specific date/time.
+将工作流执行暂停指定时长或直到特定日期/时间。
-**Delay Types**:
+**延迟类型**:
-| Type | Description |
-| ------------------ | ------------------------------------------------------------------ |
-| **Duration** | Wait for a specific amount of time (days, hours, minutes, seconds) |
-| **Scheduled Date** | Wait until a specific date and time |
+| 类型 | 描述 |
+| -------- | ----------------- |
+| **持续时间** | 等待特定时长(天、小时、分钟、秒) |
+| **计划日期** | 等待直到特定日期和时间 |
-**Configuration for Duration**:
+**持续时间的配置**:
-* Set days, hours, minutes, and/or seconds
-* Combine multiple units (e.g., 2 days and 4 hours)
+* 设置天、小时、分钟和/或秒
+* 组合多个单位(例如 2 天 4 小时)
-**Configuration for Scheduled Date**:
+**计划日期的配置**:
-* Select a date and time
-* Can reference a date field from a previous step (e.g., follow up 3 days after a meeting)
+* 选择日期和时间
+* 可以引用前一步的日期字段(例如,在会议后 3 天跟进)
-**Use cases**:
+**用法**:
-* Wait 24 hours before sending a follow-up email
-* Pause until an opportunity's close date
-* Schedule actions for business hours
+* 在发送跟进邮件前等待 24 小时
+* 暂停直到商机的关闭日期
+* 将操作安排在工作时间内
- The scheduled date cannot be in the past. If a date field from a previous step is used and the date has already passed, the workflow will fail.
+ 计划日期不能早于当前时间。 如果使用了前一步的日期字段且该日期已过去,工作流将失败。
-**Limits & Credits**:
+**限制与点数**:
-* **No maximum duration limit**—you can set delays of minutes, days, weeks, or longer
-* **1 credit consumed** when the Delay node executes, regardless of duration
-* **No credits consumed** while waiting—a 5-minute delay costs the same as a 5-day delay
+* **无最长期限限制**——你可以设置分钟、天、周或更长的延迟
+* **消耗 1 个点数**——无论持续时间如何,延迟节点执行时会消耗。
+* **等待期间不消耗点数**——5 分钟的延迟与 5 天的延迟成本相同
-## Communication Actions
+## 通信操作
-### Send Email
+### 发送邮件
-Sends an email from your workflow. This is great for templated group emails. Emails will look like the ones you send from your mailbox.
-Not suited for newsletters (which require richer formatting) or automated email sequences.
+从工作流发送电子邮件。 这非常适合使用模板的群发邮件。 邮件看起来就像你从邮箱发送的邮件。
+不适合新闻简报(需要更丰富的格式)或自动化邮件序列。
-**Prerequisites**: Add an email account in Settings → Accounts
+**先决条件**:在“设置” → “账户”中添加电子邮件账户
-**Configuration**:
+**配置**:
-* Select the sender email account
+* 选择发件邮箱账户
- You can only send emails from mailboxes synced to your own Twenty account. Sending from other team members' mailboxes (e.g., the account owner's email) is on the roadmap.
+ 你只能从与自己 Twenty 账户同步的邮箱发送邮件。 从其他团队成员的邮箱发送(例如账户所有者的邮箱)已在规划中。
-For all the following steps, you can reference variables from previous steps for personalization.
+对于以下所有步骤,你可以引用前面步骤中的变量以实现个性化。
-* Enter recipient email address.
+* 输入收件人电子邮件地址.
- Only one recipient is possible at the moment.
+ 目前只能指定一个收件人。
-* Set subject line.
-* Compose message body. You can format links, create numbered list, bullet point lists, add attachments.
+* 设置主题行。
+* 撰写消息内容. 你可以设置链接格式、创建编号列表、项目符号列表、添加附件。
- Adding HTML signatures is not possible at the moment.
+ 目前无法添加 HTML 签名。
-### Form
+### 表单
-Prompts a form during workflow execution to collect user input. The responses can then be used in subsequent steps to create records, send emails, or execute any other action based on the input.
+在工作流执行期间提示表单以收集用户输入。 随后可在后续步骤中使用这些响应,根据输入创建记录、发送电子邮件或执行其他任何操作。
- **Forms are designed for manual triggers only**. For workflows with other triggers (Record Created, Updated, etc.), forms are only accessible via the workflow run interface, which is not the expected user experience. A notifications center will be released in 2026 to properly support forms in automated workflows.
+ **表单当前仅设计用于手动触发。** 对于具有其他触发器(记录创建、更新等)的工作流,表单仅可通过工作流运行界面访问,这不是预期的用户体验。 将于 2026 年发布通知中心,以适当支持自动化工作流中的表单。
-**Configuration**:
+**配置**:
-* Configure the fields that users will be asked to fill. For each field, choose
- * a type among text, number, date, a given record, a select field. Select fields from all objects are available.
- * a label
- * a default value under `Placeholder` (optional)
-* Edit the form title
+* 配置要求用户填写的字段。 针对每个字段,选择
+ * 一种类型:文本、数字、日期、指定记录、选择字段。 所有对象的选择字段均可用。
+ * 一个标签
+ * 在 `Placeholder` 下设置默认值(可选)
+* 编辑表单标题
-**Output**: Form responses are available for use in subsequent steps.
+**输出**:表单响应可在后续步骤中使用。
-**Example**: The "Quick Lead" workflow is available by default in all workspaces, available anywhere in the Command Menu `Cmd + K`.
+**示例**:"Quick Lead" 工作流在所有工作区中默认可用,可在任意位置通过命令菜单 `Cmd + K` 调用。
-**How to fill the form**:
+**如何填写表单**:
-* Trigger your manual workflow from the command menu `Cmd K`
-* Fill the form that is displayed in the side panel and click `Submit`.
+* 从命令菜单 `Cmd K` 触发你的手动工作流
+* 在侧边面板中填写显示的表单并点击 `Submit`。
- The fields cannot be made mandatory.
+ 这些字段无法设为必填。
-
+
-## Integration Actions
+## 集成操作
-### Code
+### 代码
-Runs custom JavaScript within your workflow.
+在工作流中运行自定义 JavaScript。
-**Configuration**:
+**配置**:
-* Access variables from previous steps. You can edit the variables names dynamically.
+* 访问先前步骤中的变量. 你可以动态编辑变量名称。
-
+
-* Write JavaScript code in the editor
-* Return variables for use in subsequent steps
-* Test code directly in the step
+* 在编辑器中编写 JavaScript 代码
+* 返回变量以供后续步骤使用
+* 直接在步骤中测试代码
- If you need to use external API keys in your code, you must input them directly in the function body. You cannot configure API keys elsewhere and reference them in the serverless function.
+ 如果需要在代码中使用外部 API 密钥,必须将其直接输入到函数主体中。 你无法在其他位置配置 API 密钥并在无服务器函数中引用它们。
- **Working with arrays?** Arrays from external systems or previous steps may come as strings. See [How to handle arrays in Code actions](/l/zh/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions) for the solution.
+ **处理数组?** 来自外部系统或前序步骤的数组可能以字符串形式传入。 解决方案请参见 [如何在 Code 操作中处理数组](/l/zh/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions)。
- Click the square icon at the top right of the code editor to display it in full screen — helpful since the default editor width is limited.
+ 点击代码编辑器右上角的方形图标以全屏显示——这很有用,因为默认编辑器宽度有限。
-### HTTP Request
+### HTTP请求
-Sends a request to an external API as part of your workflow.
+作为工作流的一部分,向外部API发送请求。
-**Configuration**:
+**配置**:
-* Enter the API endpoint URL. Using parameters from previous steps is possible.
-* Select HTTP method (GET, POST, PUT, PATCH, DELETE)
-* Add required headers and values
-* Provide sample response for structure preview
+* 输入 API 端点 URL. 可以使用前面步骤中的参数。
+* 选择 HTTP 方法(GET、POST、PUT、PATCH、DELETE)
+* 添加必需的标头和值
+* 提供示例响应以供结构预览
-## AI Actions
+## AI 操作
-### AI Agent - Coming Soon
+### AI 代理 - 即将推出
-Runs an AI agent within your workflow to perform intelligent tasks.
+在你的工作流中运行 AI 代理以执行智能任务。
-**Configuration**:
+**配置**:
-* **Agent**: Select an existing AI agent or use the default agent
-* **Prompt**: Write the instruction for the AI agent
-* Reference variables from previous steps in the prompt
+* **代理**:选择一个现有 AI 代理或使用默认代理
+* **提示**:为 AI 代理编写指令
+* 在提示中引用前面步骤中的变量
-**What AI Agents can do**:
+**AI 代理能做什么**:
-* Analyze and summarize data
-* Classify or categorize records
-* Generate text content
-* Make decisions based on data
-* Interact with your CRM data using tools
+* 分析并总结数据
+* 对记录进行分类或归类
+* 生成文本内容
+* 基于数据做出决策
+* 使用工具与你的 CRM 数据交互
-**Output**: The AI agent's response is available for use in subsequent steps. If the agent has a structured output schema, the response will follow that format.
+**输出**:AI 代理的响应可用于后续步骤。 如果代理具有结构化的输出模式,响应将遵循该格式。
- AI Agent actions consume workflow credits based on the AI model used. See [Workflow Credits](/l/zh/user-guide/workflows/capabilities/workflow-credits) for details.
+ AI 代理操作会根据所用 AI 模型消耗工作流点数。 详见 [工作流点数](/l/zh/user-guide/workflows/capabilities/workflow-credits)。
- AI agents respect role-based permissions. You can assign specific roles to agents under **Settings → Roles** to control what data they can access. See [Permissions](/l/zh/user-guide/permissions-access/capabilities/permissions) for details.
+ AI 代理遵循基于角色的权限。 你可以在 **设置 → 角色** 下为代理分配特定角色,以控制其可访问的数据。 详见 [权限](/l/zh/user-guide/permissions-access/capabilities/permissions)。
diff --git a/packages/twenty-docs/l/zh/user-guide/workflows/capabilities/workflow-branches.mdx b/packages/twenty-docs/l/zh/user-guide/workflows/capabilities/workflow-branches.mdx
index 4bb7b1d527..7f88ecb04d 100644
--- a/packages/twenty-docs/l/zh/user-guide/workflows/capabilities/workflow-branches.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/workflows/capabilities/workflow-branches.mdx
@@ -1,66 +1,66 @@
---
-title: Workflow Branches
-description: Create parallel paths and conditional logic in your workflows.
+title: 工作流分支
+description: 在你的工作流中创建并行路径和条件逻辑。
---
-Branches allow you to split your workflow into multiple paths that can run simultaneously or conditionally based on your data.
+分支可以将你的工作流拆分为多个路径,这些路径可根据你的数据同时运行或按条件运行。
-## How Branches Work
+## 分支的工作原理
-When you create multiple connections from a single node, each path becomes a branch. By default, **all branches execute in parallel**—they don't wait for each other.
+当你从单个节点创建多个连接时,每条路径都会成为一个分支。 默认情况下,**所有分支都会并行执行**——它们不会相互等待。
-## Creating Branches
+## 创建分支
-### Add a New Branch
+### 添加新分支
-1. **Right-click on the main canvas** of the workflow (not on an existing node)
-2. Click **Add node**
-3. Choose the node type for your new branch
-4. Drag an arrow from the bottom of the previous step to the top of this new action
-5. Repeat to add more branches from the same node
+1. **在主画布上右键单击**(在工作流中,不要在现有节点上)
+2. 点击**添加节点**
+3. 为你的新分支选择节点类型
+4. 将箭头从上一步的底部拖到此新操作的顶部
+5. 重复以上操作,从同一节点添加更多分支。
- Each branch is independent. Adding a branch doesn't affect other existing paths from that node.
+ 每个分支都是独立的。 添加分支不会影响该节点的其他现有路径。
-### Visual Layout
+### 可视化布局
-Branches appear as parallel paths in the workflow editor. You can drag nodes to rearrange the visual layout without affecting execution.
+在工作流编辑器中,分支显示为并行路径。 你可以拖动节点来重新排列可视化布局,而不会影响执行。
-## Conditional Branches
+## 条件分支
-Since all branches run by default, use **Filter** nodes to control which paths actually execute:
+由于默认情况下所有分支都会运行,请使用**筛选**节点来控制哪些路径实际执行:
-| Branch | Filter Condition | Action |
-| ------ | --------------------- | -------------------------- |
-| A | Stage = "Won" | Send congratulations email |
-| B | Stage = "Lost" | Create follow-up task |
-| C | Stage = "Negotiation" | Notify manager |
+| 分支 | 筛选条件 | 操作 |
+| -- | --------- | ------ |
+| A | 阶段 = "赢单" | 发送祝贺邮件 |
+| B | 阶段 = "丢单" | 创建跟进任务 |
+| C | 阶段 = "谈判" | 通知经理 |
-1. Create branches from your trigger or action
-2. Add a **Filter** node as the first step of each branch
-3. Configure each filter with mutually exclusive conditions
-4. Add your actions after each filter
+1. 从你的触发器或操作创建分支
+2. 在每个分支的第一步添加一个**筛选**节点
+3. 为每个筛选节点配置互斥条件
+4. 在每个筛选之后添加你的操作
-Only the branch(es) where the filter condition is met will continue executing.
+只有满足筛选条件的分支才会继续执行。
-## Merging Branches
+## 合并分支
-**Branches don't automatically merge.** Each branch runs independently until it ends. You have full flexibility in how you handle this:
+**分支不会自动合并。** 每个分支都会独立运行直至结束。 对此你有充分的灵活性:
-* **Option 1: Keep branches separate**
- Each branch handles its own follow-up actions independently. This is the simplest approach when branches don't need to converge.
+* **选项 1:保持分支独立**
+ 每个分支独立处理其后续操作。 当分支不需要汇合时,这是最简单的方法。
-* **Option 2: Merge branches manually**
- When creating your workflow, you can manually connect multiple branches to the same downstream action. Simply drag arrows from the end of each branch to a common node.
+* **选项 2:手动合并分支**
+ 在创建工作流时,你可以手动将多个分支连接到同一个下游操作。 只需将每个分支末端的箭头拖到同一个节点。
- While you can use a [Delay](/l/zh/user-guide/workflows/capabilities/workflow-actions#delay) node to pause execution, it's not currently configurable to wait "until another branch ends."
+ 虽然你可以使用[延迟](/l/zh/user-guide/workflows/capabilities/workflow-actions#delay)节点来暂停执行,但目前无法配置为等待"直到另一个分支结束"。
-## Related
+## 相关
-* [How to Use Branches in Workflows](/l/zh/user-guide/workflows/capabilities/use-branches-in-workflows) - Step-by-step guide
-* [Workflow Actions](/l/zh/user-guide/workflows/capabilities/workflow-actions) - Available actions including Filter
+* [如何在工作流中使用分支](/l/zh/user-guide/workflows/capabilities/use-branches-in-workflows) - 分步指南
+* [工作流操作](/l/zh/user-guide/workflows/capabilities/workflow-actions) - 可用操作(包括筛选)
diff --git a/packages/twenty-docs/l/zh/user-guide/workflows/capabilities/workflow-credits.mdx b/packages/twenty-docs/l/zh/user-guide/workflows/capabilities/workflow-credits.mdx
index 437aee5822..b41327b945 100644
--- a/packages/twenty-docs/l/zh/user-guide/workflows/capabilities/workflow-credits.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/workflows/capabilities/workflow-credits.mdx
@@ -1,76 +1,76 @@
---
-title: Workflow Credits
-description: Understand workflow credit consumption and management.
+title: 工作流程积分
+description: 了解工作流程积分的消耗与管理。
---
-Workflow credits power your automations in Twenty. Understanding how they work helps you optimize costs and manage your automation budget effectively.
+在 Twenty 中,工作流程积分为您的自动化提供支持。 了解其如何运作,有助于优化成本并有效管理您的自动化预算。
-## Credit Allocation
+## 积分分配
-Workflow credits are allocated based on your billing cycle, not your plan tier:
+工作流程积分基于您的计费周期分配,而非您的计划:
-| Billing Cycle | Credits |
-| ------------------------ | --------------------------- |
-| **Monthly subscription** | 5 million credits per month |
-| **Yearly subscription** | 50 million credits per year |
+| 计费周期 | 积分 |
+| -------- | ----------- |
+| **月度订阅** | 每月 500 万积分 |
+| **年度订阅** | 每年 5000 万积分 |
- 5 million monthly credits are generous for standard automations. Most teams won't exceed this limit with typical workflow usage. Additional credits are primarily needed for advanced Code actions and AI-powered workflows.
+ 每月 500 万积分对于标准自动化而言已相当充足。 大多数团队在典型的工作流程使用中不会超出此限制。 额外积分主要用于高级 Code 操作和由 AI 驱动的工作流程。
-## How Credit Consumption Works
+## 积分消耗工作原理
-Credits are consumed when workflows execute, not when you create them. Each workflow action consumes credits based on its complexity:
+工作流程执行时消耗积分,而不是创建时。 每个工作流程操作根据其复杂性消耗积分:
-### Credit Consumption by Action Type
+### 按操作类型消耗积分
-* **Basic internal operations**: Very low credit consumption
- * Search Records
- * Create Record
- * Update Record
- * Delete Record
- * Form actions
+* **基本内部操作**:非常低的积分消耗
+ * 搜索记录
+ * 创建记录
+ * 更新记录
+ * 删除记录
+ * 表单操作
-* **Complex operations**: Higher credit consumption
- * Code actions (JavaScript execution)
- * HTTP Requests to external services
+* **复杂操作**:更高的积分消耗
+ * 代码操作(JavaScript 执行)
+ * 向外部服务发送HTTP请求
-* **AI features**: Higher credit consumption
- * AI Agent actions consume credits based on the AI model used
- * More complex prompts and longer outputs use more credits
+* **AI 功能**:更高的积分消耗
+ * AI 代理操作会根据所用 AI 模型消耗积分
+ * 更复杂的提示词和更长的输出会消耗更多积分
-* **Delay actions**: Minimal credit consumption
- * The Delay node consumes **1 credit** when it executes
- * **No credits are consumed** during the wait period
- * A 5-minute delay costs the same as a 5-day delay
+* **延迟操作**:积分消耗极少
+ * Delay 节点在执行时会消耗**1 积分**
+ * 在等待期间**不会消耗积分**
+ * 5 分钟的延迟与 5 天的延迟消耗的积分相同
-### Real-Time Deduction
+### 实时扣减
-Credits are deducted in real-time as workflows execute. This means:
+工作流程执行时,积分实时扣减。 这意味着:
-* Draft workflows don't consume credits
-* Only active, running workflows use your credit allocation
-* Failed workflows still consume credits for completed steps
+* 草稿工作流程不消耗积分
+* 仅激活并运行中的工作流程使用您的积分额度
+* 失败的工作流程仍为已完成的步骤消耗积分
-## Managing Credits
+## 管理积分
-### Check Credit Usage
+### 检查积分使用情况
-1. Go to **Settings → Billing**
-2. View your current credit consumption and remaining balance
-3. Monitor usage patterns to optimize your workflows
+1. 前往**设置 → 结算**
+2. 查看您当前的积分消耗和剩余余额
+3. 监控使用模式以优化工作流程
-### Purchasing Additional Credits
+### 购买额外的积分
-If you need more credits beyond your plan allocation:
+如果您需要超出计划分配的更多积分:
-1. Go to **Settings → Billing**
-2. Click on the option to purchase additional credits. Packages of different sizes are available.
-3. Credits are added to your current balance
+1. 前往**设置 → 结算**
+2. 点击选项以购买额外的积分。 提供不同大小的套餐。
+3. 积分将添加到您当前的余额
-## Best Practices
+## 最佳实践
-* **Batch Processing**: Use bulk operations and Iterator actions efficiently
-* **Manual Trigger Optimization**: For manual triggers, choose `Bulk` availability to process multiple records in a single workflow run
-* Optimize Code actions for efficiency
-* Batch operations to reduce individual action calls
+* **批处理**:有效利用批量操作和迭代器操作
+* **手动触发优化**:对于手动触发,选择 `Bulk` 可用性以在单个工作流程运行中处理多个记录
+* 优化代码操作以提高效率
+* 进行批量操作以减少个别动作调用
diff --git a/packages/twenty-docs/l/zh/user-guide/workflows/capabilities/workflow-runs.mdx b/packages/twenty-docs/l/zh/user-guide/workflows/capabilities/workflow-runs.mdx
index 998489d7a1..ea0efe4369 100644
--- a/packages/twenty-docs/l/zh/user-guide/workflows/capabilities/workflow-runs.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/workflows/capabilities/workflow-runs.mdx
@@ -1,92 +1,92 @@
---
-title: Workflow Runs
-description: Monitor and manage workflow executions.
+title: 工作流运行
+description: 监控并管理工作流执行。
image: /images/user-guide/workflows/workflow.png
---
-## About Runs
+## 关于运行
-A **Run** is a record of a workflow execution. Every time a workflow is triggered—whether by a record event, schedule, manual action, or webhook—a new run is created.
+**运行** 是一条工作流执行记录。 每当工作流被触发——无论是由记录事件、计划、手动操作还是 Webhook——都会创建一个新的运行。
-## Viewing Runs
+## 查看运行
-### From the Workflow Editor
+### 在工作流编辑器中
-1. Open the workflow you want to monitor
-2. Click the **Runs** panel on the right side
-3. See a list of recent runs with their status
+1. 打开你要监控的工作流
+2. 单击右侧的**运行**面板
+3. 查看最近的运行及其状态列表
-### From the Workflow Runs View
+### 在工作流运行视图中
-1. Go to **Workflow Runs** in the sidebar
-2. View runs across all workflows
-3. Filter by status, workflow, or date
+1. 前往侧边栏中的**工作流运行**
+2. 查看所有工作流的运行
+3. 按状态、工作流或日期进行筛选
-## Run Statuses
+## 运行状态
-| Status | Description |
-| ------------- | ------------------------------------------------------------------------ |
-| **Running** | Workflow is currently executing |
-| **Completed** | Workflow finished successfully |
-| **Failed** | Workflow encountered an error and stopped |
-| **Waiting** | Workflow is paused (e.g., waiting for a Delay action or Form submission) |
+| 状态 | 描述 |
+| -------- | ------------------------------ |
+| **正在运行** | 工作流当前正在执行 |
+| **已完成** | 工作流已成功完成 |
+| **失败** | 工作流遇到错误并已停止 |
+| **等待中** | 工作流处于暂停状态(例如,等待 Delay 操作或表单提交) |
-## Run Details
+## 运行详情
-Click on any run to see:
+单击任意运行以查看:
-* **Status**: Current state of the run
-* **Started at**: When the run began
-* **Duration**: How long the run took
-* **Trigger data**: The input that started the workflow
-* **Step outputs**: Data returned by each step
-* **Error messages**: If the run failed, what went wrong
+* **状态**:运行的当前状态
+* **开始时间**:运行开始的时间
+* **持续时间**:运行耗时
+* **触发数据**:启动工作流的输入
+* **步骤输出**:各步骤返回的数据
+* **错误消息**:如果运行失败,出了什么问题
-## Step-by-Step Execution
+## 逐步执行
-Each run shows the progression through your workflow:
+每次运行都会显示工作流中的执行过程:
-1. See which steps completed successfully
-2. Identify where failures occurred
-3. View the data passed between steps
-4. Debug issues by examining step inputs and outputs
+1. 查看哪些步骤已成功完成
+2. 确定失败发生的位置
+3. 查看步骤之间传递的数据
+4. 通过检查步骤的输入和输出来调试问题
-## Error Handling
+## 错误处理
-When a run fails:
+当运行失败时:
-1. Open the failed run
-2. Find the step that caused the failure
-3. Check the error message for details
-4. Common issues:
- * Missing required fields
- * Invalid data format
- * External API errors
- * Permission issues
+1. 打开失败的运行
+2. 找到导致失败的步骤
+3. 查看错误消息以了解详细信息
+4. 常见问题:
+ * 缺少必填字段
+ * 数据格式无效
+ * 外部 API 错误
+ * 权限问题
-## Re-running Workflows
+## 重新运行工作流
-If a run fails, you can:
+如果某次运行失败,你可以:
-* Fix the underlying issue and wait for the next trigger
-* For manual workflows, trigger again with the same or updated data
-* Review the workflow logic to prevent future failures
+* 修复根本问题并等待下一次触发
+* 对于手动工作流,使用相同或更新的数据再次触发
+* 检查工作流逻辑以防止将来发生失败
-## Performance Tips
+## 性能提示
-### Managing Run History
+### 管理运行历史
-* Runs are retained for historical reference
-* Very old runs may be archived automatically
-* Export run data if you need to keep records
+* 运行会被保留以供历史参考
+* 非常久远的运行可能会被自动归档
+* 如果需要保留记录,请导出运行数据
-### Monitoring Best Practices
+### 监控最佳实践
-* Check runs regularly after activating new workflows
-* Review failed runs to identify patterns
+* 在启用新的工作流后定期检查运行
+* 审查失败的运行以识别模式
-## Related
+## 相关内容
-* [Workflow Triggers](/l/zh/user-guide/workflows/capabilities/workflow-triggers)
-* [Workflow Actions](/l/zh/user-guide/workflows/capabilities/workflow-actions)
-* [Workflow Troubleshooting](/l/zh/user-guide/workflows/how-tos/need-more-help/workflow-troubleshooting)
+* [工作流触发器](/l/zh/user-guide/workflows/capabilities/workflow-triggers)
+* [工作流操作](/l/zh/user-guide/workflows/capabilities/workflow-actions)
+* [工作流故障排除](/l/zh/user-guide/workflows/how-tos/need-more-help/workflow-troubleshooting)
diff --git a/packages/twenty-docs/l/zh/user-guide/workflows/capabilities/workflow-triggers.mdx b/packages/twenty-docs/l/zh/user-guide/workflows/capabilities/workflow-triggers.mdx
index 980f90c469..396f41357a 100644
--- a/packages/twenty-docs/l/zh/user-guide/workflows/capabilities/workflow-triggers.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/workflows/capabilities/workflow-triggers.mdx
@@ -1,136 +1,136 @@
---
-title: Workflow Triggers
-description: Learn about the different triggers that start your workflows.
+title: 工作流程触发器
+description: 了解可启动你的工作流的不同触发器。
---
-## About Triggers
+## 关于触发器
-Workflows always start with a single trigger that defines when the automation should run.
+工作流程总是从一个单一触发器开始,定义自动化运行的条件。
- **Advanced objects are supported!** Beyond standard CRM objects (People, Companies, Opportunities), you can also trigger workflows and perform actions on:
+ **支持高级对象!** 除了标准 CRM 对象(人员、公司、商机)之外,你还可以基于以下对象触发工作流并执行操作:
- * Workspace Members
- * Calendar Events
- * Messages (Emails)
- * Tasks, Notes, and many other system objects
+ * 工作区成员
+ * 日历事件
+ * 消息(电子邮件)
+ * 任务、备注以及许多其他系统对象
- This opens up powerful automations like notifying team members when calendar events are created, or processing incoming emails automatically.
+ 这将带来强大的自动化能力,例如在创建日历事件时通知团队成员,或自动处理收到的电子邮件。
-## Record is Created
+## 记录已创建
-Starts the workflow when a new record is created in a selected object (People, Companies, Opportunities, or any custom object).
+当在选定的对象(人员、公司、机会或任何自定义对象)中创建新记录时,启动工作流程。
-**Configuration**: Select the object type to monitor for new records.
+**配置**:选择要监控新记录的对象类型。
- * This trigger is great for records created by csv, mailbox and calendar synchronization, API.
- * **It is not recommended for records created manually**: with this trigger, workflows start as soon as the record is created. Since Twenty UI offers auto-save on the fly (there is not an edit mode and then a validation to save records), the workflow will be triggered before the user inputs all the fields.
- To trigger this workflow on records created manually, it is recommended to use the trigger `Record is created or updated` instead.
+ * 此触发器非常适合由 CSV、邮箱和日历同步、API 创建的记录。
+ * **不建议用于手动创建的记录**:使用此触发器,记录一创建就会启动工作流。 由于 Twenty UI 提供即时自动保存(没有先进入编辑模式再验证保存记录的流程),因此在用户输入完所有字段之前,工作流就会被触发。
+ 若要在手动创建的记录上触发此工作流,建议改用触发器 `Record is created or updated`。
-## Record is Updated
+## 记录已更新
-Starts the workflow when changes are made to an existing record.
+当对现有记录进行更改时,启动工作流程。
-**Configuration**:
+**配置**:
-* Select the object type
-* Optionally specify which fields to monitor for changes
+* 选择对象类型
+* 可以选择指定要监控更改的字段
-## Record is Updated or Created
+## 记录已更新或创建
-Starts the workflow when a record is either created or updated in a selected object.
+当在选定的对象中创建或更新记录时,启动工作流程。
-**Why This Matters**: This trigger is particularly helpful because records created via different methods behave differently:
+**重要性**:此触发器尤其有用,因为通过不同方法创建的记录行为不同:
-* **API/CSV imports**: Records are created with all fields populated immediately
-* **Manual creation**: Records are created first, then fields are added in subsequent updates
+* **API/CSV导入**:记录立即以填充所有字段的方式创建
+* **手动创建**:首先创建记录,然后在随后的更新中添加字段
-**Configuration**:
+**配置**:
-* Select the object type to monitor
-* Optionally specify which fields to monitor for changes
-* The workflow will trigger both on initial creation and any subsequent updates
+* 选择要监控的对象类型
+* 可以选择指定要监控更改的字段
+* 工作流程将在初始创建和后续更新时触发
-## Record is Deleted
+## 记录已删除
-Starts the workflow when a record is removed from an object.
+当从对象中移除记录时,启动工作流程。
-**Configuration**: Select the object type to monitor for deletions.
+**配置**:选择要监控删除的对象类型。
-## Manual Trigger
+## 手动触发器
-Starts the workflow when triggered by a user action. This trigger can be accessed through the `Cmd+K` menu or via a custom button that will be displayed in the top navbar after selecting record(s).
+当由用户操作触发时启动工作流程。 此触发器可以通过 `Cmd+K` 菜单访问,或在选择记录后通过顶部导航栏中显示的自定义按钮进行访问。
-**Availability Configuration**:
-Choose how the workflow should handle record selection:
+**可用性配置**:
+选择工作流程如何处理记录选择:
-* **Global**: No record is required to trigger this workflow. The workflow is triggered from the command menu `Cmd + K` anywhere (from any object) and does not use record(s) as input.
+* **全局**:无需记录即可触发此工作流程。 工作流可在任意位置(从任何对象)通过命令菜单 `Cmd + K` 触发,且不使用记录作为输入。
-* **Single**: The selected record(s) will be passed to your workflow. This is configured for a given object. Several records can be selected before triggering the workflow. The workflow will run from beginning to end as many times as there are records selected.
+* **单个**:选定的记录将传送至您的工作流程。 已为特定对象配置。 可以在触发工作流程之前选择多个记录。 工作流将从头到尾运行,与所选记录的数量相同的次数。
- **Soft limit: 100 runs/minute**. Beyond this, workflows remain in "Not Started" status and are processed gradually—either by a background job or when another workflow enters the queue. This means you can select more than 100 records with a Single trigger; execution will just be slower.
+ **软限制:100 次/分钟**。 超过该限制后,工作流将保持在 "Not Started" 状态,并会逐步处理—由后台作业处理,或在另一个工作流进入队列时处理。 这意味着你可以通过一次触发选择超过 100 条记录;只是执行会更慢。
-* **Bulk**: The selected record(s) will be passed to your workflow. This is configured for a given object. Several records can be selected before triggering the workflow. The workflow will run once, providing the entire list of records as input. This means the workflow needs to contain an [Iterator action](/l/zh/user-guide/workflows/capabilities/workflow-actions#iterator).
+* **批量**:所选记录将传递给您的工作流程。 已为特定对象配置。 可以在触发工作流程之前选择多个记录。 工作流程将运行一次,并将整个记录列表作为输入。 这意味着工作流需要包含一个[迭代器操作](/l/zh/user-guide/workflows/capabilities/workflow-actions#iterator)。
- This is more advanced, and best for people who want to optimize the number of workflow runs.
+ 这更为高级,最适合希望优化工作流运行次数的人。
-**Additional Configuration**:
+**附加配置**:
-* Select the target object (for Single and Bulk availability)
-* Choose a command icon for the workflow trigger
-* Configure navbar placement (Pinned or Not Pinned)
+* 选择目标对象(用于单个和批量可用性)
+* 为工作流程触发器选择一个命令图标
+* 配置导航栏位置(已固定或未固定)
-**Access Methods**:
+**访问方法**:
-* `Cmd+K` menu to find and launch manual workflows
-* Custom button in the top navbar (if configured)
+* 使用 `Cmd+K` 菜单查找并启动手动工作流
+* 导航栏顶部的自定义按钮(如果已配置)
-## Time-Based Trigger: On a Schedule
+## 基于时间的触发器:按计划
-Starts the workflow on a recurring basis you define.
+在您定义的重复基础上启动工作流程。
-**Configuration**:
+**配置**:
-* Select time unit (minutes, hours, days)
-* Enter a value or use custom cron expressions for advanced scheduling
+* 选择时间单位(分钟、小时、天)
+* 输入值或使用自定义 Cron 表达式进行高级调度
- **Timezone**: Scheduled workflows run in **UTC**. When setting hours for daily schedules, convert your local time to UTC.
+ **时区**:计划的工作流在 **UTC** 下运行。 为每日计划设置时间时,请将本地时间换算为 UTC。
-## External Trigger: Webhook
+## 外部触发器:Webhook
-Starts the workflow when a GET or POST request is received from an external service.
+当接收到外部服务的 GET 或 POST 请求时启动工作流程。
-**Configuration**:
+**配置**:
-* The workflow provides a unique webhook URL—copy this and add it to your external system as the endpoint to call.
-* For POST requests, define the expected body structure so Twenty knows what data to expect. Add here the fields you will receive that will be needed below in your workflow.
-* Configure authentication (coming soon).
+* 该工作流会提供唯一的 webhook URL—复制它并将其添加到你的外部系统,作为调用的端点。
+* 对于 POST 请求,定义预期的正文结构,以便 Twenty 知道将接收哪些数据。 在此添加你将接收的字段,这些字段将在下方的工作流中使用。
+* 配置认证(即将推出)。
-## Choosing the Right Trigger
+## 选择合适的触发器
-| Use Case | Recommended Trigger |
-| --------------------------- | ---------------------------- |
-| New leads need processing | Record is Created |
-| Data changes need sync | Record is Updated |
-| Import/manual data handling | Record is Updated or Created |
-| Cleanup after deletion | Record is Deleted |
-| User-initiated action | Launch Manually |
-| Recurring reports | On a Schedule |
-| External integration | Webhook or On a Schedule |
+| 用例 | 推荐的触发器 |
+| --------- | ------------ |
+| 新线索需要处理 | 记录已创建 |
+| 数据变更需要同步 | 记录已更新 |
+| 导入/手动数据处理 | 记录已更新或创建 |
+| 删除后的清理 | 记录已删除 |
+| 用户发起的操作 | 手动启动 |
+| 定期报告 | 计划 |
+| 外部集成 | Webhook 或按计划 |
diff --git a/packages/twenty-docs/l/zh/user-guide/workflows/capabilities/workflow-versions.mdx b/packages/twenty-docs/l/zh/user-guide/workflows/capabilities/workflow-versions.mdx
index f394285ede..3645c5ad71 100644
--- a/packages/twenty-docs/l/zh/user-guide/workflows/capabilities/workflow-versions.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/workflows/capabilities/workflow-versions.mdx
@@ -1,85 +1,85 @@
---
-title: Workflow Versions
-description: Manage workflow versions and drafts.
+title: 工作流版本
+description: 管理工作流的版本和草稿。
image: /images/user-guide/workflows/workflow.png
---
-## About Versions
+## 关于版本
-Every time you activate a workflow, a new version is created. This allows you to track changes over time and revert to previous configurations if needed.
+每次您激活一个工作流时,都会创建一个新版本。 这使您能够随时间跟踪更改,并在需要时恢复到先前的配置。
-## Version Statuses
+## 版本状态
-| Status | Description |
-| --------------- | -------------------------------------- |
-| **Draft** | Being edited, not yet published |
-| **Active** | Live version responding to triggers |
-| **Deactivated** | Previously active but manually stopped |
-| **Archived** | Past versions kept for history |
+| 状态 | 描述 |
+| ------- | --------------- |
+| **草稿** | 正在编辑,尚未发布 |
+| **活跃** | 运行中的版本,响应触发器 |
+| **已停用** | 之前为活跃状态,但已被手动停止 |
+| **已归档** | 为历史记录保留的过去版本 |
-## Working with Drafts
+## 处理草稿
-When you edit an active workflow, your changes are saved as a **draft**. The active version continues to run while you work on updates.
+当您编辑活跃的工作流时,您的更改将保存为**草稿**。 在您进行更新时,活跃版本会继续运行。
-Once you're done editing, you can:
+完成编辑后,您可以:
-* **Activate**: Publish the draft as the new active version (the previous version is archived)
-* **Discard**: Delete the draft and keep the current active version
+* **激活**:将草稿发布为新的活跃版本(先前的版本会被归档)
+* **丢弃**:删除草稿并保留当前的活跃版本
-## Version History
+## 版本历史
-### Viewing Past Versions
+### 查看历史版本
-1. Open the workflow
-2. Click the **Versions** tab
-3. See all previous versions with timestamps
+1. 打开该工作流
+2. 点击**版本**选项卡
+3. 查看包含时间戳的所有先前版本
-### Restoring a Version
+### 还原版本
-1. Find the version you want to restore
-2. Click **Use as draft**
-3. The version is copied to a new draft
-4. Make any necessary updates
-5. Activate when ready
+1. 找到您要还原的版本
+2. 点击**用作草稿**
+3. 该版本会被复制为一个新的草稿
+4. 进行任何必要的更新
+5. 准备就绪后激活
-## Best Practices
+## 最佳实践
-### Version Management
+### 版本管理
-* Activate only when ready for production
-* Keep meaningful changes between versions
-* Document major changes in workflow names or descriptions
-* Test in draft mode before activating
+* 仅在准备好用于生产环境时再激活
+* 在各版本之间仅保留有意义的更改
+* 记录工作流名称或描述中的重大更改
+* 在激活前先在草稿模式下进行测试
-### Reverting Changes
+### 还原更改
-* If a new version causes issues, restore the previous version
-* Use the version history to track what changed
-* Always test restored versions before activating
+* 如果新版本引发问题,请还原到上一版本
+* 使用版本历史来跟踪发生了哪些更改
+* 在激活之前务必测试已还原的版本
-## Common Workflows
+## 常见工作流
-### Quick Edit
+### 快速编辑
-1. Make minor changes to an active workflow
-2. Test in draft mode
-3. Activate the new version
+1. 对活跃的工作流进行小幅更改
+2. 在草稿模式下测试
+3. 激活新版本
-### Major Revision
+### 重大修订
-1. Use the previous version as a starting point
-2. Make significant changes in draft
-3. Thoroughly test all scenarios
-4. Activate when confident
+1. 以先前版本为起点
+2. 在草稿中进行重大更改
+3. 全面测试所有场景
+4. 确认无误后再激活
-### Rollback
+### 回滚
-1. Identify the issue with the current version
-2. Find the last working version in history
-3. Click **Use as draft**
-4. Activate to restore the old behavior
+1. 找出现有版本的问题
+2. 在历史记录中找到最后一个可用的版本
+3. 点击**用作草稿**
+4. 激活以恢复原有行为
-## Related
+## 相关内容
-* [Getting Started with Workflows](/l/zh/user-guide/workflows/overview)
-* [Workflow Runs](/l/zh/user-guide/workflows/capabilities/workflow-runs)
+* [工作流入门](/l/zh/user-guide/workflows/overview)
+* [工作流运行](/l/zh/user-guide/workflows/capabilities/workflow-runs)
diff --git a/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/connect-to-other-tools/bring-product-data-in-twenty.mdx b/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/connect-to-other-tools/bring-product-data-in-twenty.mdx
index 9cfda56045..c1450b618c 100644
--- a/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/connect-to-other-tools/bring-product-data-in-twenty.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/connect-to-other-tools/bring-product-data-in-twenty.mdx
@@ -1,31 +1,31 @@
---
-title: Bring Product Data into Twenty
-description: Sync product catalog data from a data warehouse into your CRM on a schedule.
+title: 将产品数据导入 Twenty
+description: 按计划将数据仓库中的产品目录数据同步到您的 CRM。
---
-Use this pattern to keep Twenty in sync with product data from your data warehouse (e.g., Snowflake, BigQuery, PostgreSQL).
+使用此模式,使 Twenty 与您的数据仓库(例如 Snowflake、BigQuery、PostgreSQL)中的产品数据保持同步。
-## Workflow Structure
+## 工作流结构
-1. **Trigger**: On a Schedule
-2. **Code**: Query your data warehouse
-3. **Code** (optional): Format data as array
-4. **Iterator**: Loop through each product
-5. **Upsert Record**: Create or update in Twenty
+1. **触发器**:按计划
+2. **Code**:查询您的数据仓库
+3. **Code**(可选):将数据格式化为数组
+4. **Iterator**:遍历每个产品
+5. **Upsert Record**:在 Twenty 中创建或更新
-## Step 1: Schedule the Trigger
+## 步骤 1:为触发器设定计划
-Set the workflow to run at a frequency matching your data freshness needs:
+将工作流设置为按满足数据新鲜度需求的频率运行:
-* Every 5 minutes for near real-time sync
-* Every hour for less critical data
-* Daily for batch updates
+* 每 5 分钟一次,用于近实时同步
+* 每小时一次,适用于不太关键的数据
+* 每天一次,适用于批量更新
-## Step 2: Query Your Data Warehouse
+## 步骤 2:查询您的数据仓库
-Add a **Code** action to fetch recent data:
+添加一个 **Code** 操作以获取最新数据:
```javascript
export const main = async () => {
@@ -54,14 +54,14 @@ export const main = async () => {
```
- Filter by `updated_at >= last X minutes` to retrieve only recently changed records. This keeps the sync efficient.
+ 通过 `updated_at >= last X minutes` 进行筛选,仅检索最近更改的记录。 这样可以保持同步的高效性。
-## Step 3: Format Data (Optional)
+## 步骤 3:格式化数据(可选)
-If your warehouse returns data in a format that needs transformation, add another **Code** action. Common transformations include type conversions, field renaming, and data cleanup.
+如果数据仓库返回的数据格式需要转换,请再添加一个 **Code** 操作。 常见的转换包括类型转换、字段重命名和数据清理。
-### Example: User Data with Boolean and Status Fields
+### 示例:包含布尔值和状态字段的用户数据
```javascript
export const main = async (params: {
@@ -86,7 +86,7 @@ export const main = async (params: {
};
```
-### Example: Product Data with Type Conversions
+### 示例:产品数据的类型转换
```javascript
export const main = async (params: { products: any }) => {
@@ -107,7 +107,7 @@ export const main = async (params: { products: any }) => {
};
```
-### Example: Date and Currency Formatting
+### 示例:日期与货币格式化
```javascript
export const main = async (params: { deals: any }) => {
@@ -131,52 +131,52 @@ export const main = async (params: { deals: any }) => {
};
```
-### Common Transformations
+### 常见转换
-| Source Format | Target Format | Code |
-| -------------------- | ---------------- | ---------------------------------------- |
-| `"true"` / `"false"` | `true` / `false` | `v === true \|\| v === "true"` |
-| `"123.45"` | `123.45` | `parseFloat(value)` |
-| `"active"` | `"ACTIVE"` | `value.toUpperCase()` |
-| `1704067200` (Unix) | ISO date | `new Date(v * 1000).toISOString()` |
-| `"$1,234.56"` | `1234.56` | `parseFloat(v.replace(/[^0-9.-]/g, ""))` |
-| `null` / `undefined` | `""` | `value \|\| ""` |
+| 源格式 | 目标格式 | 代码 |
+| -------------------- | ---------------- | ------------------------------------------ |
+| `"true"` / `"false"` | `true` / `false` | `v === true \\|\\| v === \"true\"` |
+| `\"123.45\"` | `123.45` | `parseFloat(value)` |
+| `\"active\"` | `\"ACTIVE\"` | `value.toUpperCase()` |
+| `1704067200` (Unix) | ISO 日期 | `new Date(v * 1000).toISOString()` |
+| `\"$1,234.56\"` | `1234.56` | `parseFloat(v.replace(/[^0-9.-]/g, \"\"))` |
+| `null` / `undefined` | `\"\"` | `value \\|\\| \"\"` |
-## Step 4: Iterate Through Products
+## 步骤 4:遍历产品
-Add an **Iterator** action:
+添加 **Iterator** 操作:
-* Input: `{{code.products}}`
+* 输入:`{{code.products}}`
-This loops through each product in the array.
+这将遍历数组中的每个产品。
-## Step 5: Upsert Each Record
+## 步骤 5:插入或更新每条记录
-Inside the iterator, add an **Upsert Record** action:
+在迭代器内,添加一个 **Upsert Record** 操作:
-| Setting | Value |
-| ------------ | -------------------------------------- |
-| **Object** | Your custom Product object |
-| **Match by** | External ID or SKU (unique identifier) |
-| **Name** | `{{iterator.item.name}}` |
-| **SKU** | `{{iterator.item.sku}}` |
-| **Price** | `{{iterator.item.price}}` |
+| 设置 | 值 |
+| --------- | ------------------------- |
+| **对象** | 您自定义的 Product 对象 |
+| **匹配方式** | 外部 ID 或 SKU(唯一标识符) |
+| **Name** | `{{iterator.item.name}}` |
+| **SKU** | `{{iterator.item.sku}}` |
+| **Price** | `{{iterator.item.price}}` |
- Use **Upsert** (update or create) instead of building separate branches for create vs. update. It's faster to build and easier to debug.
+ 使用 **Upsert**(更新或创建),而不是为“创建”和“更新”分别构建分支。 这样构建更快,也更易于调试。
-## Example Use Cases
+## 示例用例
-| Source | Data |
-| ----------------------- | ----------------------------------- |
-| **ERP system** | Product catalog, pricing, inventory |
-| **E-commerce platform** | Orders, customers, product updates |
-| **Data warehouse** | Aggregated metrics, enriched data |
-| **Inventory system** | Stock levels, reorder alerts |
+| 来源 | 数据 |
+| ---------- | ----------- |
+| **ERP 系统** | 产品目录、定价、库存 |
+| **电商平台** | 订单、客户、产品更新 |
+| **数据仓库** | 汇总指标、丰富后的数据 |
+| **库存系统** | 库存水平、补货警报 |
-## Related
+## 相关内容
-* [Workflow Triggers](/l/zh/user-guide/workflows/capabilities/workflow-triggers)
-* [Workflow Actions](/l/zh/user-guide/workflows/capabilities/workflow-actions)
-* [Handle Arrays in Code Actions](/l/zh/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions)
+* [工作流触发器](/l/zh/user-guide/workflows/capabilities/workflow-triggers)
+* [工作流操作](/l/zh/user-guide/workflows/capabilities/workflow-actions)
+* [在 Code 操作中处理数组](/l/zh/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions)
diff --git a/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/connect-to-other-tools/bring-typeform-submissions-in-twenty.mdx b/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/connect-to-other-tools/bring-typeform-submissions-in-twenty.mdx
index ad2ad5def5..9bf94ddd52 100644
--- a/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/connect-to-other-tools/bring-typeform-submissions-in-twenty.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/connect-to-other-tools/bring-typeform-submissions-in-twenty.mdx
@@ -1,27 +1,27 @@
---
-title: Bring Typeform Submissions into Twenty
-description: Handle Typeform's webhook payload to create leads from form submissions.
+title: 将 Typeform 提交导入 Twenty
+description: 处理 Typeform 的 webhook 负载,以从表单提交创建潜在客户。
---
-For standard webhook setup, see [Set Up a Webhook Trigger](/l/zh/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger). This article covers the specific handling required for Typeform's custom payload structure.
+关于标准 webhook 设置,请参见 [设置 Webhook 触发器](/l/zh/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger)。 本文介绍针对 Typeform 自定义负载结构所需的特定处理。
-### Step 1: Create a Webhook Workflow
+### 步骤 1:创建 Webhook 工作流
-1. Go to **Settings → Workflows**
-2. Click **+ New Workflow**
-3. Select **Webhook** as the trigger
-4. Copy the webhook URL
+1. 进入 **设置 → 工作流**
+2. 点击 **+ 新建工作流**
+3. 选择 **Webhook** 作为触发器
+4. 复制 webhook URL
-### Step 2: Configure Typeform
+### 步骤 2:配置 Typeform
-1. In Typeform, open your form
-2. Go to **Connect → Webhooks**
-3. Paste your Twenty webhook URL
-4. Save
+1. 在 Typeform 中,打开您的表单
+2. 前往 **Connect → Webhooks**
+3. 粘贴您的 Twenty webhook URL
+4. 保存
-### Step 3: Understand the Typeform Payload
+### 步骤 3:了解 Typeform 负载
-Typeform sends a nested JSON structure. Here's a simplified example:
+Typeform 会发送嵌套的 JSON 结构。 以下是一个简化示例:
```json
{
@@ -60,15 +60,15 @@ Typeform sends a nested JSON structure. Here's a simplified example:
}
```
-Key things to note:
+关键注意事项:
-* Form data is nested under `form_response`
-* **Answers are returned as an array**, not as named fields
-* Each answer includes the field type and title for reference
+* 表单数据嵌套在 `form_response` 下
+* **答案以数组形式返回**,而不是按命名字段返回
+* 每个答案都包含字段类型和标题以供参考
-### Step 4: Extract Fields from the Answers Array
+### 步骤 4:从 answers 数组中提取字段
-Since `answers` is an array, you can only select the entire array in subsequent steps — not individual fields. Add a **Code** action to extract the fields you need:
+由于 `answers` 是一个数组,在后续步骤中,您只能选择整个数组,而不能选择单独的字段。 添加一个 **Code** 操作来提取您需要的字段:
```javascript
export const main = async (params: {
@@ -100,31 +100,31 @@ export const main = async (params: {
};
```
-Now in subsequent steps, you can select `contact.firstName`, `contact.email`, etc. from the variable picker.
+现在在后续步骤中,您可以在变量选择器中选择 `contact.firstName`、`contact.email` 等。
- For more details on handling arrays in Code actions, see [Handle Arrays in Code Actions](/l/zh/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions).
+ 关于在 Code 操作中处理数组的更多详情,请参见[在 Code 操作中处理数组](/l/zh/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions)。
-### Step 5: Create the Record
+### 步骤 5:创建记录
-Add a **Create Record** action:
+添加 **创建记录** 操作:
-| Field | Value |
-| -------------- | ---------------------------------------------------- |
-| **Object** | People |
-| **First Name** | `{{code.contact.firstName}}` |
-| **Last Name** | `{{code.contact.lastName}}` |
-| **Email** | `{{code.contact.email}}` |
-| **Company** | Search or create based on `{{code.contact.company}}` |
+| 字段 | 值 |
+| -------- | ----------------------------------- |
+| **对象** | 人员 |
+| **名字** | `{{code.contact.firstName}}` |
+| **姓氏** | `{{code.contact.lastName}}` |
+| **电子邮件** | `{{code.contact.email}}` |
+| **公司** | 基于 `{{code.contact.company}}` 搜索或创建 |
-### Step 6: Test and Activate
+### 步骤 6:测试并启用
-1. Submit a test response in Typeform
-2. Check the workflow run to verify data was captured
-3. Activate the workflow
+1. 在 Typeform 中提交测试响应
+2. 检查工作流运行以验证已捕获数据
+3. 激活工作流
-## Related
+## 相关内容
-* [Set Up a Webhook Trigger](/l/zh/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger)
-* [Handle Arrays in Code Actions](/l/zh/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions)
+* [设置 Webhook 触发器](/l/zh/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger)
+* [在 Code 操作中处理数组](/l/zh/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions)
diff --git a/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/connect-to-other-tools/generate-pdf-from-twenty.mdx b/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/connect-to-other-tools/generate-pdf-from-twenty.mdx
new file mode 100644
index 0000000000..cfafc8712a
--- /dev/null
+++ b/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/connect-to-other-tools/generate-pdf-from-twenty.mdx
@@ -0,0 +1,228 @@
+---
+title: 在 Twenty 中生成 PDF
+description: 创建一个工作流,用于生成 PDF(例如报价单)并将其附加到记录。
+---
+
+自动生成或获取 PDF,并将其附加到 Twenty 中的记录。 这通常用于创建与公司、商机或其他对象关联的报价单、发票或报告。
+
+## 概览
+
+此工作流使用 **手动触发器**,因此用户可以按需为任何选定的记录生成 PDF。 一个 **无服务器函数** 负责:
+
+1. 从 URL(来自 PDF 生成服务)下载 PDF
+2. 将文件上传到 Twenty
+3. 创建与该记录关联的附件
+
+## 先决条件
+
+设置工作流之前:
+
+1. **创建 API 密钥**:前往 **设置 → APIs** 并创建一个新的 API 密钥。 您将需要在无服务器函数中使用此令牌。
+2. **设置 PDF 生成服务**(可选):如果您想动态生成 PDF(例如报价单),可使用 Carbone、PDFMonkey 或 DocuSeal 等服务来创建 PDF 并获取下载 URL。
+
+## 分步设置
+
+### 步骤 1:配置触发器
+
+1. 转到 **工作流** 并创建一个新工作流
+2. 选择 **手动触发器**
+3. 选择要将 PDF 附加到的对象(例如,**公司** 或 **商机**)
+
+
+ 使用手动触发器,用户在选择记录后可通过右上角出现的按钮运行此工作流,以生成并附加 PDF。
+
+
+### 步骤 2:添加无服务器函数
+
+1. 添加 **无服务器函数** 操作
+2. 使用下面的代码创建一个新函数
+3. 配置输入参数
+
+#### 输入参数
+
+| 参数 | 值 |
+| ----------- | ----------------------- |
+| `companyId` | `{{trigger.object.id}}` |
+
+
+ 如果要附加到其他对象(联系人、商机等),请相应重命名参数(例如,`personId`、`opportunityId`),并更新无服务器函数。
+
+
+#### 无服务器函数代码
+
+```typescript
+export const main = async (
+ params: { companyId: string },
+) => {
+ const { companyId } = params;
+
+ // Replace with your Twenty GraphQL endpoint
+ // Cloud: https://api.twenty.com/graphql
+ // Self-hosted: https://your-domain.com/graphql
+ const graphqlEndpoint = 'https://api.twenty.com/graphql';
+
+ // Replace with your API key from Settings → APIs
+ const authToken = 'YOUR_API_KEY';
+
+ // Replace with your PDF URL
+ // This could be from a PDF generation service or a static URL
+ const pdfUrl = 'https://your-pdf-service.com/generated-quote.pdf';
+ const filename = 'quote.pdf';
+
+ // Step 1: Download the PDF file
+ const pdfResponse = await fetch(pdfUrl);
+
+ if (!pdfResponse.ok) {
+ throw new Error(`Failed to download PDF: ${pdfResponse.status}`);
+ }
+
+ const pdfBlob = await pdfResponse.blob();
+ const pdfFile = new File([pdfBlob], filename, { type: 'application/pdf' });
+
+ // Step 2: Upload the file via GraphQL multipart upload
+ const uploadMutation = `
+ mutation UploadFile($file: Upload!, $fileFolder: FileFolder) {
+ uploadFile(file: $file, fileFolder: $fileFolder) {
+ path
+ }
+ }
+ `;
+
+ const uploadForm = new FormData();
+ uploadForm.append('operations', JSON.stringify({
+ query: uploadMutation,
+ variables: { file: null, fileFolder: 'Attachment' },
+ }));
+ uploadForm.append('map', JSON.stringify({ '0': ['variables.file'] }));
+ uploadForm.append('0', pdfFile);
+
+ const uploadResponse = await fetch(graphqlEndpoint, {
+ method: 'POST',
+ headers: { Authorization: `Bearer ${authToken}` },
+ body: uploadForm,
+ });
+
+ const uploadResult = await uploadResponse.json();
+
+ if (uploadResult.errors?.length) {
+ throw new Error(`Upload failed: ${uploadResult.errors[0].message}`);
+ }
+
+ const filePath = uploadResult.data?.uploadFile?.path;
+
+ if (!filePath) {
+ throw new Error('No file path returned from upload');
+ }
+
+ // Step 3: Create the attachment linked to the company
+ const attachmentMutation = `
+ mutation CreateAttachment($data: AttachmentCreateInput!) {
+ createAttachment(data: $data) {
+ id
+ name
+ }
+ }
+ `;
+
+ const attachmentResponse = await fetch(graphqlEndpoint, {
+ method: 'POST',
+ headers: {
+ Authorization: `Bearer ${authToken}`,
+ 'Content-Type': 'application/json',
+ },
+ body: JSON.stringify({
+ query: attachmentMutation,
+ variables: {
+ data: {
+ name: filename,
+ fullPath: filePath,
+ companyId,
+ },
+ },
+ }),
+ });
+
+ const attachmentResult = await attachmentResponse.json();
+
+ if (attachmentResult.errors?.length) {
+ throw new Error(`Attachment creation failed: ${attachmentResult.errors[0].message}`);
+ }
+
+ return attachmentResult.data?.createAttachment;
+};
+```
+
+### 步骤 3:根据您的用例自定义
+
+#### 要附加到其他对象
+
+将 `companyId` 替换为相应的字段:
+
+| 对象 | 字段名称 |
+| ----- | -------------------- |
+| 公司 | `companyId` |
+| 人员 | `personId` |
+| 机会 | `opportunityId` |
+| 自定义对象 | `yourCustomObjectId` |
+
+同时更新函数参数以及附件的 mutation 中的 `variables.data` 对象。
+
+#### 要使用动态 PDF URL
+
+如果使用 PDF 生成服务,您可以:
+
+1. 首先创建一个 HTTP 请求操作以生成 PDF
+2. 将返回的 PDF URL 作为参数传递给无服务器函数
+
+```typescript
+export const main = async (
+ params: { companyId: string; pdfUrl: string; filename: string },
+) => {
+ const { companyId, pdfUrl, filename } = params;
+ // ... rest of the function
+};
+```
+
+### 步骤 4:测试并启用
+
+1. 保存工作流
+2. 导航到一条公司记录
+3. 单击 **⋮** 菜单并选择您的工作流
+4. 在记录上的 **附件** 部分检查并确认 PDF 已被附加
+5. 激活工作流
+
+## 与 PDF 生成服务结合使用
+
+用于创建动态报价单或发票:
+
+### 示例:生成报价单 → 附加 PDF
+
+| 步骤 | 操作 | 目的 |
+| -- | --------- | ------------------- |
+| 1 | 手动触发器(公司) | 用户在记录上发起 |
+| 2 | 搜索记录 | 获取商机或行项目详情 |
+| 3 | HTTP请求 | 使用记录数据调用 PDF 生成 API |
+| 4 | 无服务器函数 | 下载并附加生成的 PDF |
+
+### 常用的 PDF 生成服务
+
+* **Carbone** - 基于模板的文档生成
+* **PDFMonkey** - 基于模板的动态 PDF 创建
+* **DocuSeal** - 文档自动化平台
+* **Documint** - API 优先的文档生成
+
+每个服务都提供一个返回 PDF URL 的 API,您随后可以将其传递给无服务器函数。
+
+## 故障排除
+
+| 问题 | 解决方案 |
+| ---------- | -------------------------- |
+| "无法下载 PDF" | 检查 PDF URL 是否可访问并返回有效的 PDF |
+| "上传失败" | 验证您的 API 密钥有效且具有写入权限 |
+| "附件创建失败" | 确保对象 ID 字段名称与您的目标对象匹配 |
+
+## 相关内容
+
+* [工作流触发器](/l/zh/user-guide/workflows/capabilities/workflow-triggers)
+* [无服务器函数](/l/zh/user-guide/workflows/capabilities/workflow-actions#serverless-function)
+* [从 Twenty 生成报价单或发票](/l/zh/user-guide/workflows/how-tos/connect-to-other-tools/generate-quote-or-invoice-from-twenty)
diff --git a/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/connect-to-other-tools/generate-quote-or-invoice-from-twenty.mdx b/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/connect-to-other-tools/generate-quote-or-invoice-from-twenty.mdx
index 7499752cda..6980c4f827 100644
--- a/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/connect-to-other-tools/generate-quote-or-invoice-from-twenty.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/connect-to-other-tools/generate-quote-or-invoice-from-twenty.mdx
@@ -1,52 +1,52 @@
---
-title: Generate a Quote or Invoice from Twenty
-description: Automatically create invoices in external tools when deals close.
+title: 从 Twenty 生成报价单或发票
+description: 在交易达成时,自动在外部工具中创建发票。
---
-Automatically send deal data to your invoicing system (Stripe, QuickBooks, Xero, etc.) when an opportunity is won.
+自动将交易数据发送到您的开票系统(Stripe、QuickBooks、Xero 等) 当机会赢单时。
-## Workflow Structure
+## 工作流结构
-1. **Trigger**: Record is Updated (Opportunity)
-2. **Filter**: Stage = Closed Won
-3. **Search Record**: Get Company details
-4. **Code** (optional): Format payload
-5. **HTTP Request**: Send to invoicing system
+1. **触发器**:记录已更新(机会对象)
+2. **筛选器**:阶段 = 赢单
+3. **搜索记录**:获取公司详细信息
+4. **代码**(可选):格式化负载
+5. **HTTP 请求**:发送到开票系统
-## Step 1: Set Up the Trigger
+## 步骤 1:设置触发器
-1. Create a new workflow
-2. Select **Record is Updated** trigger
-3. Choose **Opportunity** as the object
+1. 创建新的工作流
+2. 选择 **记录已更新** 触发器
+3. 选择 **机会** 作为对象
-## Step 2: Filter for Closed Won
+## 步骤 2:筛选赢单
-Add a **Filter** action to only continue when the deal is won:
+添加一个 **筛选** 操作,仅在机会赢单时才继续:
-| Setting | Value |
-| ------------- | --------------------------------- |
-| **Field** | Stage |
-| **Condition** | Equals |
-| **Value** | `CLOSED_WON` (or your stage name) |
+| 设置 | 值 |
+| ------ | --------------------- |
+| **字段** | 阶段 |
+| **条件** | 等于 |
+| **值** | `CLOSED_WON`(或您的阶段名称) |
- The trigger fires on any Opportunity update. The Filter ensures the workflow only continues when the stage changes to Closed Won.
+ 该触发器会在任何机会更新时触发。 筛选器确保仅当阶段变更为赢单时,工作流才会继续。
-## Step 3: Get Company Details
+## 步骤 3:获取公司详细信息
-The Opportunity record may not include all Company fields you need for the invoice. Add a **Search Record** action:
+机会记录可能不包含开票所需的所有公司字段。 添加一个 **搜索记录** 操作:
-| Setting | Value |
-| ------------ | ---------------------------------------- |
-| **Object** | Company |
-| **Match by** | ID equals `{{trigger.object.companyId}}` |
+| 设置 | 值 |
+| -------- | ------------------------------------ |
+| **对象** | 公司 |
+| **匹配方式** | ID 等于 `{{trigger.object.companyId}}` |
-This retrieves the full Company record with billing address, tax ID, etc.
+这将检索包含账单地址、税号等在内的完整公司记录。
-## Step 4: Format the Payload (Optional)
+## 步骤 4:格式化负载(可选)
-If your invoicing system expects a specific format, add a **Code** action:
+如果您的开票系统需要特定格式,请添加一个 **代码** 操作:
```javascript
export const main = async (params: {
@@ -84,18 +84,18 @@ export const main = async (params: {
};
```
-## Step 5: Send to Invoicing System
+## 步骤 5:发送到开票系统
-Add an **HTTP Request** action:
+添加一个 **HTTP 请求** 操作:
-| Setting | Value |
-| ----------- | ----------------------------------------- |
-| **Method** | POST |
-| **URL** | Your invoicing API endpoint |
-| **Headers** | `Authorization: Bearer YOUR_API_KEY` |
-| **Body** | `{{code.invoice}}` or map fields directly |
+| 设置 | 值 |
+| ------- | ------------------------------------ |
+| **方法** | POST |
+| **URL** | 您的开票 API 端点 |
+| **请求头** | `Authorization: Bearer YOUR_API_KEY` |
+| **请求体** | `{{code.invoice}}` 或直接映射字段 |
-### Example: Stripe Invoice
+### 示例:Stripe 发票
```
POST https://api.stripe.com/v1/invoices
@@ -109,7 +109,7 @@ Body:
days_until_due: 30
```
-### Example: QuickBooks Invoice
+### 示例:QuickBooks 发票
```
POST https://quickbooks.api.intuit.com/v3/company/{realmId}/invoice
@@ -120,24 +120,25 @@ Headers:
Body: {{code.invoice}}
```
-## Complete Workflow Summary
+## 完整的工作流摘要
-| Step | Action | Purpose |
-| ---- | ----------------------- | ------------------------------------ |
-| 1 | Trigger: Record Updated | Fires when any Opportunity changes |
-| 2 | Filter | Only proceed if Stage = Closed Won |
-| 3 | Search Record | Get full Company details for billing |
-| 4 | Code | Format data for invoicing API |
-| 5 | HTTP Request | Create invoice in external system |
+| 步骤 | 操作 | 目的 |
+| -- | --------- | --------------- |
+| 1 | 触发器:记录已更新 | 当任何机会发生更改时触发 |
+| 2 | 过滤 | 仅当阶段 = 赢单时才继续 |
+| 3 | 搜索记录 | 获取用于开票的完整公司详细信息 |
+| 4 | 代码 | 为开票 API 格式化数据 |
+| 5 | HTTP请求 | 在外部系统中创建发票 |
-## Tips
+## 提示
-* **Store external IDs**: Save the invoice ID returned by the API back to the Opportunity using an **Update Record** action
-* **Error handling**: Add a branch to send a notification if the HTTP request fails
-* **Test first**: Use your invoicing system's sandbox/test mode before going live
+* **存储外部 ID**:使用 **更新记录** 操作将 API 返回的发票 ID 保存回机会
+* **错误处理**:添加一个分支,在 HTTP 请求失败时发送通知
+* **先测试**:在上线之前,使用开票系统的沙盒/测试模式
-## Related
+## 相关内容
-* [Workflow Triggers](/l/zh/user-guide/workflows/capabilities/workflow-triggers)
-* [Workflow Actions](/l/zh/user-guide/workflows/capabilities/workflow-actions)
-* [Closed Won Automations](/l/zh/user-guide/workflows/how-tos/crm-automations/closed-won-automations)
+* [从 Twenty 生成 PDF](/l/zh/user-guide/workflows/how-tos/connect-to-other-tools/generate-pdf-from-twenty) — 将生成的 PDF 附加到记录
+* [工作流触发器](/l/zh/user-guide/workflows/capabilities/workflow-triggers)
+* [工作流操作](/l/zh/user-guide/workflows/capabilities/workflow-actions)
+* [赢单自动化](/l/zh/user-guide/workflows/how-tos/crm-automations/closed-won-automations)
diff --git a/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx b/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx
index 4229f4ed41..66e2ac4a0c 100644
--- a/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx
@@ -1,44 +1,44 @@
---
-title: Set Up a Webhook Trigger
-description: Receive data from external services to trigger workflows.
+title: 设置 Webhook 触发器
+description: 从外部服务接收数据以触发工作流。
image: /images/user-guide/workflows/workflow.png
---
-Webhook triggers allow external services to start your workflows by sending data to a unique URL. Use them to connect forms, third-party apps, and custom integrations.
+Webhook 触发器允许外部服务通过向唯一的 URL 发送数据来启动您的工作流。 使用它们连接表单、第三方应用和自定义集成。
-## When to Use Webhooks
+## 何时使用 Webhook
-| Use Case | Example |
-| ----------------------- | --------------------------------------- |
-| **Web forms** | Contact form submissions create leads |
-| **Third-party apps** | Stripe payment → create customer record |
-| **Custom integrations** | Your app → Twenty automation |
-| **No-code tools** | Zapier, Make, n8n connections |
+| 用例 | 示例 |
+| --------- | ------------------ |
+| **网页表单** | 联系表单提交会创建线索 |
+| **第三方应用** | Stripe 支付 → 创建客户记录 |
+| **自定义集成** | 您的应用 → Twenty 自动化 |
+| **无代码工具** | Zapier、Make、n8n 连接 |
-## Step-by-Step Setup
+## 分步设置
-### Step 1: Create the Workflow
+### 步骤 1:创建工作流
-1. Go to **Settings → Workflows**
-2. Click **+ New Workflow**
-3. Name it (e.g., "Website Form Submission")
+1. 进入 **设置 → 工作流**
+2. 点击 **+ 新建工作流**
+3. 为其命名(例如,“网站表单提交”)
-### Step 2: Configure the Webhook Trigger
+### 步骤 2:配置 Webhook 触发器
-1. Click on the trigger block
-2. Select **Webhook**
-3. You'll receive a unique webhook URL like:
+1. 单击触发器块
+2. 选择 **Webhook**
+3. 您将收到一个唯一的 Webhook URL,例如:
```
https://api.twenty.com/webhooks/workflow/abc123...
```
-4. Copy this URL—you'll need it for your external service
+4. 复制此 URL——您需要在外部服务中使用它
-### Step 3: Define Expected Data Structure
+### 步骤 3:定义预期的数据结构
-For **POST** requests, define the expected body structure:
+对于 **POST** 请求,定义预期的请求体结构:
-1. Click **Define expected body**
-2. Enter a sample JSON that matches what your service will send:
+1. 点击 **定义预期请求体**
+2. 输入与您的服务将发送内容匹配的示例 JSON:
```json
{
@@ -50,30 +50,30 @@ For **POST** requests, define the expected body structure:
}
```
-3. Click **Save**—this creates variables you can use in subsequent steps
+3. 点击 **保存**——这会创建可在后续步骤中使用的变量
-### Step 4: Add Actions
+### 步骤 4:添加操作
-Now add actions that use the webhook data:
+现在添加使用 Webhook 数据的操作:
-**Example: Create a Person record**
+**示例:创建一条 Person 记录**
-1. Add **Create Record** action
-2. Select **People** object
-3. Map fields:
+1. 添加 **创建记录** 操作
+2. 选择 **People** 对象
+3. 映射字段:
-| Field | Value |
-| ---------- | ---------------------------------------------------- |
-| First Name | `{{trigger.body.firstName}}` |
-| Last Name | `{{trigger.body.lastName}}` |
-| Email | `{{trigger.body.email}}` |
-| Company | Search or create based on `{{trigger.body.company}}` |
+| 字段 | 值 |
+| ---- | ----------------------------------- |
+| 名字 | `{{trigger.body.firstName}}` |
+| 姓氏 | `{{trigger.body.lastName}}` |
+| 电子邮件 | `{{trigger.body.email}}` |
+| 公司 | 基于 `{{trigger.body.company}}` 搜索或创建 |
-### Step 5: Test the Webhook
+### 步骤 5:测试 Webhook
-Before activating, test your webhook:
+在激活之前,测试您的 Webhook:
-**Using cURL**:
+**使用 cURL**:
```bash
curl -X POST https://api.twenty.com/webhooks/workflow/abc123... \
@@ -81,22 +81,22 @@ curl -X POST https://api.twenty.com/webhooks/workflow/abc123... \
-d '{"firstName":"Test","lastName":"User","email":"test@example.com"}'
```
-**Using Postman or similar**:
+**使用 Postman 或类似工具**:
-1. Create a POST request to your webhook URL
-2. Set Content-Type header to `application/json`
-3. Add your test JSON body
-4. Send and check workflow runs
+1. 向您的 Webhook URL 发起一个 POST 请求
+2. 将 Content-Type 头设置为 `application/json`
+3. 添加您的测试 JSON 请求体
+4. 发送并检查工作流运行情况
-### Step 6: Activate
+### 步骤 6:启用
-Once tested, click **Activate** to make the workflow live.
+测试完成后,点击 **启用** 使该工作流生效。
-## Handling Different Data Structures
+## 处理不同的数据结构
-### Nested Data
+### 嵌套数据
-If your webhook sends nested data:
+如果您的 Webhook 发送的是嵌套数据:
```json
{
@@ -108,11 +108,11 @@ If your webhook sends nested data:
}
```
-Reference with: `{{trigger.body.contact.email}}`
+通过以下方式引用:`{{trigger.body.contact.email}}`
-### Arrays
+### 数组
-If data includes arrays:
+如果数据包含数组:
```json
{
@@ -123,11 +123,11 @@ If data includes arrays:
}
```
-How you handle arrays depends on your use case:
+如何处理数组取决于您的使用场景:
-**Unknown number of items → Use Iterator**
+**项目数量未知 → 使用 Iterator**
-If you need to process each item in the array (e.g., create a record for each), add a **Code** action to parse the array, then use **Iterator**:
+如果需要处理数组中的每个项目(例如为每个项目创建一条记录),请添加一个 **Code** 操作来解析数组,然后使用 **Iterator**:
```javascript
export const main = async (params: { items: any }) => {
@@ -138,11 +138,11 @@ export const main = async (params: { items: any }) => {
};
```
-Then use Iterator to loop through: `{{code.items}}`
+然后使用 Iterator 进行循环:`{{code.items}}`
-**Known/specific fields → Extract to named fields**
+**已知/特定字段 → 提取到具名字段**
-If the array contains specific fields you want to access individually (e.g., form answers where position 0 is always "first name", position 1 is always "last name"), add a **Code** action to extract them:
+如果数组包含您想单独访问的特定字段(例如表单答案,其中位置 0 始终为“名”,位置 1 始终为“姓”),请添加一个 **Code** 操作来提取它们:
```javascript
export const main = async (params: { items: any }) => {
@@ -159,13 +159,13 @@ export const main = async (params: { items: any }) => {
};
```
-Now you can select `product.name` and `product.qty` individually in subsequent steps.
+现在您可以在后续步骤中分别选择 `product.name` 和 `product.qty`。
- For more details on handling arrays, see [Handle Arrays in Code Actions](/l/zh/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions).
+ 关于处理数组的更多详情,请参见[在代码操作中处理数组](/l/zh/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions)。
-## Related
+## 相关内容
-* [Workflow Triggers](/l/zh/user-guide/workflows/capabilities/workflow-triggers)
-* [Workflow Actions](/l/zh/user-guide/workflows/capabilities/workflow-actions)
+* [工作流触发器](/l/zh/user-guide/workflows/capabilities/workflow-triggers)
+* [工作流操作](/l/zh/user-guide/workflows/capabilities/workflow-actions)
diff --git a/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/crm-automations/closed-won-automations.mdx b/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/crm-automations/closed-won-automations.mdx
index eec74fdf5f..a9a397efae 100644
--- a/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/crm-automations/closed-won-automations.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/crm-automations/closed-won-automations.mdx
@@ -1,140 +1,140 @@
---
-title: Closed Won Automations
-description: Automate post-win activities when opportunities close.
+title: 赢单自动化
+description: 当机会成交后,自动化处理赢单后的活动。
---
-When a deal closes, multiple things need to happen: update company status, notify team members, create onboarding tasks. Automate all of this with a single workflow.
+当交易成交时,需要执行多项操作:更新公司状态、通知团队成员、创建客户入门任务。 使用一个工作流将这一切自动化。
-## The Problem
+## 问题
-When an opportunity moves to "Closed Won":
+当一个机会移动到 "Closed Won":
-* Company type needs to change from "Prospect" to "Customer"
-* Onboarding tasks need to be created
-* Customer success team needs to be notified
-* Sales rep needs confirmation
+* 公司类型需要从 "Prospect" 变更为 "Customer"
+* 需要创建客户入门任务
+* 需要通知客户成功团队
+* 销售代表需要收到确认
-Doing this manually is time-consuming and error-prone.
+手动执行这些操作既耗时又容易出错。
-## The Solution
+## 解决方案
-Create a workflow that handles all post-win activities automatically.
+创建一个工作流,自动处理所有赢单后的活动。
-## Complete Workflow Setup
+## 完整的工作流设置
-### Step 1: Create the Workflow
+### 步骤 1:创建工作流
-1. Go to **Settings → Workflows**
-2. Click **+ New Workflow**
-3. Name it "Deal Won - Post-Win Automation"
+1. 进入 **设置 → 工作流**
+2. 点击 **+ 新建工作流**
+3. 将其命名为 "Deal Won - Post-Win Automation"
-### Step 2: Configure the Trigger
+### 步骤 2:配置触发器
-1. Select **Record is Updated**
-2. Choose **Opportunities**
-3. Under "Fields to monitor", select **Stage**
+1. 选择 **记录已更新**
+2. 选择 **机会**
+3. 在 "Fields to monitor" 下,选择 **Stage**
-### Step 3: Add Stage Filter
+### 步骤 3:添加阶段过滤器
-1. Add **Filter** action
-2. Condition: `{{trigger.object.stage}}` equals "Closed Won"
+1. 添加 **过滤** 操作
+2. 条件:`{{trigger.object.stage}}` 等于 "Closed Won"
-### Step 4: Update Company Type
+### 步骤 4:更新公司类型
-1. Add **Update Record** action
-2. Configure:
+1. 添加 **更新记录** 操作
+2. 配置:
-| Field | Value |
-| ------------------- | ------------------------------- |
-| **Object** | Companies |
-| **Record** | `{{trigger.object.company.id}}` |
-| **Type** | Customer |
-| **First Deal Date** | `{{trigger.object.closedAt}}` |
-| **Account Owner** | `{{trigger.object.owner.id}}` |
+| 字段 | 值 |
+| ---------- | ------------------------------- |
+| **对象** | 公司 |
+| **记录** | `{{trigger.object.company.id}}` |
+| **类型** | 客户 |
+| **首次交易日期** | `{{trigger.object.closedAt}}` |
+| **账户所有者** | `{{trigger.object.owner.id}}` |
-### Step 5: Create Onboarding Task
+### 步骤 5:创建客户入门任务
-1. Add **Create Record** action
-2. Configure:
+1. 添加 **创建记录** 操作
+2. 配置:
-| Field | Value |
-| ----------------------- | ---------------------------------------------------------------------------------------------------- |
-| **Object** | Tasks |
-| **Title** | `Onboarding: {{trigger.object.name}}` |
-| **Assignee** | Customer Success team member |
-| **Due Date** | 3 days from now |
-| **Priority** | High |
-| **Related Company** | `{{trigger.object.company.id}}` |
-| **Related Opportunity** | `{{trigger.object.id}}` |
-| **Description** | `New customer onboarding for {{trigger.object.company.name}}. Deal value: {{trigger.object.amount}}` |
+| 字段 | 值 |
+| -------- | -------------------------------------------------------------------------- |
+| **对象** | 任务 |
+| **标题** | `Onboarding: {{trigger.object.name}}` |
+| **受托人** | 客户成功团队成员 |
+| **到期日** | 3 天后 |
+| **优先级** | 高 |
+| **关联公司** | `{{trigger.object.company.id}}` |
+| **关联机会** | `{{trigger.object.id}}` |
+| **描述** | `为 {{trigger.object.company.name}} 的新客户入门。 交易金额:{{trigger.object.amount}}` |
-### Step 6: Notify Customer Success
+### 步骤 6:通知客户成功团队
-1. Add **Send Email** action
-2. Configure:
+1. 添加 **Send Email** 操作
+2. 配置:
-| Field | Value |
-| ----------- | -------------------------------------------------- |
-| **To** | customer-success@yourcompany.com |
-| **Subject** | `🎉 New Customer: {{trigger.object.company.name}}` |
-| **Body** | See example below |
+| 字段 | 值 |
+| ------- | -------------------------------------------------- |
+| **收件人** | customer-success@yourcompany.com |
+| **主题** | `🎉 New Customer: {{trigger.object.company.name}}` |
+| **正文** | 请参见下方示例 |
-**Email body example**:
+**电子邮件正文示例**:
```
-Hi CS Team,
+您好,客户成功团队:
-We have a new customer!
+我们有一位新客户!
-Company: {{trigger.object.company.name}}
-Deal: {{trigger.object.name}}
-Value: {{trigger.object.amount}}
-Sales Rep: {{trigger.object.owner.name}}
-Close Date: {{trigger.object.closedAt}}
+公司:{{trigger.object.company.name}}
+交易:{{trigger.object.name}}
+金额:{{trigger.object.amount}}
+销售代表:{{trigger.object.owner.name}}
+成交日期:{{trigger.object.closedAt}}
-An onboarding task has been created automatically.
+已自动创建客户入门任务。
-Let's give them a great start!
+让我们为他们创造一个良好的开端!
```
-### Step 7: Confirm to Sales Rep
+### 步骤 7:向销售代表发送确认
-1. Add another **Send Email** action
-2. Configure:
+1. 再添加一个 **Send Email** 操作
+2. 配置:
-| Field | Value |
-| ----------- | -------------------------------------------------------------------------------------------------------------------- |
-| **To** | `{{trigger.object.owner.email}}` |
-| **Subject** | `✅ Deal Closed: {{trigger.object.name}}` |
-| **Body** | Congratulations! Your deal has been processed. The customer success team has been notified and onboarding has begun. |
+| 字段 | 值 |
+| ------- | ---------------------------------------- |
+| **收件人** | `{{trigger.object.owner.email}}` |
+| **主题** | `✅ Deal Closed: {{trigger.object.name}}` |
+| **正文** | 恭喜! 您的交易已处理。 客户成功团队已被通知,入门流程已开始。 |
-### Step 8: Test and Activate
+### 步骤 8:测试并启用
-1. Test by moving a test opportunity to "Closed Won"
-2. Verify:
- * Company type changed to "Customer"
- * Onboarding task created
- * CS team received email
- * Sales rep received confirmation
-3. Activate when ready
+1. 通过将测试机会移动到 "Closed Won" 进行测试
+2. 验证:
+ * 公司类型已更改为 "Customer"
+ * 已创建客户入门任务
+ * 客户成功团队已收到电子邮件
+ * 销售代表已收到确认
+3. 准备就绪后启用
-## Handling Closed Lost
+## 处理 Closed Lost
-Create a similar workflow for lost deals:
+为失单创建一个类似的工作流:
-### Trigger
+### 触发器
-* Record is Updated (Opportunities, Stage = "Closed Lost")
+* 记录已更新(Opportunities,Stage = "Closed Lost")
-### Actions
+### 操作
-1. **Create Record**: Task for "Lost Deal Analysis"
-2. **Update Record**: Add lost reason to company record
-3. **Send Email**: Notify manager of lost deal
+1. **创建记录**:用于“失单分析”的任务
+2. **更新记录**:将失单原因添加到公司记录中
+3. **Send Email**:通知经理失单情况
-## Advanced: Multi-Step Onboarding
+## 高级:多步骤客户入门
-For complex onboarding, create multiple tasks:
+对于复杂的入门流程,创建多个任务:
```javascript
export const main = async (params) => {
@@ -149,31 +149,31 @@ export const main = async (params) => {
};
```
-Use **Iterator** to create each task from the array.
+使用 **Iterator** 根据数组创建每个任务。
-## Customization Ideas
+## 自定义思路
-### Keep your other tools up-to-date
+### 使其他工具保持最新状态
-* Create customer in billing system with an **HTTP Request**
+* 使用 **HTTP 请求** 在计费系统中创建客户
-### Conditional Actions
+### 条件操作
-Use **Filter** actions to:
+使用 **过滤** 操作以:
-* Different onboarding for enterprise vs SMB
-* Different assignees based on region
-* Skip notifications for small deals
+* 针对企业与中小企业(SMB)采用不同的入门流程
+* 根据地区指定不同的负责人
+* 对小额交易跳过通知
-### Include Deal Details
+### 包含交易详细信息
-Use **Code** action to format:
+使用 **Code** 操作来格式化:
-* Deal summary documents
-* Handoff notes for CS team
-* Custom onboarding checklists
+* 交易摘要文档
+* 面向客户成功团队的交接备注
+* 自定义入门检查清单
-## Related
+## 相关内容
-* [Workflow Actions](/l/zh/user-guide/workflows/capabilities/workflow-actions)
-* [Send Emails from Workflows](/l/zh/user-guide/workflows/capabilities/send-emails-from-workflows)
+* [工作流操作](/l/zh/user-guide/workflows/capabilities/workflow-actions)
+* [从工作流发送电子邮件](/l/zh/user-guide/workflows/capabilities/send-emails-from-workflows)
diff --git a/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/crm-automations/detect-stale-opportunities.mdx b/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/crm-automations/detect-stale-opportunities.mdx
index a2cbd3d3ba..55c4797794 100644
--- a/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/crm-automations/detect-stale-opportunities.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/crm-automations/detect-stale-opportunities.mdx
@@ -1,56 +1,56 @@
---
-title: Detect Stale Opportunities
-description: Automatically notify managers when opportunities haven't been updated.
+title: 检测停滞商机
+description: 当商机未更新时自动通知经理。
---
-Keep your pipeline healthy by alerting managers when opportunities go stale. This workflow checks for opportunities that haven't been updated in a specified number of days.
+通过在商机变得停滞时提醒经理,保持销售管道健康。 此工作流会检查在指定天数内未更新的商机。
-## The Problem
+## 问题
-Opportunities sitting without updates lead to:
+长期未更新的商机会导致:
-* Deals going cold
-* Unreliable forecasts
-* Lost revenue
+* 交易变冷
+* 不可靠的预测
+* 收入流失
-## The Solution
+## 解决方案
-Create a scheduled workflow that finds stale opportunities and emails their managers.
+创建一个定时工作流,用于查找停滞商机并向其经理发送电子邮件。
-## Step-by-Step Setup
+## 分步设置
-### Step 1: Create the Workflow
+### 步骤 1:创建工作流
-1. Go to **Settings → Workflows**
-2. Click **+ New Workflow**
-3. Name it "Stale Opportunity Alert"
+1. 进入 **设置 → 工作流**
+2. 点击 **+ 新建工作流**
+3. 命名为 "停滞商机警报"
-### Step 2: Configure the Trigger
+### 步骤 2:配置触发器
-1. Select **On a Schedule**
-2. Set to run daily (e.g., every day at 8 AM)
+1. 选择 **On a Schedule**
+2. 设置为每日运行(例如,每天上午 8 点)
-### Step 3: Search for Stale Opportunities
+### 步骤 3:搜索停滞商机
-1. Add **Search Records** action
-2. Configure:
+1. 添加 **搜索记录** 操作
+2. 配置:
-| Field | Value |
-| ---------- | ----------------------------------------------- |
-| **Object** | Opportunities |
-| **Filter** | Updated At is before (today - 7 days) |
-| **Filter** | Stage is not "Closed Won" AND not "Closed Lost" |
-| **Limit** | 100 |
+| 字段 | 值 |
+| ------ | ----------------------------------- |
+| **对象** | 机会 |
+| **过滤** | 更新时间早于(今天 - 7 天) |
+| **过滤** | 阶段不为 "Closed Won" 且不为 "Closed Lost" |
+| **限制** | 100 |
-### Step 4: Check If Any Found
+### 步骤 4:检查是否有结果
-1. Add **Filter** action
-2. Condition: `{{searchRecords.length}}` is greater than 0
-3. If no stale opportunities, the workflow stops here
+1. 添加 **过滤** 操作
+2. 条件:`{{searchRecords.length}}` 大于 0
+3. 如果没有停滞商机,工作流在此停止
-### Step 5: Format the Alert (Code Action)
+### 步骤 5:格式化警报(代码操作)
-Add a **Code** action to format the email:
+添加一个 **Code** 操作来格式化邮件:
```javascript
export const main = async (params) => {
@@ -88,49 +88,49 @@ export const main = async (params) => {
};
```
-### Step 6: Send Alert Email
+### 步骤 6:发送警报邮件
-Add **Send Email** action:
+添加 **Send Email** 操作:
-| Field | Value |
-| ----------- | ----------------------------------------------------------- |
-| **To** | sales-manager@yourcompany.com |
-| **Subject** | `🚨 {{code.totalCount}} Stale Opportunities Need Attention` |
-| **Body** | `{{code.summary}}` |
+| 字段 | 值 |
+| ------- | ---------------------------------- |
+| **收件人** | sales-manager@yourcompany.com |
+| **主题** | `🚨 {{code.totalCount}} 个停滞商机需要关注` |
+| **正文** | `{{code.summary}}` |
-### Step 7: Test and Activate
+### 步骤 7:测试并启用
-1. Click **Test** to run the workflow
-2. Check that the email contains the right data
-3. Activate when ready
+1. 点击 **Test** 以运行工作流
+2. 检查邮件是否包含正确的数据
+3. 准备就绪后启用
-## Customization Options
+## 自定义选项
-### Change Staleness Threshold
+### 更改停滞阈值
-Modify the Search Records filter to change from 7 days to your preferred period:
+修改“搜索记录”的过滤条件,将 7 天更改为你偏好的周期:
-* 3 days for high-velocity sales
-* 14 days for enterprise deals
-* 30 days for long sales cycles
+* 高节奏销售:3 天
+* 企业级交易:14 天
+* 长销售周期:30 天
-### Alert Individual Reps
+### 单独提醒销售代表
-Instead of one manager email, use **Iterator** to send personalized emails to each rep about their own stale deals.
+使用 **Iterator** 向每位销售代表发送关于其自身停滞交易的个性化邮件,而不是只发一封经理邮件。
-### Add Escalation
+### 添加升级机制
-Create multiple workflows with increasing severity:
+创建多个工作流,并逐步提高严重性:
-1. Day 7: Email to rep
-2. Day 14: Email to rep + manager
-3. Day 21: Create task for manager to intervene
+1. 第 7 天:发送电子邮件给销售代表
+2. 第 14 天:发送电子邮件给销售代表和经理
+3. 第 21 天:为经理创建任务以便介入
-### Include in Slack
+### 集成 Slack
-Use **HTTP Request** to post to a Slack webhook instead of or in addition to email.
+使用 **HTTP Request** 向 Slack 的 webhook 发送消息,替代或补充电子邮件。
-## Related
+## 相关内容
-* [Workflow Actions](/l/zh/user-guide/workflows/capabilities/workflow-actions)
-* [Send Emails from Workflows](/l/zh/user-guide/workflows/capabilities/send-emails-from-workflows)
+* [工作流操作](/l/zh/user-guide/workflows/capabilities/workflow-actions)
+* [从工作流发送电子邮件](/l/zh/user-guide/workflows/capabilities/send-emails-from-workflows)
diff --git a/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/crm-automations/display-number-of-emails-received.mdx b/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/crm-automations/display-number-of-emails-received.mdx
index a4b0742071..3055fd6809 100644
--- a/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/crm-automations/display-number-of-emails-received.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/crm-automations/display-number-of-emails-received.mdx
@@ -1,74 +1,74 @@
---
-title: Display Number of Emails Received
-description: Create a workflow to automatically count and display the number of emails received from each contact.
+title: 显示收到的电子邮件数量
+description: 创建一个工作流,自动统计并显示从每个联系人收到的电子邮件数量。
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-## Overview
+## 概览
-This workflow triggers every time a new email is received and updates a custom field on the Person record with the total count of emails from that sender.
+此工作流在每次收到新电子邮件时触发,并将该发件人发送的电子邮件总数更新到人员记录上的自定义字段。
-## Prerequisites
+## 先决条件
-Before setting up this workflow, create a custom field on the **People** object:
+在设置此工作流之前,请在 **人员** 对象上创建一个自定义字段:
-1. Go to **Settings → Data Model → People**
-2. Add a new **Number** field
-3. Name it something like "Number of emails received from this person"
+1. 进入 **设置 → 数据模型 → 人员**
+2. 添加一个新的 **数字** 字段
+3. 将其命名为 "从此人收到的电子邮件数量"
-## Step-by-Step Setup
+## 分步设置
-
+
-### Step 1: Configure the Trigger
+### 步骤 1:配置触发器
-1. Go to **Workflows** and create a new workflow
-2. Select **Record is Created** as the trigger
-3. Choose **Message Participants** (available under Advanced objects)
+1. 转到 **工作流** 并创建一个新工作流
+2. 选择 **记录已创建** 作为触发器
+3. 选择 **消息参与者**(位于高级对象下)
- A Message Participant is a combination of a message ID and a person ID, creating one unique record per message. This is easier to track than Messages directly because we can access the `handle` field, which contains the sender's (or recipient's) email address.
+ 消息参与者是消息 ID 与人员 ID 的组合,每条消息对应一个唯一记录。 这比直接在消息上跟踪更容易,因为我们可以访问 `handle` 字段,其中包含发件人(或收件人)的电子邮件地址。
-### Step 2: Filter on Role
+### 步骤 2:按角色筛选
-1. Add a **Filter** action
-2. Set the condition: **Role** equals **FROM**
+1. 添加 **过滤** 操作
+2. 设置条件:**角色** 等于 **FROM**
-This ensures you only count messages sent by this person, not messages sent to them.
+这可确保你只统计此人发送的消息,而不是发送给他们的消息。
-### Step 3: Search All Message Participants with Same Handle
+### 步骤 3:搜索 handle 相同的所有消息参与者
-1. Add a **Search Records** action
-2. Select **Message Participants** as the object
-3. Add filters: **Handle** equals the handle from the trigger (the sender's email address) and **Role** equals **FROM**
-4. Increase the **Limit** from 1 to **200** (the maximum)
+1. 添加 **搜索记录** 操作
+2. 选择 **消息参与者** 作为对象
+3. 添加筛选条件:**Handle** 等于触发器中的 handle(发件人的电子邮件地址),并且 **Role** 等于 **FROM**
+4. 将 **Limit** 从 1 提高到 **200**(最大值)
-This finds all messages from this email address to get the total count.
+这样可以找到来自该电子邮件地址的所有消息,以获取总计数。
- The Search Records action is limited to returning 200 records maximum. However, since you're only using the `totalCount` value (not the individual records), this step will return the total number of emails sent by this person.
+ “搜索记录”操作最多只能返回 200 条记录。 但是,由于你只使用 `totalCount` 值(而不是单条记录),此步骤将返回该人发送的电子邮件总数。
-### Step 4: Update the Person Record with a Create or Update Record action
+### 步骤 4:使用创建或更新记录操作更新人员记录
-1. Add a **Create or Update Record** action
+1. 添加 **创建或更新记录** 操作
- Use **Upsert Record** instead of **Update Record** here. This lets you identify the person by their email address (the `handle` field) rather than requiring a record ID from a previous step.
+ 在此使用 **插入或更新记录**,而不是 **更新记录**。 这使你可以通过其电子邮件地址(`handle` 字段)来识别该人员,而不需要前一步的记录 ID。
-2. Select **People** as the object
-3. Find the person by matching their email to the `handle` from the Message Participant
-4. Set your custom "Number of emails received" field to `{{searchRecords.totalCount}}`
+2. 选择 **人员** 作为对象
+3. 通过将其电子邮件与消息参与者中的 `handle` 匹配来找到该人员。
+4. 将自定义的 "收到的电子邮件数量" 字段设置为 `{{searchRecords.totalCount}}`
-The `totalCount` value from the Search Records action represents the total number of emails received from this person.
+“搜索记录”操作中的 `totalCount` 值表示从该人员收到的电子邮件总数。
-## Related
+## 相关内容
-* [Workflow Actions](/l/zh/user-guide/workflows/capabilities/workflow-actions)
-* [Create Custom Fields](/l/zh/user-guide/data-model/how-tos/customize-your-data-model)
-* [Search Records Action](/l/zh/user-guide/workflows/capabilities/workflow-actions#search-records)
+* [工作流操作](/l/zh/user-guide/workflows/capabilities/workflow-actions)
+* [创建自定义字段](/l/zh/user-guide/data-model/how-tos/customize-your-data-model)
+* [搜索记录操作](/l/zh/user-guide/workflows/capabilities/workflow-actions#search-records)
diff --git a/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx b/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx
index 29e6d394a9..f52ea489c0 100644
--- a/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx
@@ -1,130 +1,130 @@
---
-title: Display Related Record Data
-description: Show data from related records (e.g., Company info on Opportunities) using workflows.
+title: 显示关联记录数据
+description: 使用工作流显示关联记录中的数据(例如,在机会中显示公司的信息)。
---
-Display data from related records directly on your records — for example, show the employee count from a Company on its Opportunities. This workflow workaround is useful until nested fields are natively available.
+将关联记录的数据直接显示在你的记录上——例如,将公司的员工数量显示在其机会上。 在原生支持嵌套字段之前,此工作流变通方案很有用。
-## Common Use Cases
+## 常见使用案例
-| Source | Destination | Fields to Copy |
-| ----------- | ----------- | ------------------------------- |
-| Company | Opportunity | Industry, Company Size, ARR |
-| Person | Opportunity | Email, Phone, Title |
-| Opportunity | Company | Last Deal Amount, Last Won Date |
+| 来源 | 目标 | 要复制的字段 |
+| -- | -- | ----------------- |
+| 公司 | 机会 | 行业、公司规模、ARR |
+| 人员 | 机会 | 电子邮件、电话、职位 |
+| 机会 | 公司 | 最后一次成交金额、最后一次赢单日期 |
-## Basic Field Copy
+## 基础字段复制
-### Example: Copy Contact Email to Opportunity
+### 示例:将联系人电子邮件复制到机会
-**Goal**: When setting a Point of Contact on an opportunity, copy their email to the opportunity for easy access.
+**目标**:在机会上设置联系人时,将其电子邮件复制到该机会以便于访问。
-### Prerequisite
+### 先决条件
-Create the destination fields in **Settings → Data Model → Opportunities** before building the workflow:
+在构建工作流之前,先在 **设置 → 数据模型 → 机会** 中创建目标字段:
-* Contact Email (type: Email)
-* Contact Phone (type: Phone)
+* 联系人邮箱(类型:Email)
+* 联系人电话(类型:Phone)
-### Setup
+### 设置
-1. **Trigger**: Record is Updated (Opportunities, Point of Contact field)
+1. **触发器**:记录已更新(机会,联系人字段)
-2. **Filter**: Check that Point of Contact is not empty
+2. **筛选条件**:检查联系人不为空
-3. **Search Records**: Find the linked person
- * Object: People
- * Filter: ID equals `{{trigger.object.pointOfContact.id}}`
+3. **搜索记录**:查找关联的人员
+ * 对象:People
+ * 筛选条件:ID 等于 `{{trigger.object.pointOfContact.id}}`
-4. **Update Record**:
- * Object: Opportunities
- * Record: `{{trigger.object.id}}`
- * Contact Email: `{{searchRecords[0].email}}`
- * Contact Phone: `{{searchRecords[0].phone}}`
+4. **更新记录**:
+ * 对象:机会
+ * 记录:`{{trigger.object.id}}`
+ * 联系人邮箱:`{{searchRecords[0].email}}`
+ * 联系人电话:`{{searchRecords[0].phone}}`
-## Copy Multiple Fields
+## 复制多个字段
-### Example: Sync Company Info to All Related Opportunities
+### 示例:将公司信息同步到所有相关机会
-**Goal**: When company details change, update all related opportunities.
+**目标**:当公司详细信息发生变化时,更新所有相关的机会。
-### Setup
+### 设置
-1. **Trigger**: Record is Updated (Companies)
- * Fields: Industry, Company Size, Annual Revenue
+1. **触发器**:记录已更新(公司)
+ * 字段:行业、公司规模、年度收入
-2. **Search Records**: Find all opportunities for this company
- * Object: Opportunities
- * Filter: Company ID equals `{{trigger.object.id}}`
+2. **搜索记录**:查找该公司的所有机会
+ * 对象:机会
+ * 筛选条件:公司 ID 等于 `{{trigger.object.id}}`
-3. **Iterator**: Loop through each opportunity
+3. **Iterator**:遍历每个机会
-4. **Update Record** (inside iterator):
- * Object: Opportunities
- * Record: `{{iterator.currentItem.id}}`
- * Company Industry: `{{trigger.object.industry}}`
- * Company Size: `{{trigger.object.companySize}}`
- * Company ARR: `{{trigger.object.annualRevenue}}`
+4. **更新记录**(在迭代器内):
+ * 对象:机会
+ * 记录:`{{iterator.currentItem.id}}`
+ * 公司行业:`{{trigger.object.industry}}`
+ * 公司规模:`{{trigger.object.companySize}}`
+ * 公司 ARR:`{{trigger.object.annualRevenue}}`
-## Copy on Record Creation
+## 在创建记录时复制
-### Example: Pre-fill Opportunity with Company Data
+### 示例:用公司数据预填机会
-**Goal**: When creating an opportunity linked to a company, automatically copy key company info.
+**目标**:当创建与某公司关联的机会时,自动复制关键的公司信息。
-### Prerequisite
+### 先决条件
-Create the destination fields in **Settings → Data Model → Opportunities**:
+在 **设置 → 数据模型 → 机会** 中创建目标字段:
-* Company Industry (type: Text)
-* Company Size (type: Number)
+* 公司行业(类型:Text)
+* 公司规模(类型:Number)
-### Setup
+### 设置
-1. **Trigger**: Record is Created (Opportunities)
- * Filter: Company is not empty
+1. **触发器**:记录已创建(机会)
+ * 筛选条件:公司不为空
-2. **Search Records**: Get the linked company's details
- * Object: Companies
- * Filter: ID equals `{{trigger.object.company.id}}`
+2. **搜索记录**:获取关联公司的详细信息
+ * 对象:公司
+ * 筛选条件:ID 等于 `{{trigger.object.company.id}}`
-3. **Update Record**:
- * Object: Opportunities
- * Record: `{{trigger.object.id}}`
- * Company Industry: `{{searchRecords[0].industry}}`
- * Company Size: `{{searchRecords[0].employees}}`
+3. **更新记录**:
+ * 对象:机会
+ * 记录:`{{trigger.object.id}}`
+ * 公司行业:`{{searchRecords[0].industry}}`
+ * 公司规模:`{{searchRecords[0].employees}}`
- **Tasks and Notes limitation**: Relations on Tasks and Notes are hardcoded as many-to-many and are not yet available in workflow triggers or actions. To access these relations, use the [API](/l/zh/developers/extend/capabilities/apis) instead.
+ **任务和备注限制**:任务和备注上的关系被硬编码为多对多,目前尚不可用于工作流触发器或操作。 要访问这些关系,请改用 [API](/l/zh/developers/extend/capabilities/apis)。
-## Bidirectional Sync
+## 双向同步
-### Example: Keep Primary Contact in Sync
+### 示例:保持主要联系人同步
-**Goal**: When a company's primary contact changes, update the contact. When a person becomes primary, update the company.
+**目标**:当公司的主要联系人发生变化时,更新该联系人。 当某人被设为主要联系人时,更新公司。
-### Workflow 1: Company → Person
+### 工作流 1:公司 → 人员
-1. **Trigger**: Record is Updated (Companies, Primary Contact field)
-2. **Update Record**: Set person's "Is Primary Contact" to true
-3. **Search Records**: Find previous primary contact
-4. **Update Record**: Set previous contact's "Is Primary Contact" to false
+1. **触发器**:记录已更新(公司,主要联系人字段)
+2. **更新记录**:将该人员的“是否为主要联系人”设为 true
+3. **搜索记录**:查找之前的主要联系人
+4. **更新记录**:将先前联系人的“是否为主要联系人”设为 false
-### Workflow 2: Person → Company
+### 工作流 2:人员 → 公司
-1. **Trigger**: Record is Updated (People, Is Primary Contact = true)
-2. **Update Record**: Set company's Primary Contact to this person
+1. **触发器**:记录已更新(人员,是否为主要联系人 = true)
+2. **更新记录**:将公司的主要联系人设置为此人
- Be careful with bidirectional syncs to avoid infinite loops. Use filters to check if the value actually changed before updating.
+ 在进行双向同步时要小心,避免无限循环。 在更新前使用筛选条件检查值是否实际发生变化。
-## Using Code for Complex Mapping
+## 使用代码进行复杂映射
-### Example: Transform Data During Copy
+### 示例:在复制过程中转换数据
-**Goal**: Copy and format phone number from person to opportunity.
+**目标**:将人员的电话号码复制到机会并进行格式化。
```javascript
export const main = async (params) => {
@@ -144,27 +144,27 @@ export const main = async (params) => {
};
```
-## Best Practices
+## 最佳实践
-### Avoid Loops
+### 避免循环
-* Don't create workflows that trigger each other endlessly
-* Use specific field conditions
-* Add checks to see if value actually changed
+* 不要创建相互无限触发的工作流
+* 使用特定的字段条件
+* 添加检查以确定值是否真的发生变化
-### Handle Missing Data
+### 处理缺失数据
-* Always check if source record exists before copying
-* Provide default values for optional fields
-* Use filters to skip when source field is empty
+* 在复制之前始终检查源记录是否存在
+* 为可选字段提供默认值
+* 当源字段为空时使用筛选条件跳过
-### Performance
+### 性能
-* Batch updates when copying to many records
-* Use scheduled workflows for bulk sync operations
-* Consider using Iterator for multiple record updates
+* 在复制到大量记录时进行批量更新
+* 对于批量同步操作,使用计划的工作流
+* 对于多条记录的更新,考虑使用 Iterator
-## Related
+## 相关内容
-* [Workflow Actions](/l/zh/user-guide/workflows/capabilities/workflow-actions)
-* [Workflow Triggers](/l/zh/user-guide/workflows/capabilities/workflow-triggers)
+* [工作流操作](/l/zh/user-guide/workflows/capabilities/workflow-actions)
+* [工作流触发器](/l/zh/user-guide/workflows/capabilities/workflow-triggers)
diff --git a/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/crm-automations/formula-fields.mdx b/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/crm-automations/formula-fields.mdx
index 32e116a99c..16bf7d9c62 100644
--- a/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/crm-automations/formula-fields.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/crm-automations/formula-fields.mdx
@@ -1,37 +1,37 @@
---
-title: Formula Fields
-description: Create formula fields using workflows until native support is available.
+title: 公式字段
+description: 在原生支持可用之前,使用工作流创建公式字段。
---
-Twenty doesn't yet support native formula fields yet (coming in 2026), but you can achieve the same result using workflows. This workaround lets you automatically calculate and populate field values—from simple concatenations to complex business logic.
+Twenty 尚未支持原生公式字段(预计 2026 年推出),但你可以通过工作流实现相同的效果。 此变通方案可让你自动计算并填充字段值——从简单的拼接到复杂的业务逻辑。
-## Common Use Cases
+## 常见使用案例
-| Use Case | Formula Example |
-| ------------------- | --------------------------------- |
-| **Full name** | First Name + " " + Last Name |
-| **Expected amount** | Amount × Probability |
-| **Days until due** | Due Date - Today |
-| **Days in stage** | Today - Stage Entry Date |
-| **Lead score** | Points based on multiple criteria |
+| 用例 | 公式示例 |
+| ----------- | ----------- |
+| **全名** | 名 + " " + 姓 |
+| **预期金额** | 金额 × 概率 |
+| **距离到期的天数** | 到期日期 - 今天 |
+| **阶段停留天数** | 今天 - 阶段进入日期 |
+| **线索评分** | 根据多个条件计分 |
- For a complete example of tracking time in pipeline stages, see [Track How Long Opportunities Stay in Each Stage](/l/zh/user-guide/views-pipelines/how-tos/track-time-in-stage).
+ 有关在流水线阶段跟踪时间的完整示例,请参阅 [跟踪机会在每个阶段停留时长](/l/zh/user-guide/views-pipelines/how-tos/track-time-in-stage)。
-## Basic Formula: Concatenation
+## 基础公式:拼接
-### Example: Auto-Fill Full Name
+### 示例:自动填充全名
-**Goal**: Automatically combine first and last name into a full name field.
+**目标**:将名字和姓氏自动合并为一个全名字段。
-### Setup
+### 设置
-1. **Trigger**: Record is Updated or Created (People)
+1. **触发器**:记录被更新或创建(人员)
-2. **Filter**: Check that first name or last name changed
+2. **过滤器**:检查名字或姓氏是否发生变化
-3. **Code action**:
+3. **代码操作**:
```javascript
export const main = async (params) => {
@@ -45,21 +45,21 @@ export const main = async (params) => {
};
```
-4. **Update Record**: Set Full Name to `{{code.fullName}}`
+4. **更新记录**:将全名设置为 `{{code.fullName}}`
-## Numeric Formula: Expected Amount
+## 数值公式:预期金额
-### Example: Calculate Expected Revenue
+### 示例:计算预期收入
-**Goal**: Multiply opportunity amount by probability to get expected amount.
+**目标**:用机会金额乘以概率以得到预期金额。
-See [How to Show Expected Amount in Pipeline](/l/zh/user-guide/views-pipelines/how-tos/show-expected-amount-in-pipeline) for the complete workflow.
+完整工作流请参阅 [如何在流水线中显示预期金额](/l/zh/user-guide/views-pipelines/how-tos/show-expected-amount-in-pipeline)。
-### Quick Setup
+### 快速设置
-1. **Trigger**: Record is Updated (Opportunities, Amount OR Probability field)
+1. **触发器**:记录被更新(机会,金额或概率字段)
-2. **Code action**:
+2. **代码操作**:
```javascript
export const main = async (params) => {
@@ -71,19 +71,19 @@ export const main = async (params) => {
};
```
-3. **Update Record**: Set Expected Amount to `{{code.expectedAmount}}`
+3. **更新记录**:将预期金额设置为 `{{code.expectedAmount}}`
-## Date Formula: Days Calculation
+## 日期公式:天数计算
-### Example: Days Until Task Due
+### 示例:距离任务到期的天数
-**Goal**: Calculate how many days remain until a task's due date.
+**目标**:计算距任务到期日期还剩多少天。
-### Setup
+### 设置
-1. **Trigger**: Record is Updated or Created (Tasks, Due Date field)
+1. **触发器**:记录被更新或创建(任务,到期日期字段)
-2. **Code action**:
+2. **代码操作**:
```javascript
export const main = async (params) => {
@@ -102,23 +102,23 @@ export const main = async (params) => {
};
```
-3. **Update Record**: Set Days Until Due to `{{code.daysUntilDue}}`
+3. **更新记录**:将距离到期的天数设置为 `{{code.daysUntilDue}}`
- Negative values indicate overdue tasks. You can use this field to filter or sort tasks by urgency.
+ 负值表示任务已逾期。 你可以使用此字段按紧急程度筛选或排序任务。
-## Conditional Formula: Lead Score
+## 条件公式:线索评分
-### Example: Calculate Lead Score Based on Criteria
+### 示例:根据条件计算线索评分
-**Goal**: Score leads based on company size, industry, and engagement.
+**目标**:根据公司规模、行业和互动情况对线索打分。
-### Setup
+### 设置
-1. **Trigger**: Record is Updated (People or Companies)
+1. **触发器**:记录被更新(人员或公司)
-2. **Code action**:
+2. **代码操作**:
```javascript
export const main = async (params) => {
@@ -147,19 +147,19 @@ export const main = async (params) => {
};
```
-3. **Update Record**: Set Lead Score to `{{code.leadScore}}`
+3. **更新记录**:将线索评分设置为 `{{code.leadScore}}`
-## Text Formula: Domain Extraction
+## 文本公式:域名提取
-### Example: Extract Domain from Email
+### 示例:从电子邮件中提取域名
-**Goal**: Automatically extract and store the email domain.
+**目标**:自动提取并存储电子邮件域名。
-### Setup
+### 设置
-1. **Trigger**: Record is Updated (People, Email field)
+1. **触发器**:记录被更新(人员,电子邮件字段)
-2. **Code action**:
+2. **代码操作**:
```javascript
export const main = async (params) => {
@@ -173,30 +173,30 @@ export const main = async (params) => {
};
```
-3. **Update Record**: Set Domain field to `{{code.domain}}`
+3. **更新记录**:将域名字段设置为 `{{code.domain}}`
-## Best Practices
+## 最佳实践
-### Performance
+### 性能
-* Only trigger on relevant field changes
-* Use filters to skip records that don't need calculation
-* Avoid complex calculations in high-volume workflows
+* 仅在相关字段更改时触发
+* 使用过滤器跳过不需要计算的记录
+* 避免在大规模工作流中进行复杂计算
-### Error Handling
+### 错误处理
-* Check for null/undefined values before calculations
-* Use default values when data is missing
-* Return clear error messages when calculations fail
+* 在计算前检查 null/undefined 值
+* 在数据缺失时使用默认值
+* 计算失败时返回清晰的错误信息
-### Testing
+### 测试
-* Test with edge cases (empty fields, zero values)
-* Verify calculations manually before activating
-* Monitor workflow runs for unexpected results
+* 使用边界情况进行测试(空字段、零值)
+* 在启用前手动验证计算结果
+* 监控工作流运行情况以发现异常结果
-## Related
+## 相关内容
-* [How to Show Expected Amount in Pipeline](/l/zh/user-guide/views-pipelines/how-tos/show-expected-amount-in-pipeline)
-* [How to Track Time in Stage](/l/zh/user-guide/views-pipelines/how-tos/track-time-in-stage)
-* [Workflow Actions](/l/zh/user-guide/workflows/capabilities/workflow-actions)
+* [如何在流水线中显示预期金额](/l/zh/user-guide/views-pipelines/how-tos/show-expected-amount-in-pipeline)
+* [如何跟踪阶段时长](/l/zh/user-guide/views-pipelines/how-tos/track-time-in-stage)
+* [工作流操作](/l/zh/user-guide/workflows/capabilities/workflow-actions)
diff --git a/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/crm-automations/notify-teammates-of-note-to-review.mdx b/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/crm-automations/notify-teammates-of-note-to-review.mdx
new file mode 100644
index 0000000000..c2a51d9963
--- /dev/null
+++ b/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/crm-automations/notify-teammates-of-note-to-review.mdx
@@ -0,0 +1,127 @@
+---
+title: 通知团队成员审阅笔记
+description: 当指派同事审阅笔记时,自动发送电子邮件通知。
+---
+
+import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
+
+
+ **目前尚不支持在笔记中直接标记团队成员。** 此功能计划在 2026 年下半年推出。 在此期间,此工作流提供一个实用的变通方案。
+
+
+## 挑战
+
+你希望在笔记中标记一位同事,以便其收到审阅通知。 目前,Twenty 不支持在笔记或任务中使用 @ 提及。
+
+## 变通方案
+
+不用在笔记正文中标记,而是可以:
+
+1. 在笔记对象上创建一个 **Reviewer** 关系字段
+2. 在创建或编辑笔记时指定审阅人
+3. 工作流会自动向审阅人发送一封包含该笔记链接的电子邮件
+
+
+ **限制**:此方法每个字段只能指定一位审阅人。 如果需要通知多人,请创建额外的关系字段(例如,Reviewer 1、Reviewer 2)。 这在需要一次性标记许多协作者时扩展性不佳。
+
+
+## 分步设置
+
+### 步骤 1:创建 Reviewer 字段
+
+
+
+1. 进入 **设置 → 数据模型 → 笔记**
+2. 点击 **添加字段**
+3. 配置:
+
+| 设置 | 值 |
+| -------- | -------------- |
+| **Name** | Reviewer |
+| **类型** | 关系 |
+| **关联对象** | 工作区成员 |
+| **关系类型** | 多条笔记 → 一个工作区成员 |
+
+4. 保存该字段
+
+### 步骤 2:创建工作流
+
+
+
+#### 创建工作流触发器
+
+1. 转到主视图并创建一个新工作流
+2. 选择 **记录已更新** 作为触发器
+3. 选择 **笔记** 作为对象,并指定 Reviewer 字段。
+4. 每当笔记的审阅人被更新时都会触发。
+
+#### 添加筛选器以检查是否刚刚指定了审阅人
+
+添加一个 **筛选** 操作,仅在指定了审阅人时才继续:
+
+| 条件 | 值 |
+| ------------ | --- |
+| **Reviewer** | 不为空 |
+
+#### 搜索该工作区成员
+
+1. 添加 **搜索记录** 操作
+2. 选择 **Workspace Member**(位于高级对象下)
+3. 添加过滤器:
+
+| 条件 | 值 |
+| ------ | ------------------------ |
+| **ID** | 等于 `{{note.reviewerId}}` |
+
+这将检索完整的工作区成员记录,包括其电子邮件地址和姓名。
+
+#### 发送通知邮件
+
+1. 添加 **Send Email** 操作
+2. 配置:
+
+| 字段 | 值 |
+| ------- | ---------------------- |
+| **收件人** | 搜索记录 → 第一个工作区成员 → 用户邮箱 |
+| **主题** | 有一条笔记需要你审阅 |
+| **正文** | 请参见下方示例 |
+
+**电子邮件正文示例:**
+
+```text
+Hi {{searchRecord.firstWorkspaceMember.name.firstName}},
+
+You've been assigned to review a note.
+
+View the note here:
+https://yourSubDomain.twenty.com/object/note/{{recordIsUpdated.id}}
+
+Best,
+Twenty
+```
+
+
+ 将 `yourSubDomain` 替换为你实际的 Twenty 工作区子域名。
+
+
+#### 测试并激活
+
+1. 点击 **Test** 以手动运行工作流
+2. 创建或编辑一条笔记并指定审阅人
+3. 在审阅人的收件箱中查收通知邮件
+4. 激活工作流
+
+## 用法
+
+设置完成后,你的团队可以通过以下方式使用此工作流:
+
+1. 创建新笔记(或编辑现有笔记)
+2. 在 **Reviewer** 字段中选择一位同事
+3. 该同事会自动收到一封包含该笔记直达链接的电子邮件
+
+## 相关内容
+
+* [工作流触发器](/l/zh/user-guide/workflows/capabilities/workflow-triggers)
+* [从工作流发送电子邮件](/l/zh/user-guide/workflows/capabilities/send-emails-from-workflows)
+* [创建自定义字段](/l/zh/user-guide/data-model/how-tos/create-custom-fields)
+* [创建关系字段](/l/zh/user-guide/data-model/how-tos/create-relation-fields)
diff --git a/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/crm-automations/send-email-alerts-with-tasks-due.mdx b/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/crm-automations/send-email-alerts-with-tasks-due.mdx
index 9370d4834f..e44368e0e3 100644
--- a/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/crm-automations/send-email-alerts-with-tasks-due.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/crm-automations/send-email-alerts-with-tasks-due.mdx
@@ -1,56 +1,56 @@
---
-title: Send Email Alerts with Tasks Due
-description: Automatically notify team members about their upcoming or overdue tasks.
+title: 发送到期任务的电子邮件提醒
+description: 自动通知团队成员他们即将到期或已逾期的任务。
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
-Send daily email reminders to each team member about their tasks due today.
+每天向每位团队成员发送电子邮件提醒,告知他们今天到期的任务。
-## Overview
+## 概览
-This workflow runs on a schedule and:
+此工作流按计划运行,并:
-1. Fetches all workspace members
-2. Loops through each member
-3. Finds their tasks due today
-4. Formats and sends a personalized email
+1. 获取所有工作区成员
+2. 遍历每位成员
+3. 查找他们今天到期的任务
+4. 格式化并发送个性化电子邮件
-## Step-by-Step Setup
+## 分步设置
-
+
-### Step 1: Configure the Trigger
+### 步骤 1:配置触发器
-1. Go to **Settings → Workflows** and create a new workflow
-2. Select **On a Schedule** as the trigger
-3. Use a cron expression for daily at 8:00 AM: `0 8 * * *`
+1. 转到 **Settings → Workflows** 并创建一个新工作流
+2. 选择 **On a Schedule** 作为触发器
+3. 使用如下 cron 表达式以在每天上午 8:00 运行:`0 8 * * *`
-### Step 2: Search for All Workspace Members
+### 步骤 2:搜索所有工作区成员
-1. Add a **Search Records** action
-2. Select **Workspace Members** (under advanced objects)
-3. No filters needed — this returns all members
+1. 添加 **搜索记录** 操作
+2. 选择 **Workspace Members**(位于高级对象下)
+3. 无需添加过滤器 — 这将返回所有成员
-### Step 3: Add an Iterator
+### 步骤 3:添加迭代器
-1. Add an **Iterator** action
-2. Set the input array to the workspace members from the previous step
-3. All actions inside the iterator will run once per member
+1. 添加 **Iterator** 操作
+2. 将输入数组设置为上一步的工作区成员
+3. 迭代器中的所有操作将针对每位成员运行一次
-### Step 4: Search for Tasks Due Today (Inside Iterator)
+### 步骤 4:搜索今天到期的任务(在迭代器内)
-1. Inside the iterator, add a **Search Records** action
-2. Select **Tasks** as the object
-3. Add filters:
- * **Assignee** = current workspace member (from the iterator)
- * **Due Date** = today
+1. 在迭代器内,添加一个 **搜索记录** 操作
+2. 选择 **Tasks** 作为对象
+3. 添加过滤器:
+ * **Assignee** = 当前工作区成员(来自迭代器)
+ * **Due Date** = 今天
-### Step 5: Format Tasks into Email Body (Inside Iterator)
+### 步骤 5:将任务格式化为电子邮件正文(在迭代器内)
-Add a **Code** action to format the tasks into a readable list with links:
+添加一个 **Code** 操作,将任务格式化为带有链接的可读列表:
```javascript
export const main = async (params: {
@@ -79,28 +79,28 @@ export const main = async (params: {
```
- Replace `yourSubDomain` with your actual Twenty workspace subdomain.
+ 将 `yourSubDomain` 替换为你实际的 Twenty 工作区子域名。
-### Step 6: Send Email (Inside Iterator)
+### 步骤 6:发送电子邮件(在迭代器内)
-1. Add a **Send Email** action (still inside the iterator)
-2. Configure:
+1. 添加一个 **Send Email** 操作(仍在迭代器内)
+2. 配置:
-| Field | Value |
-| ----------- | --------------------------------------------------------------- |
-| **To** | `{{iterator.currentItem.userEmail}}` (workspace member's email) |
-| **Subject** | Your Tasks Due Today |
-| **Body** | `{{code.formattedTasks}}` |
+| 字段 | 值 |
+| ------- | ------------------------------------------------ |
+| **收件人** | `{{iterator.currentItem.userEmail}}`(工作区成员的电子邮件) |
+| **主题** | 您今天到期的任务 |
+| **正文** | `{{code.formattedTasks}}` |
-### Step 7: Test and Activate
+### 步骤 7:测试并启用
-1. Click **Test** to run the workflow manually
-2. Check inboxes for the emails
-3. Activate the workflow
+1. 点击 **Test** 以手动运行工作流
+2. 检查收件箱中的电子邮件
+3. 激活工作流
-## Related
+## 相关内容
-* [Workflow Actions](/l/zh/user-guide/workflows/capabilities/workflow-actions)
-* [Send Emails from Workflows](/l/zh/user-guide/workflows/capabilities/send-emails-from-workflows)
-* [Handle Arrays in Code Actions](/l/zh/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions)
+* [工作流操作](/l/zh/user-guide/workflows/capabilities/workflow-actions)
+* [从工作流发送电子邮件](/l/zh/user-guide/workflows/capabilities/send-emails-from-workflows)
+* [在 Code 操作中处理数组](/l/zh/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions)
diff --git a/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/need-more-help/professional-services.mdx b/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/need-more-help/professional-services.mdx
index 674ca6229f..32457eb796 100644
--- a/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/need-more-help/professional-services.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/need-more-help/professional-services.mdx
@@ -1,29 +1,29 @@
---
-title: Professional Services
-description: Get professional help building complex workflows and automations from Twenty's team and certified partners.
+title: 专业服务
+description: 获取 Twenty 团队及认证合作伙伴的帮助,构建复杂的工作流程和自动化。
---
-## When Do You Need Professional Help?
+## 什么时候需要专业帮助?
-Consider professional services for:
+针对以下事项,考虑使用专业服务:
-* Complex multi-system integrations
-* Advanced business logic and automation rules
-* Large-scale data processing workflows
-* Custom API development
-* Team training and workflow optimization
-* When you don't have internal resources
+* 复杂的多系统集成
+* 高级的业务逻辑和自动化规则
+* 大规模数据处理工作流程
+* 自定义API开发
+* 团队培训和工作流程优化
+* 当您没有内部资源时
-## Service Options
+## 服务选项
-### Onboarding Packs
+### 入门包
-Get help from our core team with our 4-hour [Onboarding packs](https://twenty.com/onboarding-packages):
+通过我们的核心团队和4小时的[入门包](https://twenty.com/onboarding-packages)获取帮助:
-* **Workflow Creation**: Build custom workflows for your business processes
-* **Data Model Design**: Optimize your data structure for workflow automation
-* **Data Migration**: Import existing data with proper workflow integration
+* **工作流程创建**:为您的业务流程构建自定义工作流程
+* **数据模型设计**:优化您的数据结构以进行工作流程自动化
+* **数据迁移**:在适当的工作流程集成下导入现有数据
-### Implementation Partners
+### 实施合作伙伴
-Work with certified partners for advanced customizations. Contact us at contact@twenty.com to connect with our [implementation partners](https://twenty.com/partners).
+与认证合作伙伴合作进行高级定制。 通过 contact@twenty.com 与我们的[实施合作伙伴](https://twenty.com/partners)联系。
diff --git a/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/need-more-help/workflow-troubleshooting.mdx b/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/need-more-help/workflow-troubleshooting.mdx
index b243fc4acb..981370828a 100644
--- a/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/need-more-help/workflow-troubleshooting.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/need-more-help/workflow-troubleshooting.mdx
@@ -1,170 +1,170 @@
---
-title: Workflow Troubleshooting
-description: Common workflow issues and how to resolve them.
+title: 工作流故障排除
+description: 常见工作流问题及其解决方法。
---
-## Common Issues and Solutions
+## 常见问题及解决方案
-### Workflow Not Triggering
+### 工作流未触发
-**Symptoms**: Your workflow doesn't run when you expect it to.
+**症状**:您的工作流未在您预期的时间运行。
-**Possible Causes**:
+**可能原因**:
-1. **Workflow not activated**: Ensure the workflow is set to "Active" not "Draft"
-2. **Trigger conditions not met**: Verify the trigger matches your expected event
-3. **Field not monitored**: For "Record is Updated" triggers, ensure the specific field is being watched
-4. **Permissions**: Check you have permission to run workflows
+1. **工作流未激活**:请确保工作流设置为 "Active" 而非 "Draft"
+2. **未满足触发条件**:请确认触发器与您期望的事件匹配
+3. **字段未被监控**:对于 "Record is Updated" 触发器,请确保正在监控特定字段
+4. **权限**:检查您是否具有运行工作流的权限
-**Solutions**:
+**解决方案**:
-* Verify workflow status in the workflow list
-* Test with the specific action you expect to trigger it
-* Review trigger configuration
-* Contact your admin about permissions
+* 在工作流列表中核实工作流状态
+* 使用您期望触发它的特定操作进行测试
+* 检查触发器配置
+* 就权限问题联系您的管理员
-### Workflow Triggers Too Early (Empty Fields)
+### 工作流触发过早(字段为空)
-**Symptoms**: When manually creating a record in the UI, your workflow triggers before you've had time to fill in all the fields. The workflow runs with mostly empty field values.
+**症状**:在 UI 中手动创建记录时,您的工作流会在您填完所有字段之前就被触发。 工作流在大多数字段值为空的情况下运行。
-**Why this happens**: Twenty saves everything in real-time — there's no separate "edit" vs "read" mode. When you create a record, it's saved immediately, triggering the "Record is created" event before you can fill in additional fields.
+**原因**:Twenty 实时保存所有内容——不存在单独的 "edit" 与 "read" 模式。 当您创建一条记录时,它会立即被保存,在您填写其他字段之前就触发 "Record is created" 事件。
-**When "Record is created" works well**:
+**当 "Record is created" 效果良好时**:
-* Records created via API calls (fields are populated in a single request)
-* Records created via import
-* Automated record creation from other workflows
+* 通过 API 调用创建的记录(字段在单个请求中填充)
+* 通过导入创建的记录
+* 由其他工作流自动创建记录
-**Solution**: For records created manually in the UI, use **"Record is created or updated"** as your trigger instead. This way:
+**解决方案**:对于在 UI 中手动创建的记录,请改用 **"Record is created or updated"** 作为触发器。 这样一来:
-* The workflow triggers after the user has finished filling in and saving the fields
-* You get the complete data rather than empty values
+* 工作流会在用户完成填写并保存字段后再触发
+* 您将获得完整的数据,而不是空值
- If you only want the workflow to run once per record, add a Filter action to check a field like `createdAt equals updatedAt` (first save) or use a custom checkbox field to track if the workflow has already run.
+ 如果您只希望每条记录的工作流仅运行一次,请添加一个 Filter 操作以检查某个字段,例如 `createdAt equals updatedAt`(首次保存),或使用自定义复选框字段来跟踪该工作流是否已运行。
-### Actions Failing
+### 操作失败
-**Symptoms**: Workflow runs but some actions fail.
+**症状**:工作流已运行,但部分操作失败。
-**Possible Causes**:
+**可能原因**:
-1. **Missing data**: Required fields are empty
-2. **Invalid references**: Variables from previous steps don't exist
-3. **API errors**: External services returning errors
-4. **Permission issues**: Action requires permissions you don't have
+1. **数据缺失**:必填字段为空
+2. **引用无效**:来自前面步骤的变量不存在
+3. **API 错误**:外部服务返回错误
+4. **权限问题**:该操作需要您不具备的权限
-**Solutions**:
+**解决方案**:
-* Check the workflow run details for error messages
-* Verify all required fields have values
-* Test API connections independently
-* Review role permissions
+* 在工作流运行详情中查看错误消息
+* 确认所有必填字段都有值
+* 单独测试 API 连接
+* 检查角色权限
-### HTTP Request Errors
+### HTTP 请求错误
-**Symptoms**: HTTP Request actions fail or return unexpected results.
+**症状**:HTTP 请求操作失败或返回意外结果。
-**Common Error Codes**:
+**常见错误代码**:
-* **400**: Bad request - check your request body format
-* **401**: Unauthorized - verify API key
-* **403**: Forbidden - check API permissions
-* **404**: Not found - verify endpoint URL
-* **429**: Too many requests - implement rate limiting
-* **500**: Server error - external service issue
+* **400**: 错误请求 - 检查请求正文格式
+* **401**: 未授权 - 验证 API 密钥
+* **403**: 禁止访问 - 检查 API 权限
+* **404**: 未找到 - 核实端点 URL
+* **429**: 请求过多 - 实施速率限制
+* **500**: 服务器错误 - 外部服务问题
-**Solutions**:
+**解决方案**:
-* Verify API endpoint URL
-* Check authentication headers
-* Test the API call outside of Twenty first
-* Add error handling in Code actions
+* 核实 API 端点 URL
+* 检查身份验证请求头
+* 先在 Twenty 之外测试该 API 调用
+* 在 Code 操作中添加错误处理
-### Code Action Errors
+### Code 操作错误
-**Symptoms**: JavaScript code fails to execute.
+**症状**:JavaScript 代码执行失败。
-**Common Issues**:
+**常见问题**:
-1. **Syntax errors**: Typos or invalid JavaScript
-2. **Undefined variables**: Referencing variables that don't exist
-3. **Type errors**: Operations on wrong data types
-4. **Timeouts**: Code taking too long to execute
+1. **语法错误**:拼写错误或无效的 JavaScript
+2. **未定义的变量**:引用了不存在的变量
+3. **类型错误**:对错误的数据类型进行操作
+4. **超时**:代码执行时间过长
-**Solutions**:
+**解决方案**:
-* Use the built-in code editor validation
-* Test code logic in a JavaScript console first
-* Add console.log statements for debugging
-* Simplify complex operations
+* 使用内置代码编辑器的校验功能
+* 先在 JavaScript 控制台中测试代码逻辑
+* 添加 console.log 语句进行调试
+* 简化复杂操作
-### Email Not Sending
+### 电子邮件无法发送
-**Symptoms**: Send Email action doesn't deliver emails.
+**症状**:Send Email 操作未能投递电子邮件。
-**Possible Causes**:
+**可能原因**:
-1. **No email account connected**: Check Settings → Accounts
-2. **Invalid email address**: Recipient email is malformed
-3. **Sending limits**: Email provider rate limits reached
-4. **Spam filters**: Emails being blocked
+1. **未连接电子邮件账户**:检查 Settings → Accounts
+2. **无效的电子邮件地址**:收件人电子邮件格式错误
+3. **发送限制**:已达到电子邮件服务商的速率限制
+4. **垃圾邮件过滤器**:电子邮件被拦截
-**Solutions**:
+**解决方案**:
-* Verify email account connection
-* Validate recipient email addresses
-* Check email provider limits
-* Review email content for spam triggers
+* 确认电子邮件账户连接正常
+* 校验收件人电子邮件地址
+* 检查电子邮件服务商的限制
+* 检查电子邮件内容是否包含垃圾邮件触发因素
-## Debugging Workflows
+## 调试工作流
-### Using Workflow Runs
+### 使用工作流运行
-1. Go to the workflow editor
-2. Open the **Runs** panel
-3. Find the failed run
-4. Click to see step-by-step details
-5. Review error messages and output data
+1. 进入工作流编辑器
+2. 打开 **Runs** 面板
+3. 找到失败的运行
+4. 点击查看逐步详情
+5. 查看错误消息和输出数据
-### Testing Individual Steps
+### 测试单个步骤
-1. For Code actions, use the **Test** button
-2. For HTTP requests, test the endpoint separately
-3. Create test records to trigger workflows
-4. Use manual triggers for controlled testing
+1. 对于 Code 操作,使用 **Test** 按钮
+2. 对于 HTTP 请求,请单独测试该端点
+3. 创建测试记录以触发工作流
+4. 使用手动触发器进行可控测试
-### Common Debugging Patterns
+### 常见调试模式
-**Add logging**:
-Use Code actions to log intermediate values for debugging.
+**添加日志**:
+使用 Code 操作记录中间值以进行调试。
-**Isolate steps**:
-Test each step independently to identify failures.
+**隔离步骤**:
+独立测试每个步骤以定位失败。
-**Check data flow**:
-Verify that each step receives the expected input data.
+**检查数据流**:
+确认每个步骤都接收到预期的输入数据。
-## Best Practices to Avoid Issues
+## 避免问题的最佳实践
-### Before Activation
+### 激活前
-* Test thoroughly in draft mode
-* Validate all API connections
-* Review trigger conditions carefully
-* Document expected behavior
+* 在草稿模式下进行充分测试
+* 验证所有 API 连接
+* 仔细检查触发条件
+* 记录预期行为
-### During Development
+### 开发过程中
-* Use descriptive step names
-* Add comments in Code actions
-* Test with realistic data
-* Plan for edge cases
+* 使用具有描述性的步骤名称
+* 在 Code 操作中添加注释
+* 使用真实数据进行测试
+* 考虑边界情况
-### After Activation
+### 激活后
-* Monitor initial runs closely
-* Set up alerts for failures
-* Review run history regularly
-* Keep workflows simple when possible
+* 密切监控初始运行
+* 设置失败告警
+* 定期查看运行历史
+* 尽可能保持工作流简洁
diff --git a/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/need-more-help/workflows-faq.mdx b/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/need-more-help/workflows-faq.mdx
index a2f6c3a561..14bbdd6970 100644
--- a/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/need-more-help/workflows-faq.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/need-more-help/workflows-faq.mdx
@@ -1,48 +1,48 @@
---
-title: Workflows FAQ
-description: Frequently asked questions about workflows in Twenty.
+title: 工作流常见问题
+description: 关于 Twenty 中工作流的常见问题。
---
-
- This is likely a permissions issue. You need access to workflows to create and activate them.
+
+ 这很可能是权限问题。 您需要工作流的访问权限才能创建并启用它们。
- **Solution**: Contact your workspace administrator to grant you workflow access under **Settings → Roles**.
+ **解决方法**:联系您的工作区管理员,在**设置 → 角色**下为您授予工作流访问权限。
- If you don't see the Workflows section at all in your sidebar, this confirms it's a permissions issue.
+ 如果您在侧边栏根本看不到工作流部分,这就说明是权限问题。
-
- Manual workflows only appear in the navbar if properly configured:
+
+ 手动工作流仅在正确配置后才会出现在导航栏中:
- 1. The workflow must be **activated** (not in draft mode)
- 2. The navbar placement must be set to **Pinned**
- 3. For Single/Bulk triggers, you must be on the correct object page
+ 1. 工作流必须**已启用**(不是草稿模式)
+ 2. 导航栏位置必须设置为**Pinned**
+ 3. 对于 Single/Bulk 触发器,您必须位于正确的对象页面上
- **To check**: Open the workflow → click the trigger → verify "Navbar placement" is set to "Pinned".
+ **检查方式**:打开工作流 → 点击触发器 → 确认 "Navbar placement" 设置为 "Pinned"。
- You can always access manual workflows via **Cmd + K** (or **Ctrl + K**) regardless of navbar settings.
+ 无论导航栏设置如何,您始终可以通过**Cmd + K**(或**Ctrl + K**)访问手动工作流。
-
- | Type | Records Required | Workflow Runs |
- | ---- | ---------------- | ------------- |
+
+ | 类型 | 需要的记录 | 工作流运行 |
+ | -- | ----- | ----- |
- \| **Global** | None | Once, no record input |
- \| **Single** | One or more selected | Once per selected record |
- \| **Bulk** | One or more selected | Once, with all records as array |
+ \| **Global** | 无 | 一次,无记录输入 |
+ \| **Single** | 选择一个或多个 | 每个选中的记录执行一次 |
+ \| **Bulk** | 选择一个或多个 | 执行一次,所有记录作为数组 |
- * **Global**: Use when the workflow doesn't need any record context (e.g., generate a report)
- * **Single**: Use when you want to process each selected record independently (e.g., send individual emails)
- * **Bulk**: Use when you need to process records together or optimize credit usage (requires Iterator action)
+ * **Global**:当工作流不需要任何记录上下文时使用(例如,生成报告)
+ * **Single**:当您希望独立处理每个选定的记录时使用(例如,发送单独的电子邮件)
+ * **Bulk**:当您需要一起处理记录或优化额度使用时使用(需要 Iterator 操作)
- See [Workflow Triggers](/l/zh/user-guide/workflows/capabilities/workflow-triggers) for details.
+ 详见 [工作流触发器](/l/zh/user-guide/workflows/capabilities/workflow-triggers)。
-
- An explicit If/Else node is not yet available but is on our roadmap.
+
+ 明确的 If/Else 节点尚不可用,但已在我们的路线图上。
- **Current workaround**: Create multiple branches from your step, each starting with a **Filter** action:
+ **当前变通方法**:从您的步骤创建多个分支,每个分支以一个**Filter** 操作开始:
```
Step 1
@@ -52,203 +52,203 @@ description: Frequently asked questions about workflows in Twenty.
└── Branch B: Filter (condition = false) → Actions...
```
- Only the branch where the filter condition passes will execute its subsequent actions.
+ 只有通过 Filter 条件的分支会执行后续操作。
- See [How to Use Branches](/l/zh/user-guide/workflows/capabilities/workflow-branches) for a step-by-step guide.
+ 逐步指南请参见[如何使用分支](/l/zh/user-guide/workflows/capabilities/workflow-branches)。
-
- **Yes**, branches run in parallel by default.
+
+ **是的**,分支默认并行运行。
- If you want only one branch to execute:
+ 如果您只希望一个分支执行:
- * Add a **Filter** action at the start of each branch
- * Set opposite conditions (e.g., Branch A: status = "Open", Branch B: status ≠ "Open")
+ * 在每个分支的开头添加一个**Filter** 操作
+ * 设置相反的条件(例如,分支 A:status = "Open",分支 B:status ≠ "Open")
- Branches that fail their filter condition stop executing, while others continue.
+ 未通过其 Filter 条件的分支将停止执行,其他分支会继续。
-
- **Yes**. After your parallel branches complete, you can add a step that both branches connect to.
+
+ **是**。 并行分支完成后,您可以添加一个步骤,让两个分支都连接到该步骤。
- In the workflow editor:
+ 在工作流编辑器中:
- 1. Complete your branched actions
- 2. Add a new step after the branches
- 3. Drag connections from the end of each branch to this new step
+ 1. 完成您的分支内操作
+ 2. 在分支之后添加一个新步骤
+ 3. 将每个分支末端的连接拖拽到这个新步骤
- The merged step will execute after all connected branches complete.
+ 合并后的步骤将在所有已连接分支完成后执行。
-
- **Search Records returns a maximum of 200 records.**
+
+ **Search Records 最多返回 200 条记录。**
- If you need to process more:
+ 如果您需要处理更多:
- * Add more specific filters to reduce results
- * Use scheduled workflows to process in batches
- * Consider using the API for bulk operations
+ * 添加更具体的筛选条件以减少结果
+ * 使用计划的工作流分批处理
+ * 考虑使用 API 进行批量操作
- For most workflows, 200 records is sufficient. If you regularly hit this limit, consider restructuring your automation.
+ 对大多数工作流而言,200 条记录已足够。 如果您经常触及此限制,请考虑重构您的自动化。
-
- **Not yet.** CC and BCC fields for the Send Email action are on our roadmap.
+
+ \*\*还不可以。\*\*Send Email 操作的 CC 和 BCC 字段已在我们的路线图上。
- **Current workaround**: Add multiple Send Email actions to send to additional recipients, or use an HTTP Request to send via an external email service that supports CC.
+ **当前变通方法**:添加多个 Send Email 操作以发送给其他收件人,或者使用 HTTP Request 通过支持 CC 的外部电子邮件服务发送。
-
- Every action produces output data that can be used in subsequent steps.
+
+ 每个操作都会产生可在后续步骤中使用的输出数据。
- **To reference previous step data**:
+ **引用前一步数据**:
- * Use the variable picker when configuring a field
- * Or type `{{stepName.fieldName}}` directly
+ * 在配置字段时使用变量选择器
+ * 或直接输入 `{{stepName.fieldName}}`
- **Examples**:
+ **示例**:
- * Trigger data: `{{trigger.object.email}}`
- * Search results: `{{searchRecords[0].name}}`
- * Code output: `{{code.calculatedValue}}`
+ * 触发器数据:`{{trigger.object.email}}`
+ * 搜索结果:`{{searchRecords[0].name}}`
+ * 代码输出:`{{code.calculatedValue}}`
- Hover over any field in the action configuration to see available variables from previous steps.
+ 在操作配置中将鼠标悬停在任意字段上,即可查看前面步骤可用的变量。
-
- **Iterator requires an array input.** Common issues:
+
+ **Iterator 需要数组输入。** 常见问题:
- 1. **Input is not an array**: Ensure you're passing results from Search Records or another action that returns an array
- 2. **Array is empty**: Add a filter before Iterator to check `{{searchRecords.length}} > 0`
- 3. **Wrong variable selected**: Make sure you select the array itself, not a single record
+ 1. **输入不是数组**:请确保您传入的是 Search Records 或其他返回数组的操作的结果
+ 2. **数组为空**:在 Iterator 之前添加筛选条件,检查 `{{searchRecords.length}} > 0`
+ 3. **选择了错误的变量**:请确保您选择的是数组本身,而不是单个记录
- **Correct setup**:
+ **正确设置**:
- 1. Search Records (returns array)
- 2. Filter: length > 0
- 3. Iterator: select `{{searchRecords}}`
- 4. Actions inside iterator use `{{iterator.currentItem.fieldName}}`
+ 1. Search Records(返回数组)
+ 2. Filter:length > 0
+ 3. Iterator:选择 `{{searchRecords}}`
+ 4. Iterator 内的操作使用 `{{iterator.currentItem.fieldName}}`
-
- Code actions (serverless functions) have a **default timeout of 5 minutes** (300 seconds).
+
+ Code 操作(无服务器函数)的**默认超时时间为 5 分钟**(300 秒)。
- The maximum configurable timeout is **15 minutes** (900 seconds).
+ 可配置的最大超时时间为**15 分钟**(900 秒)。
- If your code exceeds this limit, the action will fail with a timeout error.
+ 如果您的代码超过此限制,该操作将因超时错误而失败。
- **Tips to avoid timeouts**:
+ **避免超时的提示**:
- * Break large operations into smaller chunks using Iterator
- * Avoid heavy computations; use external services via HTTP Request for intensive processing
- * Optimize your code to reduce execution time
- * If you need longer processing, consider using scheduled workflows that process data in batches
+ * 使用 Iterator 将大型操作拆分为更小的块
+ * 避免进行大量计算;通过 HTTP Request 使用外部服务进行密集型处理
+ * 优化您的代码以减少执行时间
+ * 如果您需要更长的处理时间,考虑使用计划的工作流按批次处理数据
-
- Workflow runs show the execution history and help you debug issues.
+
+ 工作流运行显示执行历史,并帮助您调试问题。
- **Access runs**:
+ **访问运行记录**:
- * In workflow editor → **Runs** panel on the right
- * Or go to **Workflow Runs** in the sidebar
+ * 在工作流编辑器中 → 右侧的 **运行** 面板
+ * 或者前往侧边栏中的 **工作流运行**
- **Understanding a run**:
+ **了解一次运行**:
- * **Status**: Running, Completed, Failed, Waiting
- * **Steps**: See which steps executed and their output
- * **Errors**: Click failed steps to see error messages
- * **Data**: View input/output data at each step
+ * **状态**:运行中、已完成、失败、等待中
+ * **步骤**:查看哪些步骤已执行及其输出
+ * **错误**:点击失败的步骤查看错误消息
+ * **数据**:查看每个步骤的输入/输出数据
- See [Workflow Runs](/l/zh/user-guide/workflows/capabilities/workflow-runs) for details.
+ 详见 [工作流运行](/l/zh/user-guide/workflows/capabilities/workflow-runs)。
-
- Workflow runs might be failing immediately due to rate limits.
+
+ 工作流运行可能由于速率限制而立即失败。
- **Hard limit: 5,000 runs per hour per workspace.**
+ **硬性限制:每个工作区每小时 5,000 次运行。**
- If you exceed this limit, workflows are immediately marked as failed and won't appear in your runs list as expected.
+ 如果超出此限制,工作流会被立即标记为失败,并且不会如预期出现在您的运行列表中。
- **Common scenarios that hit this limit**:
+ **常见的触发此限制的场景**:
- * Selecting more than 5,000 records with a Single manual trigger
- * Multiple workflows running simultaneously across your workspace
- * High-frequency automated triggers (e.g., Record Updated on a busy object)
+ * 使用 Single 手动触发器选择超过 5,000 条记录
+ * 整个工作区同时运行多个工作流
+ * 高频率的自动触发(例如,在繁忙对象上的 Record Updated)
- **Solutions**:
+ **解决方案**:
- * Use **Bulk** triggers instead of Single to process many records in one run
- * Space out large batch operations
- * Use filters to reduce trigger frequency
- * Schedule heavy workflows during off-peak hours
+ * 使用**Bulk** 触发器而非 Single,以在一次运行中处理多条记录
+ * 将大型批量操作分散进行
+ * 使用筛选条件降低触发频率
+ * 将繁重的工作流安排在非高峰时段
-
- Twenty has two rate limits to ensure system stability:
+
+ Twenty 设有两个速率限制以确保系统稳定性:
- | Limit | Value | Behavior |
- | ----- | ----- | -------- |
+ | 限制 | 值 | 行为 |
+ | -- | - | -- |
- \| **Soft limit** | 100 runs/minute | Runs queue in "Not Started" status, processed gradually |
- \| **Hard limit** | 5,000 runs/hour | Runs immediately fail |
+ \| **Soft limit** | 每分钟 100 次运行 | 运行会以 "Not Started" 状态排队,逐步处理 |
+ \| **Hard limit** | 每小时 5,000 次运行 | 运行会立即失败 |
- **Soft limit (100/min)**: Your workflows won't fail—they just wait in the queue and are processed over time. You can trigger more than 100 records; execution will be slower.
+ **Soft limit(100/分钟)**:您的工作流不会失败——它们只会在队列中等待,并随着时间被处理。 您可以触发超过 100 条记录;执行速度会更慢。
- **Hard limit (5,000/hr)**: This applies to your entire workspace. If all your workflows combined exceed 5,000 runs in an hour, additional runs will fail immediately.
+ **Hard limit(5,000/小时)**:这适用于您的整个工作区。 如果您所有工作流合计在一小时内超过 5,000 次运行,额外的运行将立即失败。
- **Tips to stay within limits**:
+ **保持在限制内的提示**:
- * Use Bulk triggers with Iterator instead of Single triggers for large batches
- * Combine related automations into fewer workflows
- * Use scheduled workflows to spread load over time
+ * 对于大型批量,使用带有 Iterator 的 Bulk 触发器,而不是 Single 触发器
+ * 将相关的自动化合并为更少的工作流
+ * 使用计划的工作流在一段时间内分散负载
-
- **No, there is no automatic retry functionality at the moment.**
+
+ **不,目前没有自动重试功能。**
- If a workflow run fails, you'll need to:
+ 如果某次工作流运行失败,您需要:
- 1. Review the error in **Settings → Workflows → [Your Workflow] → Runs**
- 2. Fix the issue (data, configuration, or external service)
- 3. Manually trigger the workflow again on the affected record(s)
+ 1. 在**设置 → 工作流 → [Your Workflow] → 运行**中查看错误
+ 2. 修复问题(数据、配置或外部服务)
+ 3. 在受影响的记录上手动再次触发该工作流
- **Tips to reduce failures**:
+ **减少失败的提示**:
- * Add **Filter** nodes to validate data before actions
- * Use **Search Records** to check if related records exist
- * Test thoroughly with a few records before bulk operations
+ * 在操作前添加**Filter** 节点以验证数据
+ * 使用**Search Records** 检查相关记录是否存在
+ * 在进行批量操作之前,先用少量记录充分测试
- Automatic retry functionality is on our roadmap for a future release.
+ 自动重试功能已在我们的路线图上,计划在未来版本中提供。
-
- **Yes, if your workflows are triggered by record creation or updates.**
+
+ **是的,如果您的工作流由记录的创建或更新触发。**
- When you import data via CSV, each record created or updated can trigger workflows. A large import (thousands of records) could:
+ 当您通过 CSV 导入数据时,每个创建或更新的记录都可能触发工作流。 大规模导入(数千条记录)可能会:
- * Hit the 5,000 runs/hour limit
- * Consume significant workflow credits
- * Send unexpected emails or notifications
- * Create duplicate tasks or records
+ * 触及每小时 5,000 次运行的限制
+ * 消耗大量工作流额度
+ * 发送意外的电子邮件或通知
+ * 创建重复的任务或记录
- **Before a mass import**:
+ **进行批量导入之前**:
- 1. Go to **Settings → Workflows**
- 2. Identify workflows triggered by the object you're importing
- 3. **Deactivate** them temporarily
- 4. Run your CSV import
- 5. **Reactivate** the workflows when done
+ 1. 进入**设置 → 工作流**
+ 2. 识别由您要导入的对象触发的工作流
+ 3. 暂时**停用**它们
+ 4. 执行您的 CSV 导入
+ 5. 完成后**重新启用**这些工作流
- **Alternative**: If you need the workflows to run on imported data, import in smaller batches to stay within rate limits.
+ **替代方案**:如果您需要这些工作流在导入的数据上运行,请以较小的批次导入以维持在速率限制内。
-
- If your workflow canvas looks messy with nodes scattered around, you can automatically organize it:
+
+ 如果您的工作流画布看起来很乱,节点散落各处,您可以自动整理:
- 1. Right-click anywhere on the workflow canvas
- 2. Click **Tidy up workflow**
+ 1. 在工作流画布的任意位置点击右键
+ 2. 点击**整理工作流**
- This will automatically rearrange all nodes into a clean, organized layout.
+ 这将自动将所有节点重新排列为整洁有序的布局。
diff --git a/packages/twenty-docs/l/zh/user-guide/workflows/overview.mdx b/packages/twenty-docs/l/zh/user-guide/workflows/overview.mdx
index dd03f28677..4934a90b38 100644
--- a/packages/twenty-docs/l/zh/user-guide/workflows/overview.mdx
+++ b/packages/twenty-docs/l/zh/user-guide/workflows/overview.mdx
@@ -1,80 +1,80 @@
---
-title: Workflows
-description: Learn how to build automations in Twenty.
+title: 工作流
+description: 了解如何在 Twenty 中构建自动化流程。
image: /images/user-guide/workflows/workflow.png
---
-
+
-## Why Workflows Matter
+## 为何工作流很重要
-Twenty was built to bring maximum flexibility to its users. Rather than forcing you to adapt your business processes to rigid, pre-built features, workflows enable you to build automations that create the CRM that best supports your unique business use cases.
+Twenty的设计宗旨是为用户提供最大的灵活性。 工作流可以让您自行构建自动化功能,打造最能支持您独特业务用例的CRM,而不是强迫您将业务流程迁就于僵化的预设功能。
-Workflows are Twenty's in-app feature for building these automations. They give you the building blocks to create exactly what your business needs, when it needs it.
+工作流是Twenty应用内构建这些自动化功能的特色。 它们为您提供了创建企业所需模块的基础,无论何时都能满足需求。
-## What can I do with workflows?
+## 我可以用工作流做什么?
-We recommend building automations for two main purposes:
+我们建议将自动化用于两个主要目的:
-1. **Internal automations to facilitate your team's day-to-day**: Reduce the amount of manual entries and repetitive tasks that slow down your team.
-2. **Bring data in and out of Twenty**: Connect Twenty via API calls and webhooks to your database and other tools.
+1. **内部自动化以便日常团队工作**:减少手动输入和重复任务,这些任务会减缓团队的速度。
+2. **引入和导出Twenty的数据**:通过API调用和Webhooks将Twenty与您的数据库和其他工具连接。
-## Building Your First Workflow
+## 构建您的第一个工作流
-### Step 1: Create a New Workflow
+### 步骤 1:创建新工作流
-1. Go to **Workflows** accessible below the other objects
-2. Click **+ New Record**
-3. Give your workflow a name
+1. 前往位于其他对象下方的 **工作流**
+2. 点击 **+ 新建记录**
+3. 为您的工作流命名
-### Step 2: Add a Trigger
+### 步骤 2:添加触发器
-Every workflow starts with a trigger. Choose from:
+每个工作流都从一个触发器开始。 从以下选项中选择:
-* **Record events**: When a record is created, updated, or deleted
-* **Schedule**: Run at specific times (daily, weekly, etc.)
-* **Manual**: Triggered by a user action
-* **Webhook**: Triggered by a webhook
+* **记录事件**:当记录被创建、更新或删除时
+* **计划**:在特定时间运行(每天、每周等)
+* **手动**:由用户操作触发
+* **Webhook**:由 webhook 触发
-### Step 3: Add Actions
+### 步骤 3:添加操作
-After your trigger, add one or more actions:
+在触发器之后,添加一个或多个操作:
-* **Create Record**: Add new records to any object
-* **Update Record**: Modify existing record data
-* **Delete Record**: Remove records from objects
-* **Search Records**: Find records matching criteria
-* **Upsert Record**: Create or update based on matching criteria
-* **Iterator**: Loop through arrays of records
-* **Filter**: Control which records proceed
-* **Delay**: Wait before continuing (duration or scheduled date)
-* **Send Email**: Send emails via your connected account
-* **Code**: Run custom JavaScript
-* **HTTP Request**: Call external APIs
-* **Form**: Get inputs from users within Twenty UI at the time of execution
-* **AI Agent** (Coming soon): Run intelligent AI tasks
+* **创建记录**:向任何对象添加新记录
+* **更新记录**:修改现有记录数据
+* **删除记录**:从对象中移除记录
+* **搜索记录**:查找符合条件的记录
+* **插入或更新记录**:基于匹配条件创建或更新
+* **迭代器**:遍历记录数组
+* **过滤器**:控制哪些记录继续执行
+* **延迟**:在继续之前等待(持续时间或计划日期)
+* **发送电子邮件**:通过已连接的账户发送电子邮件
+* **代码**:运行自定义 JavaScript
+* **HTTP 请求**:调用外部 API
+* **表单**:在执行时于 Twenty UI 内获取用户输入
+* **AI 代理**(即将推出):运行智能 AI 任务
-### Step 4: Test and Activate
+### 步骤 4:测试并启用
-1. Use the **Test** button to run your workflow with sample data
-2. Review the results to ensure it works as expected
-3. Toggle the workflow **Active** when ready
+1. 使用 **Test** 按钮,以示例数据运行您的工作流
+2. 检查结果以确保其按预期工作
+3. 准备就绪后,将工作流切换为 **Active**
-## Workflow Best Practices
+## 工作流最佳实践
-* **Edit step names**: Rename your workflow steps to clearly describe what each one does. This helps with maintenance and makes it easier to hand off to coworkers
-* **Leverage previous step data**: You can use fields from records returned by any previous step in your workflow
-* **Start simple**: Begin with basic workflows and add complexity over time as you become more comfortable with the system
-* **Plan before building**: Map out your workflow logic before you start building to avoid getting stuck halfway through
+* **编辑步骤名称**:重命名您的工作流步骤,以明确描述每个步骤的作用。 这有助于维护,并使工作交接给同事更轻松
+* **利用前一步的数据**:您可以使用由工作流程中任何前一步返回的记录字段
+* **从简单开始**:从基础工作流开始,并随着对系统的熟悉,随着时间的推移增加复杂性
+* **在构建之前计划**:在开始构建之前,绘制出您的工作流逻辑,以避免半途而废
-## Next Steps
+## 下一步
-* [Workflow Triggers](/l/zh/user-guide/workflows/capabilities/workflow-triggers)
-* [Workflow Actions](/l/zh/user-guide/workflows/capabilities/workflow-actions)
-* [CRM Automations](/l/zh/user-guide/workflows/how-tos/crm-automations/closed-won-automations)
+* [工作流触发器](/l/zh/user-guide/workflows/capabilities/workflow-triggers)
+* [工作流操作](/l/zh/user-guide/workflows/capabilities/workflow-actions)
+* [CRM 自动化](/l/zh/user-guide/workflows/how-tos/crm-automations/closed-won-automations)