i18n - docs translations (#15904)

Created by Github action

---------

Co-authored-by: Abdul Rahman <ar5438376@gmail.com>
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
Co-authored-by: github-actions <github-actions@twenty.com>
Co-authored-by: Charles Bochet <charles@twenty.com>
This commit is contained in:
github-actions[bot] 2025-11-18 17:21:48 +01:00 committed by GitHub
parent 46149cdb14
commit e02c24bd3a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
335 changed files with 2538 additions and 1231 deletions

View file

@ -21,6 +21,11 @@ on:
required: false
type: boolean
default: false
pull_request:
paths:
- 'packages/twenty-docs/**'
- 'crowdin.yml'
- '.github/workflows/docs-i18n-pull.yaml'
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
@ -35,7 +40,17 @@ jobs:
uses: actions/checkout@v4
with:
token: ${{ github.token }}
ref: ${{ github.ref }}
ref: ${{ github.event_name == 'pull_request' && github.head_ref || github.ref }}
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'
cache: 'yarn'
cache-dependency-path: 'yarn.lock'
- name: Install dependencies
run: yarn install --frozen-lockfile
- name: Setup Node.js
uses: actions/setup-node@v4
@ -48,6 +63,7 @@ jobs:
run: yarn install --frozen-lockfile
- name: Setup i18n branch
if: github.event_name != 'pull_request'
run: |
git fetch origin i18n || true
git checkout -B i18n origin/i18n || git checkout -b i18n
@ -58,12 +74,13 @@ jobs:
git config --global user.email 'github-actions@twenty.com'
- name: Stash any changes before pulling translations
if: github.event_name != 'pull_request'
run: |
git add .
git stash || true
- name: Pull translated docs from Crowdin
if: inputs.force_pull == true || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch'
if: github.event_name != 'pull_request' && (inputs.force_pull == true || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch')
uses: crowdin/github-action@v2
with:
upload_sources: false
@ -85,48 +102,32 @@ jobs:
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}
- name: Fix file permissions
if: github.event_name != 'pull_request'
run: sudo chown -R runner:docker . || true
- name: Fix translated documentation links
run: bash packages/twenty-docs/scripts/fix-translated-links.sh
- name: Detect navigation template change
id: nav_change
run: |
git fetch origin main || true
if git diff --quiet origin/main -- packages/twenty-docs/navigation/navigation.template.json; then
echo "changed=false" >> $GITHUB_OUTPUT
else
echo "changed=true" >> $GITHUB_OUTPUT
fi
- name: Pull navigation translations from Crowdin
if: steps.nav_change.outputs.changed == 'true'
uses: crowdin/github-action@v2
with:
upload_sources: false
upload_translations: false
download_translations: true
source: 'packages/twenty-docs/navigation/navigation.template.json'
translation: 'packages/twenty-docs/l/%two_letters_code%/navigation.json'
export_only_approved: false
localization_branch_name: i18n
base_url: 'https://twenty.api.crowdin.com'
skip_untranslated_files: true
push_translations: false
create_pull_request: false
skip_ref_checkout: true
dryrun_action: false
env:
GITHUB_TOKEN: ${{ github.token }}
CROWDIN_PROJECT_ID: '1'
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}
- name: Regenerate navigation template
if: github.event_name == 'pull_request'
run: yarn docs:generate-navigation-template
- name: Regenerate docs.json
run: yarn docs:generate
- name: Commit artifacts to pull request branch
if: github.event_name == 'pull_request'
run: |
git add packages/twenty-docs/docs.json packages/twenty-docs/navigation/navigation.template.json
if git diff --staged --quiet --exit-code; then
echo "No navigation/doc changes to commit."
exit 0
fi
git commit -m "chore: sync docs artifacts"
git push origin HEAD:${{ github.head_ref }}
- name: Check for changes and commit
if: github.event_name != 'pull_request'
id: check_changes
run: |
git add .
@ -138,11 +139,11 @@ jobs:
fi
- name: Push changes
if: steps.check_changes.outputs.changes_detected == 'true'
if: github.event_name != 'pull_request' && steps.check_changes.outputs.changes_detected == 'true'
run: git push origin HEAD:i18n
- name: Create pull request
if: steps.check_changes.outputs.changes_detected == 'true'
if: github.event_name != 'pull_request' && steps.check_changes.outputs.changes_detected == 'true'
run: |
if git diff --name-only origin/main..HEAD | grep -q .; then
gh pr create -B main -H i18n --title 'i18n - docs translations' --body 'Created by Github action' || true

View file

@ -7,7 +7,7 @@ on:
workflow_dispatch:
workflow_call:
push:
branches: ['main']
branches: ['main', 'docs-localized-navigation']
paths:
- 'packages/twenty-docs/**/*.mdx'
- '!packages/twenty-docs/fr/**'
@ -26,7 +26,20 @@ jobs:
uses: actions/checkout@v4
with:
token: ${{ github.token }}
ref: main
ref: ${{ github.ref }}
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'
cache: 'yarn'
cache-dependency-path: 'yarn.lock'
- name: Install dependencies
run: yarn install --frozen-lockfile
- name: Generate navigation template for Crowdin
run: yarn docs:generate-navigation-template
- name: Setup Node.js
uses: actions/setup-node@v4

View file

@ -33,7 +33,7 @@ The documentation will be available at `http://localhost:3000`
- `developers/` - Developer documentation
- `twenty-ui/` - Component documentation
2. Update `navigation/navigation-schema.json` if you need to change the tab/group hierarchy or add/remove pages. This file stays in the repo and is **not** uploaded to Crowdin.
2. Update `navigation/base-structure.json` if you need to change the tab/group hierarchy or add/remove pages. This file stays in the repo and is **not** uploaded to Crowdin.
3. Keep the translation template (`navigation/navigation.template.json`) in sync by running `yarn docs:generate-navigation-template` after editing the base structure. This template is the only file that should be pushed to Crowdin.
4. For each translated locale pulled from Crowdin, ensure a `packages/twenty-docs/l/<language>/navigation.json` file exists. These files contain **labels only**; page slugs always come from the base structure.
5. Run `yarn docs:generate` to rebuild `docs.json` from the base structure + translated labels.
@ -65,7 +65,7 @@ Your content here...
## 🔧 Configuration
- `navigation/navigation-schema.json` - Source of truth for tabs, groups, icons, and page slugs (English only, not sent to Crowdin).
- `navigation/base-structure.json` - Source of truth for tabs, groups, icons, and page slugs (English only, not sent to Crowdin).
- `navigation/navigation.template.json` - Generated translation template (labels only) that is uploaded to Crowdin.
- `l/<language>/navigation.json` - Locale-specific label files pulled from Crowdin.
- `docs.json` - Generated Mintlify configuration (always run `yarn docs:generate` after modifying navigation files).

View file

@ -1922,7 +1922,7 @@
"tab": "User Guide",
"groups": [
{
"group": "Getting Started",
"group": "시작하기",
"icon": "rocket",
"pages": [
"l/ko/user-guide/introduction",
@ -1936,7 +1936,7 @@
]
},
{
"group": "Data Model",
"group": "데이터 모델",
"icon": "database",
"pages": [
"l/ko/user-guide/data-model/customize-your-data-model",
@ -1948,7 +1948,7 @@
]
},
{
"group": "CRM Essentials",
"group": "CRM 필수 요소",
"icon": "users",
"pages": [
"l/ko/user-guide/crm-essentials/contact-and-account-management",
@ -1958,7 +1958,7 @@
]
},
{
"group": "Views",
"group": "보기들",
"icon": "table",
"pages": [
"l/ko/user-guide/views/kanban-views",
@ -1979,7 +1979,7 @@
]
},
{
"group": "Collaboration",
"group": "협업",
"icon": "envelope",
"pages": [
"l/ko/user-guide/collaboration/emails-and-calendars",
@ -2004,7 +2004,7 @@
]
},
{
"group": "Settings",
"group": "설정",
"icon": "gear",
"pages": [
"l/ko/user-guide/settings/profile-settings",
@ -2019,14 +2019,14 @@
]
},
{
"group": "Pricing",
"group": "가격",
"icon": "credit-card",
"pages": [
"l/ko/user-guide/pricing/billing-and-pricing-faq"
]
},
{
"group": "Resources",
"group": "자료",
"icon": "book-open",
"pages": [
"l/ko/user-guide/resources/glossary",
@ -2036,20 +2036,20 @@
]
},
{
"tab": "Developers",
"tab": "개발자",
"groups": [
{
"group": "Developers",
"group": "개발자",
"pages": []
},
{
"group": "Getting Started",
"group": "시작하기",
"icon": "rocket",
"pages": [
"l/ko/developers/introduction",
"l/ko/developers/local-setup",
{
"group": "Self-Hosting",
"group": "셀프 호스팅",
"pages": [
"l/ko/developers/self-hosting/docker-compose",
"l/ko/developers/self-hosting/setup",
@ -2059,7 +2059,7 @@
]
},
{
"group": "API and Webhooks",
"group": "API 및 웹훅",
"pages": [
"l/ko/developers/api-and-webhooks/api",
"l/ko/developers/api-and-webhooks/webhooks"
@ -2068,12 +2068,12 @@
]
},
{
"group": "Contributing",
"group": "기여",
"icon": "code-branch",
"pages": [
"l/ko/developers/bug-and-requests",
{
"group": "Frontend Development",
"group": "프론트엔드 개발",
"pages": [
"l/ko/developers/frontend-development/storybook",
{
@ -2081,7 +2081,7 @@
"pages": [
"l/ko/twenty-ui/introduction",
{
"group": "Display",
"group": "표시",
"pages": [
"l/ko/twenty-ui/display/checkmark",
"l/ko/twenty-ui/display/chip",
@ -2092,13 +2092,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",
@ -2113,7 +2113,7 @@
]
},
{
"group": "Navigation",
"group": "네비게이션",
"pages": [
"l/ko/twenty-ui/navigation",
"l/ko/twenty-ui/navigation/breadcrumb",
@ -2134,7 +2134,7 @@
]
},
{
"group": "Backend Development",
"group": "백엔드 개발",
"pages": [
"l/ko/developers/backend-development/server-commands",
"l/ko/developers/backend-development/feature-flags",
@ -2880,7 +2880,7 @@
]
},
{
"group": "Data Model",
"group": "Veri modeli",
"icon": "database",
"pages": [
"l/tr/user-guide/data-model/customize-your-data-model",
@ -2892,7 +2892,7 @@
]
},
{
"group": "CRM Essentials",
"group": "CRM Temelleri",
"icon": "users",
"pages": [
"l/tr/user-guide/crm-essentials/contact-and-account-management",
@ -2902,7 +2902,7 @@
]
},
{
"group": "Views",
"group": "Görünümler",
"icon": "table",
"pages": [
"l/tr/user-guide/views/kanban-views",
@ -2910,7 +2910,7 @@
]
},
{
"group": "Workflows",
"group": "İş Akışları",
"icon": "bolt",
"pages": [
"l/tr/user-guide/workflows/getting-started-workflows",
@ -2923,7 +2923,7 @@
]
},
{
"group": "Collaboration",
"group": "İşbirliği",
"icon": "envelope",
"pages": [
"l/tr/user-guide/collaboration/emails-and-calendars",
@ -2941,14 +2941,14 @@
]
},
{
"group": "Reporting",
"group": "Raporlama",
"icon": "chart-bar",
"pages": [
"l/tr/user-guide/reporting/reporting-overview"
]
},
{
"group": "Settings",
"group": "Ayarlar",
"icon": "gear",
"pages": [
"l/tr/user-guide/settings/profile-settings",
@ -2963,14 +2963,14 @@
]
},
{
"group": "Pricing",
"group": "Fiyatlandırma",
"icon": "credit-card",
"pages": [
"l/tr/user-guide/pricing/billing-and-pricing-faq"
]
},
{
"group": "Resources",
"group": "Kaynaklar",
"icon": "book-open",
"pages": [
"l/tr/user-guide/resources/glossary",
@ -2980,10 +2980,10 @@
]
},
{
"tab": "Developers",
"tab": "Geliştiriciler",
"groups": [
{
"group": "Developers",
"group": "Geliştiriciler",
"pages": []
},
{
@ -3012,12 +3012,12 @@
]
},
{
"group": "Contributing",
"group": "Katkıda Bulunma",
"icon": "code-branch",
"pages": [
"l/tr/developers/bug-and-requests",
{
"group": "Frontend Development",
"group": "Frontend Geliştirme",
"pages": [
"l/tr/developers/frontend-development/storybook",
{
@ -3025,7 +3025,7 @@
"pages": [
"l/tr/twenty-ui/introduction",
{
"group": "Display",
"group": "Görüntüle",
"pages": [
"l/tr/twenty-ui/display/checkmark",
"l/tr/twenty-ui/display/chip",
@ -3036,13 +3036,13 @@
]
},
{
"group": "Feedback",
"group": "Geri Bildirim",
"pages": [
"l/tr/twenty-ui/progress-bar"
]
},
{
"group": "Input",
"group": "Girdi",
"pages": [
"l/tr/twenty-ui/input/buttons",
"l/tr/twenty-ui/input/color-scheme",
@ -3057,7 +3057,7 @@
]
},
{
"group": "Navigation",
"group": "Gezinme",
"pages": [
"l/tr/twenty-ui/navigation",
"l/tr/twenty-ui/navigation/breadcrumb",
@ -3078,7 +3078,7 @@
]
},
{
"group": "Backend Development",
"group": "Backend Geliştirme",
"pages": [
"l/tr/developers/backend-development/server-commands",
"l/tr/developers/backend-development/feature-flags",
@ -3099,10 +3099,10 @@
"language": "zh",
"tabs": [
{
"tab": "用户指南",
"tab": "User Guide",
"groups": [
{
"group": "正在开始",
"group": "Getting Started",
"icon": "rocket",
"pages": [
"l/zh/user-guide/introduction",
@ -3116,7 +3116,7 @@
]
},
{
"group": "数据模型",
"group": "數據模型",
"icon": "database",
"pages": [
"l/zh/user-guide/data-model/customize-your-data-model",
@ -3128,7 +3128,7 @@
]
},
{
"group": "CRM要点",
"group": "CRM 基礎知識",
"icon": "users",
"pages": [
"l/zh/user-guide/crm-essentials/contact-and-account-management",
@ -3138,7 +3138,7 @@
]
},
{
"group": "视图",
"group": "視圖",
"icon": "table",
"pages": [
"l/zh/user-guide/views/kanban-views",
@ -3146,7 +3146,7 @@
]
},
{
"group": "工作流",
"group": "Workflow",
"icon": "bolt",
"pages": [
"l/zh/user-guide/workflows/getting-started-workflows",
@ -3159,7 +3159,7 @@
]
},
{
"group": "作",
"group": "作",
"icon": "envelope",
"pages": [
"l/zh/user-guide/collaboration/emails-and-calendars",
@ -3168,7 +3168,7 @@
]
},
{
"group": "集成和 API",
"group": "Integrations & API",
"icon": "plug",
"pages": [
"l/zh/user-guide/integrations-api/apis-overview",
@ -3177,14 +3177,14 @@
]
},
{
"group": "告",
"group": "告",
"icon": "chart-bar",
"pages": [
"l/zh/user-guide/reporting/reporting-overview"
]
},
{
"group": "置",
"group": "置",
"icon": "gear",
"pages": [
"l/zh/user-guide/settings/profile-settings",
@ -3199,14 +3199,14 @@
]
},
{
"group": "定",
"group": "定",
"icon": "credit-card",
"pages": [
"l/zh/user-guide/pricing/billing-and-pricing-faq"
]
},
{
"group": "源",
"group": "源",
"icon": "book-open",
"pages": [
"l/zh/user-guide/resources/glossary",
@ -3216,20 +3216,20 @@
]
},
{
"tab": "开发者",
"tab": "開發人員",
"groups": [
{
"group": "开发者",
"group": "開發人員",
"pages": []
},
{
"group": "正在开始",
"group": "Getting Started",
"icon": "rocket",
"pages": [
"l/zh/developers/introduction",
"l/zh/developers/local-setup",
{
"group": "自我主机",
"group": "Self-Hosting",
"pages": [
"l/zh/developers/self-hosting/docker-compose",
"l/zh/developers/self-hosting/setup",
@ -3248,12 +3248,12 @@
]
},
{
"group": "贡献中",
"group": "貢獻",
"icon": "code-branch",
"pages": [
"l/zh/developers/bug-and-requests",
{
"group": "前端开发",
"group": "前端開發",
"pages": [
"l/zh/developers/frontend-development/storybook",
{
@ -3261,7 +3261,7 @@
"pages": [
"l/zh/twenty-ui/introduction",
{
"group": "示",
"group": "示",
"pages": [
"l/zh/twenty-ui/display/checkmark",
"l/zh/twenty-ui/display/chip",
@ -3272,13 +3272,13 @@
]
},
{
"group": "反",
"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",
@ -3293,7 +3293,7 @@
]
},
{
"group": "Navigation",
"group": "導航",
"pages": [
"l/zh/twenty-ui/navigation",
"l/zh/twenty-ui/navigation/breadcrumb",
@ -3314,7 +3314,7 @@
]
},
{
"group": "后端开发",
"group": "後端開發",
"pages": [
"l/zh/developers/backend-development/server-commands",
"l/zh/developers/backend-development/feature-flags",

View file

@ -48,6 +48,7 @@ crwdns56596:0crwdne56596:0 crwdns56598:0crwdne56598:0
- crwdns56600:0crwdne56600:0
- crwdns56602:0crwdne56602:0
- crwdns64450:0crwdne64450:0
<Warning>
crwdns56604:0crwdne56604:0 crwdns56606:0crwdne56606:0
@ -101,11 +102,21 @@ crwdns56660:0crwdne56660:0 crwdns56662:0crwdne56662:0 crwdns56664:0crwdne56664:0
## crwdns56672:0crwdne56672:0
### crwdns64452:0crwdne64452:0
crwdns64454:0crwdne64454:0
- crwdns64456:0crwdne64456:0 crwdns64458:0crwdne64458:0
- crwdns64460:0crwdne64460:0 crwdns64462:0crwdne64462:0 crwdns64464:0crwdne64464:0
crwdns64466:0crwdne64466:0 crwdns64468:0crwdne64468:0
### crwdns56674:0crwdne56674:0
crwdns56676:0crwdne56676:0 crwdns56678:0crwdne56678:0
- crwdns56680:0crwdne56680:0
- crwdns64470:0crwdne64470:0
- crwdns56682:0crwdne56682:0
- crwdns56684:0crwdne56684:0

View file

@ -56,7 +56,7 @@ crwdns54628:0crwdne54628:0 crwdns54630:0crwdne54630:0
</Accordion>
<Accordion title="What are Morph Many relationships?">
crwdns54632:0crwdne54632:0 crwdns54634:0crwdne54634:0
crwdns64412:0crwdne64412:0 crwdns64414:0crwdne64414:0 crwdns64416:0/user-guide/data-model/relation-fields#morph-many-relationshipscrwdne64416:0
</Accordion>
<Accordion title="Can I reorder fields in objects?">

View file

@ -49,14 +49,36 @@ crwdns56416:0crwdne56416:0 crwdns56418:0crwdne56418:0
crwdns56424:0crwdne56424:0
## crwdns64418:0crwdne64418:0
crwdns64420:0crwdne64420:0
### crwdns64422:0crwdne64422:0
crwdns64424:0crwdne64424:0 crwdns64426:0crwdne64426:0
- crwdns64428:0crwdne64428:0
- crwdns64430:0crwdne64430:0
- crwdns64432:0crwdne64432:0
### crwdns64434:0crwdne64434:0
1. crwdns64436:0crwdne64436:0
2. crwdns64438:0crwdne64438:0
3. crwdns64440:0crwdne64440:0
4. crwdns64442:0crwdne64442:0
5. crwdns64444:0crwdne64444:0
crwdns64446:0crwdne64446:0
## crwdns56426:0crwdne56426:0
- crwdns56428:0crwdne56428:0
- crwdns56430:0crwdne56430:0
- crwdns56432:0crwdne56432:0
- crwdns64448:0crwdne64448:0
## crwdns56434:0crwdne56434:0
- crwdns56436:0crwdne56436:0
- crwdns56438:0crwdne56438:0

View file

@ -25,6 +25,13 @@ crwdns57406:0crwdne57406:0
crwdns57410:0crwdne57410:0
### crwdns64472:0crwdne64472:0
crwdns64474:0crwdne64474:0
- crwdns64476:0crwdne64476:0 crwdns64478:0crwdne64478:0
- crwdns64480:0crwdne64480:0 crwdns64482:0crwdne64482:0 crwdns64484:0crwdne64484:0
### crwdns57412:0crwdne57412:0
crwdns57414:0crwdne57414:0 crwdns57416:0crwdne57416:0
@ -56,7 +63,13 @@ crwdns57444:0crwdne57444:0
2. crwdns57448:0crwdne57448:0
3. crwdns57450:0crwdne57450:0
crwdns57452:0crwdne57452:0
crwdns64486:0crwdne64486:0
- crwdns64488:0crwdne64488:0
- crwdns64490:0crwdne64490:0
- crwdns64492:0crwdne64492:0
<Note>crwdns64494:0crwdne64494:0</Note>
<VimeoEmbed videoId="927645774" title="Video demonstration" />

View file

@ -221,7 +221,7 @@ Jy moet 'n [App Wagwoord](https://support.google.com/accounts/answer/185833) voo
<ArticleTab>
Hou in gedagte dat indien jy 2FA geaktiveer het, jy 'n [App Wagwoord](https://support.microsoft.com/en-us/account-billing/manage-app-passwords-for-two-step-verification-d6dc8c6d-4bf7-4851-ad95-6d07799387e9) sal moet voorsien.
**smtp4dev** is 'n vals SMTP e-posbediener vir ontwikkeling en toetsing.
- EMAIL_DRIVER=smtp
- EMAIL_SMTP_HOST=smtp.office365.com

View file

@ -0,0 +1,91 @@
{
"tabs": {
"userGuide": {
"label": "User Guide",
"groups": {
"gettingStarted": {
"label": "Getting Started"
},
"dataModel": {
"label": "Datamodel"
},
"crmEssentials": {
"label": "CRM Noodsaaklikhede"
},
"views": {
"label": "Aansigte"
},
"workflows": {
"label": "Werksvloeie"
},
"collaboration": {
"label": "Samewerking"
},
"integrationsApi": {
"label": "Integrations & API"
},
"reporting": {
"label": "Verslagdoening"
},
"settings": {
"label": "Instellings"
},
"pricing": {
"label": "Pryse"
},
"resources": {
"label": "Hulpbronne"
}
}
},
"developers": {
"label": "Ontwikkelaars",
"groups": {
"developersGroup": {
"label": "Ontwikkelaars"
},
"devGettingStarted": {
"label": "Getting Started",
"groups": {
"selfHosting": {
"label": "Self-Hosting"
},
"apiAndWebhooks": {
"label": "API en Webhooks"
}
}
},
"contributing": {
"label": "Bydra",
"groups": {
"frontendDevelopment": {
"label": "Frontend Ontwikkeling",
"groups": {
"twentyUi": {
"label": "Twenty UI",
"groups": {
"display": {
"label": "Vertoon"
},
"feedback": {
"label": "Terugvoer"
},
"input": {
"label": "Invoer"
},
"navigation": {
"label": "Navigasie"
}
}
}
}
},
"backendDevelopment": {
"label": "Backend Ontwikkeling"
}
}
}
}
}
}
}

View file

@ -83,7 +83,7 @@ As jy 'n fout kry wanneer jy uniekheid instel, kyk na duplikaat waardes in jou d
## Veldkonfigurasie Beste Praktyke
### Naamkonvensies en Beperkings
### Veldkonfigurasie Beste Praktyke
- **Verhouding veldname kan nie opdateer word nie** na skep (beïnvloed API struktuur)
- **Enkelvoudige en meervoudige name moet verskil**: Ons GraphQL API benodig verskillende name vir mutasies

View file

@ -17,7 +17,7 @@ To restore backup, run `cat databases_backup.sql | docker exec -i {db_container_
1. في الطرفية، على الجهاز الذي يعمل فيه Twenty، قم بإيقاف Twenty: `docker compose down`
2. قم بترقية الإصدار عن طريق تغيير قيمة `TAG` في ملف .env بجانب docker-compose. ( نوصي باستخدام إصدار `major.minor` مثل `v0.53` )
2. قم بترقية الإصدار عن طريق تغيير قيمة `TAG` في ملف .env بجانب docker-compose. ( نوصي باستخدام إصدار `major.minor` مثل `v0.53` )
3. قم بإعادة تشغيل Twenty باستخدام `docker compose up -d`

View file

@ -79,9 +79,9 @@ export const MyComponent = () => {
<Tab title="Props">
| المحددات | النوع | الوصف |
| -------- | ------ | ------------------------------------------------------------ |
| نص | string | The content you want to display in the overflowing text area |
| الإزاحة | النوع | الوصف |
| ------- | ------ | ------------------------------------------------------------ |
| نص | string | The content you want to display in the overflowing text area |
</Tab>

View file

@ -51,7 +51,7 @@ export const MyComponent = () => {
| التنوع | string | النمط البصري للزر. Options include `primary`, `secondary`, and `tertiary` |
| الحجم | string | حجم الزر. يوجد خياران: `صغير` و `متوسط` |
| الموقع | string | موقع الزر بالنسبة لأخوته. Options include: `standalone`, `left`, `right`, and `middle` |
| accent | string | لون الزر المميز تشمل الخيارات: `default`، `blue`، `danger` |
| accent | string | موقع الزر بالنسبة لأخوته. Options include: `standalone`, `left`, `right`, and `middle` |
| قريباً | قيمة منطقية | يشير إلى ما إذا كان الزر معلمًا "قريبًا" (مثل الميزات القادمة) |
| معطل | قيمة منطقية | يحدد إذا كان الزر معطل أم لا |
| تركيز | قيمة منطقية | يحدد إذا كان الزر في وضع التركيز |
@ -354,16 +354,16 @@ export const MyComponent = () => {
<Tab title="Props">
| المحددات | النوع | الوصف |
| --------- | ----------------- | ---------------------------------------------------------------- |
| className | string | اسم اختياري لتنسيقات إضافية |
| أيقونة | `React.ReactNode` | الرمز الذي تريد عرضه في الزر |
| العنوان | string | محتوى نصي للزر |
| accent | string | لون الزر المميز تشمل الخيارات: `ثانوي` و `ثالثي` |
| نشط | قيمة منطقية | يحدد إذا كان الزر في وضع فعّال |
| معطل | قيمة منطقية | يحدد ما إذا كان الزر معطل |
| تركيز | قيمة منطقية | يحدد إذا كان الزر في وضع التركيز |
| عند النقر | وظيفة | وظيفة رد فعل تنطلق عند نقر المستخدم على الزر |
| المحددات | النوع | الوصف |
| --------- | ----------------- | ------------------------------------------------------------------ |
| className | string | اسم اختياري لتنسيقات إضافية |
| أيقونة | `React.ReactNode` | الرمز الذي تريد عرضه في الزر |
| العنوان | string | محتوى نصي للزر |
| accent | string | النمط البصري للزر. تشمل الخيارات `أساسي` و `ثانوي` |
| نشط | قيمة منطقية | يحدد إذا كان الزر في وضع فعّال |
| معطل | قيمة منطقية | يحدد ما إذا كان الزر معطل |
| تركيز | قيمة منطقية | يحدد إذا كان الزر في وضع التركيز |
| عند النقر | وظيفة | وظيفة رد فعل تنطلق عند نقر المستخدم على الزر |
</Tab>
@ -400,18 +400,18 @@ export const MyComponent = () => {
<Tab title="Props">
| المحددات | النوع | الوصف |
| --------- | --------------------- | ----------------------------------------------------------------------- |
| className | string | اسم اختياري لتنسيقات إضافية |
| testId | string | معرف اختبار للزر |
| أيقونة | `React.ComponentType` | مكون أيقونة اختياري يظهر داخل الزر |
| العنوان | string | محتوى نصي للزر |
| الحجم | string | حجم الزر. يوجد خياران: `صغير` و `متوسط` |
| accent | string | لون الزر المميز تشمل الخيارات: `ثانوي` و `ثالثي` |
| نشط | قيمة منطقية | يحدد إذا كان الزر في وضع فعّال |
| معطل | قيمة منطقية | يحدد ما إذا كان الزر معطل |
| تركيز | قيمة منطقية | يحدد إذا كان الزر في وضع التركيز |
| عند النقر | function | وظيفة رد فعل تنطلق عند نقر المستخدم على الزر |
| المحددات | النوع | الوصف |
| --------- | --------------------- | -------------------------------------------------------------------------------- |
| className | string | اسم اختياري لتنسيقات إضافية |
| testId | string | معرف اختبار للزر |
| أيقونة | `React.ComponentType` | مكون أيقونة اختياري يظهر داخل الزر |
| العنوان | string | محتوى نصي للزر |
| الحجم | string | حجم الزر. يوجد خياران: `صغير` و `متوسط` |
| accent | string | لون الزر المميز لون الزر المميز تشمل الخيارات: `ثانوي` و `ثالثي` |
| نشط | قيمة منطقية | يحدد إذا كان الزر في وضع فعّال |
| معطل | قيمة منطقية | يحدد ما إذا كان الزر معطل |
| تركيز | قيمة منطقية | يحدد إذا كان الزر في وضع التركيز |
| عند النقر | function | وظيفة رد فعل تنطلق عند نقر المستخدم على الزر |
</Tab>
@ -443,14 +443,14 @@ export const MyComponent = () => {
<Tab title="Props">
| المحددات | النوع | الوصف |
| -------------- | -------------------------------- | --------------------------------------------------------------------------------- |
| العنوان | string | محتوى نصي للزر |
| عرض كامل | قيمة منطقية | يحدد ما إذا كان الزر يجب أن يمتد على كامل عرض الحاوية |
| التنوع | string | النمط البصري للزر. تشمل الخيارات `أساسي` و `ثانوي` |
| قريباً | قيمة منطقية | يشير إلى ما إذا كان الزر معلمًا "قريبًا" (مثل الميزات القادمة) |
| أيقونة | `React.ComponentType` | مكون أيقونة اختياري يظهر داخل الزر |
| خصائص زر React | `React.ComponentProps<'button'>` | كل خصائص زر HTML القياسية مدعومة |
| المحددات | النوع | الوصف |
| -------------- | -------------------------------- | --------------------------------------------------------------------------------------------------- |
| العنوان | string | محتوى نصي للزر |
| عرض كامل | قيمة منطقية | يحدد ما إذا كان الزر يجب أن يمتد على كامل عرض الحاوية |
| التنوع | string | النمط البصري للزر. لون الزر المميز تشمل الخيارات: `ثانوي` و `ثالثي` |
| قريباً | قيمة منطقية | يشير إلى ما إذا كان الزر معلمًا "قريبًا" (مثل الميزات القادمة) |
| أيقونة | `React.ComponentType` | مكون أيقونة اختياري يظهر داخل الزر |
| خصائص زر React | `React.ComponentProps<'button'>` | كل خصائص زر HTML القياسية مدعومة |
</Tab>

View file

@ -313,7 +313,7 @@ export const MyComponent = () => {
| نص | string | محتوى النص في عنصر القائمة |
| المحدد | قيمة منطقية | يشير إلى ما إذا كان عنصر القائمة محددًا (مفحوص) |
| معطل | قيمة منطقية | يشير إلى ما إذا كان عنصر القائمة معطلاً |
| معلق عليه | قيمة منطقية | يشير إلى ما إذا كان يتم التحويم حاليًا على عنصر القائمة |
| معطل | قيمة منطقية | يشير إلى ما إذا كان يتم التحويم حاليًا على عنصر القائمة |
| عند النقر | function | دالة الاستدعاء التي يتم تحفيزها عند النقر على عنصر القائمة |
| className | string | اسم اختياري لتنسيقات إضافية |
@ -363,7 +363,7 @@ export const MyComponent = () => {
| نص | string | محتوى النص في عنصر القائمة |
| المحدد | قيمة منطقية | يشير إلى ما إذا كان عنصر القائمة محددًا (مفحوص) |
| معطل | قيمة منطقية | يشير إلى ما إذا كان عنصر القائمة معطلاً |
| معلق عليه | قيمة منطقية | يشير إلى ما إذا كان يتم التحويم حاليًا على عنصر القائمة |
| معطل | قيمة منطقية | يشير إلى ما إذا كان يتم التحويم حاليًا على عنصر القائمة |
| testId | string | سمة data-testid لأغراض الاختبار |
| عند النقر | function | دالة الاستدعاء التي يتم تحفيزها عند النقر على عنصر القائمة |
| className | string | اسم اختياري لتنسيقات إضافية |
@ -408,7 +408,7 @@ export const MyComponent = () => {
| اللون | string | لون الثيم المعروض كعينة في عنصر القائمة. الخيارات تشمل: `أخضر`, `تركواز`, `سماوي`, `أزرق`, `أرجواني`, `وردي`, `أحمر`, `برتقالي`, `أصفر`, `رمادي`. |
| المحدد | قيمة منطقية | يشير إلى ما إذا كان عنصر القائمة محددًا (مفحوص) |
| معطل | قيمة منطقية | يشير إلى ما إذا كان عنصر القائمة معطلاً |
| معلق عليه | قيمة منطقية | يشير إلى ما إذا كان يتم التحويم حاليًا على عنصر القائمة |
| معطل | قيمة منطقية | يشير إلى ما إذا كان يتم التحويم حاليًا على عنصر القائمة |
| التنوع | string | The variant of the color sample. يمكن أن يكون إما `افتراضي` أو `خط أنابيب` |
| عند النقر | function | دالة الاستدعاء التي يتم تحفيزها عند النقر على عنصر القائمة |
| className | string | اسم اختياري لتنسيقات إضافية |
@ -449,9 +449,9 @@ export const MyComponent = () => {
| --------------- | ----------- | ------------------------------------------------------------ |
| الأيقونة اليسرى | مكون رمز | أيقونة اختيارية تُعرض قبل النص في عنصر القائمة |
| نص | string | محتوى النص في عنصر القائمة |
| مبدل | قيمة منطقية | يشير إلى ما إذا كان مفتاح التبديل في حالة "تشغيل" أو "إيقاف" |
| معلق عليه | قيمة منطقية | يشير إلى ما إذا كان مفتاح التبديل في حالة "تشغيل" أو "إيقاف" |
| onToggleChange | وظيفة | دالة الاستدعاء التي يتم تحفيزها عند تغيير حالة مفتاح التبديل |
| حجم التبديل | string | حجم مفتاح التبديل. يمكن أن يكون إما \\ |
| حجم التبديل | string | حجم مفتاح التبديل. يمكن أن يكون إما \\ |
| className | string | اسم اختياري لتنسيقات إضافية |
</Tab>

View file

@ -37,9 +37,8 @@ import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
## إنشاء حقل مخصص
To add a custom field to any object, follow these steps:
1. اذهب إلى `الإعدادات` في الشريط الجانبي الأيسر.
٢. اذهب إلى `نموذج البيانات`، ثم حدد الكائن الذي ترغب في تخصيصه.
To add a custom field to any object, follow these steps: اذهب إلى `الإعدادات` في الشريط الجانبي الأيسر. ٢.
٢. اذهب إلى `نموذج البيانات`، ثم حدد الكائن الذي ترغب في تخصيصه. ٣.
٣. تقدم من خلال النقر على `إضافة حقل`.
4. اختر اسم الحقل والنوع الذي يناسب احتياجاتك. فكر في إضافة وصف للحقل لفهم أفضل.

View file

@ -43,7 +43,7 @@ import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
_مثال، يمكن للشركة أن ترتبط بعدة أشخاص. ويمكن أن ينتمي الشخص الواحد إلى شركة واحدة فقط._
- لتحميل العلاقات عبر وظيفة الاستيراد، تحتاج إلى تقديم `id` (أو أي حقل فريد آخر) للجسم الملحق في الملف الذي يحتوي على السجلات على "جانب متعدد" من العلاقة.
_على سبيل المثال، تقدم `id` أو `النطاق` للشركة عند رفع سجلات الأشخاص. أنت لا تزود `id` الأشخاص (أو `البريد الإلكتروني`) عند تحميل الملف مع الشركات._
_على سبيل المثال، تقدم `id` أو `النطاق` للشركة عند رفع سجلات الأشخاص. أنت لا تزود `id` الأشخاص (أو `البريد الإلكتروني`) عند تحميل الملف مع الشركات._ </Warning>
</Warning>
### ارفع ملفك
@ -70,19 +70,19 @@ import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
</details>
<details><ملخص>هل يمكنني استيراد العلاقات بين الأجسام؟</ملخص>
<details><ملخص>هل يمكنني استيراد العلاقات بين الأجسام؟
نعم، يرجى الرجوع إلى قسم **جهز ملف csv الخاص بك** أعلاه في هذه المقالة، حيث يحتوي على قسم يتعلق باستيراد العلاقات.
</details>
<details><ملخص>هل يمكنني تحديث السجلات الحالية باستخدام وظيفة الاستيراد؟</ملخص>
<details><ملخص>هل يمكنني تحديث السجلات الحالية باستخدام وظيفة الاستيراد؟
نعم يمكنك تحديث السجلات الحالية باستخدام وظيفة الاستيراد. تأكد من تقديم `id` (أو أي حقل فريد آخر) عند إعادة رفع سجلاتك.
</details>
<details><ملخص>هل يمكنني نقل `id` من أدواتي الأخرى؟</ملخص>
<details><ملخص>هل يمكنني نقل `id` من أدواتي الأخرى؟
نعم. تحتاج إلى إنشاء حقل تحدده كفريد في نموذج البيانات الخاص بك الذي سيحتوي على `id` من أدواتك الأخرى. يرجى ملاحظة أن الاسم `id` محمي حيث يستخدم لـ id الخاص بـ Twenty.
إذا كنت تريد إنشاء العلاقات بين الأجسام باستخدام هذا الحقل، ارجع إلى قسم **جهز ملف csv الخاص بك** أعلاه في هذه المقالة. يحتوي على قسم يتعلق باستيراد العلاقات.

View file

@ -21,13 +21,13 @@ sectionInfo: موارد المصطلحات ومعلومات المجتمع
### التبليغ عن المشكلات
هل واجهت مشكلة؟ [قم بإنشاء مشكلة](https://github.com/twentyhq/twenty/issues/new) على GitHub، موفرًا أكبر قدر ممكن من التفاصيل.
هل واجهت مشكلة؟ هل واجهت مشكلة؟ [قم بإنشاء مشكلة](https://github.com/twentyhq/twenty/issues/new) على GitHub، موفرًا أكبر قدر ممكن من التفاصيل.
<img src="/images/user-guide/github/new-issue.png" style={{width:'100%'}}/>
### اقتراح الميزات
ما التحسينات التي ترغب في رؤيتها في Twenty؟ بغض النظر عن معرفتك التقنية، يمكنك الانضمام [إلى المحادثة هنا](https://github.com/twentyhq/twenty/discussions).
ما التحسينات التي ترغب في رؤيتها في Twenty؟ ما التحسينات التي ترغب في رؤيتها في Twenty؟ بغض النظر عن معرفتك التقنية، يمكنك الانضمام [إلى المحادثة هنا](https://github.com/twentyhq/twenty/discussions).
<img src="/images/user-guide/github/github-conversations.png" style={{width:'100%'}}/>

View file

@ -57,7 +57,7 @@ sectionInfo: أتمتة العمليات والاندماج مع الأدوات
**المشكلة**: الوصول إلى حد 100 سير عمل متزامن لكل مساحة عمل.
<Warning><Warning>لا يمكنك تشغيل أكثر من 100 سير عمل بالتوازي في أي وقت لكل مساحة عمل.</Warning></Warning>
<Warning><Warning><Warning>لا يمكنك تشغيل أكثر من 100 سير عمل بالتوازي في أي وقت لكل مساحة عمل.</Warning> </Warning></Warning>
**حلول**:

View file

@ -221,7 +221,7 @@ Haureu de proporcionar una [Contrasenya d'Aplicació](https://support.google.com
<ArticleTab>
Tingueu en compte que si teniu 2FA activat, necessitareu proporcionar una [Contrasenya d'Aplicació](https://support.microsoft.com/en-us/account-billing/manage-app-passwords-for-two-step-verification-d6dc8c6d-4bf7-4851-ad95-6d07799387e9).
**smtp4dev** és un servidor SMTP fals per al desenvolupament i proves.
- EMAIL_DRIVER=smtp
- EMAIL_SMTP_HOST=smtp.office365.com

View file

@ -0,0 +1,91 @@
{
"tabs": {
"userGuide": {
"label": "User Guide",
"groups": {
"gettingStarted": {
"label": "Començar"
},
"dataModel": {
"label": "Model de dades"
},
"crmEssentials": {
"label": "Essencials del CRM"
},
"views": {
"label": "Vistes"
},
"workflows": {
"label": "Fluxos de treball"
},
"collaboration": {
"label": "Col·laboració"
},
"integrationsApi": {
"label": "Integrations & API"
},
"reporting": {
"label": "Informes"
},
"settings": {
"label": "Configuració"
},
"pricing": {
"label": "Preus"
},
"resources": {
"label": "Recursos"
}
}
},
"developers": {
"label": "Desenvolupadors",
"groups": {
"developersGroup": {
"label": "Desenvolupadors"
},
"devGettingStarted": {
"label": "Començar",
"groups": {
"selfHosting": {
"label": "Self-Hosting"
},
"apiAndWebhooks": {
"label": "API i Webhooks"
}
}
},
"contributing": {
"label": "Contribució",
"groups": {
"frontendDevelopment": {
"label": "Desenvolupament Frontend",
"groups": {
"twentyUi": {
"label": "Twenty UI",
"groups": {
"display": {
"label": "Mostra"
},
"feedback": {
"label": "Feedback"
},
"input": {
"label": "Entrada"
},
"navigation": {
"label": "Navegació"
}
}
}
}
},
"backendDevelopment": {
"label": "Desenvolupament Backend"
}
}
}
}
}
}
}

View file

@ -83,7 +83,7 @@ Si obteniu un error en establir la singularitat, comproveu els valors duplicats
## Millors Pràctiques de Configuració de Camps
### Convencions i Limitacions Nomenclatives
### Millors Pràctiques de Configuració de Camps
- **Els noms dels camps de relació no es poden actualitzar** després de la creació (impacta l'estructura de l'API)
- **Els noms singulars i plurals han de ser diferents**: La nostra API de GraphQL necessita noms diferents per a les mutacions

View file

@ -221,7 +221,7 @@ Budete potřebovat zřídit [Heslo aplikace](https://support.google.com/accounts
<ArticleTab>
Mějte na paměti, že pokud máte povolené dvoufázové ověření, budete muset zřídit [Heslo aplikace](https://support.microsoft.com/en-us/account-billing/manage-app-passwords-for-two-step-verification-d6dc8c6d-4bf7-4851-ad95-6d07799387e9).
**smtp4dev** je falešný SMTP e-mailový server pro vývoj a testování.
- EMAIL_DRIVER=smtp
- EMAIL_SMTP_HOST=smtp.office365.com

View file

@ -83,7 +83,7 @@ Pokud narazíte na chybu při nastavování unikátnosti, zkontrolujte duplicitn
## Nejlepší praktiky pro konfiguraci polí
### Konvence a omezení při vytváření názvů
### Nejlepší praktiky pro konfiguraci polí
- **Názvy relačních polí nelze aktualizovat** po vytvoření (ovlivňuje strukturu API)
- **Jednotné a množné názvy musí být odlišné**: Naše GraphQL API potřebuje různá jména pro mutace

View file

@ -221,7 +221,7 @@ Du skal oprette en [App Adgangskode](https://support.google.com/accounts/answer/
<ArticleTab>
Husk at hvis du har 2FA aktiveret, skal du oprette en [App Adgangskode](https://support.microsoft.com/en-us/account-billing/manage-app-passwords-for-two-step-verification-d6dc8c6d-4bf7-4851-ad95-6d07799387e9).
**smtp4dev** er en falsk SMTP-e-mailserver til udvikling og test.
- EMAIL_DRIVER=smtp
- EMAIL_SMTP_HOST=smtp.office365.com

View file

@ -83,7 +83,7 @@ Hvis du får en fejl ved indstilling af unikhed, skal du kontrollere for dublere
## Bedste Praksis for Feltkonfiguration
### Navngivningskonventioner og Begrænsninger
### Bedste Praksis for Feltkonfiguration
- **Relationsfeltnavne kan ikke opdateres** efter oprettelse (påvirker API-strukturen)
- **Entals- og flertalsnavne skal være distinkte**: Vores GraphQL API kræver distinkte navne for mutationer

View file

@ -45,7 +45,7 @@ Die **Core API** dient als einheitliche Schnittstelle zur Verwaltung zentraler C
### Metadata API
Zugriff auf `/rest/metadata/` oder `/metadata/`.
Die Endpunkte der Metadata API ermöglichen Ihnen, Informationen über Ihr Schema und Ihre Einstellungen abzurufen. Zum Beispiel können Sie Definitionen von benutzerdefinierten Feldern, Objektschemata usw. abrufen.
Die Endpunkte der Metadata API ermöglichen Ihnen, Informationen über Ihr Schema und Ihre Einstellungen abzurufen. Zum Beispiel können Sie Definitionen von benutzerdefinierten Feldern, Objektschemata usw.
- **Beispiel-Endpunkte:**

View file

@ -37,8 +37,7 @@ Ein benutzerdefiniertes Feld für SpaceX könnte zum Beispiel `Rakete Aktivstatu
## Create a Custom Field
To add a custom field to any object, follow these steps:
1. Gehen Sie zu `Einstellungen` in der linken Seitenleiste.
To add a custom field to any object, follow these steps: Gehen Sie zu `Einstellungen` in der linken Seitenleiste.
2. Gehen Sie zu `Datenmodell`, und wählen Sie das Objekt, das Sie anpassen möchten.
3. Fahren Sie fort, indem Sie auf `Feld hinzufügen` klicken.
4. Wählen Sie einen Feldnamen und -typ, der Ihren Anforderungen entspricht. Erwägen Sie, eine Feldbeschreibung hinzuzufügen, um ein besseres Verständnis zu erzielen.
@ -77,7 +76,7 @@ Sie können Standard- und benutzerdefinierte Felder reaktivieren oder sie dauerh
## Felder einzigartig machen
Machen Sie ein Feld einzigartig, um sicherzustellen, dass sich keine verschiedenen Datensätze mit demselben Wert befinden. Z.B. sind E-Mail-Adressen für jede Person einzigartig.
Machen Sie ein Feld einzigartig, um sicherzustellen, dass sich keine verschiedenen Datensätze mit demselben Wert befinden. sind E-Mail-Adressen für jede Person einzigartig.
Wenn beim Einstellen der Einzigartigkeit ein Fehler auftritt, überprüfen Sie auf doppelte Werte in Ihren Daten (einschließlich gelöschter Datensätze).

View file

@ -39,11 +39,10 @@ Unten sind einige Punkte aufgeführt, die Sie vor dem Hochladen Ihrer Datei übe
**Wichtiger Hinweis:**
- Beziehungen zwischen Objekten in Twenty sind "Eins zu Viele". Das bedeutet, dass jeder Datensatz des Objekts A an mehrere Datensätze des Objekts B angehängt werden kann. Aber jeder Datensatz des Objekts B kann nur zu einem Datensatz des Objekts A gehören.
_Zum Beispiel kann ein Unternehmen mehreren Personen zugeordnet werden. Und eine Person kann nur einem Unternehmen zugehören._
- Beziehungen zwischen Objekten in Twenty sind "Eins zu Viele". Das bedeutet, dass jeder Datensatz des Objekts A an mehrere Datensätze des Objekts B angehängt werden kann. Aber jeder Datensatz des Objekts B kann nur zu einem Datensatz des Objekts A gehören. _Zum Beispiel kann ein Unternehmen mehreren Personen zugeordnet werden. Und eine Person kann nur einem Unternehmen zugehören._
- Um Beziehungen über die Importfunktion hochzuladen, müssen Sie die `ID` (oder ein anderes eindeutiges Feld) des angehängten Objekts in der Datei bereitstellen, die die Datensätze auf der "Viele-Seite" der Beziehung enthält.
_Zum Beispiel geben Sie die `ID` oder `Domain` des Unternehmens an, wenn Sie Personen-Datensätze hochladen. Sie geben die `ID` (oder `E-Mail`) der Personen nicht an, wenn Sie die Datei mit Unternehmen hochladen._
_Zum Beispiel geben Sie die `ID` oder `Domain` des Unternehmens an, wenn Sie Personen-Datensätze hochladen. Sie geben die `ID` (oder `E-Mail`) der Personen nicht an, wenn Sie die Datei mit Unternehmen hochladen._ </Warning>
</Warning>
### Datei hochladen

View file

@ -38,7 +38,7 @@ import { CardTitle } from "/snippets/card-title.mdx"
<Card href="/l/de/user-guide/reporting/reporting-overview" img="/images/user-guide/reporting/reporting.png">
<CardTitle>Berichterstattung</CardTitle>
Verfolgen Sie die Leistung mit benutzerdefinierten Berichten und Dashboards. Erscheint im 4. Quartal 2025
Verfolgen Sie die Leistung mit benutzerdefinierten Berichten und Dashboards. Quartal 2025
</Card>
<Card href="/l/de/user-guide/settings/workspace-settings" img="/images/user-guide/setup/settings.png">

View file

@ -38,7 +38,7 @@ Aktivieren Sie 2FA, um Ihrem Konto eine zusätzliche Sicherheitsebene hinzuzufü
### Konto löschen
<Warning>
Wenn Sie Ihr Konto löschen, wird Ihr Zugriff auf alle Arbeitsbereiche dauerhaft entfernt. Diese Aktion kann nicht rückgängig gemacht werden. Sie verlieren den Zugriff auf alle Arbeitsbereiche, in denen Sie Mitglied sind, und Sie sollten erwägen, sich stattdessen aus einzelnen Arbeitsbereichen zu entfernen, wenn Sie nur bestimmte Teams verlassen möchten.
Wenn Sie Ihr Konto löschen, wird Ihr Zugriff auf alle Arbeitsbereiche dauerhaft entfernt. Sie verlieren den Zugriff auf alle Arbeitsbereiche, in denen Sie Mitglied sind, und Sie sollten erwägen, sich stattdessen aus einzelnen Arbeitsbereichen zu entfernen, wenn Sie nur bestimmte Teams verlassen möchten.
</Warning>
Um Ihr Konto zu löschen:

View file

@ -221,7 +221,7 @@ yarn command:prod cron:workflow:automated-cron-trigger
<ArticleTab>
Θυμηθείτε ότι αν έχετε ενεργοποιημένο το 2FA, θα χρειαστεί να προμηθεύσετε έναν [Κωδικό Εφαρμογής](https://support.microsoft.com/en-us/account-billing/manage-app-passwords-for-two-step-verification-d6dc8c6d-4bf7-4851-ad95-6d07799387e9).
**smtp4dev** είναι ένας ψεύτικος διακομιστής SMTP email για την ανάπτυξη και τη δοκιμή.
- EMAIL_DRIVER=smtp
- EMAIL_SMTP_HOST=smtp.office365.com

View file

@ -83,7 +83,7 @@ To add a custom field to any object, follow these steps:
## Καλύτερες Πρακτικές για Διαμόρφωση Πεδίου
### Συμβάσεις Ονομάτων και Περιορισμοί
### Καλύτερες Πρακτικές για Διαμόρφωση Πεδίου
- **Τα ονόματα πεδίων σχέσεων δεν μπορούν να ενημερωθούν** μετά τη δημιουργία (επηρεάζει τη δομή API)
- **Τα μοναδικά και πολλά ονόματα πρέπει να είναι ξεχωριστά**: Το GraphQL API μας χρειάζεται μοναδικά ονόματα για μεταβολές

View file

@ -37,8 +37,7 @@ Por ejemplo, un campo personalizado para SpaceX podría ser `Estado Activo del C
## Crear un Campo Personalizado
To add a custom field to any object, follow these steps:
1. Vaya a `Configuración` en la barra lateral izquierda.
To add a custom field to any object, follow these steps: Vaya a `Configuración` en la barra lateral izquierda.
2. Vaya a `Modelo de Datos`, luego seleccione el objeto que desea personalizar.
3. Proceda haciendo clic en `Agregar Campo`.
4. Elija un nombre de campo y tipo que se adapten a sus requisitos. Considere agregar una descripción de campo para una mejor comprensión.

View file

@ -43,7 +43,7 @@ Below are a few items to check before uploading your file.
_Por ejemplo, una empresa puede estar vinculada a varias personas. Y una persona solo puede pertenecer a una empresa._
- Para subir relaciones a través de la función de Importación, necesita proporcionar el `id` (o cualquier otro campo único) del objeto adjunto en el archivo que contiene los registros en el "lado Muchos" de la relación.
_Por ejemplo, proporciona el `id` o `dominio` de la empresa al cargar los registros de personas. No proporciona el `id` de las personas (o `correo electrónico`) al cargar el archivo con las empresas._
_Por ejemplo, proporciona el `id` o `dominio` de la empresa al cargar los registros de personas. No proporciona el `id` de las personas (o `correo electrónico`) al cargar el archivo con las empresas._ </Warning>
</Warning>
### Cargue su archivo

View file

@ -18,10 +18,10 @@ Absolutamente. Puedes crear un nuevo espacio de trabajo haciendo clic en el men
<Accordion title="I accidentally created multiple workspaces but only need one. What should I do?"><Accordion title="How do I change my workspace appearance and regional settings?">Ve a `Configuración → Experiencia` para personalizar:
<Warning><Warning>No elimines tu cuenta (accesible en Configuración → Configuración de perfil): tu cuenta se comparte entre los diferentes espacios de trabajo.</Warning></Warning>
<Warning><Warning><Warning>No elimines tu cuenta (accesible en Configuración → Configuración de perfil): tu cuenta se comparte entre los diferentes espacios de trabajo.</Warning></Warning>
</Accordion>
<Accordion title="How can I disable my workspace?"><Accordion title="How can I disable my workspace?">Si solo deseas desactivar tu espacio de trabajo (no eliminarlo), ve a `Configuración → Facturación` y haz clic en `Cancelar plan`.</Accordion></Accordion>
<Accordion title="How can I disable my workspace?"><Accordion title="How can I disable my workspace?"><Accordion title="How can I disable my workspace?">Si solo deseas desactivar tu espacio de trabajo (no eliminarlo), ve a `Configuración → Facturación` y haz clic en `Cancelar plan`.</Accordion> </Accordion></Accordion>
<Accordion title="How can I delete my workspace?">
Puedes hacerlo en `Configuración → Configuración del espacio de trabajo`. ¡Esperamos verte pronto, gracias por probar Twenty!
@ -63,6 +63,7 @@ Sí! Ve a `Configuración → Dominios` para configurar un dominio personalizado
Las funciones de laboratorio son capacidades experimentales que puedes probar antes de que sean lanzadas oficialmente. Accede a ellas en `Configuración → Lanzamientos → Laboratorio`. Funciones como la selección de Carpetas de mensajes son estables y útiles, pero recuerda que las funciones de laboratorio pueden cambiar o ser eliminadas en futuros lanzamientos.
</Accordion>
<Accordion title="How do I change my workspace appearance and regional settings?">**Formato del Calendario**: Primer día de la semana, formato de hora (12/24 horas)</Accordion>
<Accordion title="How do I change my workspace appearance and regional settings?"><Accordion title="How do I change my workspace appearance and regional settings?">**Formato del Calendario**: Primer día de la semana, formato de hora (12/24 horas)</Accordion>
</AccordionGroup></Accordion>
</AccordionGroup>

View file

@ -57,7 +57,7 @@ Los formularios están diseñados actualmente solo para disparadores manuales. P
**Problema**: Se alcanza el límite de 100 flujos de trabajo concurrentes por espacio de trabajo.
<Warning><Warning>No puedes ejecutar más de 100 flujos de trabajo en paralelo en cualquier momento por espacio de trabajo.</Warning></Warning>
<Warning><Warning><Warning>No puedes ejecutar más de 100 flujos de trabajo en paralelo en cualquier momento por espacio de trabajo.</Warning> </Warning></Warning>
**Soluciones**:

View file

@ -221,7 +221,7 @@ Sinun on hankittava [Sovelluksen salasana](https://support.google.com/accounts/a
<ArticleTab>
Ota huomioon, että jos sinulla on 2FA käytössä, sinun on hankittava [Sovelluksen salasana](https://support.microsoft.com/en-us/account-billing/manage-app-passwords-for-two-step-verification-d6dc8c6d-4bf7-4851-ad95-6d07799387e9).
**smtp4dev** on väärennetty SMTP-sähköpostipalvelin kehitykseen ja testaukseen.
- EMAIL_DRIVER=smtp
- EMAIL_SMTP_HOST=smtp.office365.com

View file

@ -83,7 +83,7 @@ Jos saat virheen asettaessasi kenttää yksilölliseksi, tarkista duplikaattiarv
## Kenttien konfiguroinnin parhaat käytänteet
### Nimeämiskonventiot ja rajoitukset
### Kenttien konfiguroinnin parhaat käytänteet
- **Relaatiokenttien nimet eivät voi vaihtua** luomisen jälkeen (vaikuttaa API-rakenteeseen)
- **Yksikkö- ja monikkonimet on eritelty**: Meidän GraphQL API tarvitsee eriteltyjä nimiä muunnoksille

View file

@ -9,17 +9,17 @@ import { CardTitle } from "/snippets/card-title.mdx"
<CardGroup cols={2}>
<Card href="/l/fr/developers/local-setup" img="/images/user-guide/fields/field.png">
<CardTitle>Configuration Locale</CardTitle>
<CardTitle>Configuration locale</CardTitle>
Le guide pour les contributeurs (ou les développeurs curieux) qui veulent exécuter Twenty localement (sur un ordinateur portable, PC...)
</Card>
<Card href="/l/fr/developers/self-hosting/docker-compose" img="/images/user-guide/integrations/plug.png">
<CardTitle>Self-Hosting</CardTitle>
<CardTitle>Auto-hébergement</CardTitle>
Apprenez à héberger Twenty sur votre propre serveur
</Card>
<Card href="/l/fr/developers/api-and-webhooks/api" img="/images/user-guide/api/api.png">
<CardTitle>API et Webhooks</CardTitle>
<CardTitle>API et webhooks</CardTitle>
APIs REST et GraphQL, webhooks et intégrations
</Card>
</CardGroup>
@ -33,12 +33,12 @@ import { CardTitle } from "/snippets/card-title.mdx"
</Card>
<Card href="/l/fr/developers/frontend-development/frontend-commands" img="/images/user-guide/create-workspace/workspace-cover.png">
<CardTitle>Développement Frontend</CardTitle>
<CardTitle>Développement frontend</CardTitle>
Commandes frontales, Figma, Meilleures pratiques React...
</Card>
<Card href="/l/fr/developers/backend-development/server-commands" img="/images/user-guide/kanban-views/kanban.png">
<CardTitle>Développement Backend</CardTitle>
<CardTitle>Développement backend</CardTitle>
NestJS, Objets personnalisés, Files d'attente...
</Card>
</CardGroup>

View file

@ -111,12 +111,12 @@ Vous devez exécuter toutes les commandes des étapes suivantes depuis la racine
<Tabs>
<Tab title="Linux">
**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/)
**Option 1 (préférée) :** Pour créer votre base de données localement :
Utilisez le lien suivant pour installer PostgreSQL sur votre machine Linux : [Installation de 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.
Note : Vous pourriez avoir besoin d'ajouter `sudo -u postgres` à la commande avant `psql` pour éviter des erreurs de permission.
````
**Option 2:** If you have docker installed:
@ -127,7 +127,7 @@ Vous devez exécuter toutes les commandes des étapes suivantes depuis la racine
</Tab>
<Tab title="Mac OS">
**Option 1 (preferred):** To provision your database locally with `brew`:
**Option 1 (préférée) :** Pour créer votre base de données localement avec `brew` :
````
```bash
@ -180,7 +180,7 @@ This creates a superuser role named `postgres` with login access.
</Tab>
<Tab title="Windows (WSL)">
All the following steps are to be run in the WSL terminal (within your virtual machine)
Toutes les étapes suivantes doivent être exécutées dans le terminal WSL (dans votre machine virtuelle)
````
**Option 1:** To provision your Postgresql locally:
@ -209,8 +209,8 @@ Twenty nécessite un cache Redis pour offrir la meilleure performance
<Tabs>
<Tab title="Linux">
**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/)
**Option 1 :** Pour configurer votre Redis localement :
Utilisez le lien suivant pour installer Redis sur votre machine Linux : [Installation de Redis](https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/install-redis-on-linux/)
````
**Option 2:** If you have docker installed:
@ -221,11 +221,11 @@ Twenty nécessite un cache Redis pour offrir la meilleure performance
</Tab>
<Tab title="Mac OS">
**Option 1 (preferred):** To provision your Redis locally with `brew`:
**Option 1 (préférée) :** Pour configurer votre Redis localement avec `brew` :
```bash
brew install redis
```
Start your redis server:
Démarrez votre serveur redis :
```brew services start redis```
````
@ -237,8 +237,8 @@ Twenty nécessite un cache Redis pour offrir la meilleure performance
</Tab>
<Tab title="Windows (WSL)">
**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/)
**Option 1 :** Pour configurer votre Redis localement :
Utilisez le lien suivant pour installer Redis sur votre machine virtuelle Linux : [Installation de Redis](https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/install-redis-on-linux/)
````
**Option 2:** If you have docker installed:
@ -281,7 +281,7 @@ Notez que `npm` ou `pnpm` ne fonctionneront pas
Sinon, vérifiez le [guide d'installation de Redis](https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/) pour votre distribution.
</Tab>
<Tab title="Mac OS">
Redis devrait déjà être en cours d'exécution. If not, run:
Redis devrait déjà être en cours d'exécution. Si ce n'est pas le cas, exécutez :
```bash
brew services start redis
```

View file

@ -37,7 +37,7 @@ Par exemple, un champ personnalisé pour SpaceX pourrait être `Statut Actif de
## Créer un Champ Personnalisé
Pour ajouter un champ personnalisé à un objet, suivez ces étapes : Allez dans les `Paramètres` dans la barre latérale gauche.
Pour ajouter un champ personnalisé à un objet, suivez ces étapes : Allez dans les `Paramètres` dans la barre latérale gauche. Allez dans les `Paramètres` dans la barre latérale gauche.
2. Allez dans le `Modèle de Données`, puis sélectionnez l'objet que vous souhaitez personnaliser.
3. Continuez en cliquant sur `Ajouter Champ`.
4. Choisissez un nom de champ et un type qui répondent à vos exigences. Envisagez d'ajouter une description du champ pour une meilleure compréhension.

View file

@ -25,7 +25,7 @@ Vous pouvez **voir, modifier, supprimer des enregistrements** à partir de là a
- Utilisez la **barre de recherche** (appuyez sur `/` pour y accéder instantanément)
- Ouvrir la section **Paramètres**
<Warning><Warning><Warning>Veuillez noter que notre documentation API est accessible sous la section Paramètres et non dans le guide de l'utilisateur.</Warning> </Warning></Warning>
<Warning><Warning><Warning><Warning>Veuillez noter que notre documentation API est accessible sous la section Paramètres et non dans le guide de l'utilisateur.</Warning> </Warning></Warning></Warning>
- </Warning>
Ayez un accès direct à vos **vues favorites**. Les favoris sont uniques pour chaque utilisateur.

View file

@ -43,7 +43,7 @@ Voici quelques éléments à vérifier avant de charger votre fichier.
_Par exemple, une entreprise peut être attachée à plusieurs personnes. Et une personne ne peut appartenir qu'à une seule entreprise._
- Pour téléverser des relations via la fonction d'importation, vous devez fournir l'`id` (ou tout autre champ unique) de l'objet attaché dans le fichier contenant les enregistrements du "côté Multiples" de la relation.
_Par exemple, vous fournissez l'`id` ou le `domaine` de l'entreprise lors du téléversement d'enregistrements de personnes. Vous ne fournissez pas l'`id` (ou `email`) des personnes lors du téléversement du fichier des entreprises._
_Par exemple, vous fournissez l'`id` ou le `domaine` de l'entreprise lors du téléversement d'enregistrements de personnes. Vous ne fournissez pas l'`id` (ou `email`) des personnes lors du téléversement du fichier des entreprises._ </Warning>
</Warning>
### Téléversez votre fichier

View file

@ -51,7 +51,7 @@ Utilisez l'importation CSV via le menu Commande `Cmd + K` (Mac) ou `Ctrl + K` (W
- **Adresses email** - supprimez les doublons (exigence de l'objet Personnes)
- **Domaine** - supprimez les doublons (exigence de l'objet Entreprises) <Warning>
<Warning>Veuillez noter que les URL de domaine créées par la synchronisation avec votre boîte aux lettres et votre calendrier ont le format suivant `https://domain.com` </Warning></Warning>
<Warning><Warning>Veuillez noter que les URL de domaine créées par la synchronisation avec votre boîte aux lettres et votre calendrier ont le format suivant `https://domain.com` </Warning></Warning></Warning>
- **Formats de date** - assurez une uniformité (JJJJ-MM-JJ) ou modifiez ce format sous Paramètres → Expérience
- **Numéros de téléphone** - utilisez le format international (+1234567890)

View file

@ -17,12 +17,12 @@ import { CardTitle } from "/snippets/card-title.mdx"
</Card>
<Card href="/l/fr/user-guide/crm-essentials/contact-and-account-management" img="/images/user-guide/home/contact-and-account-management.png">
<CardTitle>Essentiels CRM</CardTitle>
<CardTitle>Essentiels du CRM</CardTitle>
Fonctions CRM essentielles pour la gestion des prospects, des ventes et des clients.
</Card>
<Card href="/l/fr/user-guide/workflows/getting-started-workflows" img="/images/user-guide/workflows/workflow.png">
<CardTitle>Workflows</CardTitle>
<CardTitle>Flux de travail</CardTitle>
Automatisez les processus et intégrez avec des outils externes.
</Card>
@ -32,12 +32,12 @@ import { CardTitle } from "/snippets/card-title.mdx"
</Card>
<Card href="/l/fr/user-guide/integrations-api/apis-overview" img="/images/user-guide/integrations/plug.png">
<CardTitle>API d'Intégrations</CardTitle>
<CardTitle>Intégrations et API</CardTitle>
Apprenez à connecter Twenty à vos autres outils.
</Card>
<Card href="/l/fr/user-guide/reporting/reporting-overview" img="/images/user-guide/reporting/reporting.png">
<CardTitle>Reporting</CardTitle>
<CardTitle>Rapports</CardTitle>
Suivez les performances grâce à des rapports et tableaux de bord personnalisés. Arrive T4 2025
</Card>

View file

@ -221,7 +221,7 @@ yarn command:prod cron:workflow:automated-cron-trigger
<ArticleTab>
זכור שאם יש לך 2FA מופעל, תצטרך להקצות [סיסמת יישום](https://support.microsoft.com/en-us/account-billing/manage-app-passwords-for-two-step-verification-d6dc8c6d-4bf7-4851-ad95-6d07799387e9).
**smtp4dev** הוא שרת דואר אלקטרוני מזויף לפיתוח ובדיקות.
- EMAIL_DRIVER=smtp
- EMAIL_SMTP_HOST=smtp.office365.com

View file

@ -0,0 +1,91 @@
{
"tabs": {
"userGuide": {
"label": "User Guide",
"groups": {
"gettingStarted": {
"label": "תחילת העבודה"
},
"dataModel": {
"label": "מודל נתונים"
},
"crmEssentials": {
"label": "CRM Essentials"
},
"views": {
"label": "תצוגות"
},
"workflows": {
"label": "זרימות עבודה"
},
"collaboration": {
"label": "שיתוף פעולה"
},
"integrationsApi": {
"label": "Integrations & API"
},
"reporting": {
"label": "דיווח"
},
"settings": {
"label": "הגדרות"
},
"pricing": {
"label": "תמחור"
},
"resources": {
"label": "משאבים"
}
}
},
"developers": {
"label": "מפתחים",
"groups": {
"developersGroup": {
"label": "מפתחים"
},
"devGettingStarted": {
"label": "תחילת העבודה",
"groups": {
"selfHosting": {
"label": "אירוח עצמי"
},
"apiAndWebhooks": {
"label": "API ו-Webhooks"
}
}
},
"contributing": {
"label": "תרומה",
"groups": {
"frontendDevelopment": {
"label": "פיתוח Frontend",
"groups": {
"twentyUi": {
"label": "Twenty UI",
"groups": {
"display": {
"label": "הצגה"
},
"feedback": {
"label": "משוב"
},
"input": {
"label": "קלט"
},
"navigation": {
"label": "ניווט"
}
}
}
}
},
"backendDevelopment": {
"label": "פיתוח Backend"
}
}
}
}
}
}
}

View file

@ -83,7 +83,7 @@ To add a custom field to any object, follow these steps:
## קווי הקצאה הטובים ביותר להגדרת שדות
### מוסכמות שמות והגבלות
### קווי הקצאה הטובים ביותר להגדרת שדות
- **לא ניתן לעדכן שם של שדה קשר** לאחר יצירתו (משפיע על המבנה של API)
- **שמות של רבים ויחידים חייבים להיות נפרדים**: ה-API של GraphQL שלנו דורש שמות נפרדים עבור פעולות

View file

@ -221,7 +221,7 @@ Szükséged lesz egy [Alkalmazásjelszóra](https://support.google.com/accounts/
<ArticleTab>
Ne feledd, hogy ha a 2FA aktiválva van, szükséged lesz egy [Alkalmazásjelszóra](https://support.microsoft.com/en-us/account-billing/manage-app-passwords-for-two-step-verification-d6dc8c6d-4bf7-4851-ad95-6d07799387e9).
**smtp4dev** egy hamis SMTP email szerver fejlesztéshez és teszteléshez.
- EMAIL_DRIVER=smtp
- EMAIL_SMTP_HOST=smtp.office365.com

View file

@ -0,0 +1,91 @@
{
"tabs": {
"userGuide": {
"label": "User Guide",
"groups": {
"gettingStarted": {
"label": "Első lépések"
},
"dataModel": {
"label": "Adatmodell"
},
"crmEssentials": {
"label": "CRM Essentials"
},
"views": {
"label": "Nézetek"
},
"workflows": {
"label": "Munkafolyamatok"
},
"collaboration": {
"label": "Együttműködés"
},
"integrationsApi": {
"label": "Integrations & API"
},
"reporting": {
"label": "Riporting"
},
"settings": {
"label": "Beállítások"
},
"pricing": {
"label": "Árazás"
},
"resources": {
"label": "Erőforrások"
}
}
},
"developers": {
"label": "Fejlesztők",
"groups": {
"developersGroup": {
"label": "Fejlesztők"
},
"devGettingStarted": {
"label": "Első lépések",
"groups": {
"selfHosting": {
"label": "Self-Hosting"
},
"apiAndWebhooks": {
"label": "API és Webhookok"
}
}
},
"contributing": {
"label": "Hozzájárulás",
"groups": {
"frontendDevelopment": {
"label": "Frontend Fejlesztés",
"groups": {
"twentyUi": {
"label": "Twenty UI",
"groups": {
"display": {
"label": "Megjelenítés"
},
"feedback": {
"label": "Visszajelzés"
},
"input": {
"label": "Bemenet"
},
"navigation": {
"label": "Navigáció"
}
}
}
}
},
"backendDevelopment": {
"label": "Backend Fejlesztés"
}
}
}
}
}
}
}

View file

@ -83,7 +83,7 @@ Ha hibát kapsz az egyediség beállításakor, ellenőrizd a duplikált érték
## Mezők konfigurálásának legjobb gyakorlatai
### Elnevezési konvenciók és korlátok
### Mezők konfigurálásának legjobb gyakorlatai
- **Kapcsolati mezők neveit nem lehet frissíteni** létrehozás után (hatással van az API struktúrára)
- **Egyes és többes szám nevei különbözőek legyenek**: GraphQL API-nknak eltérő nevek szükségesek a mutációkhoz.

View file

@ -42,20 +42,20 @@ export const MyComponent = () => {
<Tab title="Props">
| Props | Tipo | Descrizione |
| ----------------- | --------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| nomeClasse | string | Nome classe opzionale per uno styling aggiuntivo |
| Icona | `React.ComponentType` | Un componente icona opzionale visualizzato all'interno del pulsante |
| titolo | string | Il contenuto di testo del pulsante |
| larghezzaCompleta | booleano | Definisce se il pulsante dovrebbe estendersi per tutta la larghezza del suo contenitore |
| variante | string | La variante dello stile visivo del pulsante. Le opzioni includono `primary`, `secondary` e `tertiary`. |
| dimensione | string | La dimensione del pulsante. Ha due opzioni: `small` e `medium`. |
| posizione | string | La posizione del pulsante rispetto ai suoi fratelli. Le opzioni includono: `standalone`, `left`, `right`, e `middle`. |
| accento | string | Il colore accentato del pulsante. Le opzioni includono: `default`, `blue` e `danger`. |
| presto | booleano | Indica se il pulsante è contrassegnato come "presto" (ad esempio per funzionalità in arrivo) |
| disabilitato | booleano | Specifica se il pulsante è disabilitato o meno |
| focus | booleano | Determina se il pulsante è messo a fuoco |
| onClick | funzione | Una funzione di callback che si attiva quando l'utente fa clic sul pulsante |
| Props | Tipo | Descrizione |
| ----------------- | --------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| nomeClasse | string | Nome classe opzionale per uno styling aggiuntivo |
| Icona | `React.ComponentType` | Un componente icona opzionale visualizzato all'interno del pulsante |
| titolo | string | Il contenuto di testo del pulsante |
| larghezzaCompleta | booleano | Definisce se il pulsante dovrebbe estendersi per tutta la larghezza del suo contenitore |
| variante | string | La variante dello stile visivo del pulsante. Le opzioni includono `primary`, `secondary` e `tertiary`. |
| dimensione | string | La dimensione del pulsante. Ha due opzioni: `small` e `medium`. |
| posizione | string | La posizione del pulsante rispetto ai suoi fratelli. Le opzioni includono: `standalone`, `left`, `middle` e `right`. |
| accento | string | Il colore accentato del pulsante. Le opzioni includono: `default`, `blue` e `danger`. |
| presto | booleano | Indica se il pulsante è contrassegnato come "presto" (ad esempio per funzionalità in arrivo) |
| disabilitato | booleano | Specifica se il pulsante è disabilitato o meno |
| focus | booleano | Determina se il pulsante è messo a fuoco |
| onClick | funzione | Una funzione di callback che si attiva quando l'utente fa clic sul pulsante |
</Tab>
@ -166,17 +166,17 @@ export const MyComponent = () => {
<Tab title="Props">
| Props | Tipo | Descrizione |
| ------------ | --------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| nomeClasse | string | Nome opzionale per stile aggiuntivo |
| Icona | `React.ComponentType` | Un componente icona opzionale visualizzato all'interno del pulsante |
| titolo | string | Il contenuto di testo del pulsante |
| dimensione | string | La dimensione del pulsante. Ha due opzioni: `small` e `medium`. |
| posizione | string | La posizione del pulsante rispetto ai suoi fratelli. Le opzioni includono: `standalone`, `left`, `middle` e `right`. |
| applicaOmbra | booleano | Determina se applicare l'ombra a un pulsante |
| applicaBlur | booleano | Determina se applicare un effetto blur al pulsante |
| disabilitato | booleano | Determina se il pulsante è disabilitato |
| focus | booleano | Indica se il pulsante ha il focus |
| Props | Tipo | Descrizione |
| ------------ | --------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| nomeClasse | string | Nome opzionale per stile aggiuntivo |
| Icona | `React.ComponentType` | Un componente icona opzionale visualizzato all'interno del pulsante |
| titolo | string | Il contenuto di testo del pulsante |
| dimensione | string | La dimensione del pulsante. Ha due opzioni: `small` e `medium`. |
| posizione | string | La posizione del pulsante rispetto ai suoi fratelli. Le opzioni includono: `standalone`, `left`, `right`, e `middle`. |
| applicaOmbra | booleano | Determina se applicare l'ombra a un pulsante |
| applicaBlur | booleano | Determina se applicare un effetto blur al pulsante |
| disabilitato | booleano | Determina se il pulsante è disabilitato |
| focus | booleano | Indica se il pulsante ha il focus |
</Tab>
</Tabs>

View file

@ -37,8 +37,7 @@ Ad esempio, un campo personalizzato per SpaceX potrebbe essere `Stato operativo
## Create a Custom Field
To add a custom field to any object, follow these steps:
1. Vai su `Impostazioni` nella barra laterale sinistra.
To add a custom field to any object, follow these steps: Vai su `Impostazioni` nella barra laterale sinistra.
2. Vai su `Modello di dati`, quindi seleziona l'oggetto che desideri personalizzare.
3. Procedi cliccando su `Aggiungi Campo`.
4. Scegli un nome e un tipo di campo che si adattano alle tue esigenze. Considera l'aggiunta di una descrizione del campo per una migliore comprensione.

View file

@ -43,7 +43,7 @@ Below are a few items to check before uploading your file.
_Ad esempio, un'azienda può essere collegata a più persone. E una persona può appartenere a una sola azienda._
- Per caricare le relazioni tramite la funzione di importazione, devi fornire l'`id` (o qualsiasi altro campo unico) dell'oggetto collegato nel file contenente i record sul lato "Molti" della relazione.
_Ad esempio, fornisci l'`id` o il `dominio` dell'azienda quando carichi i record delle persone. Non fornire l'`id` (o l'`email`) delle persone quando carichi il file con le aziende._
_Ad esempio, fornisci l'`id` o il `dominio` dell'azienda quando carichi i record delle persone. Non fornire l'`id` (o l'`email`) delle persone quando carichi il file con le aziende._ </Warning>
</Warning>
### Carica il tuo file

View file

@ -10,17 +10,18 @@ info: Discover how to use our APIs.
## 概要
Twenty APIは、開発者がTwenty CRMプラットフォームをプログラムで操作することを可能にします。 APIを使用すると、Twentyを他のシステムと統合し、データ同期を自動化し、顧客データを中心にカスタムソリューションを構築できます。 APIは、**作成、読み取り、更新、削除** などのコアCRMオブジェクト人物や企業などを操作するエンドポイントを提供し、メタデータの設定にもアクセスできます。
Twenty APIは、開発者がTwenty CRMプラットフォームをプログラムで操作することを可能にします。 APIを使用すると、Twentyを他のシステムと統合し、データ同期を自動化し、顧客データを中心にカスタムソリューションを構築できます。 APIは、**作成、読み取り、更新、削除** などのコアCRMオブジェクト人物や企業などを操作するエンドポイントを提供し、メタデータの設定にもアクセスできます。 APIを使用すると、Twentyを他のシステムと統合し、データ同期を自動化し、顧客データを中心にカスタムソリューションを構築できます。 APIは、**作成、読み取り、更新、削除** などのコアCRMオブジェクト人物や企業などを操作するエンドポイントを提供し、メタデータの設定にもアクセスできます。
**APIプレイグラウンド** アプリの設定内でAPIプレイグラウンドにアクセスできます。 To try out API calls in real-time, log in to your Twenty workspace and navigate to **Settings → APIs & Webhooks**. これにより、アプリ内APIプレイグラウンドとAPIキーの設定が開きます。
**APIプレイグラウンド** アプリの設定内でAPIプレイグラウンドにアクセスできます。 **APIプレイグラウンド** アプリの設定内でAPIプレイグラウンドにアクセスできます。 To try out API calls in real-time, log in to your Twenty workspace and navigate to **Settings → APIs & Webhooks**. これにより、アプリ内APIプレイグラウンドとAPIキーの設定が開きます。
**[API設定に進む](https://app.twenty.com/settings)**
**[API設定に進む](https://app.twenty.com/settings)**
## 認証
TwentyのAPIは認証にAPIキーを使用します。 保護されたエンドポイントへの全てのリクエストには、ヘッダーにAPIキーを含める必要があります。
TwentyのAPIは認証にAPIキーを使用します。 TwentyのAPIは認証にAPIキーを使用します。 保護されたエンドポイントへの全てのリクエストには、ヘッダーにAPIキーを含める必要があります。
- **APIキー:** Twentyアプリの**API設定**ページで新しいAPIキーを生成できます。 各APIキーはCRMデータへのアクセスを許可する秘密トークンなので、安全に保管してください。 キーが漏洩した場合は、設定から解除し、新しいものを生成してください。
- **認証ヘッダー:** APIキーを取得したら、HTTPリクエストの`Authorization`ヘッダーにそれを含めてください。 Bearerトークン方式を使用してください。 例:
- **APIキー:** Twentyアプリの**API設定**ページで新しいAPIキーを生成できます。 各APIキーはCRMデータへのアクセスを許可する秘密トークンなので、安全に保管してください。 キーが漏洩した場合は、設定から解除し、新しいものを生成してください。 各APIキーはCRMデータへのアクセスを許可する秘密トークンなので、安全に保管してください。 キーが漏洩した場合は、設定から解除し、新しいものを生成してください。
- **認証ヘッダー:** APIキーを取得したら、HTTPリクエストの`Authorization`ヘッダーにそれを含めてください。 Bearerトークン方式を使用してください。 例: Bearerトークン方式を使用してください。 例:
```
Authorization: Bearer YOUR_API_KEY
@ -35,7 +36,7 @@ TwentyのAPIは認証にAPIキーを使用します。 保護されたエンド
- **クラウド:** `https://api.twenty.com/`またはカスタムドメイン/サブドメイン
- **Self-Hosted Instances:** If you are running Twenty on your own server, use your own domain in place of `api.twenty.com` (for example, `https://{your-domain}/rest/`).
エンドポイントは**コアAPI**と**メタデータAPI**の2つに分類されます。 **コアAPI**は主要なCRMデータ人物、企業、ート、タスクを扱い、**メタデータAPI**は設定データ(カスタムフィールドやオブジェクト定義など)をカバーします。 ほとんどの統合は主にコアAPIを使用します。
エンドポイントは**コアAPI**と**メタデータAPI**の2つに分類されます。 **コアAPI**は主要なCRMデータ人物、企業、ート、タスクを扱い、**メタデータAPI**は設定データ(カスタムフィールドやオブジェクト定義など)をカバーします。 ほとんどの統合は主にコアAPIを使用します。 **コアAPI**は主要なCRMデータ人物、企業、ート、タスクを扱い、**メタデータAPI**は設定データ(カスタムフィールドやオブジェクト定義など)をカバーします。 ほとんどの統合は主にコアAPIを使用します。
### コアAPI

View file

@ -10,7 +10,7 @@ info: Discover how to use our Webhooks.
## 概要
Twentyのウェブフックは、あなたのCRMで特定のイベントが発生したときに自分のアプリケーションへ**リアルタイム通知**を行うことで、APIを補完します。 APIの変更を継続的にポーリングする代わりに、特定のイベントが発生したとき例えば、新しいレコードが作成されたり、既存のレコードが更新されたりしたときに、Twentyがあなたのシステムにデータを**プッシュ**するようにウェブフックを設定できます。 これにより、外部システムをTwentyと瞬時かつ効率的に同期させることができます。
Twentyのウェブフックは、あなたのCRMで特定のイベントが発生したときに自分のアプリケーションへ**リアルタイム通知**を行うことで、APIを補完します。 APIの変更を継続的にポーリングする代わりに、特定のイベントが発生したとき例えば、新しいレコードが作成されたり、既存のレコードが更新されたりしたときに、Twentyがあなたのシステムにデータを**プッシュ**するようにウェブフックを設定できます。 これにより、外部システムをTwentyと瞬時かつ効率的に同期させることができます。 APIの変更を継続的にポーリングする代わりに、特定のイベントが発生したとき例えば、新しいレコードが作成されたり、既存のレコードが更新されたりしたときに、Twentyがあなたのシステムにデータを**プッシュ**するようにウェブフックを設定できます。 これにより、外部システムをTwentyと瞬時かつ効率的に同期させることができます。
With webhooks, Twenty will send an HTTP POST request to a URL you specify, containing details about the event. そのデータはあなたのアプリケーションで(例: 外部データベースを更新する、ワークフローをトリガーする、アラートを送信するなど)扱うことができます。
@ -27,14 +27,14 @@ You can create multiple webhooks if you need to send different events to differe
## イベントとペイロード
ウェブフックが設定されると、TwentyはあなたのCRMデータ内でトリガーイベントが発生するたびに指定URLにHTTP POSTリクエストを送信します。 ウェブフックをトリガーする一般的なイベントには次のものがあります:
ウェブフックが設定されると、TwentyはあなたのCRMデータ内でトリガーイベントが発生するたびに指定URLにHTTP POSTリクエストを送信します。 ウェブフックをトリガーする一般的なイベントには次のものがあります: ウェブフックをトリガーする一般的なイベントには次のものがあります:
- **レコード作成**: 例 ば, 新しい人が追加される(`person.created`)、新しい会社が作成される(`company.created`)、ノートが作成される(`note.created`)、など。
- **レコード更新**: 例, 既存の人の情報が更新される(`person.updated`)、会社レコードが編集される(`company.updated`)など。
- **レコード削除**: 例, 人または会社が削除される(`person.deleted`、`company.deleted`)。
- **その他のイベント**: 該当する場合、他のオブジェクトイベントやカスタムトリガー(例えば、タスクや他のオブジェクトが更新された場合には、同様のイベントタイプが使用されます: `task.created`、`note.updated`など)。
ウェブフックのPOSTリクエストは、そのボディにJSONペイロードを含んでいます。 このペイロードは通常、イベントのタイプとそのイベントに関連するデータ(しばしば作成/更新されたレコード)が含まれます。 例えば、新しく作成された人に対するウェブフックは、次のようなペイロードを送信するかもしれません:
ウェブフックのPOSTリクエストは、そのボディにJSONペイロードを含んでいます。 このペイロードは通常、イベントのタイプとそのイベントに関連するデータ(しばしば作成/更新されたレコード)が含まれます。 例えば、新しく作成された人に対するウェブフックは、次のようなペイロードを送信するかもしれません: このペイロードは通常、イベントのタイプとそのイベントに関連するデータ(しばしば作成/更新されたレコード)が含まれます。 例えば、新しく作成された人に対するウェブフックは、次のようなペイロードを送信するかもしれません:
```
{
@ -57,9 +57,9 @@ You can create multiple webhooks if you need to send different events to differe
- `"data"` は新しいレコードの詳細を含みますAPIを介してその人をリクエストした場合に得られる同じ情報
- `"timestamp"` はイベントが発生した時刻UTCです。
あなたのエンドポイントは、このようなJSONデータをPOSTで受け取る準備が必要です。 一般的には、JSONを解析し、`"event"` タイプを見て何が起こったかを理解し、そして`"data"`を適切に使用します(例: あなたのシステムに新しいコンタクトを作成する、または既存のものを更新する)。
あなたのエンドポイントは、このようなJSONデータをPOSTで受け取る準備が必要です。 あなたのエンドポイントは、このようなJSONデータをPOSTで受け取る準備が必要です。 一般的には、JSONを解析し、`"event"` タイプを見て何が起こったかを理解し、そして`"data"`を適切に使用します(例: あなたのシステムに新しいコンタクトを作成する、または既存のものを更新する)。
**注意:** ウェブフックエンドポイントからの受信確認として**2xx HTTPステータス**を応答することが重要です。 Twentyのウェブフック送信者が2xx応答を受け取らない場合、配信が失敗したと考えるかもしれません。 将来、失敗したウェブフックを再送するために再試行ロジックを使用するかもしれないので、データを処理した後できるだけ早く200 OKを返すようにしてください。
**注意:** ウェブフックエンドポイントからの受信確認として**2xx HTTPステータス**を応答することが重要です。 Twentyのウェブフック送信者が2xx応答を受け取らない場合、配信が失敗したと考えるかもしれません。 将来、失敗したウェブフックを再送するために再試行ロジックを使用するかもしれないので、データを処理した後できるだけ早く200 OKを返すようにしてください。 Twentyのウェブフック送信者が2xx応答を受け取らない場合、配信が失敗したと考えるかもしれません。 将来、失敗したウェブフックを再送するために再試行ロジックを使用するかもしれないので、データを処理した後できるだけ早く200 OKを返すようにしてください。
## ウェブフックの検証

View file

@ -16,12 +16,12 @@ image: /images/user-guide/tips/light-bulb.png
## Expose services to use in modules
常に、コードの読みやすさと保守性を向上させる、明確かつ単一の責任を持ったサービスを作成してください。 サービスには意味のある一貫した名前を付けてください。
常に、コードの読みやすさと保守性を向上させる、明確かつ単一の責任を持ったサービスを作成してください。 サービスには意味のある一貫した名前を付けてください。 サービスには意味のある一貫した名前を付けてください。
他のモジュールで使用したいサービスを公開する必要があります。 他のモジュールへサービスを公開することは、NestJS の強力な依存性注入システムを通じて可能であり、コンポーネント間の緩い結合を促進します。
他のモジュールで使用したいサービスを公開する必要があります。 他のモジュールで使用したいサービスを公開する必要があります。 他のモジュールへサービスを公開することは、NestJS の強力な依存性注入システムを通じて可能であり、コンポーネント間の緩い結合を促進します。
## Avoid using `any` type
変数を `any` として宣言すると、TypeScript の型チェッカーは型チェックを行わず、変数にあらゆる型の値を割り当てることが可能になります。 TypeScript は、値に基づいて変数の型を決定するために型推論を使用します。 `any` として宣言すると、TypeScript は型を推論できなくなります。 これにより、開発中に型に関連したエラーを捕捉しにくくなり、実行時エラーを引き起こし、コードのメンテナンス性、信頼性が低下し、他の人が理解しづらくなります。
変数を `any` として宣言すると、TypeScript の型チェッカーは型チェックを行わず、変数にあらゆる型の値を割り当てることが可能になります。 TypeScript は、値に基づいて変数の型を決定するために型推論を使用します。 `any` として宣言すると、TypeScript は型を推論できなくなります。 これにより、開発中に型に関連したエラーを捕捉しにくくなり、実行時エラーを引き起こし、コードのメンテナンス性、信頼性が低下し、他の人が理解しづらくなります。 TypeScript は、値に基づいて変数の型を決定するために型推論を使用します。 `any` として宣言すると、TypeScript は型を推論できなくなります。 これにより、開発中に型に関連したエラーを捕捉しにくくなり、実行時エラーを引き起こし、コードのメンテナンス性、信頼性が低下し、他の人が理解しづらくなります。
これがすべてに型を持たせるべき理由です。 したがって、名前と姓を持つ新しいオブジェクトを作成する場合、操作しているオブジェクトの形状を定義する、名前と姓を含むインターフェースまたは型を作成する必要があります。
これがすべてに型を持たせるべき理由です。 これがすべてに型を持たせるべき理由です。 したがって、名前と姓を持つ新しいオブジェクトを作成する場合、操作しているオブジェクトの形状を定義する、名前と姓を含むインターフェースまたは型を作成する必要があります。

View file

@ -7,11 +7,11 @@ image: /images/user-guide/objects/objects.png
<img src="/images/user-guide/objects/objects.png" alt="Header" />
</Frame>
オブジェクトは、組織独自のデータ(記録、属性、値)を保存するための構造です。 Twenty provides both standard and custom objects.
オブジェクトは、組織独自のデータ(記録、属性、値)を保存するための構造です。 Twenty provides both standard and custom objects. Twenty provides both standard and custom objects.
標準オブジェクトは、すべてのユーザーが利用可能な一連の属性を備えた組み込みのオブジェクトです。 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. Standard objects have standard fields that are also available for all Twenty users, like Company.displayName.
カスタムオブジェクトは、組織に固有の情報を保存するために作成できるオブジェクトです。 組み込みではないため、ワークスペースメンバーは、標準オブジェクトに適さない情報を保持するためにカスタムオブジェクトを作成およびカスタマイズできます。
カスタムオブジェクトは、組織に固有の情報を保存するために作成できるオブジェクトです。 カスタムオブジェクトは、組織に固有の情報を保存するために作成できるオブジェクトです。 組み込みではないため、ワークスペースメンバーは、標準オブジェクトに適さない情報を保持するためにカスタムオブジェクトを作成およびカスタマイズできます。
## 上位スキーマ
@ -23,13 +23,13 @@ image: /images/user-guide/objects/objects.png
## 仕組み
カスタムオブジェクトは、オブジェクトの形状、名前、およびタイプを決定するメタデータテーブルから来ます。 このすべての情報は、テーブルで構成されるメタデータスキーマデータベースに存在します:
カスタムオブジェクトは、オブジェクトの形状、名前、およびタイプを決定するメタデータテーブルから来ます。 このすべての情報は、テーブルで構成されるメタデータスキーマデータベースに存在します: このすべての情報は、テーブルで構成されるメタデータスキーマデータベースに存在します:
- **DataSource**: データの存在場所を示します。
- **オブジェクト**: オブジェクトを説明し、DataSourceにリンクします。
- **フィールド**: オブジェクトのフィールドを概説し、オブジェクトに接続します。
カスタムオブジェクトを追加するには、workspaceMemberが/metadata APIをクエリします。 これにより、メタデータが適切に更新され、メタデータに基づいてGraphQLスキーマが計算され、後で使用するためにGQLキャッシュに保存されます。
カスタムオブジェクトを追加するには、workspaceMemberが/metadata APIをクエリします。 これにより、メタデータが適切に更新され、メタデータに基づいてGraphQLスキーマが計算され、後で使用するためにGQLキャッシュに保存されます。 これにより、メタデータが適切に更新され、メタデータに基づいてGraphQLスキーマが計算され、後で使用するためにGQLキャッシュに保存されます。
<div style={{textAlign: 'center'}}>
<img src="/images/docs/server/add-custom-objects.jpeg" alt="Query the /metadata API to add custom objects" />

View file

@ -7,7 +7,7 @@ image: /images/user-guide/table-views/table.png
<img src="/images/user-guide/table-views/table.png" alt="Header" />
</Frame>
機能フラグは試験的な機能を隠すために使用されます。 機能フラグは試験的な機能を隠すために使用されます。 Twentyでは、それらはワークスペースレベルで設定されており、ユーザーレベルではありません。
機能フラグは試験的な機能を隠すために使用されます。 機能フラグは試験的な機能を隠すために使用されます。 Twentyでは、それらはワークスペースレベルで設定されており、ユーザーレベルではありません。 機能フラグは試験的な機能を隠すために使用されます。 Twentyでは、それらはワークスペースレベルで設定されており、ユーザーレベルではありません。
## 新しい機能フラグの追加

View file

@ -88,7 +88,7 @@ workspace
└───workspace.factory.ts
```
ワークスペースディレクトリのルートには、`workspace.factory.ts` が含まれ、`createGraphQLSchema` 関数が含まれています。 この関数は、メタデータを使用して、個々のワークスペース用のスキーマを調整し、ワークスペース固有のスキーマを生成します。 スキーマとリゾルバーの構築を分離することで、`makeExecutableSchema` 関数を使用し、これらの個別要素を組み合わせます。
ワークスペースディレクトリのルートには、`workspace.factory.ts` が含まれ、`createGraphQLSchema` 関数が含まれています。 この関数は、メタデータを使用して、個々のワークスペース用のスキーマを調整し、ワークスペース固有のスキーマを生成します。 スキーマとリゾルバーの構築を分離することで、`makeExecutableSchema` 関数を使用し、これらの個別要素を組み合わせます。 この関数は、メタデータを使用して、個々のワークスペース用のスキーマを調整し、ワークスペース固有のスキーマを生成します。 スキーマとリゾルバーの構築を分離することで、`makeExecutableSchema` 関数を使用し、これらの個別要素を組み合わせます。
この戦略は、組織化だけでなく、パフォーマンスやスケーラビリティを向上させるための型定義のキャッシングのような最適化にも役立ちます。

View file

@ -9,6 +9,7 @@ image: /images/user-guide/kanban-views/kanban.png
## 便利なコマンド
これらのコマンドは 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}`).
@ -77,7 +78,7 @@ npx nx run twenty-server:command workspace:sync-metadata -f
Twenty は主にバックエンドに NestJS を使用しています。
最初に使用した 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. 現在のプロジェクトでは 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 を使用しています。
現在の技術スタックは次のようになっています。

View file

@ -11,7 +11,7 @@ Effortlessly sync Twenty with 3000+ apps using [Zapier](https://zapier.com/).
## Zapierについて
Zapierは、チームが毎日使用するアプリを連携させてワークフローを自動化するツールです。 Zapierの基本的な概念は、Zapsと呼ばれる自動化ワークフローであり、トリガーとアクションを含みます。
Zapierは、チームが毎日使用するアプリを連携させてワークフローを自動化するツールです。 Zapierの基本的な概念は、Zapsと呼ばれる自動化ワークフローであり、トリガーとアクションを含みます。 Zapierの基本的な概念は、Zapsと呼ばれる自動化ワークフローであり、トリガーとアクションを含みます。
Zapierの仕組みについてもっと知りたい方は[こちら](https://zapier.com/how-it-works)をご覧ください。

View file

@ -263,7 +263,7 @@ Reactがコンポーネントを認識するためには、PascalCaseを使用
## プロップのドリリングを最小限に抑える
Reactのコンテキストでのプロップドリリングとは、多くのコンポーネントレイヤーを通じて状態変数やそのセットを渡すことを意味します。中間のコンポーネントがそれを使用していない場合であってもです。 時には必要ですが、過度のプロップドリリングは次の結果を導きかねません。 時には必要ですが、過度のプロップドリリングは次の結果を導きかねません。
Reactのコンテキストでのプロップドリリングとは、多くのコンポーネントレイヤーを通じて状態変数やそのセットを渡すことを意味します。中間のコンポーネントがそれを使用していない場合であってもです。 時には必要ですが、過度のプロップドリリングは次の結果を導きかねません。 時には必要ですが、過度のプロップドリリングは次の結果を導きかねません。 時には必要ですが、過度のプロップドリリングは次の結果を導きかねません。
1. **可読性の低下**:プロップがどこから始まり、どこで使われているかを追跡するのが、深くネストされたコンポーネント構造では複雑になり得ます。

View file

@ -29,12 +29,12 @@ front
## ページ
アプリケーションルートによって定義されたトップレベルのコンポーネントを含みます。 それらは、モジュールフォルダからより低レベルのコンポーネントをインポートします(詳細は下記を参照)。
アプリケーションルートによって定義されたトップレベルのコンポーネントを含みます。 それらは、モジュールフォルダからより低レベルのコンポーネントをインポートします(詳細は下記を参照)。 それらは、モジュールフォルダからより低レベルのコンポーネントをインポートします(詳細は下記を参照)。
## モジュール
Each module represents a feature or a group of feature, comprising its specific components, states, and operational logic.
以下の構造に従う必要があります。 モジュール内にモジュール(サブモジュールとして参照)をネストし、同じルールが適用されます。
以下の構造に従う必要があります。 以下の構造に従う必要があります。 モジュール内にモジュール(サブモジュールとして参照)をネストし、同じルールが適用されます。
```
module1
@ -69,7 +69,7 @@ module1
- フラグメント
フラグメントはクエリの再利用可能な部分で、異なる場所で使用できます。 フラグメントを使用することで、コードを重複させることを避けやすくなります。
フラグメントはクエリの再利用可能な部分で、異なる場所で使用できます。 フラグメントを使用することで、コードを重複させることを避けやすくなります。 フラグメントを使用することで、コードを重複させることを避けやすくなります。
詳細は[GraphQL フラグメント](https://graphql.org/learn/queries/#fragments)を参照してください。
@ -87,7 +87,7 @@ module1
### ステート
ステート管理ロジックを含みます。 これを管理するのは[RecoilJS](https://recoiljs.org)です。
ステート管理ロジックを含みます。 これを管理するのは[RecoilJS](https://recoiljs.org)です。 これを管理するのは[RecoilJS](https://recoiljs.org)です。
- セレクター: 詳細は[RecoilJSセレクター](https://recoiljs.org/docs/basic-tutorial/selectors)を参照してください。
@ -101,13 +101,13 @@ Reactの組み込みステート管理は依然としてコンポーネント内
アプリケーションで使用される再利用可能なUIコンポーネントをすべて含みます。
このフォルダには、特定のタイプのコンポーネント用に`data`、`display`、`feedback`、および`input`のようなサブフォルダが含まれることがあります。 各コンポーネントは自己完結型で再利用可能でなければならず、アプリケーションのさまざまな部分で使用できます。
このフォルダには、特定のタイプのコンポーネント用に`data`、`display`、`feedback`、および`input`のようなサブフォルダが含まれることがあります。 各コンポーネントは自己完結型で再利用可能でなければならず、アプリケーションのさまざまな部分で使用できます。 各コンポーネントは自己完結型で再利用可能でなければならず、アプリケーションのさまざまな部分で使用できます。
UIコンポーネントを`modules`フォルダ内の他のコンポーネントから分離することで、一貫したデザインを維持し、UIの変更がコードベースの他の部分ビジネスロジックに影響を与えないようにするのが容易になります。
## インターフェースと依存関係
`ui`フォルダを除く任意のモジュールから他のモジュールコードをインポートできます。 これにより、そのコードは簡単にテストできます。
`ui`フォルダを除く任意のモジュールから他のモジュールコードをインポートできます。 これにより、そのコードは簡単にテストできます。 これにより、そのコードは簡単にテストできます。
### 内部

View file

@ -138,7 +138,7 @@ const MyDropdownComponent = ({ onClose }: { onClose: () => void }) => {
## ホットキースコープとは?
ホットキースコープは、ホットキーがアクティブなコンテキストを表す文字列です。 通常、enumとしてエンコードされます。 通常、enumとしてエンコードされます。
ホットキースコープは、ホットキーがアクティブなコンテキストを表す文字列です。 通常、enumとしてエンコードされます。 通常、enumとしてエンコードされます。 通常、enumとしてエンコードされます。
ホットキースコープを変更すると、このスコープをリッスンしているホットキーが有効になり、他のスコープをリッスンしているホットキーが無効になります。
@ -174,7 +174,7 @@ export const currentHotkeyScopeState = createState<HotkeyScope>({
});
```
しかし、このRecoilステートは手動で処理しないでください 次のセクションでその使用方法を見ていきます。 次のセクションでその使用方法を見ていきます。
しかし、このRecoilステートは手動で処理しないでください 次のセクションでその使用方法を見ていきます。 次のセクションでその使用方法を見ていきます。 次のセクションでその使用方法を見ていきます。
## 内部的にはどう機能しているのか?

View file

@ -88,7 +88,7 @@ const EmailField = ({ value }: EmailFieldProps) => (
#### JSX要素内で単一の変数プロップスプレーディングを使用しない
`{...props}`のようにJSX要素内で単一の変数プロップスプレーディングを避けてください。 この方法は、コンポーネントが受け取るプロップスを不明確にするため、コードの可読性が低下し、メンテナンスが困難になります。
`{...props}`のようにJSX要素内で単一の変数プロップスプレーディングを避けてください。 この方法は、コンポーネントが受け取るプロップスを不明確にするため、コードの可読性が低下し、メンテナンスが困難になります。 この方法は、コンポーネントが受け取るプロップスを不明確にするため、コードの可読性が低下し、メンテナンスが困難になります。
```tsx
/* ❌ - Bad, spreads a single variable prop into the underlying component
@ -155,7 +155,7 @@ type MyType = {
### 列挙型の代わりに文字列リテラルを使う
[文字列リテラル](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#literal-types) は、TypeScriptで列挙型のような値を扱うための推奨方法です。 それらはPickやOmitで拡張するのが簡単で、特にコード補完を伴う開発者の体験を向上させます。
[文字列リテラル](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#literal-types) は、TypeScriptで列挙型のような値を扱うための推奨方法です。 それらはPickやOmitで拡張するのが簡単で、特にコード補完を伴う開発者の体験を向上させます。 それらはPickやOmitで拡張するのが簡単で、特にコード補完を伴う開発者の体験を向上させます。
なぜTypeScriptが列挙型を避けることを推奨しているかは[ここ](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#enums)をご覧ください。
@ -235,11 +235,11 @@ const StyledTitle = styled.div`
#### 測定の単位
Styledコンポーネント内で`px`または`rem`値を直接使用しない 必要な値は一般的にテーマに既に定義されているため、これらの目的でテーマを利用することが推奨されます。
Styledコンポーネント内で`px`または`rem`値を直接使用しない 必要な値は一般的にテーマに既に定義されているため、これらの目的でテーマを利用することが推奨されます。 必要な値は一般的にテーマに既に定義されているため、これらの目的でテーマを利用することが推奨されます。
#### カラー
新しい色を追加するのではなく、テーマから既存のパレットを使用してください。 パレットが適合しない場合には、コメントを残してチームがそれを修正できるようにしてください。
新しい色を追加するのではなく、テーマから既存のパレットを使用してください。 パレットが適合しない場合には、コメントを残してチームがそれを修正できるようにしてください。 パレットが適合しない場合には、コメントを残してチームがそれを修正できるようにしてください。
```tsx
// ❌ Bad, directly specifies style values without utilizing the theme
@ -265,7 +265,7 @@ const StyledButton = styled.button`
## タイプ無しのインポートの強制
タイプインポートを避けてください。 この標準を強制するために、ESLintルールがどのタイプのインポートもチェックして報告します。 これにより、TypeScriptコードの一貫性と可読性が維持されます。
タイプインポートを避けてください。 タイプインポートを避けてください。 この標準を強制するために、ESLintルールがどのタイプのインポートもチェックして報告します。 これにより、TypeScriptコードの一貫性と可読性が維持されます。 これにより、TypeScriptコードの一貫性と可読性が維持されます。
```tsx
// ❌ Bad
@ -290,6 +290,6 @@ import { Meta, StoryObj } from '@storybook/react';
An ESLint rule, `@typescript-eslint/consistent-type-imports`, enforces the no-type import standard. このルールは、タイプインポート違反のエラーや警告を生成します。
Please note that this rule specifically addresses rare edge cases where unintentional type imports occur. TypeScript自体、[TypeScript 3.8 リリースノート](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-8.html)でこのプラクティスを避けています。 ほとんどの状況で、タイプのみのインポートを使用する必要はありません。
Please note that this rule specifically addresses rare edge cases where unintentional type imports occur. 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.

View file

@ -11,6 +11,7 @@ image: /images/user-guide/objects/objects.png
Figma は、デザイナーと開発者の間のコミュニケーションの壁を埋めるのを助ける協働インターフェース設計ツールです。
このガイドは、Figma を使って共同作業する方法を説明します。
このガイドは、Figma を使って共同作業する方法を説明します。
このガイドは、Figma を使って共同作業する方法を説明します。
## アクセス
@ -26,11 +27,11 @@ Figma は、デザイナーと開発者の間のコミュニケーションの
## Figma 構造
左側のサイドバーで、Twenty の Figma の異なるページにアクセスできます。 それらは次のように整理されています: それらは次のように整理されています:
左側のサイドバーで、Twenty の Figma の異なるページにアクセスできます。 それらは次のように整理されています: それらは次のように整理されています: それらは次のように整理されています:
- **コンポーネントページ:** これは最初のページです。 デザイナーはこれを使用して、デザインファイル全体で使用される再利用可能なデザイン要素を作成および整理します。 例えば、ボタン、アイコン、シンボル、またはその他の再利用可能なコンポーネントとして使用されます。 これにより、デザイン全体で一貫性を保つことができます。
- **メインページ:** 2 番目のページはメインページで、プロジェクトの完全なユーザーインターフェースを示しています。 _**再生**_ を押すことで、アプリプロトタイプを完全に使用できます。 _**再生**_ を押すことで、アプリプロトタイプを完全に使用できます。
- **特徴ページ:** その他のページは、通常、進行中の機能に専念しています。 それらはアプリケーションまたはウェブサイトの特定の機能またはモジュールのデザインを含みます。 通常、まだ進行中です。 それらはアプリケーションまたはウェブサイトの特定の機能またはモジュールのデザインを含みます。 通常、まだ進行中です。
- **メインページ:** 2 番目のページはメインページで、プロジェクトの完全なユーザーインターフェースを示しています。 _**再生**_ を押すことで、アプリプロトタイプを完全に使用できます。 **メインページ:** 2 番目のページはメインページで、プロジェクトの完全なユーザーインターフェースを示しています。 _**再生**_ を押すことで、アプリプロトタイプを完全に使用できます。 _**再生**_ を押すことで、アプリプロトタイプを完全に使用できます。
- **特徴ページ:** その他のページは、通常、進行中の機能に専念しています。 それらはアプリケーションまたはウェブサイトの特定の機能またはモジュールのデザインを含みます。 通常、まだ進行中です。 それらはアプリケーションまたはウェブサイトの特定の機能またはモジュールのデザインを含みます。 通常、まだ進行中です。 それらはアプリケーションまたはウェブサイトの特定の機能またはモジュールのデザインを含みます。 通常、まだ進行中です。
## 役立つヒント
@ -60,8 +61,9 @@ Figma プラットフォームの学習に関するより包括的な詳細と
[Figma for VS Code](https://marketplace.visualstudio.com/items?itemName=figma.figma-vscode-extension) を使用すると、デザインファイルのナビゲート、検査、デザイナーとのコラボレーション、変更の追跡、実装の促進ができます - すべてをテキストエディターから離れることなく行えます。
これは推奨拡張機能の一部です。
これは推奨拡張機能の一部です。
これは推奨拡張機能の一部です。
## コラボレーション
1. **コメントの使用:** ツールバーの左側にあるバブルアイコンをクリックしてコメント機能を使用できます。
2. **カーソルチャット:** Figma の魅力的な機能のひとつにカーソルチャットがあります。 他の Figma を同時に使用している誰かを見た場合、`/` キーWindowsまたは `;` キーMacを押してメッセージを送信します。 他の Figma を同時に使用している誰かを見た場合、`/` キーWindowsまたは `;` キーMacを押してメッセージを送信します。
2. **カーソルチャット:** Figma の魅力的な機能のひとつにカーソルチャットがあります。 他の Figma を同時に使用している誰かを見た場合、`/` キーWindowsまたは `;` キーMacを押してメッセージを送信します。 **カーソルチャット:** Figma の魅力的な機能のひとつにカーソルチャットがあります。 他の Figma を同時に使用している誰かを見た場合、`/` キーWindowsまたは `;` キーMacを押してメッセージを送信します。 他の Figma を同時に使用している誰かを見た場合、`/` キーWindowsまたは `;` キーMacを押してメッセージを送信します。

View file

@ -21,7 +21,10 @@ Twentyをインストールして使用する前に、以下をコンピュー
- [nvm](https://github.com/nvm-sh/nvm/blob/master/README.md)
<Warning>
`npm`は使えません。代わりに`yarn`を使用してください。
`npm`は使えません。代わりに`yarn`を使用してください。 Yarnは今Node.jsに同梱されているので、別途インストールする必要はありません。
Yarnを有効にするには、まだしていない場合は`corepack enable`を実行するだけです。
Yarnを有効にするには、まだしていない場合は`corepack enable`を実行するだけです。
</Warning>
@ -36,8 +39,9 @@ Yarnを有効にするには、まだしていない場合は`corepack enable`
wsl --install
```
コンピュータを再起動するプロンプトが表示されるはずです。 表示されなければ、手動で再起動してください。
コンピュータを再起動するプロンプトが表示されるはずです。 表示されなければ、手動で再起動してください。 表示されなければ、手動で再起動してください。
再起動後、PowerShellウィンドウが開き、Ubuntuをインストールします。 これには少し時間がかかるかもしれません。
再起動後、PowerShellウィンドウが開き、Ubuntuをインストールします。 これには少し時間がかかるかもしれません。
Ubuntuインストールのためにユーザー名とパスワードを設定するプロンプトが表示されます。
@ -54,7 +58,9 @@ git config --global user.email "youremail@domain.com"
3. nvm、node.js、yarnをインストールする
<Warning>
`nvm`を使用して正しい`node`バージョンをインストールします。 `.nvmrc`は、すべての寄稿者が同じバージョンを使用することを保証します。
`.nvmrc`は、すべての寄稿者が同じバージョンを使用することを保証します。
</Warning>
```bash
@ -63,7 +69,7 @@ sudo apt-get install curl
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | bash
```
nvmを使用できるようにするには、ターミナルを閉じて再度開いてください。 次のコマンドを実行します。
nvmを使用できるようにするには、ターミナルを閉じて再度開いてください。 次のコマンドを実行します。 次のコマンドを実行します。
```bash
@ -85,7 +91,12 @@ corepack enable
<Tabs>
<Tab title="SSH (Recommended)">
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
```
@ -254,7 +265,7 @@ Twentyは、最良のパフォーマンスを提供するためにredisキャッ
## ステップ5環境変数をセットアップします
環境変数や`.env`ファイルを使ってプロジェクトを設定します。 詳細は[こちら](https://docs.twenty.com/l/ja/developers/self-hosting/setup)。
環境変数や`.env`ファイルを使ってプロジェクトを設定します。 詳細は[こちら](https://docs.twenty.com/l/ja/developers/self-hosting/setup)。 詳細は[こちら](https://docs.twenty.com/l/ja/developers/self-hosting/setup)。
`/front`と`/server`内の`.env.example`ファイルをコピーします:
@ -277,18 +288,26 @@ yarn
<Tabs>
<Tab title="Linux">
Linuxディストリビューションによっては、Redisサーバーが自動的に開始されるかもしれません。
Linuxディストリビューションによっては、Redisサーバーが自動的に開始されるかもしれません。
そうでない場合は、[Redisインストールガイド](https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/)を参照し、お使いのディストリビューションに合わせて確認してください。
</Tab>
<Tab title="Mac OS">
Redisはすでに稼働しているはずです。
Redisはすでに稼働しているはずです。 If not, run:
```bash
brew services start redis
```
</Tab>
<Tab title="Windows (WSL)">
Linuxディストリビューションによっては、Redisサーバーが自動的に開始されるかもしれません。
Linuxディストリビューションによっては、Redisサーバーが自動的に開始されるかもしれません。
そうでない場合は、[Redisインストールガイド](https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/)を参照し、お使いのディストリビューションに合わせて確認してください。
</Tab>
</Tabs>
@ -316,6 +335,7 @@ npx nx start
**フロントエンド**
Twentyのフロントエンドは[http://localhost:3001](http://localhost:3001)で稼働しています。
Twentyのフロントエンドは[http://localhost:3001](http://localhost:3001)で稼働しています。
デフォルトのデモアカウントを使用してログインできます: `tim@apple.dev` (パスワード: `tim@apple.dev`)

View file

@ -27,7 +27,7 @@ Coolifyを使用してサーバーにTwentyをデプロイします。 (Coolify
以下のコミュニティ維持テンプレートを使用して、EasyPanelにTwentyをデプロイします。
[EasyPanelにデプロイする](https://easypanel.io/docs/templates/twenty)
以下のコミュニティ維持テンプレートを使用して、EasyPanelにTwentyをデプロイします。
### Elest.io

View file

@ -13,15 +13,15 @@ Docker containers are for production hosting or self-hosting, for the contributi
## 概要
このガイドは、Docker Composeを使用してTwentyアプリケーションをインストールおよび構成するためのステップバイステップの手順を提供します。 プロセスを簡単にし、設定を破壊する可能性のある一般的な落とし穴を防止することが目的です。
このガイドは、Docker Composeを使用してTwentyアプリケーションをインストールおよび構成するためのステップバイステップの手順を提供します。 プロセスを簡単にし、設定を破壊する可能性のある一般的な落とし穴を防止することが目的です。 プロセスを簡単にし、設定を破壊する可能性のある一般的な落とし穴を防止することが目的です。 プロセスを簡単にし、設定を破壊する可能性のある一般的な落とし穴を防止することが目的です。
**重要:** このガイドで明示的に言及されている設定のみを変更してください。 他の構成を変更すると、問題が発生する可能性があります。
**重要:** このガイドで明示的に言及されている設定のみを変更してください。 他の構成を変更すると、問題が発生する可能性があります。 他の構成を変更すると、問題が発生する可能性があります。 他の構成を変更すると、問題が発生する可能性があります。
高度な構成については、[環境変数の設定](https://docs.twenty.com/l/ja/developers/self-hosting/setup)を参照してください。 すべての環境変数は、サーバーレベルまたはワーカーレベルでdocker-compose.ymlファイルに宣言する必要があります。
高度な構成については、[環境変数の設定](https://docs.twenty.com/l/ja/developers/self-hosting/setup)を参照してください。 高度な構成については、[環境変数の設定](https://docs.twenty.com/l/ja/developers/self-hosting/setup)を参照してください。 高度な構成については、[環境変数の設定](https://docs.twenty.com/l/ja/developers/self-hosting/setup)を参照してください。 すべての環境変数は、サーバーレベルまたはワーカーレベルでdocker-compose.ymlファイルに宣言する必要があります。
## システム要件
- RAM: 環境に最低2GBのRAMがあることを確認してください。 メモリが不足するとプロセスがクラッシュすることがあります。
- RAM: 環境に最低2GBのRAMがあることを確認してください。 メモリが不足するとプロセスがクラッシュすることがあります。 メモリが不足するとプロセスがクラッシュすることがあります。 メモリが不足するとプロセスがクラッシュすることがあります。
- Docker & Docker Compose: 両方がインストールされ、最新であることを確認してください。
## オプション 1: ワンラインスクリプト
@ -111,7 +111,7 @@ curl http://localhost:3000
### Twentyを外部アクセスに公開
デフォルトでは、Twentyはポート`3000`で`localhost`上で動作します。 外部ドメインまたはIPアドレス経由でアクセスするには、`.env`ファイルで`SERVER_URL`を構成する必要があります。
デフォルトでは、Twentyはポート`3000`で`localhost`上で動作します。 外部ドメインまたはIPアドレス経由でアクセスするには、`.env`ファイルで`SERVER_URL`を構成する必要があります。 外部ドメインまたはIPアドレス経由でアクセスするには、`.env`ファイルで`SERVER_URL`を構成する必要があります。
#### `SERVER_URL`の理解
@ -123,7 +123,7 @@ curl http://localhost:3000
### SSL 要件
SSLHTTPSは、特定のブラウザ機能が正しく動作するために必要です。 これらの機能は、ローカル開発中に動作するかもしれませんがブラウザがlocalhostを異なる扱い方をするため、Twentyを通常のドメインでホスティングする場合、適切なSSLの設定が必要です。
SSLHTTPSは、特定のブラウザ機能が正しく動作するために必要です。 SSLHTTPSは、特定のブラウザ機能が正しく動作するために必要です。 SSLHTTPSは、特定のブラウザ機能が正しく動作するために必要です。 これらの機能は、ローカル開発中に動作するかもしれませんがブラウザがlocalhostを異なる扱い方をするため、Twentyを通常のドメインでホスティングする場合、適切なSSLの設定が必要です。
たとえば、クリップボードAPIは安全なコンテキストが必要かもしれません - アプリケーション全体でのコピー ボタンのような機能は、HTTPSが有効でないと動作しないかもしれません。
@ -158,7 +158,7 @@ SSLHTTPSは、特定のブラウザ機能が正しく動作するために
2. **.env ファイルを更新**
.env`ファイルを開き、`SERVER_URL\`を更新します:
.env`ファイルを開き、`SERVER_URL\\\`を更新します:
```ini
SERVER_URL=http(s)://your-domain-or-ip:your-port
@ -188,7 +188,7 @@ SSLHTTPSは、特定のブラウザ機能が正しく動作するために
- **リバースプロキシ構成:**
リバースプロキシが正しい内部ポート(デフォルトでは`3000`)にリクエストを転送することを確認してください。 SSL終端と必要なヘッダーを設定します。
リバースプロキシが正しい内部ポート(デフォルトでは`3000`)にリクエストを転送することを確認してください。 SSL終端と必要なヘッダーを設定します。 SSL終端と必要なヘッダーを設定します。 SSL終端と必要なヘッダーを設定します。
- **ファイアウォール設定:**

View file

@ -33,7 +33,9 @@ IS_CONFIG_VARIABLES_IN_DB_ENABLED=true # default
4. 変更はすぐにマルチコンテナ展開の場合、15秒以内に効果が出ます。
<Warning>
**マルチコンテナ展開:** データベース構成を使用する場合 (`IS_CONFIG_VARIABLES_IN_DB_ENABLED=true`)、サーバーとワーカーコンテナの両方が同じデータベースから読み込みます。 管理パネルの変更は両方に自動的に影響し、コンテナ間で環境変数を重複させる必要がなくなります(インフラストラクチャの変数を除く)。
管理パネルの変更は両方に自動的に影響し、コンテナ間で環境変数を重複させる必要がなくなります(インフラストラクチャの変数を除く)。
</Warning>
**管理パネルを通じて構成できること:**
@ -48,6 +50,8 @@ IS_CONFIG_VARIABLES_IN_DB_ENABLED=true # default
![管理パネル構成変数](/images/user-guide/setup/admin-panel-config-variables.png)
<Warning>
各変数は、**設定 → 管理パネル → 構成変数** で説明付きでドキュメント化されています。
各変数は、**設定 → 管理パネル → 構成変数** で説明付きでドキュメント化されています。
データベース接続 (`PG_DATABASE_URL`)、サーバーURL (`SERVER_URL`)、アプリの秘密キー (`APP_SECRET`) など、一部のインフラ設定は `.env` ファイルを介してのみ構成可能です。
@ -118,7 +122,9 @@ IS_CONFIG_VARIABLES_IN_DB_ENABLED=false
## Microsoft 365 統合
<Warning>
カレンダーおよびメッセージングAPIを使用するためには、[Microsoft 365 ライセンス](https://admin.microsoft.com/Adminportal/Home)が必要です。 They will not be able to sync their account on Twenty without one.
They will not be able to sync their account on Twenty without one.
</Warning>
### Microsoft Azureでプロジェクトを作成
@ -138,7 +144,7 @@ Microsoft Azureコンソールで"権限"の欄で以下のAPIを有効にしま
- Microsoft Graph: profile
- Microsoft Graph: offline_access
注: "Mail.ReadWrite" と "Mail.Send" は、ワークフローアクションを使用してメールを送信する場合に必須です。 メールを受信するだけの場合は、"Mail.Read"を使用できます。
注: "Mail.ReadWrite" と "Mail.Send" は、ワークフローアクションを使用してメールを送信する場合に必須です。 メールを受信するだけの場合は、"Mail.Read"を使用できます。 メールを受信するだけの場合は、"Mail.Read"を使用できます。
### 認証されたリダイレクトURI

View file

@ -20,6 +20,7 @@ image: /images/user-guide/what-is-twenty/20.png
Twentyを初めてインストールする際には、デフォルトのデータベースパスワードを変更する必要があるかもしれません。
初回インストール時に設定されたパスワードはデータベースボリュームに永久に保存されます。 後になってこのパスワードを構成で変更しようとしても、古いボリュームを削除しない限り認証エラーが発生します。データベースが元のパスワードを使用しているためです。
初回インストール時に設定されたパスワードはデータベースボリュームに永久に保存されます。 後になってこのパスワードを構成で変更しようとしても、古いボリュームを削除しない限り認証エラーが発生します。データベースが元のパスワードを使用しているためです。
⚠️ 警告: 以下のステップを実行すると、データベース内のすべてのデータが完全に削除されます! ⚠️
これは重要なデータのない新規インストールの場合のみ進めてください。
@ -34,7 +35,7 @@ docker compose up -d
#### CR行区切り[Windows]が見つかる
これはWindowsの改行文字とgit構成のためです。 次を実行してみてください:
これはWindowsの改行文字とgit構成のためです。 次を実行してみてください: 次を実行してみてください:
```
git config --global core.autocrlf false
@ -47,6 +48,8 @@ git config --global core.autocrlf false
Twentyのインストール中に、postgresデータベースを適切なスキーマ、拡張、およびユーザーで準備する必要があります。
この準備がうまくいけば、あなたのデータベースに`default`と`metadata`スキーマがあるはずです。
そうでない場合は、同じコンピュータ上で複数のpostgresインスタンスを実行していないことを確認してください。
この準備がうまくいけば、あなたのデータベースに`default`と`metadata`スキーマがあるはずです。
そうでない場合は、同じコンピュータ上で複数のpostgresインスタンスを実行していないことを確認してください。
#### モジュール'twenty-emails' またはその対応する型宣言が見つかりません。
@ -54,11 +57,11 @@ Twentyのインストール中に、postgresデータベースを適切なスキ
#### twenty-xパッケージが見つかりません
ルートディレクトリでyarnを実行し、その後 `npx nx server:dev twenty-server`を実行してください。 それでも動作しない場合は、足りないパッケージを手動でビルドしてみてください。
ルートディレクトリでyarnを実行し、その後 `npx nx server:dev twenty-server`を実行してください。 それでも動作しない場合は、足りないパッケージを手動でビルドしてみてください。 それでも動作しない場合は、足りないパッケージを手動でビルドしてみてください。
#### 保存時のLintが機能しない
eslint拡張子がインストールされている場合、これは標準設定で動作するはずです。 もしこれが機能しない場合、vscode設定で以下を追加してみてください開発コンテナ範囲内で
eslint拡張子がインストールされている場合、これは標準設定で動作するはずです。 eslint拡張子がインストールされている場合、これは標準設定で動作するはずです。 もしこれが機能しない場合、vscode設定で以下を追加してみてください開発コンテナ範囲内で
```
"editor.codeActionsOnSave": {
@ -73,7 +76,7 @@ eslint拡張子がインストールされている場合、これは標準設
`packages/twenty-front/.env`で`VITE_DISABLE_TYPESCRIPT_CHECKER=true` と `VITE_DISABLE_ESLINT_CHECKER=true` をコメント解除して、バックグラウンドチェックを無効化し、必要なRAMの量を減らします。
**これが機能しない場合:**
必要なサービスのみを実行し、`npx nx start`の実行を避けてください。 例えば、サーバーで作業している場合は、`npx nx worker twenty-server` のみを実行してください。
必要なサービスのみを実行し、`npx nx start`の実行を避けてください。 例えば、サーバーで作業している場合は、`npx nx worker twenty-server` のみを実行してください。 例えば、サーバーで作業している場合は、`npx nx worker twenty-server` のみを実行してください。
**これが機能しない場合:**
`npx nx run twenty-server:start`だけをWSLで実行しようとしてメモリエラーで失敗した場合。
@ -86,8 +89,10 @@ eslint拡張子がインストールされている場合、これは標準設
\--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
**これが機能しない場合:**
あなたのマシンのRAMを最も使用しているプロセスを調査してください。 **これが機能しない場合:**
あなたのマシンのRAMを最も使用しているプロセスを調査してください。 Twentyでは、一部のVScode拡張機能が多くのRAMを使用していることに気付き、一時的に無効化しました。
**これが機能しない場合:**
@ -99,7 +104,7 @@ eslint拡張子がインストールされている場合、これは標準設
#### メールが送信されない
ほとんどの場合、バックグラウンドで`worker`が動作していないのが原因です。 実行してみてください
ほとんどの場合、バックグラウンドで`worker`が動作していないのが原因です。 実行してみてください 実行してみてください
```
npx nx worker twenty-server
@ -107,9 +112,9 @@ npx nx worker twenty-server
#### Microsoft 365アカウントに接続できない
ほとんどの場合、管理者があなたのアカウントのMicrosoft 365ライセンスを有効化していないことが原因です。 [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)を確認してください。
エラーコード`AADSTS50020`を受け取った場合、おそらく個人のMicrosoftアカウントを使用しています。 これはまだサポートされていません。 詳細は[こちら](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アカウントを使用しています。 これはまだサポートされていません。 詳細は[こちら](https://learn.microsoft.com/fr-fr/troubleshoot/entra/entra-id/app-integration/error-code-aadsts50020-user-account-identity-provider-does-not-exist)
#### `yarn`実行中の警告がコンソールに表示される

View file

@ -17,7 +17,7 @@ Docker Composeを使用している場合、次の手順に従います
1. Twentyを実行しているホスト上のターミナルで、Twentyを停止します`docker compose down`
2. docker-compose近くにある.envファイルの`TAG`値を変更してバージョンをアップグレードします。 ( `v0.53` のように `major.minor` バージョンを使用することをお勧めします )
2. docker-compose近くにある.envファイルの`TAG`値を変更してバージョンをアップグレードします。 ( `v0.53` のように `major.minor` バージョンを使用することをお勧めします ) ( `v0.53` のように `major.minor` バージョンを使用することをお勧めします )
3. `docker compose up -d` でTwentyを再起動します。
@ -39,7 +39,7 @@ All interactions with the metadata API have been optimized for better performanc
キャッシング戦略を見直し、可能な場合はデータベースクエリよりもキャッシュヒットを優先するようにしました。これにより、メタデータAPIオペレーションのパフォーマンスが大幅に向上しました。
アップグレード後にランタイムの問題が発生した場合は、キャッシュをフラッシュして最新の変更と同期させる必要があるかもしれません。 twenty-serverコンテナ内で次のコマンドを実行します
アップグレード後にランタイムの問題が発生した場合は、キャッシュをフラッシュして最新の変更と同期させる必要があるかもしれません。 twenty-serverコンテナ内で次のコマンドを実行します twenty-serverコンテナ内で次のコマンドを実行します
```bash
yarn command:prod cache:flush
@ -99,6 +99,7 @@ yarn command:prod upgrade
#### 私は `0.52.0` と `0.52.6` の間のバージョンでブロックされたワークスペースを持っています。
残念ながら、`0.52.0` と `0.52.6` はdockerHubから完全に削除されました。
残念ながら、`0.52.0` と `0.52.6` はdockerHubから完全に削除されました。
データベースでワークスペースバージョンを手動で `0.51.0` に更新し、twentyバージョン `0.52.11` を使用して、その直上のアップグレードガイドに従ってアップグレードする必要があります。
@ -124,6 +125,7 @@ yarn command:prod upgrade
このバージョンには、`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)に更新してください。
### v0.43.0からv0.44.0
@ -248,9 +250,11 @@ yarn command:prod upgrade-0.34
- 削除: `FRONT_BASE_URL`
- 追加: `FRONT_DOMAIN`, `FRONT_PROTOCOL`, `FRONT_PORT`
フロントエンドURLの取り扱いを更新しました。
フロントエンドURLの取り扱いを更新しました。
フロントエンドURLは、`FRONT_DOMAIN`、`FRONT_PROTOCOL`、`FRONT_PORT` 変数を使用して設定できます。
FRONT_DOMAIN が設定されていない場合、フロントエンドURLは `SERVER_URL` に戻されます。
FRONT_DOMAIN が設定されていない場合、フロントエンドURLは `SERVER_URL` に戻されます。
### v0.32.0からv0.33.0
@ -265,7 +269,11 @@ yarn command:prod upgrade-0.33
`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.
このバージョンから、DB用のtwenty-postgresイメージは廃止され、twenty-postgres-spiloが代わりに使用されるようになりました。
このバージョンから、DB用のtwenty-postgresイメージは廃止され、twenty-postgres-spiloが代わりに使用されるようになりました。
twenty-postgresイメージを使い続けたい場合は、docker-compose.yml内の`twentycrm/twenty-postgres:${TAG}`を`twentycrm/twenty-postgres`に置き換えるだけで済みます。
@ -324,6 +332,7 @@ Twentyインスタンスをv0.30.0イメージにアップグレードします
**Breaking change**:
To enhance performances, Twenty now requires redis cache to be configured. これを反映した[docker-compose.yml](https://raw.githubusercontent.com/twentyhq/twenty/main/packages/twenty-docker/docker-compose.yml)を更新しました。
構成を更新し、環境変数を適切に更新してください:
構成を更新し、環境変数を適切に更新してください:
```
REDIS_HOST={your-redis-host}
@ -382,6 +391,7 @@ yarn command:prod upgrade-0.22
```
`yarn database:migrate:prod` コマンドはデータベースへの移行を適用します。
`yarn command:prod upgrade-0.23` は、アクティビティをタスク/ノートに移行するなど、データ移行を担当します。
"`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.

View file

@ -46,7 +46,7 @@ export const MyComponent = () => {
| pictureUrl | string | 写真", |
| avatarType | アバタータイプ | 表示したいアバターのタイプ。 表示したいアバターのタイプ。 オプションは2つ`rounded` と `squared` |
| バリアント | `EntityChipVariant` 列挙型 | 表示したいエンティティチップのバリアント。 表示したいエンティティチップのバリアント。 オプションは2つ`regular` と `transparent` |
| 左アイコン | アイコンコンポーネント | アイコンを表す React コンポーネント。 チップの左側に表示されます チップの左側に表示されます |
| 左アイコン | アイコンコンポーネント | アイコンを表す React コンポーネント。 チップの左側に表示されます チップの左側に表示されます チップの左側に表示されます |
</Tab>
</Tabs>
@ -142,7 +142,7 @@ export const MyComponent = () => {
| pictureUrl | string | 写真", |
| avatarType | アバタータイプ | 表示したいアバターのタイプ。 表示したいアバターのタイプ。 オプションは2つ`rounded` と `squared` |
| バリアント | `EntityChipVariant` 列挙型 | 表示したいエンティティチップのバリアント。 表示したいエンティティチップのバリアント。 オプションは2つ`regular` と `transparent` |
| 左アイコン | アイコンコンポーネント | アイコンを表す React コンポーネント。 チップの左側に表示されます チップの左側に表示されます |
| 左アイコン | アイコンコンポーネント | アイコンを表す React コンポーネント。 チップの左側に表示されます チップの左側に表示されます チップの左側に表示されます |
</Tab>
</Tabs>

View file

@ -25,7 +25,7 @@ yarn add @tabler/icons-react
<Tab title="Props">
各アイコンをコンポーネントとしてインポートできます。 Here's an example: <br />
各アイコンをコンポーネントとしてインポートできます。 Here's an example: <br /> Here's an example: <br />
```jsx
import { IconArrowLeft } from "@tabler/icons-react";

View file

@ -32,12 +32,12 @@ export const MyComponent = () => {
<Tab title="Props">
| プロパティ | タイプ | 説明 |
| --------- | ------ | ---------------------------------------------------------------------------------------------------- |
| className | string | 追加のスタイリングのためのオプション名 |
| カラー | string | タグの色。 タグの色。 オプションは次のとおりです: `緑`, `トルコ石`, `空`, `青`, `紫`, `ピンク`, `赤`, `オレンジ`, `黄`, `灰色` |
| テキスト | string | タグの内容 |
| onClick | 機能 | ユーザーがタグをクリックすると呼び出される任意の関数 |
| プロパティ | タイプ | 説明 |
| --------- | ------ | ---------------------------------------------------------------------------------------------------------- |
| className | string | 追加のスタイリングのためのオプション名 |
| カラー | string | タグの色。 タグの色。 タグの色。 オプションは次のとおりです: `緑`, `トルコ石`, `空`, `青`, `紫`, `ピンク`, `赤`, `オレンジ`, `黄`, `灰色` |
| テキスト | string | タグの内容 |
| onClick | 機能 | ユーザーがタグをクリックすると呼び出される任意の関数 |
</Tab>

View file

@ -49,7 +49,7 @@ export const MyComponent = () => {
| タイトル | string | ボタンのテキスト内容 |
| fullWidth | ブール型 | ボタンがコンテナの全幅を占めるかどうかを定義します |
| バリアント | string | ボタンの視覚スタイルのバリアント。 オプションは `primary`、`secondary`、 `tertiary` を含みます |
| サイズ | string | ボタンのサイズ。 オプションは2つ`small` と `medium` |
| サイズ | string | ボタンのサイズ。 ボタンのサイズ。 オプションは2つ`small` と `medium` |
| "位置" | string | ボタンの兄弟関係における位置。 オプションは `standalone`、`left`、`right`、 `middle` を含みます |
| アクセント | string | ボタンのアクセント色。 オプションは `default`、`blue`、`danger` を含みます |
| 間もなく | ブール型 | ボタンが「soon」としてマークされているかどうかを示しますたとえば、今後の機能のために。 |
@ -171,7 +171,7 @@ export const MyComponent = () => {
| className | string | 追加スタイル用のオプション名 |
| アイコン | `React.ComponentType` | ボタン内に表示されるオプションのアイコンコンポーネント |
| タイトル | string | ボタンのテキスト内容 |
| サイズ | string | ボタンのサイズ。 オプションは2つ`small` と `medium` |
| サイズ | string | ボタンのサイズ。 ボタンのサイズ。 オプションは2つ`small` と `medium` |
| "位置" | string | ボタンの兄弟関係における位置。 オプションは `standalone`、`left`、`middle`、 `right` を含みます |
| applyShadow | ブール型 | ボタンにシャドウを適用するかどうかを決定します |
| applyBlur | ブール型 | ボタンにぼかし効果を適用するかどうかを決定します |
@ -224,10 +224,10 @@ export const MyComponent = () => {
<Tab title="Props">
| プロパティ | タイプ | 説明 | デフォルト |
| -------- | --------- | ------------------------------------ | ----- |
| サイズ | string | ボタンのサイズ。 オプションは2つ`small` と `medium` | small |
| children | ReactNode | グループ内の個々のボタンを表す React エレメントの配列 | |
| プロパティ | タイプ | 説明 | デフォルト |
| -------- | --------- | --------------------------------------------- | ----- |
| サイズ | string | ボタンのサイズ。 ボタンのサイズ。 オプションは2つ`small` と `medium` | small |
| children | ReactNode | グループ内の個々のボタンを表す React エレメントの配列 | |
</Tab>
@ -268,7 +268,7 @@ export const MyComponent = () => {
| ----------- | --------------------- | ------------------------------------------------------------------ |
| className | string | 追加スタイル用のオプション名 |
| アイコン | `React.ComponentType` | ボタン内に表示されるオプションのアイコンコンポーネント |
| サイズ | string | ボタンのサイズ。 オプションは2つ`small` と `medium` |
| サイズ | string | ボタンのサイズ。 ボタンのサイズ。 オプションは2つ`small` と `medium` |
| "位置" | string | ボタンの兄弟関係における位置。 オプションは `standalone`、`left`、`right`、 `middle` を含みます |
| applyShadow | ブール型 | ボタンにシャドウを適用するかどうかを決定します |
| applyBlur | ブール型 | ボタンにぼかし効果を適用するかどうかを決定します |
@ -318,11 +318,11 @@ export const MyComponent = () => {
<Tab title="Props">
| プロパティ | タイプ | 説明 |
| ----------- | ------ | ------------------------------------------------------------------------------------------------------------------------ |
| className | string | 追加スタイル用のオプション名 |
| サイズ | string | ボタンのサイズ。 オプションは2つ`small` と `medium` |
| iconButtons | array | グループ内のアイコンボタンをそれぞれ表すオブジェクトの配列。 各オブジェクトには、ボタンに表示したいアイコンコンポーネント、ユーザーがボタンをクリックした時に呼び出される関数、およびボタンをアクティブにするかどうかが含まれる必要があります。 |
| プロパティ | タイプ | 説明 |
| ----------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| className | string | 追加スタイル用のオプション名 |
| サイズ | string | ボタンのサイズ。 ボタンのサイズ。 オプションは2つ`small` と `medium` |
| iconButtons | array | グループ内のアイコンボタンをそれぞれ表すオブジェクトの配列。 各オブジェクトには、ボタンに表示したいアイコンコンポーネント、ユーザーがボタンをクリックした時に呼び出される関数、およびボタンをアクティブにするかどうかが含まれる必要があります。 各オブジェクトには、ボタンに表示したいアイコンコンポーネント、ユーザーがボタンをクリックした時に呼び出される関数、およびボタンをアクティブにするかどうかが含まれる必要があります。 |
</Tab>
@ -406,7 +406,7 @@ export const MyComponent = () => {
| testId | string | ボタンのテスト識別子 |
| アイコン | `React.ComponentType` | ボタン内に表示されるオプションのアイコンコンポーネント |
| タイトル | string | ボタンのテキスト内容 |
| サイズ | string | ボタンのサイズ。 オプションは2つ`small` と `medium` |
| サイズ | string | ボタンのサイズ。 ボタンのサイズ。 オプションは2つ`small` と `medium` |
| アクセント | string | ボタンのアクセント色。 オプションは `secondary`、 `tertiary` を含みます |
| アクティブ | ブール型 | ボタンがアクティブな状態にあるかどうかを決定します |
| disabled | ブール型 | ボタンが無効かどうかを決定します |
@ -443,14 +443,14 @@ export const MyComponent = () => {
<Tab title="Props">
| プロパティ | タイプ | 説明 |
| -------------------- | -------------------------------- | ------------------------------------------------------ |
| タイトル | string | ボタンのテキスト内容 |
| fullWidth | ブール型 | ボタンがコンテナの全幅を占めるかどうかを定義します |
| バリアント | string | ボタンの視覚スタイルのバリアント。 オプションは `primary` と `secondary` を含みます |
| 間もなく | ブール型 | ボタンが「soon」としてマークされているかどうかを示しますたとえば、今後の機能のために。 |
| アイコン | `React.ComponentType` | ボタン内に表示されるオプションのアイコンコンポーネント |
| React `button` props | `React.ComponentProps<'button'>` | 標準的なHTMLボタンのプロパティすべてがサポートされています |
| プロパティ | タイプ | 説明 |
| -------------------- | -------------------------------- | ------------------------------------------------------------------------------------------- |
| タイトル | string | ボタンのテキスト内容 |
| fullWidth | ブール型 | ボタンがコンテナの全幅を占めるかどうかを定義します |
| バリアント | string | ボタンの視覚スタイルのバリアント。 オプションは `primary` と `secondary` を含みます オプションは `primary` と `secondary` を含みます |
| 間もなく | ブール型 | ボタンが「soon」としてマークされているかどうかを示しますたとえば、今後の機能のために |
| アイコン | `React.ComponentType` | ボタン内に表示されるオプションのアイコンコンポーネント |
| React `button` props | `React.ComponentProps<'button'>` | 標準的なHTMLボタンのプロパティすべてがサポートされています |
</Tab>

View file

@ -40,8 +40,8 @@ export const MyComponent = () => {
| onChange | 機能 | The callback function you want to trigger when the checkbox state changes |
| onCheckedChange | 機能 | The callback function you want to trigger when the `checked` state changes |
| バリアント | string | ボックスのビジュアルスタイルのバリエーション。 オプションには `primary`、 `secondary`、 `tertiary` が含まれます |
| サイズ | string | チェックボックスのサイズ。 オプションは2つ`small` と `large` |
| 形状 | string | チェックボックスの形状。 オプションは2つ`squared` と `rounded` |
| サイズ | string | チェックボックスのサイズ。 チェックボックスのサイズ。 オプションは2つ`small` と `large` |
| 形状 | string | チェックボックスの形状。 チェックボックスの形状。 オプションは2つ`squared` と `rounded` |
</Tab>
</Tabs>

View file

@ -33,7 +33,7 @@ export const MyComponent = () => {
| プロパティ | タイプ | 説明 | デフォルト |
| -------- | --------------------------------------- | --------------------------------------------------------------------- | ----- |
| バリアント | string | 配色のバリエーション。 オプションには `ダーク`、`ライト`、および `システム` が含まれています | ライト |
| バリアント | string | 配色のバリエーション。 配色のバリエーション。 オプションには `ダーク`、`ライト`、および `システム` が含まれています | ライト |
| selected | ブール型 | If `true`, displays a checkmark to indicate the selected color scheme | |
| 追加のプロパティ | `React.ComponentPropsWithoutRef<'div'>` | 標準の HTML `div` エレメントのプロパティ | |

View file

@ -42,15 +42,15 @@ export const MyComponent = () => {
</Tab>
<Tab title="Props">
| プロパティ | タイプ | 説明 |
| --------------- | ------ | ---------------------------------------------------------------------------------------------------------------- |
| disabled | ブール型 | `true` に設定されるとアイコンピッカーは無効になります |
| onChange | 機能 | ユーザーがアイコンを選択したときにトリガーされるコールバック関数。 ユーザーがアイコンを選択したときにトリガーされるコールバック関数。 それは `iconKey` と `Icon` プロパティを持つオブジェクトを受け取ります |
| selectedIconKey | string | 最初に選択されたアイコンのキー |
| onClickOutside | 機能 | ユーザーがドロップダウン外をクリックしたときにトリガーされるコールバック関数 |
| onClose | 機能 | ドロップダウンが閉じられたときにトリガーされるコールバック関数 |
| onOpen | 機能 | ドロップダウンが開かれたときにトリガーされるコールバック関数 |
| バリアント | string | クリック可能なアイコンのビジュアルスタイルバリアント。 オプションには `primary`、 `secondary`、 `tertiary` が含まれます |
| プロパティ | タイプ | 説明 |
| --------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| disabled | ブール型 | `true` に設定されるとアイコンピッカーは無効になります |
| onChange | 機能 | ユーザーがアイコンを選択したときにトリガーされるコールバック関数。 ユーザーがアイコンを選択したときにトリガーされるコールバック関数。 それは `iconKey` と `Icon` プロパティを持つオブジェクトを受け取ります ユーザーがアイコンを選択したときにトリガーされるコールバック関数。 それは `iconKey` と `Icon` プロパティを持つオブジェクトを受け取ります |
| selectedIconKey | string | 最初に選択されたアイコンのキー |
| onClickOutside | 機能 | ユーザーがドロップダウン外をクリックしたときにトリガーされるコールバック関数 |
| onClose | 機能 | ドロップダウンが閉じられたときにトリガーされるコールバック関数 |
| onOpen | 機能 | ドロップダウンが開かれたときにトリガーされるコールバック関数 |
| バリアント | string | クリック可能なアイコンのビジュアルスタイルバリアント。 オプションには `primary`、 `secondary`、 `tertiary` が含まれます |
</Tab>
</Tabs>

View file

@ -28,15 +28,15 @@ export const MyComponent = () => {
</Tab>
<Tab title="Props">
| プロパティ | タイプ | 説明 |
| ------------ | ------ | ---------------------------------------------------------- |
| 写真 | string | 画像ソースURL |
| onUpload | 機能 | 新しい画像がアップロードされたときに呼び出される関数。 パラメーターとして `File` オブジェクトを受け取ります |
| onRemove | 機能 | ユーザーが削除ボタンをクリックしたときに呼び出される関数 |
| onAbort | 機能 | 画像のアップロード中に中止ボタンをクリックしたときに呼び出される関数 |
| isUploading | ブール型 | 画像が現在アップロード中であるかどうかを示します |
| errorMessage | string | 画像入力の下に表示されるオプションのエラーメッセージ |
| disabled | ブール型 | `true` の場合、入力全体が無効化され、ボタンをクリックできなくなります。 |
| プロパティ | タイプ | 説明 |
| ------------ | ------ | -------------------------------------------------------------------------------------- |
| 写真 | string | 画像ソースURL |
| onUpload | 機能 | 新しい画像がアップロードされたときに呼び出される関数。 新しい画像がアップロードされたときに呼び出される関数。 パラメーターとして `File` オブジェクトを受け取ります |
| onRemove | 機能 | ユーザーが削除ボタンをクリックしたときに呼び出される関数 |
| onAbort | 機能 | 画像のアップロード中に中止ボタンをクリックしたときに呼び出される関数 |
| isUploading | ブール型 | 画像が現在アップロード中であるかどうかを示します |
| errorMessage | string | 画像入力の下に表示されるオプションのエラーメッセージ |
| disabled | ブール型 | `true` の場合、入力全体が無効化され、ボタンをクリックできなくなります。 |
</Tab>
</Tabs>

View file

@ -44,17 +44,17 @@ export const MyComponent = () => {
</Tab>
<Tab title="Props">
| プロパティ | タイプ | 説明 |
| --------------- | ----------------- | ------------------------------------------------ |
| スタイル | `React.CSS` プロパティ | コンポーネントの追加インラインスタイル |
| className | string | 追加のスタイリング用のオプションのCSSクラス |
| checked | ブール型 | ラジオボタンが選択されているかどうかを示す |
| 値 | string | ラジオボタンに関連付けられたラベルまたはテキスト |
| onChange | 機能 | 選択したラジオボタンが変更されたときに呼ばれる関数 |
| onCheckedChange | 機能 | ラジオボタンの「checked」状態が変更されたときに呼び出される関数 |
| サイズ | string | ラジオボタンのサイズ。 オプションには、`large` と `small` があります |
| disabled | ブール型 | 「true」の場合、ラジオボタンは無効になり、クリックできなくなります |
| ラベルの位置 | string | ラジオボタンに対するラベルテキストの位置。 2 つのオプション:`left` と `right` |
| プロパティ | タイプ | 説明 |
| --------------- | ----------------- | --------------------------------------------------------------------------- |
| スタイル | `React.CSS` プロパティ | コンポーネントの追加インラインスタイル |
| className | string | 追加のスタイリング用のオプションのCSSクラス |
| checked | ブール型 | ラジオボタンが選択されているかどうかを示す |
| 値 | string | ラジオボタンに関連付けられたラベルまたはテキスト |
| onChange | 機能 | 選択したラジオボタンが変更されたときに呼ばれる関数 |
| onCheckedChange | 機能 | ラジオボタンの「checked」状態が変更されたときに呼び出される関数 |
| サイズ | string | ラジオボタンのサイズ。 オプションには、`large` と `small` があります オプションには、`large` と `small` があります |
| disabled | ブール型 | 「true」の場合、ラジオボタンは無効になり、クリックできなくなります |
| ラベルの位置 | string | ラジオボタンに対するラベルテキストの位置。 2 つのオプション:`left` と `right` 2 つのオプション:`left` と `right` |
</Tab>
</Tabs>

View file

@ -48,7 +48,7 @@ export const MyComponent = () => {
| ラベル | string | `選択` コンポーネントの目的を説明するラベル |
| onChange | 機能 | 選択された値が変更されたときに呼び出される機能 |
| オプション | array | Represents the options available for the `Selected` component. 各オブジェクトが `value`(一意の識別子)、`label`(一意の識別子)、およびオプションの `アイコン` を持つオブジェクトの配列です。 |
| 値 | string | 現在選択されている値を表します。 その `options` 配列の `value` プロパティのいずれかと一致する必要があります。 |
| 値 | string | 現在選択されている値を表します。 現在選択されている値を表します。 その `options` 配列の `value` プロパティのいずれかと一致する必要があります。 |
</Tab>
</Tabs>

View file

@ -50,16 +50,16 @@ export const MyComponent = () => {
<Tab title="Props">
| プロパティ | タイプ | 説明 |
| -------------- | ----------- | ------------------------------------------------------------------------------------- |
| className | string | 追加のスタイリングのためのオプション名 |
| ラベル | string | 入力のラベルを表します。 |
| onChange | 機能 | 入力値が変わるときに呼び出される関数 |
| 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 |
| 右アイコン | アイコンコンポーネント | 入力の右側に表示されるオプションのアイコンコンポーネント |
| プロパティ | タイプ | 説明 |
| -------------- | ----------- | --------------------------------------------------------------------------------------------------------------------------- |
| className | string | 追加のスタイリングのためのオプション名 |
| ラベル | string | 入力のラベルを表します。 |
| onChange | 機能 | 入力値が変わるときに呼び出される関数 |
| 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 |
| 右アイコン | アイコンコンポーネント | 入力の右側に表示されるオプションのアイコンコンポーネント |
コンポーネントは、他の HTML 入力要素のプロパティも受け入れます。

View file

@ -28,12 +28,12 @@ export const MyComponent = () => {
</Tab>
<Tab title="Props">
| プロパティ | タイプ | 説明 | デフォルト |
| -------- | ------ | --------------------------------------------------------- | ----- |
| 値 | ブール型 | トグルの現在の状態 | `偽` |
| onChange | 機能 | Callback function triggered when the toggle state changes | |
| カラー | string | Color of the toggle when it\ | 青色 |
| トグルサイズ | string | トグルのサイズは、高さと幅の両方に影響します。 オプションは2つ`small` と `medium` | 中 |
| プロパティ | タイプ | 説明 | デフォルト |
| -------- | ------ | --------------------------------------------------------------------------- | ----- |
| 値 | ブール型 | トグルの現在の状態 | `偽` |
| onChange | 機能 | Callback function triggered when the toggle state changes | |
| カラー | string | Color of the toggle when it\ | 青色 |
| トグルサイズ | string | トグルのサイズは、高さと幅の両方に影響します。 トグルのサイズは、高さと幅の両方に影響します。 オプションは2つ`small` と `medium` | 中 |
</Tab>
</Tabs>

View file

@ -35,10 +35,10 @@ export const MyComponent = () => {
</Tab>
<Tab title="Props">
| プロパティ | タイプ | 説明 |
| --------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| className | string | 追加のスタイリングのためのオプションクラス名 |
| リンク | array | 各オブジェクトはブレッドクラムリンクを表します。 各オブジェクトはブレッドクラムリンクを表します。 各オブジェクトには `children` プロパティ(リンクのテキストコンテンツ)とオプションの `href` プロパティリンクをクリックしたときに移動するURLが含まれています。 |
| プロパティ | タイプ | 説明 |
| --------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| className | string | 追加のスタイリングのためのオプションクラス名 |
| リンク | array | 各オブジェクトはブレッドクラムリンクを表します。 各オブジェクトはブレッドクラムリンクを表します。 各オブジェクトはブレッドクラムリンクを表します。 各オブジェクトには `children` プロパティ(リンクのテキストコンテンツ)とオプションの `href` プロパティリンクをクリックしたときに移動するURLが含まれています。 |
</Tab>
</Tabs>

View file

@ -157,12 +157,12 @@ export const MyComponent = () => {
</Tab>
<Tab title="Props">
| プロパティ | タイプ | 説明 |
| -------- | ----------------- | ---------------------------------------------------------------------- |
| href | string | リンクのターゲットURLまたはパス |
| children | `React.ReactNode` | リンク内に表示されるコンテンツ |
| タイプ | string | ソーシャルリンクの種類です。 ソーシャルリンクの種類です。 オプションには、`url`、`LinkedIn`、`Twitter`があります。 |
| onClick | 機能 | リンクがクリックされるとトリガーされるコールバック関数 |
| プロパティ | タイプ | 説明 |
| -------- | ----------------- | ------------------------------------------------------------------------------------------------------------------------------ |
| href | string | リンクのターゲットURLまたはパス |
| children | `React.ReactNode` | リンク内に表示されるコンテンツ |
| タイプ | string | ソーシャルリンクの種類です。 ソーシャルリンクの種類です。 オプションには、`url`、`LinkedIn`、`Twitter`があります。 ソーシャルリンクの種類です。 オプションには、`url`、`LinkedIn`、`Twitter`があります。 |
| onClick | 機能 | リンクがクリックされるとトリガーされるコールバック関数 |
</Tab>
</Tabs>

View file

@ -143,16 +143,16 @@ export const MyComponent = () => {
</Tab>
<Tab title="Props">
| プロパティ | タイプ | 説明 |
| -------------- | ----------- | ------------------------------------------------------------- |
| 左アイコン | アイコンコンポーネント | メニュー項目のテキストの前に表示されるオプションの左アイコン |
| アクセント | string | メニュー項目のアクセントカラー。 `default`、`placeholder`、および `danger` のいずれかです |
| アイコンボタン | array | メニュー項目に関連する追加のアイコンボタンを表すオブジェクトの配列 |
| ツールチップオープンフラグ | ブール型 | メニュー項目に関連するツールチップの表示状態を制御します |
| onClick | 機能 | リンクがクリックされるとトリガーされるコールバック関数 |
| テキスト | string | メニュー項目のテキスト内容 |
| isDragDisabled | ブール型 | ドラッグが無効かどうかを示します |
| className | string | 追加スタイル用のオプション名 |
| プロパティ | タイプ | 説明 |
| -------------- | ----------- | ---------------------------------------------------------------------------------------------------------- |
| 左アイコン | アイコンコンポーネント | メニュー項目のテキストの前に表示されるオプションの左アイコン |
| アクセント | string | メニュー項目のアクセントカラー。 `default`、`placeholder`、および `danger` のいずれかです `default`、`placeholder`、および `danger` のいずれかです |
| アイコンボタン | array | メニュー項目に関連する追加のアイコンボタンを表すオブジェクトの配列 |
| ツールチップオープンフラグ | ブール型 | メニュー項目に関連するツールチップの表示状態を制御します |
| onClick | 機能 | リンクがクリックされるとトリガーされるコールバック関数 |
| テキスト | string | メニュー項目のテキスト内容 |
| isDragDisabled | ブール型 | ドラッグが無効かどうかを示します |
| className | string | 追加スタイル用のオプション名 |
</Tab>
</Tabs>
@ -403,15 +403,15 @@ export const MyComponent = () => {
</Tab>
<Tab title="Props">
| プロパティ | タイプ | 説明 |
| --------- | ------ | ---------------------------------------------------------------------------------------------------------------------- |
| カラー | string | メニュー項目にサンプルとして表示されるテーマカラー。 選択肢には、`green`、`turquoise`、`sky`、`blue`、`purple`、`pink`、`red`、`orange`、`yellow`、`gray`があります。 |
| selected | ブール型 | メニュー項目が選択されている(チェックされている)かどうかを示します |
| disabled | ブール型 | メニュー項目が無効かどうかを示します |
| ホバー | ブール型 | メニュー項目が現在ホバーされているかどうかを示します |
| バリアント | string | 色サンプルのバリアント。 `default` または `pipeline` のいずれかです。 |
| onClick | 機能 | メニュー項目がクリックされたときにトリガーされるコールバック関数 |
| className | string | 追加スタイル用のオプション名 |
| プロパティ | タイプ | 説明 |
| --------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| カラー | string | メニュー項目にサンプルとして表示されるテーマカラー。 選択肢には、`green`、`turquoise`、`sky`、`blue`、`purple`、`pink`、`red`、`orange`、`yellow`、`gray`があります。 選択肢には、`green`、`turquoise`、`sky`、`blue`、`purple`、`pink`、`red`、`orange`、`yellow`、`gray`があります。 |
| selected | ブール型 | メニュー項目が選択されている(チェックされている)かどうかを示します |
| disabled | ブール型 | メニュー項目が無効かどうかを示します |
| ホバー | ブール型 | メニュー項目が現在ホバーされているかどうかを示します |
| バリアント | string | 色サンプルのバリアント。 色サンプルのバリアント。 `default` または `pipeline` のいずれかです。 |
| onClick | 機能 | メニュー項目がクリックされたときにトリガーされるコールバック関数 |
| className | string | 追加スタイル用のオプション名 |
</Tab>
</Tabs>

View file

@ -43,10 +43,10 @@ export const MyComponent = () => {
</Tab>
<Tab title="Props">
| プロパティ | タイプ | 説明 |
| -------------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------- |
| activeItemName | string | 現在アクティブなナビゲーション項目の名前 |
| アイテム | array | 各ナビゲーションアイテムを表すオブジェクトの配列。 各ナビゲーションアイテムを表すオブジェクトの配列。 各オブジェクトには、アイテムの `name`、表示する `Icon` コンポーネント、およびアイテムがクリックされたときに呼び出される `onClick` 関数が含まれています。 |
| プロパティ | タイプ | 説明 |
| -------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| activeItemName | string | 現在アクティブなナビゲーション項目の名前 |
| アイテム | array | 各ナビゲーションアイテムを表すオブジェクトの配列。 各ナビゲーションアイテムを表すオブジェクトの配列。 各ナビゲーションアイテムを表すオブジェクトの配列。 各オブジェクトには、アイテムの `name`、表示する `Icon` コンポーネント、およびアイテムがクリックされたときに呼び出される `onClick` 関数が含まれています。 |
</Tab>
</Tabs>

View file

@ -7,7 +7,7 @@ image: /images/user-guide/api/api.png
<img src="/images/user-guide/api/api.png" alt="Header" />
</Frame>
アクティブなステップをハイライトして、一連の番号付きステップの進行状況を表示します。 各 `Step` コンポーネントによって表されるステップを含むコンテナをレンダリングします。 各 `Step` コンポーネントによって表されるステップを含むコンテナをレンダリングします。
アクティブなステップをハイライトして、一連の番号付きステップの進行状況を表示します。 各 `Step` コンポーネントによって表されるステップを含むコンテナをレンダリングします。 各 `Step` コンポーネントによって表されるステップを含むコンテナをレンダリングします。 各 `Step` コンポーネントによって表されるステップを含むコンテナをレンダリングします。
<Tabs>
<Tab title="Usage">

View file

@ -21,7 +21,7 @@ Twentyは、接続されたメールボックスからのメールを関連す
- **人物**:特定の連絡先との交換されたすべてのメールを表示
- **会社**:会社およびその従業員に関連するすべてのメールを表示
- **機会**:この機会にリンクされた会社に関連するメールスレッドにアクセス。 この機会での個人のメールスレッドはまだ表示されません。 この機会での個人のメールスレッドはまだ表示されません。
- **機会**:この機会にリンクされた会社に関連するメールスレッドにアクセス。 この機会での個人のメールスレッドはまだ表示されません。 この機会での個人のメールスレッドはまだ表示されません。 この機会での個人のメールスレッドはまだ表示されません。
### メールスレッドの表示

View file

@ -11,7 +11,7 @@ import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
<img src="/images/user-guide/notes/notes_header.png" alt="Header" />
</Frame>
強力な**Notes**機能を使用して、レコードにリンクされたノートを効率的に管理しましょう。 このガイドでは、レコードページ内でノートを作成、フォーマット、コメント、および削除する方法をスムーズに説明します。
強力な**Notes**機能を使用して、レコードにリンクされたノートを効率的に管理しましょう。 強力な**Notes**機能を使用して、レコードにリンクされたノートを効率的に管理しましょう。 このガイドでは、レコードページ内でノートを作成、フォーマット、コメント、および削除する方法をスムーズに説明します。
## 一般的な使用例
@ -44,7 +44,7 @@ import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
### リレーションフィールド
ノートには、単一のノートを異なるオブジェクトの複数のレコードに添付できる**関係**フィールドが含まれています。 例えば、1つの会議ートを以下にリンクできます:
ノートには、単一のノートを異なるオブジェクトの複数のレコードに添付できる**関係**フィールドが含まれています。 例えば、1つの会議ートを以下にリンクできます: 例えば、1つの会議ートを以下にリンクできます:
- 会った人
- 彼らが代表する会社
@ -55,11 +55,11 @@ This morph many relationship ensures important information is accessible from al
### ユーザータグ付け
**注**: ノート内でのユーザータグ付けは現在サポートされていません。 この機能は2026年に計画されており、チームメンバーに言及し通知をトリガーできるようになります。
**注**: ノート内でのユーザータグ付けは現在サポートされていません。 この機能は2026年に計画されており、チームメンバーに言及し通知をトリガーできるようになります。 この機能は2026年に計画されており、チームメンバーに言及し通知をトリガーできるようになります。
## ノートの作成
システム内でノートを作成することは直感的で動的です。 以下の方法を取ることができます。
システム内でノートを作成することは直感的で動的です。 以下の方法を取ることができます。 以下の方法を取ることができます。
- ノートビューに移動し、新しいレコードを作成します。
- `レコードページ`に移動し、ノートタブを選択して`新しいノート`ボタンを押します。
@ -76,7 +76,7 @@ This morph many relationship ensures important information is accessible from al
テキストをハイライトして、太字、斜体、アラインメントオプションなどのフォーマットオプションを表示します。
また、各ブロックの背景色とテキスト色を変更してノート内の重要な情報を強調表示できます。 フォーマットしたいブロックにカーソルを合わせて、`⋮`アイコンをクリックします。 `色`をクリックして、テキストと背景のすべてのカラオプションを開きます。
また、各ブロックの背景色とテキスト色を変更してノート内の重要な情報を強調表示できます。 フォーマットしたいブロックにカーソルを合わせて、`⋮`アイコンをクリックします。 `色`をクリックして、テキストと背景のすべてのカラオプションを開きます。 フォーマットしたいブロックにカーソルを合わせて、`⋮`アイコンをクリックします。 `色`をクリックして、テキストと背景のすべてのカラオプションを開きます。
<VimeoEmbed videoId="927896302" title="Format note content" />
@ -95,5 +95,5 @@ This morph many relationship ensures important information is accessible from al
3. 右下隅にある`オプション`ボタンを使用して、削除を含む追加アクションを呼び出します。
4. 確認モーダルが表示されたら、削除を完了します。
もう1つの方法は、通常のレコードのようにートビューからートを削除することです。 ノートの削除は永久的で取り消しのできないことに注意してください。
もう1つの方法は、通常のレコードのようにートビューからートを削除することです。 ノートの削除は永久的で取り消しのできないことに注意してください。 ノートの削除は永久的で取り消しのできないことに注意してください。

View file

@ -11,7 +11,7 @@ import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
<img src="/images/user-guide/tasks/tasks_header.png" alt="Header" />
</Frame>
**タスク** 機能を使用して、ワークスペース内のすべてのタスクを管理します。 このガイドでは、タスクの作成と管理方法、今後と完了済みのタスクの切り替え、タスクの詳細の編集、その他の機能を紹介します。
**タスク** 機能を使用して、ワークスペース内のすべてのタスクを管理します。 このガイドでは、タスクの作成と管理方法、今後と完了済みのタスクの切り替え、タスクの詳細の編集、その他の機能を紹介します。 このガイドでは、タスクの作成と管理方法、今後と完了済みのタスクの切り替え、タスクの詳細の編集、その他の機能を紹介します。
## 一般的な使用例
@ -50,7 +50,7 @@ import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
### リレーションフィールド
タスクには、異なるオブジェクト間で1つのタスクを複数のレコードに添付できる「リレーション」フィールドが含まれています。 例えば、1つのフォローアップタスクを次のようにリンクできます。
タスクには、異なるオブジェクト間で1つのタスクを複数のレコードに添付できる「リレーション」フィールドが含まれています。 例えば、1つのフォローアップタスクを次のようにリンクできます。 例えば、1つのフォローアップタスクを次のようにリンクできます。
- 連絡が必要な人物
- 彼らが代表する会社
@ -61,11 +61,11 @@ import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
### ユーザータグ付け
**注釈**: 現在、タスク内でのユーザータグ付けは利用できません。 この機能は2026年に予定されており、チームメンバーへのメンションと、タスクの割り当てや更新時に通知をトリガーすることができるようになります。
**注釈**: 現在、タスク内でのユーザータグ付けは利用できません。 この機能は2026年に予定されており、チームメンバーへのメンションと、タスクの割り当てや更新時に通知をトリガーすることができるようになります。 この機能は2026年に予定されており、チームメンバーへのメンションと、タスクの割り当てや更新時に通知をトリガーすることができるようになります。
## タスクの作成
Twentyでのタスクの作成はシームレスです。 以下の方法を取ることができます。
Twentyでのタスクの作成はシームレスです。 以下の方法を取ることができます。 以下の方法を取ることができます。
- `タスク` タブに移動し、ページの右上にある `+` ボタンを押します。
- `cmd/ctrl + k` を押して検索機能を使い、クイックアクションのリストから「タスクを作成」を選択します。
@ -79,7 +79,7 @@ Twentyでのタスクの作成はシームレスです。 以下の方法を取
## タスクの表示
**タスク** ページでは、ワークスペース内のすべてのタスクを表示します。 ここで、以下のことができます。
**タスク** ページでは、ワークスペース内のすべてのタスクを表示します。 ここで、以下のことができます。 ここで、以下のことができます。
- 画面の右上にある自分の名前が表示されているボタンをクリックして、特定のユーザーに割り当てられたタスクをフィルターします。
- 今後のタスク(`To do`)と完了済みのタスク(`Done`)を切り替えて、注意が必要なことと達成したことを確認します。
@ -90,7 +90,7 @@ Twentyでのタスクの作成はシームレスです。 以下の方法を取
## タスクの編集
タスクを編集するには、そのカードをクリックします。 これにより、以下の機能を提供するサイドパネルが開きます。
タスクを編集するには、そのカードをクリックします。 これにより、以下の機能を提供するサイドパネルが開きます。 これにより、以下の機能を提供するサイドパネルが開きます。
- **担当者と期限**: 担当者を更新したり、期限を編集したりします。
- **コメント**: チームメンバーと一緒にタスクにコメントを追加してアップデートやフィードバックを提供することができます。

View file

@ -29,7 +29,7 @@ Twentyを使用し始めると、連絡先と会社をシステムに取り込
**ウェブサイトフォーム**ウェブサイトで誰かがフォームを記入すると、その情報をTwentyに自動的に送信するように設定できます。 フォームの送信がウェブフックをトリガーし、Twentyでワークフローを起動し、手動作業なしで新規連絡先レコードを作成します。 フォームの送信がウェブフックをトリガーし、Twentyでワークフローを起動し、手動作業なしで新規連絡先レコードを作成します。
**他のシステムとの連携**他のビジネスツールを使用している場合、API呼び出しとワークフローを使ってTwentyに接続できます。 これにより、システム間でデータを自動的に同期できます。例えば、請求システムから新しい顧客を、またはマーケティングプラットフォームからリードを取り込むことができます。 これにより、システム間でデータを自動的に同期できます。例えば、請求システムから新しい顧客を、またはマーケティングプラットフォームからリードを取り込むことができます。
**他のシステムとの連携**他のビジネスツールを使用している場合、API呼び出しとワークフローを使ってTwentyに接続できます。 これにより、システム間でデータを自動的に同期できます。例えば、請求システムから新しい顧客を、またはマーケティングプラットフォームからリードを取り込むことができます。 これにより、システム間でデータを自動的に同期できます。例えば、請求システムから新しい顧客を、またはマーケティングプラットフォームからリードを取り込むことができます。 これにより、システム間でデータを自動的に同期できます。例えば、請求システムから新しい顧客を、またはマーケティングプラットフォームからリードを取り込むことができます。
こうした自動データフローの設定方法の詳細は、[ワークフロー](/l/ja/user-guide/workflows/getting-started-workflows) セクションをご覧ください。
@ -49,11 +49,11 @@ Twentyを使用し始めると、連絡先と会社をシステムに取り込
Twentyは自動的に一意性を強制し、データを整理します。 それぞれの人のメールアドレスは一意の識別子として機能します。同じメールを持つ2人の人がいることはできません。 同様に、会社のドメインも一意であるため、誤って重複する会社を作成することはありません。
ビジネスニーズに応じて他のフィールドを一意にする必要がある場合(電話番号やリファレンスコードなど)、データモデルでこれを設定できます。 お使いのビジネスニーズに応じた追加の一意性制約を設定する方法は、[データモデル](/l/ja/user-guide/data-model/customize-your-data-model) セクションをご覧ください。 お使いのビジネスニーズに応じた追加の一意性制約を設定する方法は、[データモデル](/l/ja/user-guide/data-model/customize-your-data-model) セクションをご覧ください。
ビジネスニーズに応じて他のフィールドを一意にする必要がある場合(電話番号やリファレンスコードなど)、データモデルでこれを設定できます。 お使いのビジネスニーズに応じた追加の一意性制約を設定する方法は、[データモデル](/l/ja/user-guide/data-model/customize-your-data-model) セクションをご覧ください。 お使いのビジネスニーズに応じた追加の一意性制約を設定する方法は、[データモデル](/l/ja/user-guide/data-model/customize-your-data-model) セクションをご覧ください。 お使いのビジネスニーズに応じた追加の一意性制約を設定する方法は、[データモデル](/l/ja/user-guide/data-model/customize-your-data-model) セクションをご覧ください。
### 重複の処理
時々、重複するレコードを持つことになります。 時々、重複するレコードを持つことになります。 Twentyには、`People` と `Companies` のマージ機能があります。情報を失うことなく重複したレコードを組み合わせて、データベースをクリーンに保つことができます。
時々、重複するレコードを持つことになります。 時々、重複するレコードを持つことになります。 時々、重複するレコードを持つことになります。 Twentyには、`People` と `Companies` のマージ機能があります。情報を失うことなく重複したレコードを組み合わせて、データベースをクリーンに保つことができます。
レコードをマージするには、2つのレコードを選択し、Macの場合は `Cmd+K`、Windowsの場合は `Ctrl+K` のコマンドメニューを開き、`Merge Records` をクリックしてください。
@ -63,7 +63,7 @@ Twentyは自動的に一意性を強制し、データを整理します。 そ
### ビューのカスタマイズ
異なるチームメンバーが異なる情報を見る必要があるかもしれません。 異なるチームメンバーが異なる情報を見る必要があるかもしれません。 異なる目的のために異なる列を示すカスタムビューを作成できます。例えば、営業チームは取引ステージを見る必要がある一方、サポートチームは連絡先の詳細に焦点を当てることがあります。 詳細については、[ビュー管理](/l/ja/user-guide/crm-essentials/view-management) 記事をご覧ください。 詳細については、[ビュー管理](/l/ja/user-guide/crm-essentials/view-management) 記事をご覧ください。
異なるチームメンバーが異なる情報を見る必要があるかもしれません。 異なるチームメンバーが異なる情報を見る必要があるかもしれません。 異なるチームメンバーが異なる情報を見る必要があるかもしれません。 異なる目的のために異なる列を示すカスタムビューを作成できます。例えば、営業チームは取引ステージを見る必要がある一方、サポートチームは連絡先の詳細に焦点を当てることがあります。 詳細については、[ビュー管理](/l/ja/user-guide/crm-essentials/view-management) 記事をご覧ください。 詳細については、[ビュー管理](/l/ja/user-guide/crm-essentials/view-management) 記事をご覧ください。 詳細については、[ビュー管理](/l/ja/user-guide/crm-essentials/view-management) 記事をご覧ください。
## レコードを扱う
@ -80,7 +80,7 @@ Twentyは自動的に一意性を強制し、データを整理します。 そ
- **メール**: この連絡先とのメールスレッド(チームがメールボックスを接続している場合)
- **カレンダー**: このコンタクトとのミーティングとアポイントメント
メールとカレンダーのタブは特に強力です: チーム内の誰かがTwentyにメールボックスを接続した場合、すべてのメール交換とミーティングを自動的に表示します。 この設定方法については、[メールとカレンダー](/l/ja/user-guide/collaboration/emails-and-calendars)ガイドで詳しく学べます。 この設定方法については、[メールとカレンダー](/l/ja/user-guide/collaboration/emails-and-calendars)ガイドで詳しく学べます。
メールとカレンダーのタブは特に強力です: チーム内の誰かがTwentyにメールボックスを接続した場合、すべてのメール交換とミーティングを自動的に表示します。 この設定方法については、[メールとカレンダー](/l/ja/user-guide/collaboration/emails-and-calendars)ガイドで詳しく学べます。 この設定方法については、[メールとカレンダー](/l/ja/user-guide/collaboration/emails-and-calendars)ガイドで詳しく学べます。 この設定方法については、[メールとカレンダー](/l/ja/user-guide/collaboration/emails-and-calendars)ガイドで詳しく学べます。
### 必要なフィールドを追加する
@ -88,8 +88,8 @@ Twentyは自動的に一意性を強制し、データを整理します。 そ
## 削除されたレコードの管理
Twentyでレコードを削除すると、それは永遠に消えるわけではありません。 レコードは「ソフト削除」され、非表示になりますが、必要に応じて復元可能です。 レコードは「ソフト削除」され、非表示になりますが、必要に応じて復元可能です。
Twentyでレコードを削除すると、それは永遠に消えるわけではありません。 レコードは「ソフト削除」され、非表示になりますが、必要に応じて復元可能です。 レコードは「ソフト削除」され、非表示になりますが、必要に応じて復元可能です。 レコードは「ソフト削除」され、非表示になりますが、必要に応じて復元可能です。
削除されたレコードにアクセスするには、Macではコマンドメニュー `Cmd+K` を、Windowsでは `Ctrl+K` を開いた後、`削除されたレコードを表示` をクリックします。 そこから、レコードを復元するか、必要ないと確信した場合は完全に削除することができます。 そこから、レコードを復元するか、必要ないと確信した場合は完全に削除することができます。
削除されたレコードにアクセスするには、Macではコマンドメニュー `Cmd+K` を、Windowsでは `Ctrl+K` を開いた後、`削除されたレコードを表示` をクリックします。 そこから、レコードを復元するか、必要ないと確信した場合は完全に削除することができます。 そこから、レコードを復元するか、必要ないと確信した場合は完全に削除することができます。 そこから、レコードを復元するか、必要ないと確信した場合は完全に削除することができます。
このセーフティネットにより、重要な情報を誤って失うことを心配せずにデータベースを整理できます。

View file

@ -13,17 +13,17 @@ import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
## パイプラインの理解
販売パイプラインは、最初の接触から成約に至るまでの機会を追跡します。 各段階は販売プロセスのステップを表し、機会は成約に向かって進行するにつれてこれらの段階を通過します。
販売パイプラインは、最初の接触から成約に至るまでの機会を追跡します。 各段階は販売プロセスのステップを表し、機会は成約に向かって進行するにつれてこれらの段階を通過します。 各段階は販売プロセスのステップを表し、機会は成約に向かって進行するにつれてこれらの段階を通過します。
Twentyには、見込み客選定、予備調査、提案、交渉、成約といった標準的な販売段階が含まれています。 これらの段階は特定の販売プロセスに合わせてカスタマイズできます。
## カンバンビューでの作業
カンバンビューでは、各列が段階を表し、各カードが機会を表す形でパイプラインを視覚的にマップアウトします。 各カードには取り引き額、成約日、担当者などの重要情報が表示されます。 詳細情報については、カードをクリックして、メモ、タスク、会議、メール履歴を含む全体の機会記録を開いてください。
カンバンビューでは、各列が段階を表し、各カードが機会を表す形でパイプラインを視覚的にマップアウトします。 各カードには取り引き額、成約日、担当者などの重要情報が表示されます。 詳細情報については、カードをクリックして、メモ、タスク、会議、メール履歴を含む全体の機会記録を開いてください。 各カードには取り引き額、成約日、担当者などの重要情報が表示されます。 詳細情報については、カードをクリックして、メモ、タスク、会議、メール履歴を含む全体の機会記録を開いてください。
### 機会をパイプラインで進行させる
各機会は販売プロセスの進行に合わせてドラッグアンドドロップで段階間を移動させることができます。 カードをクリックしたまま次の段階に移動させてください。
各機会は販売プロセスの進行に合わせてドラッグアンドドロップで段階間を移動させることができます。 カードをクリックしたまま次の段階に移動させてください。 カードをクリックしたまま次の段階に移動させてください。
<VimeoEmbed videoId="927888627" title="Video demonstration" />
@ -45,7 +45,7 @@ To remove a stage, hover the stage name or the `⋮` icon, click `Edit from sett
### カードのカスタマイズ
カンバンボードを構成し、いくつかのフィールドを表示または隠すことができます。 フィールドを隠すには、右上の `Options` をクリックし、次に `Fields` をクリックしてオプションのリストを表示します。 隠したいフィールドにカーソルを合わせ、`-` ボタンを表示させます。 それをクリックしてフィールドを隠します。
カンバンボードを構成し、いくつかのフィールドを表示または隠すことができます。 カンバンボードを構成し、いくつかのフィールドを表示または隠すことができます。 フィールドを隠すには、右上の `Options` をクリックし、次に `Fields` をクリックしてオプションのリストを表示します。 隠したいフィールドにカーソルを合わせ、`-` ボタンを表示させます。 それをクリックしてフィールドを隠します。 隠したいフィールドにカーソルを合わせ、`-` ボタンを表示させます。 それをクリックしてフィールドを隠します。
フィールドの順序を並べ替える場合は、フィールド名を押し続けて、希望の場所にドラッグします。
@ -53,7 +53,7 @@ To remove a stage, hover the stage name or the `⋮` icon, click `Edit from sett
### コンパクトビュー
すべてのフィールドを隠し、一目で全ての機会の概要をつかむこともできます。 そのためには、右上の `Options` をクリックし、カンバンビューでレイアウトを選択した後、`コンパクトビュー` のトグルをオンにしてください。
すべてのフィールドを隠し、一目で全ての機会の概要をつかむこともできます。 そのためには、右上の `Options` をクリックし、カンバンビューでレイアウトを選択した後、`コンパクトビュー` のトグルをオンにしてください。 そのためには、右上の `Options` をクリックし、カンバンビューでレイアウトを選択した後、`コンパクトビュー` のトグルをオンにしてください。
<img src="/images/user-guide/kanban-views/compact-view.png" style={{width:'100%'}}/>
@ -69,5 +69,5 @@ Use [Workflows](/l/ja/user-guide/workflows/getting-started-workflows) to automat
### 複数のパイプライン
異なる事業ライン、市場セグメント、または専門の販売チーム向けに新しいビューを作成することで、異なるパイプラインを作成できます。 各ビューは、特定のフィルターや段階を用いた異なる機会を表示できます。 ビュー管理ガイドでそれらのビューの作成方法を学びます。
異なる事業ライン、市場セグメント、または専門の販売チーム向けに新しいビューを作成することで、異なるパイプラインを作成できます。 各ビューは、特定のフィルターや段階を用いた異なる機会を表示できます。 ビュー管理ガイドでそれらのビューの作成方法を学びます。 各ビューは、特定のフィルターや段階を用いた異なる機会を表示できます。 ビュー管理ガイドでそれらのビューの作成方法を学びます。

View file

@ -13,4 +13,4 @@ sectionInfo: "リード、販売、顧客を管理するための基本的な CR
GTM チームは、リードスコアリング、データエンリッチメント、ラウンドロビン、テリトリー割り当て、自動リマインダー、メールシーケンスなどの高度な販売機能をしばしば必要とします。 これらは Twenty に組み込まれた機能ではありませんが、柔軟なワークフローシステムを使用して、すべてを特定のニーズに合わせて設定および調整することができます。
これらの自動化をステップバイステップで構築する方法については、[ワークフローセクション](/l/ja/user-guide/workflows/getting-started-workflows)をご覧ください。 詳細例については、[内部自動化](/l/ja/user-guide/workflows/internal-automations) および [外部ツール統合](/l/ja/user-guide/workflows/external-tool-integration) ガイドをご覧ください。 詳細例については、[内部自動化](/l/ja/user-guide/workflows/internal-automations) および [外部ツール統合](/l/ja/user-guide/workflows/external-tool-integration) ガイドをご覧ください。
これらの自動化をステップバイステップで構築する方法については、[ワークフローセクション](/l/ja/user-guide/workflows/getting-started-workflows)をご覧ください。 詳細例については、[内部自動化](/l/ja/user-guide/workflows/internal-automations) および [外部ツール統合](/l/ja/user-guide/workflows/external-tool-integration) ガイドをご覧ください。 詳細例については、[内部自動化](/l/ja/user-guide/workflows/internal-automations) および [外部ツール統合](/l/ja/user-guide/workflows/external-tool-integration) ガイドをご覧ください。 詳細例については、[内部自動化](/l/ja/user-guide/workflows/internal-automations) および [外部ツール統合](/l/ja/user-guide/workflows/external-tool-integration) ガイドをご覧ください。

View file

@ -13,11 +13,11 @@ import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
## レイアウトオプション
データを表示するための3つの異なるレイアウトがあり、それぞれ異なる目的に適しています。 各種レコードタイプ用にページの外観をカスタマイズするカスタムレイアウトは、2025年12月にリリースされます。
データを表示するための3つの異なるレイアウトがあり、それぞれ異なる目的に適しています。 データを表示するための3つの異なるレイアウトがあり、それぞれ異なる目的に適しています。 各種レコードタイプ用にページの外観をカスタマイズするカスタムレイアウトは、2025年12月にリリースされます。
### デフォルトビュー
各オブジェクトには、フィルタリング、並べ替え、削除ができないデフォルトビューが付属しています。 It's named after the object's plural name, such as`All Companies`,`All People`, `All Opportunities`.
各オブジェクトには、フィルタリング、並べ替え、削除ができないデフォルトビューが付属しています。 各オブジェクトには、フィルタリング、並べ替え、削除ができないデフォルトビューが付属しています。 It's named after the object's plural name, such as`All Companies`,`All People`, `All Opportunities`.
<img src="/images/user-guide/views/default-view.png" style={{width:'100%'}}/>
### リストレイアウト
@ -44,13 +44,15 @@ Macでは`Cmd+K`、Windowsでは`Ctrl+K`を押してコマンドメニューを
### ビュードロップダウンメニューの使用
ビューのドロップダウンメニュー(左上)をクリックし、一番下の`ビューを追加`をクリックします。 From this menu you can:
ビューのドロップダウンメニュー(左上)をクリックし、一番下の`ビューを追加`をクリックします。 From this menu you can: From this menu you can:
- ビュー用のアイコンと名前を選択する
- レイアウトタイプの選択(リストまたはカンバン)
<Warning>
重要:まずリストレイアウトを選択してからグループ別を追加する必要があります。 そこから直接リストグループ別を作成することはできません。
そこから直接リストグループ別を作成することはできません。
</Warning>
- For Kanban views, select which select field to use as column headers
@ -64,17 +66,17 @@ When you modify the sorting and filtering of an existing view, a `Save as new vi
## ビューをアクション可能にする
以下のガイダンスは、ビューの列のカスタマイズ方法を示しています。 すべての列を保持することは推奨されません:ビューを簡単にし、特定の使用ケースに関連する列のみを表示し、並べ替え条件を追加することで、アクション可能にすることができます。
以下のガイダンスは、ビューの列のカスタマイズ方法を示しています。 以下のガイダンスは、ビューの列のカスタマイズ方法を示しています。 すべての列を保持することは推奨されません:ビューを簡単にし、特定の使用ケースに関連する列のみを表示し、並べ替え条件を追加することで、アクション可能にすることができます。
## ビューのカスタマイズ
すべてのレイアウトは同じカスタマイズオプションをサポートしています:並べ替え、フィルタリング、フィールド選択。 一時的な変更を素早く行うには、カラム名を直接クリックするか、より包括的な編集には`オプションメニュー`を使用してください。
すべてのレイアウトは同じカスタマイズオプションをサポートしています:並べ替え、フィルタリング、フィールド選択。 一時的な変更を素早く行うには、カラム名を直接クリックするか、より包括的な編集には`オプションメニュー`を使用してください。 表示するフィールドを選択し、並べ替えることができます。 素早い変更には、カラム名を直接クリックしてください。 For multiple edits, use `Options Menu → Fields` where you can:
### クイックアクションとオプションメニュー
**一時的な変更に対して**:列見出しをクリックして並べ替えたり、`左へ移動`, `右へ移動`ボタンを使用したりします。
**複数の編集に対して**:複数の変更を一度に行いたい場合は、オプションメニュー(右上)を使用してください。 このメニューでアクセスできるもの:
**複数の編集に対して**:複数の変更を一度に行いたい場合は、オプションメニュー(右上)を使用してください。 このメニューでアクセスできるもの: このメニューでアクセスできるもの:
- **レイアウト選択**(リスト、リストグループ別、カンバン)
- **グループ化オプション**(リストグループ別レイアウトに対して)
@ -82,7 +84,7 @@ When you modify the sorting and filtering of an existing view, a `Save as new vi
### データのフィルタリング
フィルターを適用して、基準に一致するレコードのみを表示できます。 ツールバーで`フィルター`をクリックし、フィールドを選択して、条件を選び、値を設定します。 複数の条件に基づく高度なフィルタリングのために複数のフィルターを追加することができます。
フィルターを適用して、基準に一致するレコードのみを表示できます。 ツールバーで`フィルター`をクリックし、フィールドを選択して、条件を選び、値を設定します。 複数の条件に基づく高度なフィルタリングのために複数のフィルターを追加することができます。 ツールバーで`フィルター`をクリックし、フィールドを選択して、条件を選び、値を設定します。 複数の条件に基づく高度なフィルタリングのために複数のフィルターを追加することができます。
<VimeoEmbed videoId="926282262" title="Video demonstration" />
@ -104,7 +106,7 @@ When you modify the sorting and filtering of an existing view, a `Save as new vi
### ビュードロップダウンメニューの機能
ビュードロップダウンメニュー(左上)はビュー管理の中心です。 From here you can:
ビュードロップダウンメニュー(左上)はビュー管理の中心です。 From here you can: From here you can:
- **Edit view names and icons**: Click the three dots next to any view
- **Reorder views**: Drag and drop views to organize them by priority
@ -112,10 +114,10 @@ When you modify the sorting and filtering of an existing view, a `Save as new vi
### Editing and Deleting Views
ビューを変更または削除するには、ビュードロップダウンメニューを開き、変更したいビューにホバーします。 Click the three dots that appear to access edit and delete options.
ビューを変更または削除するには、ビュードロップダウンメニューを開き、変更したいビューにホバーします。 ビューを変更または削除するには、ビュードロップダウンメニューを開き、変更したいビューにホバーします。 Click the three dots that appear to access edit and delete options.
### Favorites and Organization
お気に入りとして保存されたビューは、ナビゲーションの設定のすぐ下に表示され、最も重要なビューに即座にアクセスできます。 ビュードロップダウンメニューを使用して、ワークフローに最適な順序にビューをドラッグして配置します。
お気に入りとして保存されたビューは、ナビゲーションの設定のすぐ下に表示され、最も重要なビューに即座にアクセスできます。 ビュードロップダウンメニューを使用して、ワークフローに最適な順序にビューをドラッグして配置します。 ビュードロップダウンメニューを使用して、ワークフローに最適な順序にビューをドラッグして配置します。
For more advanced data organization, see our [Data Model section](/l/ja/user-guide/data-model/customize-your-data-model) to learn about customizing fields and objects.

View file

@ -17,9 +17,9 @@ import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
## Create record
必要に応じて無制限にレコードを追加できます。 レコードを追加するには、画面の右上やレコード名の列の上にある **+** ボタンをクリックします。
必要に応じて無制限にレコードを追加できます。 必要に応じて無制限にレコードを追加できます。 レコードを追加するには、画面の右上やレコード名の列の上にある **+** ボタンをクリックします。
レコード名を入力して`Enter`キーを押して保存します。 レコード名を編集するには、詳細ページで名前をクリックします。
レコード名を入力して`Enter`キーを押して保存します。 レコード名を入力して`Enter`キーを押して保存します。 レコード名を編集するには、詳細ページで名前をクリックします。
<VimeoEmbed videoId="927071691" title="Video demonstration" />

View file

@ -11,7 +11,7 @@ sectionInfo: 柔軟なデータモデルは、独自のビジネスプロセス
## データモデルとは何ですか?
データモデルは、CRMにおける情報がどのように整理されるかを定義する構造です。 それは、どのオブジェクトが存在するか(会社、人、機会など)、それらが持つプロパティ(フィールド)が何か、そしてそれらがどのように関連しているかを決定します。 それを顧客データの地図として考えることができます。 それは、どのオブジェクトが存在するか(会社、人、機会など)、それらが持つプロパティ(フィールド)が何か、そしてそれらがどのように関連しているかを決定します。 それを顧客データの地図として考えることができます。
データモデルは、CRMにおける情報がどのように整理されるかを定義する構造です。 それは、どのオブジェクトが存在するか(会社、人、機会など)、それらが持つプロパティ(フィールド)が何か、そしてそれらがどのように関連しているかを決定します。 それを顧客データの地図として考えることができます。 それは、どのオブジェクトが存在するか(会社、人、機会など)、それらが持つプロパティ(フィールド)が何か、そしてそれらがどのように関連しているかを決定します。 それを顧客データの地図として考えることができます。 それは、どのオブジェクトが存在するか(会社、人、機会など)、それらが持つプロパティ(フィールド)が何か、そしてそれらがどのように関連しているかを決定します。 それを顧客データの地図として考えることができます。
## なぜデータモデルをカスタマイズすべきですか?
@ -20,17 +20,17 @@ Twentyは、日常をサポートする最適なデータモデルを形成す
## データモデルを設計するためのヒント
データモデルを構築する方法は一つだけではありません。 以下のヒントを参考にして自分のモデルを構築してください。 以下のヒントを参考にして自分のモデルを構築してください。
データモデルを構築する方法は一つだけではありません。 以下のヒントを参考にして自分のモデルを構築してください。 以下のヒントを参考にして自分のモデルを構築してください。 以下のヒントを参考にして自分のモデルを構築してください。
**1. 主要なオブジェクトから始めましょう。**
あなたが扱う主要な概念を特定します(例:会社、人、機会)。 これら3つのオブジェクトは頻繁に使用されるため既に利用可能です。 しかし、必要な他のオブジェクトについても考えてみてください。
Stripeではオブジェクト`サブスクリプション`が、Airbnbではオブジェクト`旅行`が、スタートアップアクセラレーターではオブジェクト`バッチ`が必要でしょう。
**2. バリエーションにはフィールドを使い、新しいオブジェクトは使わないでください。**
既存のオブジェクトの特性に過ぎないもの(例:会社の「業種」や機会の「ステータス」)はフィールドにします。 カテゴリ、ラベル、属性にはフィールドが最適です。 カテゴリ、ラベル、属性にはフィールドが最適です。
既存のオブジェクトの特性に過ぎないもの(例:会社の「業種」や機会の「ステータス」)はフィールドにします。 カテゴリ、ラベル、属性にはフィールドが最適です。 カテゴリ、ラベル、属性にはフィールドが最適です。 カテゴリ、ラベル、属性にはフィールドが最適です。
**3. 単独で存在する場合には新しいオブジェクトを作成してください。**
概念が独自のライフサイクル、プロパティ、または関係を持つ場合、それは通常オブジェクトに値します。 例えば: 例えば:
概念が独自のライフサイクル、プロパティ、または関係を持つ場合、それは通常オブジェクトに値します。 例えば: 例えば: 例えば:
- **プロジェクト**:独自の期限、所有者、タスクを持つもの
- **サブスクリプション**:会社、製品、請求書を結ぶもの
@ -39,14 +39,15 @@ Twentyは、日常をサポートする最適なデータモデルを形成す
これらは単一のフィールドを超えており、独自のデータと関係を有しています。
**4. 関連するレコードの数が不定である場合にオブジェクトを作成します。**
リンクする回数が多く、その数が不明な場合、独自のオブジェクトとする方が良いです。 例えば、`製品1`や`製品2`などといったフィールドを作成する代わりに、`製品`オブジェクトを定義し、元のレコードに関連付けてください。 こうすることにより、1つでも100の製品があっても、モデルを変更せずにサポートできます。 例えば、`製品1`や`製品2`などといったフィールドを作成する代わりに、`製品`オブジェクトを定義し、元のレコードに関連付けてください。 こうすることにより、1つでも100の製品があっても、モデルを変更せずにサポートできます。
リンクする回数が多く、その数が不明な場合、独自のオブジェクトとする方が良いです。 例えば、`製品1`や`製品2`などといったフィールドを作成する代わりに、`製品`オブジェクトを定義し、元のレコードに関連付けてください。 こうすることにより、1つでも100の製品があっても、モデルを変更せずにサポートできます。 例えば、`製品1`や`製品2`などといったフィールドを作成する代わりに、`製品`オブジェクトを定義し、元のレコードに関連付けてください。 こうすることにより、1つでも100の製品があっても、モデルを変更せずにサポートできます。 例えば、`製品1`や`製品2`などといったフィールドを作成する代わりに、`製品`オブジェクトを定義し、元のレコードに関連付けてください。 こうすることにより、1つでも100の製品があっても、モデルを変更せずにサポートできます。
**5. まずはシンプルに保ちましょう。**
フィールドから始めます。 フィールドが多すぎたり、記録が繰り返されたり、関係が収まらないと感じたときに新しいオブジェクトに移行します。 まずはシンプルに保ちましょう。\*\*
フィールドから始めます。 フィールドが多すぎたり、記録が繰り返されたり、関係が収まらないと感じたときに新しいオブジェクトに移行します。 フィールドが多すぎたり、記録が繰り返されたり、関係が収まらないと感じたときに新しいオブジェクトに移行します。
### 人、会社、機会に関する特別な注意事項
- **`人`、`会社`、`機会`は、メールボックスやカレンダーから同期されたメールと会議にアクセスできる唯一のオブジェクトです。** できるだけこれらを使用することをお勧めします。 `人`や`会社`のカテゴリを作成する必要がある場合は、新しいオブジェクトよりもフィールドを使用してください。 `人`や`会社`のカテゴリを作成する必要がある場合は、新しいオブジェクトよりもフィールドを使用してください。
- **`人`、`会社`、`機会`は、メールボックスやカレンダーから同期されたメールと会議にアクセスできる唯一のオブジェクトです。** できるだけこれらを使用することをお勧めします。 `人`や`会社`のカテゴリを作成する必要がある場合は、新しいオブジェクトよりもフィールドを使用してください。 `人`や`会社`のカテゴリを作成する必要がある場合は、新しいオブジェクトよりもフィールドを使用してください。 `人`や`会社`のカテゴリを作成する必要がある場合は、新しいオブジェクトよりもフィールドを使用してください。
例:`人`オブジェクトは、見込み客やパートナーの両方に使用するのが最適で、「人物の種類」というフィールドを追加します。 例:`人`オブジェクトは、見込み客やパートナーの両方に使用するのが最適で、「人物の種類」というフィールドを追加します。 `パートナー`オブジェクトを作成しないでください。そうするとメールスレッドにアクセスできなくなります。 代わりに、`人`に以下のような異なるビューを作成します1つはパートナーを表示し、もう1つは見込み客を表示します。 代わりに、`人`に以下のような異なるビューを作成します1つはパートナーを表示し、もう1つは見込み客を表示します。
- 上記の点を考慮すると、すべての記録に適用されないフィールドがあってもかまいません。 例:`人`の下では、`人物タイプ = パートナー`のときにのみ関連する`紹介リンク`フィールドを追加することができます。 これで問題ありません: 必要のないビューからこのフィールドを非表示にすることができます。

Some files were not shown because too many files have changed in this diff Show more