Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c856e01e43 | ||
|
|
7da8450075 | ||
|
|
d444648cc0 | ||
|
|
ec57d3fe0f | ||
|
|
00209f7e2c | ||
|
|
b107020ad3 | ||
|
|
9f3f2e21d8 | ||
|
|
21472da38f | ||
|
|
bf1e0d0811 | ||
|
|
917a36821a | ||
|
|
66da296799 | ||
|
|
3bc887e12e | ||
|
|
d060c843d1 | ||
|
|
175df59c21 | ||
|
|
6ad581d178 | ||
|
|
712b1553bd | ||
|
|
cc1145c701 | ||
|
|
726b1373d9 | ||
|
|
783e57f5d8 | ||
|
|
163254baef | ||
|
|
aaa6511007 | ||
|
|
2a670520b9 | ||
|
|
10bd005021 | ||
|
|
0e25aeb5be | ||
|
|
e051cce24f | ||
|
|
bd03073b6d | ||
|
|
b3d8f8813f | ||
|
|
37d9828458 | ||
|
|
e16b6d6485 | ||
|
|
9626c7ce02 | ||
|
|
754de411fe | ||
|
|
530f74e28c | ||
|
|
5a46cf7bd3 | ||
|
|
7b10202c69 | ||
|
|
9e54a8082c | ||
|
|
1a13258302 | ||
|
|
c0ea049ad7 | ||
|
|
b33f86fbf5 | ||
|
|
88424611ec | ||
|
|
082400f751 | ||
|
|
a14b0ab6ca | ||
|
|
6e29f66ce8 | ||
|
|
9bcc2fc5d9 | ||
|
|
01e203a70b | ||
|
|
db9636bd9e | ||
|
|
36c2b0e23b | ||
|
|
66deb8be63 | ||
|
|
01d2269bd0 | ||
|
|
04502e5abb | ||
|
|
549c7a613b | ||
|
|
743b733e70 | ||
|
|
612f7c37a5 | ||
|
|
42108e0611 | ||
|
|
9a2dc45eb7 | ||
|
|
7de565f70c | ||
|
|
67074a7581 | ||
|
|
330737aa2e | ||
|
|
4cb64c6aa5 | ||
|
|
6b3ef404b0 | ||
|
|
6aaafb76b6 |
@@ -202,14 +202,6 @@ jobs:
|
||||
with:
|
||||
tag: scope:frontend
|
||||
tasks: ${{ matrix.task }}
|
||||
- name: Check for coverage threshold failure
|
||||
if: always() && steps.run-task.outcome == 'failure' && matrix.task == 'test'
|
||||
shell: bash
|
||||
run: |
|
||||
echo "::error::The test task failed. If no individual test is failing, this is likely a coverage threshold not being met."
|
||||
echo ""
|
||||
echo "To debug locally, run: npx nx run twenty-front:test:ci"
|
||||
exit 1
|
||||
- name: Save ${{ matrix.task }} cache
|
||||
uses: ./.github/actions/save-cache
|
||||
with:
|
||||
|
||||
@@ -0,0 +1,207 @@
|
||||
# Bug #4132:
|
||||
|
||||
## CRITICAL: Working Directory
|
||||
|
||||
Your working directory is `/work/worktrees/twentyhq-twenty-wt-3023`. This is your primary repository (`twentyhq/twenty`).
|
||||
All edits MUST be performed within this directory.
|
||||
|
||||
## Sentry Error Details (TOON format)
|
||||
|
||||
Error information from Sentry (TOON = compact CSV-like format for lists):
|
||||
|
||||
```
|
||||
event_info:
|
||||
title: Cannot query field 'builtHandlerPath' on type 'LogicFunction'. Did you mean 'sourceHandlerPath'?: Cannot query field 'builtHandlerPath' on type 'LogicFunction'. Did you mean 'sourceHandlerPath'?
|
||||
type: error
|
||||
platform: javascript
|
||||
culprit: /welcome
|
||||
release: {'id': 1678867630; 'version': 'v1.18.0'; 'status': 'open'; 'shortVersion': 'v1.18.0'; 'versionInfo': {'package': None; 'version': {'raw': 'v1.18.0'}; 'description': 'v1.18.0'; 'buildHash': None}; 'ref...
|
||||
user:
|
||||
geo: country_code=AR, city=Buenos Aires, region=Argentina
|
||||
exceptions[1]{type,value,mechanism}:
|
||||
Cannot query field 'builtHandlerPath' on type 'Log...,Cannot query field 'builtHandlerPath' on type 'LogicFunction'. Did you mean 'sourceHandlerPath'?,handled=True
|
||||
stack_frames[5]:
|
||||
[+] /assets/index-DWghFydJ.js:3032:6887
|
||||
fn: ? (module: assets/index-DWghFydJ)
|
||||
3033: Copyright (c) 2018 Jed Watson.
|
||||
3034: Licensed under the MIT License (MIT), see
|
||||
3035: http://jedwatson.github.io/classnames
|
||||
3036: ... ansition-show-delay"));G.current=setTimeout(()=>{he(!1),_e(null),U?.()},fn+25)}},[ve]);const tt=fn=>{ye(je=>iwe(je,fn)?je:fn)},Z=(fn=h)=>{ty ...
|
||||
3037: ... ow:!0,place:"bottom",positionStrategy:"absolute",delay:u4.mediumDelay,isOpen:!0,children:n?Fe(GFn,{children:h}):h})}),document.body)]})};/**
|
||||
[+] /assets/index-DWghFydJ.js:5838:15848
|
||||
fn: TRo (module: assets/index-DWghFydJ)
|
||||
5839: mutation AddQueryToEventStream($input: AddQuerySubscriptionInput!) {
|
||||
5840: addQueryToEventStream(input: $input)
|
||||
5841: }
|
||||
5842: `,MKn=Ee`
|
||||
5843: mutation RemoveQueryFromEventStream(
|
||||
[+] /assets/index-DWghFydJ.js:5838:15130
|
||||
fn: Object.bJn [as withScope] (module: assets/index-DWghFydJ)
|
||||
5839: mutation AddQueryToEventStream($input: AddQuerySubscriptionInput!) {
|
||||
5840: addQueryToEventStream(input: $input)
|
||||
5841: }
|
||||
5842: `,MKn=Ee`
|
||||
5843: mutation RemoveQueryFromEventStream(
|
||||
[+] /assets/index-DWghFydJ.js:5838:14523
|
||||
fn: yJn.withScope (module: assets/index-DWghFydJ)
|
||||
5839: mutation AddQueryToEventStream($input: AddQuerySubscriptionInput!) {
|
||||
5840: addQueryToEventStream(input: $input)
|
||||
5841: }
|
||||
5842: `,MKn=Ee`
|
||||
5843: mutation RemoveQueryFromEventStream(
|
||||
[+] /assets/index-DWghFydJ.js:3032:6901
|
||||
fn: ? (module: assets/index-DWghFydJ)
|
||||
3033: Copyright (c) 2018 Jed Watson.
|
||||
3034: Licensed under the MIT License (MIT), see
|
||||
3035: http://jedwatson.github.io/classnames
|
||||
3036: ... delay"));G.current=setTimeout(()=>{he(!1),_e(null),U?.()},fn+25)}},[ve]);const tt=fn=>{ye(je=>iwe(je,fn)?je:fn)},Z=(fn=h)=>{ty(ge),Pe?on(!0) ...
|
||||
3037: ... ow:!0,place:"bottom",positionStrategy:"absolute",delay:u4.mediumDelay,isOpen:!0,children:n?Fe(GFn,{children:h}):h})}),document.body)]})};/**
|
||||
request:
|
||||
url: https://ventixsolutions.twenty.com/welcome
|
||||
contexts:
|
||||
browser: browser=Chrome 143.0.0; name=Chrome; version=143.0.0
|
||||
device: family=Mac; model=Mac; brand=Apple
|
||||
os: os=Mac OS X >=10.15.7; name=Mac OS X; version=>=10.15.7
|
||||
breadcrumbs_fetch[10]{ts,method,url,status}:
|
||||
14:52:28,POST,https://ventixsolutions.twenty.com/graphql,200
|
||||
14:52:28,POST,https://ventixsolutions.twenty.com/metadata,200
|
||||
14:52:29,POST,https://ventixsolutions.twenty.com/graphql,200
|
||||
14:52:29,POST,https://ventixsolutions.twenty.com/graphql,200
|
||||
14:52:29,POST,https://ventixsolutions.twenty.com/graphql,200
|
||||
14:52:29,POST,https://ventixsolutions.twenty.com/metadata,200
|
||||
14:52:29,POST,https://ventixsolutions.twenty.com/graphql,200
|
||||
14:52:30,POST,https://ventixsolutions.twenty.com/graphql,200
|
||||
14:52:30,POST,https://ventixsolutions.twenty.com/graphql,200
|
||||
14:52:30,POST,https://ventixsolutions.twenty.com/metadata,200
|
||||
breadcrumbs_console[38]{ts,level,msg}:
|
||||
14:52:28,i,UNAUTHENTICATED; triggering token renewal
|
||||
14:52:28,i,UNAUTHENTICATED; triggering token renewal
|
||||
14:52:28,i,UNAUTHENTICATED; triggering token renewal
|
||||
14:52:29,d,%cCannot query field "renewToken" on type "Mutation". color: #F51818; font-weight: lighter
|
||||
14:52:29,d,%cUnknown type "AuthTokenPair". color: #F51818; font-weight: lighter
|
||||
14:52:29,d,%cUnknown type "AuthToken". color: #F51818; font-weight: lighter
|
||||
14:52:29,d,HEADERS:
|
||||
14:52:29,d,VARIABLES [object Object]
|
||||
14:52:29,d,QUERY mutation RenewToken($appToken: String!) { renewToken(appToken: $appToken) { tokens { ...
|
||||
14:52:29,d,ERRORS [object Object];[object Object];[object Object]
|
||||
14:52:29,i,Failed to renew token; triggering unauthenticated error from handleTokenRenewal
|
||||
14:52:29,i,onUnauthenticatedError; resetting state
|
||||
14:52:29,w,Uncompiled message detected! Message: > Open command menu That means you use raw catalog or your c...
|
||||
14:52:29,d,%cCannot query field "renewToken" on type "Mutation". color: #F51818; font-weight: lighter
|
||||
14:52:29,d,%cUnknown type "AuthTokenPair". color: #F51818; font-weight: lighter
|
||||
14:52:29,d,%cUnknown type "AuthToken". color: #F51818; font-weight: lighter
|
||||
14:52:29,d,HEADERS:
|
||||
14:52:29,d,VARIABLES [object Object]
|
||||
14:52:29,d,QUERY mutation RenewToken($appToken: String!) { renewToken(appToken: $appToken) { tokens { ...
|
||||
14:52:29,d,ERRORS [object Object];[object Object];[object Object]
|
||||
14:52:29,i,Failed to renew token; triggering unauthenticated error from handleTokenRenewal
|
||||
14:52:29,i,onUnauthenticatedError; resetting state
|
||||
14:52:29,i,tokenPair is undefined
|
||||
14:52:29,d,%cCannot query field "renewToken" on type "Mutation". color: #F51818; font-weight: lighter
|
||||
14:52:29,d,%cUnknown type "AuthTokenPair". color: #F51818; font-weight: lighter
|
||||
14:52:29,d,%cUnknown type "AuthToken". color: #F51818; font-weight: lighter
|
||||
14:52:29,d,HEADERS:
|
||||
14:52:29,d,VARIABLES [object Object]
|
||||
14:52:29,d,QUERY mutation RenewToken($appToken: String!) { renewToken(appToken: $appToken) { tokens { ...
|
||||
14:52:29,d,ERRORS [object Object];[object Object];[object Object]
|
||||
14:52:29,i,Failed to renew token; triggering unauthenticated error from handleTokenRenewal
|
||||
14:52:29,i,onUnauthenticatedError; resetting state
|
||||
14:52:29,i,tokenPair is undefined
|
||||
14:52:29,d,HEADERS:
|
||||
14:52:29,d,VARIABLES [object Object]
|
||||
14:52:29,d,QUERY mutation RenewToken($appToken: String!) { renewToken(appToken: $appToken) { tokens { ...
|
||||
14:52:29,d,RESULT [object Object]
|
||||
14:52:29,i,setTokenPair from handleTokenRenewal
|
||||
breadcrumbs_navigation[1]{ts,from,to}:
|
||||
14:52:29,/objects/facturas?viewId=dc4c104d-0791-441e-be86-22c08d80a3d...,/welcome
|
||||
breadcrumbs_sentry.transaction[1]{ts,type,level,msg}:
|
||||
14:52:29,default,i,cafc56b1b423479f843c7d948352fdf3
|
||||
```
|
||||
|
||||
## Severity Assessment
|
||||
|
||||
After analyzing the bug, determine severity independently based on your analysis:
|
||||
- **critical**: User CANNOT complete a critical task. Crashes, core feature broken, data loss risk.
|
||||
- **medium**: User CAN complete tasks but degraded experience. Non-critical feature broken, workaround exists.
|
||||
- **low**: User unlikely to notice. Cosmetic, rare edge case, transient error that auto-recovers.
|
||||
|
||||
Your severity assessment in the output JSON is the FINAL severity that will be used.
|
||||
## STRICT GIT RULES (violations = failed run)
|
||||
|
||||
- You are already on the correct fix branch — do NOT run `git checkout`, `git switch`, or `git merge`
|
||||
- **NEVER run `git merge`** — merging other branches (feature branches, main, etc.) is FORBIDDEN
|
||||
- **NEVER run `git checkout` on a different branch** — stay on your current branch at all times
|
||||
- **NEVER run `git rebase`** — rebasing is not needed and can corrupt the worktree
|
||||
- If the code you need to fix is not on this branch, fix the code that IS on this branch
|
||||
or report that the fix cannot be applied — do NOT merge or pull in other branches
|
||||
- **NEVER run `git add`, `git commit`, or `git push`** — the system handles all git write operations automatically after your analysis
|
||||
- Only allowed git commands: `git blame`, `git log`, `git diff`, `git show` (read-only)
|
||||
|
||||
## Your Task (in this order)
|
||||
|
||||
1. **Find the Root Cause**
|
||||
- Locate the exact file and line where the bug originates
|
||||
- Understand why this error occurs
|
||||
|
||||
2. **Git Blame Analysis**
|
||||
- Use `git blame` to find the commit that introduced this bug
|
||||
- Note the commit SHA, author, and date
|
||||
|
||||
3. **Fix the Bug**
|
||||
- Implement a **minimal, targeted fix** — only change what's necessary to resolve this specific error
|
||||
- **NEVER modify shared/generic utilities, base classes, or ORM internals** to work around a missing field or feature.
|
||||
Instead, fix the specific code paths that trigger the error (e.g. add a guard/try-catch in the caller).
|
||||
Changing a generic utility to silently skip errors is ALWAYS wrong — it masks future bugs.
|
||||
- Do NOT refactor surrounding code, add new features, or make unrelated improvements
|
||||
- Do NOT build new components, screens, or functionality — only fix the reported error
|
||||
- Add appropriate error handling if needed
|
||||
- Do NOT run any git write commands (`git add`, `git commit`, `git push`) — the system handles committing and pushing automatically after your analysis
|
||||
|
||||
4. **Output Structured Analysis**
|
||||
At the end of your response, output a JSON block between these markers:
|
||||
|
||||
```
|
||||
SONARLY_ANALYSIS_START
|
||||
{
|
||||
"title": "User-focused title (max 60 chars)",
|
||||
"severity": "critical|medium|low",
|
||||
"summary": "1-2 sentence summary of the bug",
|
||||
"user_impact": "Who was impacted and how they were impacted",
|
||||
"evidence": { // Each code item: file (relative path from repo root), line (integer), snippet (faulty code, max ~10 lines). Multiple items for multiple files. {} if no evidence.
|
||||
"code": [
|
||||
{"file": "src/checkout/process.py", "line": 42, "snippet": "def process_order(order_id):\n orders = db.query(\"SELECT * FROM orders\") # missing WHERE clause"}
|
||||
]
|
||||
},
|
||||
"root_cause": {
|
||||
"explanation": "Root cause explanation. Use plain text only — NO bold, italic, or code backticks. When listing multiple points, use a numbered list (1. 2. 3.) with each item on its own line. Include who introduced it (git blame author), when (date), and why.",
|
||||
"blame": {
|
||||
"commit_sha": "abc123def (the full commit SHA from git blame, or null if unknown)",
|
||||
"author": "Author Name (from git blame output, or null if unknown)",
|
||||
"date": "2026-01-15 (date from git blame, or null if unknown)",
|
||||
"commit_url": "https://github.com/{owner}/{repo}/commit/{sha} (build from git remote get-url origin + sha, strip any access token, or null)",
|
||||
"explanation": "Brief explanation of when/who introduced the bug (e.g. Added in commit abc123 by John on Jan 15)"
|
||||
}
|
||||
},
|
||||
"suggested_fix": {
|
||||
"explanation": "What the fix does and why it solves the problem. Use plain text only — NO bold, italic, or code backticks. When listing multiple steps, use a numbered list (1. 2. 3.) with each item on its own line.",
|
||||
"files_changed": ["path/to/file.py", "path/to/other.py (list of file paths you created or modified in the fix)"]
|
||||
}
|
||||
}
|
||||
SONARLY_ANALYSIS_END
|
||||
```
|
||||
|
||||
CRITICAL: The JSON block is the ONLY part of your response shown to the user.
|
||||
Everything outside the SONARLY_ANALYSIS markers is discarded. Put ALL investigation details,
|
||||
evidence (code snippets and log lines), and findings INSIDE the JSON fields,
|
||||
especially root_cause.explanation, and summary. Do NOT write a separate investigation summary before the JSON.
|
||||
|
||||
IMPORTANT: The JSON between SONARLY_ANALYSIS_START and SONARLY_ANALYSIS_END must be valid JSON.
|
||||
|
||||
## Critical: ALWAYS output the analysis JSON
|
||||
|
||||
You MUST output SONARLY_ANALYSIS_START...SONARLY_ANALYSIS_END even if you could not find the code or fix the bug.
|
||||
If you cannot locate the relevant code or create a fix,
|
||||
explain what you found in the `root_cause.explanation` field.
|
||||
A run without the analysis JSON is a FAILED run — never end without it.
|
||||
|
||||
Don't ask any questions to the user
|
||||
@@ -28,6 +28,8 @@ npx jest path/to/test.test.ts --config=packages/PROJECT/jest.config.mjs
|
||||
npx nx test twenty-front # Frontend unit tests
|
||||
npx nx test twenty-server # Backend unit tests
|
||||
npx nx run twenty-server:test:integration:with-db-reset # Integration tests with DB reset
|
||||
# To run an indivual test or a pattern of tests, use the following command:
|
||||
cd packages/{workspace} && npx jest "pattern or filename"
|
||||
|
||||
# Storybook
|
||||
npx nx storybook:build twenty-front
|
||||
|
||||
+4
-4
@@ -91,10 +91,10 @@
|
||||
"@storybook/react-vite": "^10.1.11",
|
||||
"@storybook/test-runner": "^0.24.2",
|
||||
"@stylistic/eslint-plugin": "^1.5.0",
|
||||
"@swc-node/register": "1.8.0",
|
||||
"@swc-node/register": "1.11.1",
|
||||
"@swc/cli": "^0.3.12",
|
||||
"@swc/core": "1.13.3",
|
||||
"@swc/helpers": "~0.5.2",
|
||||
"@swc/core": "1.15.11",
|
||||
"@swc/helpers": "~0.5.18",
|
||||
"@swc/jest": "^0.2.39",
|
||||
"@testing-library/dom": "^10.4.0",
|
||||
"@testing-library/jest-dom": "^6.6.3",
|
||||
@@ -137,7 +137,7 @@
|
||||
"@typescript-eslint/parser": "^8.39.0",
|
||||
"@typescript-eslint/utils": "^8.39.0",
|
||||
"@typescript/native-preview": "^7.0.0-dev.20260116.1",
|
||||
"@vitejs/plugin-react-swc": "3.11.0",
|
||||
"@vitejs/plugin-react-swc": "4.2.3",
|
||||
"@vitest/browser-playwright": "^4.0.18",
|
||||
"@vitest/coverage-istanbul": "^4.0.18",
|
||||
"@vitest/coverage-v8": "^4.0.18",
|
||||
|
||||
@@ -89,6 +89,7 @@ In interactive mode, you can pick from:
|
||||
- **Example front component** — a React UI component (`front-components/hello-world.tsx`)
|
||||
- **Example view** — a saved view for the example object (`views/example-view.ts`)
|
||||
- **Example navigation menu item** — a sidebar link (`navigation-menu-items/example-navigation-menu-item.ts`)
|
||||
- **Example skill** — an AI agent skill definition (`skills/example-skill.ts`)
|
||||
|
||||
## What gets scaffolded
|
||||
|
||||
@@ -106,11 +107,12 @@ In interactive mode, you can pick from:
|
||||
- `front-components/hello-world.tsx` — Example front component
|
||||
- `views/example-view.ts` — Example saved view for the example object
|
||||
- `navigation-menu-items/example-navigation-menu-item.ts` — Example sidebar navigation link
|
||||
- `skills/example-skill.ts` — Example AI agent skill definition
|
||||
|
||||
## Next steps
|
||||
- Run `yarn twenty help` to see all available commands.
|
||||
- Use `yarn twenty auth:login` to authenticate with your Twenty workspace.
|
||||
- Explore the generated project and add your first entity with `yarn twenty entity:add` (logic functions, front components, objects, roles, views, navigation menu items).
|
||||
- Explore the generated project and add your first entity with `yarn twenty entity:add` (logic functions, front components, objects, roles, views, navigation menu items, skills).
|
||||
- Use `yarn twenty app:dev` while you iterate — it watches, builds, and syncs changes to your workspace in real time.
|
||||
- Types are auto‑generated by `yarn twenty app:dev` and stored in `node_modules/twenty-sdk/generated`.
|
||||
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
## Base documentation
|
||||
|
||||
- Documentation: https://docs.twenty.com/developers/extend/capabilities/apps
|
||||
- Rich app example: https://github.com/twentyhq/twenty/tree/main/packages/twenty-sdk/src/cli/__tests__/apps/rich-app
|
||||
|
||||
## Common Pitfalls
|
||||
|
||||
- Creating an object without an index view associated. Unless this is a technical object, user will need to visualize it.
|
||||
- Creating a view without a navigationMenuItem associated. This will make the view available on the left sidebar.
|
||||
@@ -36,6 +36,10 @@ yarn twenty function:execute # Execute a function with JSON payload
|
||||
yarn twenty app:uninstall # Uninstall app from workspace
|
||||
```
|
||||
|
||||
## LLMs instructions
|
||||
|
||||
Main docs and pitfalls are available in LLMS.md file.
|
||||
|
||||
## Learn More
|
||||
|
||||
To learn more about Twenty applications, take a look at the following resources:
|
||||
|
||||
@@ -114,6 +114,7 @@ export class CreateAppCommand {
|
||||
includeExampleFrontComponent: false,
|
||||
includeExampleView: false,
|
||||
includeExampleNavigationMenuItem: false,
|
||||
includeExampleSkill: false,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -125,6 +126,7 @@ export class CreateAppCommand {
|
||||
includeExampleFrontComponent: true,
|
||||
includeExampleView: true,
|
||||
includeExampleNavigationMenuItem: true,
|
||||
includeExampleSkill: true,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -164,6 +166,11 @@ export class CreateAppCommand {
|
||||
value: 'navigationMenuItem',
|
||||
checked: true,
|
||||
},
|
||||
{
|
||||
name: 'Example skill (AI agent skill definition)',
|
||||
value: 'skill',
|
||||
checked: true,
|
||||
},
|
||||
],
|
||||
},
|
||||
]);
|
||||
@@ -189,6 +196,7 @@ export class CreateAppCommand {
|
||||
includeExampleView: includeView,
|
||||
includeExampleNavigationMenuItem:
|
||||
selectedExamples.includes('navigationMenuItem'),
|
||||
includeExampleSkill: selectedExamples.includes('skill'),
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -7,4 +7,5 @@ export type ExampleOptions = {
|
||||
includeExampleFrontComponent: boolean;
|
||||
includeExampleView: boolean;
|
||||
includeExampleNavigationMenuItem: boolean;
|
||||
includeExampleSkill: boolean;
|
||||
};
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
import * as fs from 'fs-extra';
|
||||
import { join } from 'path';
|
||||
import { tmpdir } from 'os';
|
||||
import { copyBaseApplicationProject } from '@/utils/app-template';
|
||||
import { type ExampleOptions } from '@/types/scaffolding-options';
|
||||
import { GENERATED_DIR } from 'twenty-shared/application';
|
||||
import { copyBaseApplicationProject } from '@/utils/app-template';
|
||||
import * as fs from 'fs-extra';
|
||||
import { tmpdir } from 'os';
|
||||
import { join } from 'path';
|
||||
|
||||
// Mock fs-extra's copy function to skip copying base template (not available during tests)
|
||||
jest.mock('fs-extra', () => {
|
||||
@@ -23,11 +24,13 @@ const ALL_EXAMPLES: ExampleOptions = {
|
||||
includeExampleFrontComponent: true,
|
||||
includeExampleView: true,
|
||||
includeExampleNavigationMenuItem: true,
|
||||
includeExampleSkill: true,
|
||||
};
|
||||
|
||||
const NO_EXAMPLES: ExampleOptions = {
|
||||
includeExampleObject: false,
|
||||
includeExampleField: false,
|
||||
includeExampleSkill: false,
|
||||
includeExampleLogicFunction: false,
|
||||
includeExampleFrontComponent: false,
|
||||
includeExampleView: false,
|
||||
@@ -109,7 +112,7 @@ describe('copyBaseApplicationProject', () => {
|
||||
|
||||
const gitignoreContent = await fs.readFile(gitignorePath, 'utf8');
|
||||
expect(gitignoreContent).toContain('/node_modules');
|
||||
expect(gitignoreContent).toContain('generated');
|
||||
expect(gitignoreContent).toContain(GENERATED_DIR);
|
||||
});
|
||||
|
||||
it('should create yarn.lock file', async () => {
|
||||
@@ -437,6 +440,7 @@ describe('copyBaseApplicationProject', () => {
|
||||
exampleOptions: {
|
||||
includeExampleObject: false,
|
||||
includeExampleField: false,
|
||||
includeExampleSkill: false,
|
||||
includeExampleLogicFunction: false,
|
||||
includeExampleFrontComponent: true,
|
||||
includeExampleView: false,
|
||||
@@ -472,6 +476,7 @@ describe('copyBaseApplicationProject', () => {
|
||||
appDirectory: testAppDirectory,
|
||||
exampleOptions: {
|
||||
includeExampleObject: false,
|
||||
includeExampleSkill: false,
|
||||
includeExampleField: false,
|
||||
includeExampleLogicFunction: true,
|
||||
includeExampleFrontComponent: false,
|
||||
|
||||
@@ -89,6 +89,14 @@ export const copyBaseApplicationProject = async ({
|
||||
});
|
||||
}
|
||||
|
||||
if (exampleOptions.includeExampleSkill) {
|
||||
await createExampleSkill({
|
||||
appDirectory: sourceFolderPath,
|
||||
fileFolder: 'skills',
|
||||
fileName: 'example-skill.ts',
|
||||
});
|
||||
}
|
||||
|
||||
await createDefaultPostInstallFunction({
|
||||
appDirectory: sourceFolderPath,
|
||||
fileFolder: 'logic-functions',
|
||||
@@ -424,6 +432,36 @@ export default defineNavigationMenuItem({
|
||||
await fs.writeFile(join(appDirectory, fileFolder ?? '', fileName), content);
|
||||
};
|
||||
|
||||
const createExampleSkill = async ({
|
||||
appDirectory,
|
||||
fileFolder,
|
||||
fileName,
|
||||
}: {
|
||||
appDirectory: string;
|
||||
fileFolder?: string;
|
||||
fileName: string;
|
||||
}) => {
|
||||
const universalIdentifier = v4();
|
||||
|
||||
const content = `import { defineSkill } from 'twenty-sdk';
|
||||
|
||||
export const EXAMPLE_SKILL_UNIVERSAL_IDENTIFIER =
|
||||
'${universalIdentifier}';
|
||||
|
||||
export default defineSkill({
|
||||
universalIdentifier: EXAMPLE_SKILL_UNIVERSAL_IDENTIFIER,
|
||||
name: 'example-skill',
|
||||
label: 'Example Skill',
|
||||
description: 'A sample skill for your application',
|
||||
icon: 'IconBrain',
|
||||
content: 'Add your skill instructions here. Skills provide context and capabilities to AI agents.',
|
||||
});
|
||||
`;
|
||||
|
||||
await fs.ensureDir(join(appDirectory, fileFolder ?? ''));
|
||||
await fs.writeFile(join(appDirectory, fileFolder ?? '', fileName), content);
|
||||
};
|
||||
|
||||
const createApplicationConfig = async ({
|
||||
displayName,
|
||||
description,
|
||||
|
||||
@@ -14,6 +14,7 @@ Apps let you build and manage Twenty customizations **as code**. Instead of conf
|
||||
**What you can do today:**
|
||||
- Define custom objects and fields as code (managed data model)
|
||||
- Build logic functions with custom triggers
|
||||
- Define skills for AI agents
|
||||
- Deploy the same app across multiple workspaces
|
||||
|
||||
## Prerequisites
|
||||
@@ -44,7 +45,7 @@ yarn twenty app:dev
|
||||
The scaffolder supports three modes for controlling which example files are included:
|
||||
|
||||
```bash filename="Terminal"
|
||||
# Default (exhaustive): all examples (object, field, logic function, front component, view, navigation menu item)
|
||||
# Default (exhaustive): all examples (object, field, logic function, front component, view, navigation menu item, skill)
|
||||
npx create-twenty-app@latest my-app
|
||||
|
||||
# Minimal: only core files (application-config.ts and default-role.ts)
|
||||
@@ -117,8 +118,10 @@ my-twenty-app/
|
||||
│ └── hello-world.tsx # Example front component
|
||||
├── views/
|
||||
│ └── example-view.ts # Example saved view definition
|
||||
└── navigation-menu-items/
|
||||
└── example-navigation-menu-item.ts # Example sidebar navigation link
|
||||
├── navigation-menu-items/
|
||||
│ └── example-navigation-menu-item.ts # Example sidebar navigation link
|
||||
└── skills/
|
||||
└── example-skill.ts # Example AI agent skill definition
|
||||
```
|
||||
|
||||
With `--minimal`, only the core files are created (`application-config.ts`, `roles/default-role.ts`, and `logic-functions/post-install.ts`). With `--interactive`, you choose which example files to include.
|
||||
@@ -147,6 +150,7 @@ The SDK detects entities by parsing your TypeScript files for **`export default
|
||||
| `defineField()` | Field extensions for existing objects |
|
||||
| `defineView()` | Saved view definitions |
|
||||
| `defineNavigationMenuItem()` | Navigation menu item definitions |
|
||||
| `defineSkill()` | AI agent skill definitions |
|
||||
|
||||
<Note>
|
||||
**File naming is flexible.** Entity detection is AST-based — the SDK scans your source files for the `export default define<Entity>({...})` pattern. You can organize your files and folders however you like. Grouping by entity type (e.g., `logic-functions/`, `roles/`) is just a convention for code organization, not a requirement.
|
||||
@@ -167,7 +171,7 @@ export default defineObject({
|
||||
Later commands will add more files and folders:
|
||||
|
||||
- `yarn twenty app:dev` will auto-generate a typed API client in `node_modules/twenty-sdk/generated` (typed Twenty client + workspace types).
|
||||
- `yarn twenty entity:add` will add entity definition files under `src/` for your custom objects, functions, front components, or roles.
|
||||
- `yarn twenty entity:add` will add entity definition files under `src/` for your custom objects, functions, front components, roles, skills, and more.
|
||||
|
||||
## Authentication
|
||||
|
||||
@@ -220,6 +224,7 @@ The SDK provides helper functions for defining your app entities. As described i
|
||||
| `defineField()` | Extend existing objects with additional fields |
|
||||
| `defineView()` | Define saved views for objects |
|
||||
| `defineNavigationMenuItem()` | Define sidebar navigation links |
|
||||
| `defineSkill()` | Define AI agent skills |
|
||||
|
||||
These functions validate your configuration at build time and provide IDE autocompletion and type safety.
|
||||
|
||||
@@ -729,6 +734,40 @@ You can create new front components in two ways:
|
||||
- **Scaffolded**: Run `yarn twenty entity:add` and choose the option to add a new front component.
|
||||
- **Manual**: Create a new `*.front-component.tsx` file and use `defineFrontComponent()`.
|
||||
|
||||
### Skills
|
||||
|
||||
Skills define reusable instructions and capabilities that AI agents can use within your workspace. Use `defineSkill()` to define skills with built-in validation:
|
||||
|
||||
```typescript
|
||||
// src/skills/example-skill.ts
|
||||
import { defineSkill } from 'twenty-sdk';
|
||||
|
||||
export default defineSkill({
|
||||
universalIdentifier: 'a1b2c3d4-e5f6-7890-abcd-ef1234567890',
|
||||
name: 'sales-outreach',
|
||||
label: 'Sales Outreach',
|
||||
description: 'Guides the AI agent through a structured sales outreach process',
|
||||
icon: 'IconBrain',
|
||||
content: `You are a sales outreach assistant. When reaching out to a prospect:
|
||||
1. Research the company and recent news
|
||||
2. Identify the prospect's role and likely pain points
|
||||
3. Draft a personalized message referencing specific details
|
||||
4. Keep the tone professional but conversational`,
|
||||
});
|
||||
```
|
||||
|
||||
Key points:
|
||||
- `name` is a unique identifier string for the skill (kebab-case recommended).
|
||||
- `label` is the human-readable display name shown in the UI.
|
||||
- `content` contains the skill instructions — this is the text the AI agent uses.
|
||||
- `icon` (optional) sets the icon displayed in the UI.
|
||||
- `description` (optional) provides additional context about the skill's purpose.
|
||||
|
||||
You can create new skills in two ways:
|
||||
|
||||
- **Scaffolded**: Run `yarn twenty entity:add` and choose the option to add a new skill.
|
||||
- **Manual**: Create a new file and use `defineSkill()`, following the same pattern.
|
||||
|
||||
### Generated typed client
|
||||
|
||||
The typed client is auto-generated by `yarn twenty app:dev` and stored in `node_modules/twenty-sdk/generated` based on your workspace schema. Use it in your functions:
|
||||
|
||||
@@ -15,6 +15,7 @@ description: أنشئ وأدِر تخصيصات Twenty على هيئة كود.
|
||||
|
||||
* عرِّف كائنات وحقولًا مخصصة على شكل كود (نموذج بيانات مُدار)
|
||||
* أنشئ وظائف منطقية مع مشغلات مخصصة
|
||||
* حدد المهارات لوكلاء الذكاء الاصطناعي
|
||||
* انشر التطبيق نفسه عبر مساحات عمل متعددة
|
||||
|
||||
## المتطلبات الأساسية
|
||||
@@ -27,7 +28,7 @@ description: أنشئ وأدِر تخصيصات Twenty على هيئة كود.
|
||||
أنشئ تطبيقًا جديدًا باستخدام المُهيئ الرسمي، ثم قم بالمصادقة وابدأ التطوير:
|
||||
|
||||
```bash filename="Terminal"
|
||||
# إنشاء تطبيق جديد
|
||||
# إنشاء تطبيق جديد (يتضمن جميع الأمثلة افتراضيًا)
|
||||
npx create-twenty-app@latest my-twenty-app
|
||||
cd my-twenty-app
|
||||
|
||||
@@ -42,6 +43,19 @@ yarn twenty auth:login
|
||||
yarn twenty app:dev
|
||||
```
|
||||
|
||||
يدعم المُنشئ ثلاثة أوضاع للتحكم في ملفات الأمثلة التي سيتم تضمينها:
|
||||
|
||||
```bash filename="Terminal"
|
||||
# Default (exhaustive): all examples (object, field, logic function, front component, view, navigation menu item, skill)
|
||||
npx create-twenty-app@latest my-app
|
||||
|
||||
# Minimal: only core files (application-config.ts and default-role.ts)
|
||||
npx create-twenty-app@latest my-app --minimal
|
||||
|
||||
# Interactive: select which examples to include
|
||||
npx create-twenty-app@latest my-app --interactive
|
||||
```
|
||||
|
||||
من هنا يمكنك:
|
||||
|
||||
```bash filename="Terminal"
|
||||
@@ -73,9 +87,9 @@ yarn twenty help
|
||||
* ينسخ تطبيقًا أساسيًا مصغّرًا إلى `my-twenty-app/`
|
||||
* يضيف اعتمادًا محليًا `twenty-sdk` وتهيئة Yarn 4
|
||||
* ينشئ ملفات ضبط ونصوصًا مرتبطة بـ `twenty` CLI
|
||||
* Generates a default application config, a default function role, and a post-install function
|
||||
* يُنشئ الملفات الأساسية (تهيئة التطبيق، دور الدالة الافتراضي، دالة ما بعد التثبيت) بالإضافة إلى ملفات الأمثلة بحسب وضع الإنشاء
|
||||
|
||||
يبدو التطبيق المُنشأ حديثًا بالقالب كما يلي:
|
||||
يبدو التطبيق المُنشأ حديثًا باستخدام الوضع الافتراضي `--exhaustive` كما يلي:
|
||||
|
||||
```text filename="my-twenty-app/"
|
||||
my-twenty-app/
|
||||
@@ -94,13 +108,25 @@ my-twenty-app/
|
||||
├── application-config.ts # Required - main application configuration
|
||||
├── roles/
|
||||
│ └── default-role.ts # Default role for logic functions
|
||||
├── objects/
|
||||
│ └── example-object.ts # Example custom object definition
|
||||
├── fields/
|
||||
│ └── example-field.ts # Example standalone field definition
|
||||
├── logic-functions/
|
||||
│ ├── hello-world.ts # Example logic function
|
||||
│ └── post-install.ts # Post-install logic function
|
||||
└── front-components/
|
||||
└── hello-world.tsx # Example front component
|
||||
├── front-components/
|
||||
│ └── hello-world.tsx # Example front component
|
||||
├── views/
|
||||
│ └── example-view.ts # Example saved view definition
|
||||
├── navigation-menu-items/
|
||||
│ └── example-navigation-menu-item.ts # Example sidebar navigation link
|
||||
└── skills/
|
||||
└── example-skill.ts # Example AI agent skill definition
|
||||
```
|
||||
|
||||
مع `--minimal`، سيتم إنشاء الملفات الأساسية فقط (`application-config.ts` و`roles/default-role.ts` و`logic-functions/post-install.ts`). مع `--interactive`، تختار ملفات الأمثلة التي تريد تضمينها.
|
||||
|
||||
بشكل عام:
|
||||
|
||||
* **package.json**: يصرّح باسم التطبيق والإصدار والمحرّكات (Node 24+، Yarn 4)، ويضيف `twenty-sdk` بالإضافة إلى نص برمجي `twenty` يفوِّض إلى `twenty` CLI المحلي. شغِّل `yarn twenty help` لعرض جميع الأوامر المتاحة.
|
||||
@@ -116,13 +142,16 @@ my-twenty-app/
|
||||
|
||||
يكتشف SDK الكيانات عبر تحليل ملفات TypeScript الخاصة بك بحثًا عن استدعاءات **`export default define<Entity>({...})`**. يحتوي كل نوع كيان على دالة مساعدة مقابلة يتم تصديرها من `twenty-sdk`:
|
||||
|
||||
| دالة مساعدة | نوع الكيان |
|
||||
| ------------------------ | --------------------------------- |
|
||||
| `defineObject()` | تعريفات كائنات مخصصة |
|
||||
| `defineLogicFunction()` | تعريفات الوظائف المنطقية |
|
||||
| `defineFrontComponent()` | Front component definitions |
|
||||
| `defineRole()` | تعريفات الأدوار |
|
||||
| `defineField()` | امتدادات الحقول للكائنات الموجودة |
|
||||
| دالة مساعدة | نوع الكيان |
|
||||
| ---------------------------- | --------------------------------- |
|
||||
| `defineObject()` | تعريفات كائنات مخصصة |
|
||||
| `defineLogicFunction()` | تعريفات الوظائف المنطقية |
|
||||
| `defineFrontComponent()` | Front component definitions |
|
||||
| `defineRole()` | تعريفات الأدوار |
|
||||
| `defineField()` | امتدادات الحقول للكائنات الموجودة |
|
||||
| `defineView()` | تعريفات العروض المحفوظة |
|
||||
| `defineNavigationMenuItem()` | تعريفات عناصر قائمة التنقل |
|
||||
| `defineSkill()` | AI agent skill definitions |
|
||||
|
||||
<Note>
|
||||
**تسمية الملفات مرنة.** يعتمد اكتشاف الكيانات على بنية الشجرة المجردة (AST) — إذ يقوم SDK بفحص ملفات المصدر لديك بحثًا عن النمط `export default define<Entity>({...})`. يمكنك تنظيم ملفاتك ومجلداتك كيفما تشاء. التجميع حسب نوع الكيان (مثلًا، `logic-functions/` و`roles/`) هو مجرد عرف لتنظيم الشيفرة، وليس مطلبًا إلزاميًا.
|
||||
@@ -144,7 +173,7 @@ export default defineObject({
|
||||
ستضيف الأوامر اللاحقة مزيدًا من الملفات والمجلدات:
|
||||
|
||||
* `yarn twenty app:dev` سيولّد تلقائيًا عميل API مضبوط الأنواع في `node_modules/twenty-sdk/generated` (عميل Twenty مضبوط الأنواع + أنواع مساحة العمل).
|
||||
* `yarn twenty entity:add` سيضيف ملفات تعريف الكيانات تحت `src/` لكائناتك المخصصة أو الوظائف أو المكونات الواجهية أو الأدوار.
|
||||
* `yarn twenty entity:add` will add entity definition files under `src/` for your custom objects, functions, front components, roles, skills, and more.
|
||||
|
||||
## المصادقة
|
||||
|
||||
@@ -187,14 +216,17 @@ yarn twenty auth:status
|
||||
|
||||
يوفّر SDK دوالًا مساعدة لتعريف كيانات تطبيقك. كما هو موضح في [اكتشاف الكيانات](#entity-detection)، يجب استخدام `export default define<Entity>({...})` كي يتم اكتشاف كياناتك:
|
||||
|
||||
| دالة | الغرض |
|
||||
| ------------------------ | ---------------------------------------------------- |
|
||||
| `defineApplication()` | تهيئة بيانات التعريف للتطبيق (مطلوب، واحد لكل تطبيق) |
|
||||
| `defineObject()` | تعريف كائنات مخصصة مع حقول |
|
||||
| `defineLogicFunction()` | تعريف وظائف منطقية مع معالجات |
|
||||
| `defineFrontComponent()` | عرِّف مكوّنات أمامية لواجهة مستخدم مخصّصة |
|
||||
| `defineRole()` | تهيئة صلاحيات الدور والوصول إلى الكائنات |
|
||||
| `defineField()` | وسّع الكائنات الموجودة بحقول إضافية |
|
||||
| دالة | الغرض |
|
||||
| ---------------------------- | ---------------------------------------------------- |
|
||||
| `defineApplication()` | تهيئة بيانات التعريف للتطبيق (مطلوب، واحد لكل تطبيق) |
|
||||
| `defineObject()` | تعريف كائنات مخصصة مع حقول |
|
||||
| `defineLogicFunction()` | تعريف وظائف منطقية مع معالجات |
|
||||
| `defineFrontComponent()` | عرِّف مكوّنات أمامية لواجهة مستخدم مخصّصة |
|
||||
| `defineRole()` | تهيئة صلاحيات الدور والوصول إلى الكائنات |
|
||||
| `defineField()` | وسّع الكائنات الموجودة بحقول إضافية |
|
||||
| `defineView()` | تعريف العروض المحفوظة للكائنات |
|
||||
| `defineNavigationMenuItem()` | تعريف روابط التنقل في الشريط الجانبي |
|
||||
| `defineSkill()` | Define AI agent skills |
|
||||
|
||||
تتحقق هذه الدوال من تكوينك وقت البناء وتوفّر إكمالًا تلقائيًا في بيئة التطوير وأمان الأنواع.
|
||||
|
||||
@@ -470,7 +502,7 @@ export default defineLogicFunction({
|
||||
|
||||
A post-install function is a logic function that runs automatically after your app is installed on a workspace. This is useful for one-time setup tasks such as seeding default data, creating initial records, or configuring workspace settings.
|
||||
|
||||
When you scaffold a new app with `create-twenty-app`, a post-install function is generated for you at `src/logic-functions/post-install.ts`:
|
||||
عند إنشاء هيكل تطبيق جديد باستخدام `create-twenty-app`، يتم إنشاء دالة ما بعد التثبيت لك في `src/logic-functions/post-install.ts`:
|
||||
|
||||
```typescript
|
||||
// src/logic-functions/post-install.ts
|
||||
@@ -491,7 +523,7 @@ export default defineLogicFunction({
|
||||
});
|
||||
```
|
||||
|
||||
The function is wired into your app by referencing its universal identifier in `application-config.ts`:
|
||||
يتم ربط الدالة بتطبيقك من خلال الإشارة إلى المعرِّف العالمي الخاص بها في `application-config.ts`:
|
||||
|
||||
```typescript
|
||||
import { POST_INSTALL_UNIVERSAL_IDENTIFIER } from 'src/logic-functions/post-install';
|
||||
@@ -502,7 +534,7 @@ export default defineApplication({
|
||||
});
|
||||
```
|
||||
|
||||
You can also manually execute the post-install function at any time using the CLI:
|
||||
يمكنك أيضًا تنفيذ دالة ما بعد التثبيت يدويًا في أي وقت باستخدام CLI:
|
||||
|
||||
```bash filename="Terminal"
|
||||
yarn twenty function:execute --postInstall
|
||||
@@ -510,10 +542,10 @@ yarn twenty function:execute --postInstall
|
||||
|
||||
النقاط الرئيسية:
|
||||
|
||||
* Post-install functions are standard logic functions — they use `defineLogicFunction()` like any other function.
|
||||
* The `postInstallLogicFunctionUniversalIdentifier` field in `defineApplication()` is optional. If omitted, no function runs after installation.
|
||||
* The default timeout is set to 300 seconds (5 minutes) to allow for longer setup tasks like data seeding.
|
||||
* Post-install functions do not need triggers — they are invoked by the platform during installation or manually via `function:execute --postInstall`.
|
||||
* دوال ما بعد التثبيت هي دوال منطقية قياسية — فهي تستخدم `defineLogicFunction()` مثل أي دالة أخرى.
|
||||
* حقل `postInstallLogicFunctionUniversalIdentifier` في `defineApplication()` اختياري. إذا تم تجاهله، لن يتم تشغيل أي دالة بعد التثبيت.
|
||||
* تم تعيين مهلة افتراضية إلى 300 ثانية (5 دقائق) للسماح بمهام الإعداد الأطول مثل تهيئة البيانات.
|
||||
* لا تحتاج دوال ما بعد التثبيت إلى مُشغِّلات — حيث يستدعيها النظام الأساسي أثناء التثبيت أو يدويًا عبر `function:execute --postInstall`.
|
||||
|
||||
### حمولة مشغل المسار
|
||||
|
||||
@@ -714,6 +746,41 @@ export default defineFrontComponent({
|
||||
* **مُنشأ بالقالب**: شغّل `yarn twenty entity:add` واختر خيار إضافة مكوّن أمامي جديد.
|
||||
* **يدوي**: أنشئ ملفًا جديدًا `*.front-component.tsx` واستخدم `defineFrontComponent()`.
|
||||
|
||||
### المهارات
|
||||
|
||||
Skills define reusable instructions and capabilities that AI agents can use within your workspace. Use `defineSkill()` to define skills with built-in validation:
|
||||
|
||||
```typescript
|
||||
// src/skills/example-skill.ts
|
||||
import { defineSkill } from 'twenty-sdk';
|
||||
|
||||
export default defineSkill({
|
||||
universalIdentifier: 'a1b2c3d4-e5f6-7890-abcd-ef1234567890',
|
||||
name: 'sales-outreach',
|
||||
label: 'Sales Outreach',
|
||||
description: 'Guides the AI agent through a structured sales outreach process',
|
||||
icon: 'IconBrain',
|
||||
content: `You are a sales outreach assistant. When reaching out to a prospect:
|
||||
1. Research the company and recent news
|
||||
2. Identify the prospect's role and likely pain points
|
||||
3. Draft a personalized message referencing specific details
|
||||
4. Keep the tone professional but conversational`,
|
||||
});
|
||||
```
|
||||
|
||||
النقاط الرئيسية:
|
||||
|
||||
* `name` is a unique identifier string for the skill (kebab-case recommended).
|
||||
* `label` is the human-readable display name shown in the UI.
|
||||
* `content` contains the skill instructions — this is the text the AI agent uses.
|
||||
* `icon` (optional) sets the icon displayed in the UI.
|
||||
* `description` (optional) provides additional context about the skill's purpose.
|
||||
|
||||
You can create new skills in two ways:
|
||||
|
||||
* **Scaffolded**: Run `yarn twenty entity:add` and choose the option to add a new skill.
|
||||
* **Manual**: Create a new file and use `defineSkill()`, following the same pattern.
|
||||
|
||||
### عميل مُولَّد مضبوط الأنواع
|
||||
|
||||
يُولَّد العميل مضبوط الأنواع تلقائيًا بواسطة `yarn twenty app:dev` ويُخزَّن في `node_modules/twenty-sdk/generated` استنادًا إلى مخطط مساحة العمل لديك. استخدمه في وظائفك:
|
||||
|
||||
@@ -15,6 +15,7 @@ Aplikace vám umožňují vytvářet a spravovat přizpůsobení Twenty **jako k
|
||||
|
||||
* Definujte vlastní objekty a pole jako kód (spravovaný datový model)
|
||||
* Vytvářejte logické funkce s vlastními spouštěči
|
||||
* Definujte dovednosti agentů AI
|
||||
* Nasazujte stejnou aplikaci do více pracovních prostorů
|
||||
|
||||
## Předpoklady
|
||||
@@ -27,7 +28,7 @@ Aplikace vám umožňují vytvářet a spravovat přizpůsobení Twenty **jako k
|
||||
Vytvořte novou aplikaci pomocí oficiálního scaffolderu, poté se ověřte a začněte vyvíjet:
|
||||
|
||||
```bash filename="Terminal"
|
||||
# Vygenerujte kostru nové aplikace
|
||||
# Vygenerujte kostru nové aplikace (ve výchozím nastavení zahrnuje všechny příklady)
|
||||
npx create-twenty-app@latest my-twenty-app
|
||||
cd my-twenty-app
|
||||
|
||||
@@ -42,6 +43,19 @@ yarn twenty auth:login
|
||||
yarn twenty app:dev
|
||||
```
|
||||
|
||||
Nástroj pro generování kostry podporuje tři režimy pro řízení toho, které ukázkové soubory jsou zahrnuty:
|
||||
|
||||
```bash filename="Terminal"
|
||||
# Default (exhaustive): all examples (object, field, logic function, front component, view, navigation menu item, skill)
|
||||
npx create-twenty-app@latest my-app
|
||||
|
||||
# Minimal: only core files (application-config.ts and default-role.ts)
|
||||
npx create-twenty-app@latest my-app --minimal
|
||||
|
||||
# Interactive: select which examples to include
|
||||
npx create-twenty-app@latest my-app --interactive
|
||||
```
|
||||
|
||||
Odtud můžete:
|
||||
|
||||
```bash filename="Terminal"
|
||||
@@ -73,9 +87,9 @@ Když spustíte `npx create-twenty-app@latest my-twenty-app`, scaffolder:
|
||||
* Zkopíruje minimální základní aplikaci do `my-twenty-app/`
|
||||
* Přidá lokální závislost `twenty-sdk` a konfiguraci pro Yarn 4
|
||||
* Vytvoří konfigurační soubory a skripty napojené na `twenty` CLI
|
||||
* Vygeneruje výchozí konfiguraci aplikace, výchozí roli funkcí a postinstalační funkci.
|
||||
* Vygeneruje základní soubory (konfigurace aplikace, výchozí role funkcí, postinstalační funkce) a k nim ukázkové soubory podle zvoleného režimu generování kostry
|
||||
|
||||
Čerstvě vytvořená aplikace vypadá takto:
|
||||
Čerstvě vygenerovaná aplikace s výchozím režimem `--exhaustive` vypadá takto:
|
||||
|
||||
```text filename="my-twenty-app/"
|
||||
my-twenty-app/
|
||||
@@ -89,18 +103,30 @@ my-twenty-app/
|
||||
eslint.config.mjs
|
||||
tsconfig.json
|
||||
README.md
|
||||
public/ # Složka s veřejnými prostředky (obrázky, písma apod.)
|
||||
public/ # Public assets folder (images, fonts, etc.)
|
||||
src/
|
||||
├── application-config.ts # Povinné – hlavní konfigurace aplikace
|
||||
├── application-config.ts # Required - main application configuration
|
||||
├── roles/
|
||||
│ └── default-role.ts # Výchozí role pro logické funkce
|
||||
│ └── default-role.ts # Default role for logic functions
|
||||
├── objects/
|
||||
│ └── example-object.ts # Example custom object definition
|
||||
├── fields/
|
||||
│ └── example-field.ts # Example standalone field definition
|
||||
├── logic-functions/
|
||||
│ ├── hello-world.ts # Ukázková logická funkce
|
||||
│ └── post-install.ts # Postinstalační logická funkce
|
||||
└── front-components/
|
||||
└── hello-world.tsx # Ukázková front-endová komponenta
|
||||
│ ├── hello-world.ts # Example logic function
|
||||
│ └── post-install.ts # Post-install logic function
|
||||
├── front-components/
|
||||
│ └── hello-world.tsx # Example front component
|
||||
├── views/
|
||||
│ └── example-view.ts # Example saved view definition
|
||||
├── navigation-menu-items/
|
||||
│ └── example-navigation-menu-item.ts # Example sidebar navigation link
|
||||
└── skills/
|
||||
└── example-skill.ts # Example AI agent skill definition
|
||||
```
|
||||
|
||||
S volbou `--minimal` se vytvoří pouze základní soubory (`application-config.ts`, `roles/default-role.ts` a `logic-functions/post-install.ts`). S volbou `--interactive` si vyberete, které ukázkové soubory chcete zahrnout.
|
||||
|
||||
V kostce:
|
||||
|
||||
* **package.json**: Deklaruje název aplikace, verzi, engines (Node 24+, Yarn 4) a přidává `twenty-sdk` plus skript `twenty`, který deleguje na lokální `twenty` CLI. Spusťte `yarn twenty help` pro výpis všech dostupných příkazů.
|
||||
@@ -116,13 +142,16 @@ V kostce:
|
||||
|
||||
SDK detekuje entity analýzou vašich souborů TypeScript a hledá volání **`export default define<Entity>({...})`**. Každý typ entity má odpovídající pomocnou funkci exportovanou z `twenty-sdk`:
|
||||
|
||||
| Pomocná funkce | Typ entity |
|
||||
| ------------------------ | ------------------------------------- |
|
||||
| `defineObject()` | Definice vlastních objektů |
|
||||
| `defineLogicFunction()` | Definice logických funkcí |
|
||||
| `defineFrontComponent()` | Definice frontendových komponent |
|
||||
| `defineRole()` | Definice rolí |
|
||||
| `defineField()` | Rozšíření polí u existujících objektů |
|
||||
| Pomocná funkce | Typ entity |
|
||||
| ---------------------------- | ------------------------------------- |
|
||||
| `defineObject()` | Definice vlastních objektů |
|
||||
| `defineLogicFunction()` | Definice logických funkcí |
|
||||
| `defineFrontComponent()` | Definice frontendových komponent |
|
||||
| `defineRole()` | Definice rolí |
|
||||
| `defineField()` | Rozšíření polí u existujících objektů |
|
||||
| `defineView()` | Definice uložených zobrazení |
|
||||
| `defineNavigationMenuItem()` | Definice položek navigační nabídky |
|
||||
| `defineSkill()` | AI agent skill definitions |
|
||||
|
||||
<Note>
|
||||
**Pojmenování souborů je flexibilní.** Detekce entit je založená na AST — SDK prochází vaše zdrojové soubory a hledá vzor `export default define<Entity>({...})`. Soubory a složky můžete organizovat, jak chcete. Seskupování podle typu entity (např. `logic-functions/`, `roles/`) je pouze konvence pro organizaci kódu, nikoli požadavek.
|
||||
@@ -144,7 +173,7 @@ export default defineObject({
|
||||
Pozdější příkazy přidají další soubory a složky:
|
||||
|
||||
* `yarn twenty app:dev` automaticky vygeneruje typovaného klienta API v `node_modules/twenty-sdk/generated` (typovaný klient Twenty + typy pracovního prostoru).
|
||||
* `yarn twenty entity:add` přidá soubory s definicemi entit do `src/` pro vaše vlastní objekty, funkce, frontové komponenty nebo role.
|
||||
* `yarn twenty entity:add` will add entity definition files under `src/` for your custom objects, functions, front components, roles, skills, and more.
|
||||
|
||||
## Ověření
|
||||
|
||||
@@ -187,14 +216,17 @@ twenty-sdk poskytuje typované stavební bloky a pomocné funkce, které použí
|
||||
|
||||
SDK poskytuje pomocné funkce pro definování entit vaší aplikace. Jak je popsáno v [Detekce entit](#entity-detection), musíte použít `export default define<Entity>({...})`, aby byly vaše entity detekovány:
|
||||
|
||||
| Funkce | Účel |
|
||||
| ------------------------ | ----------------------------------------------------------------- |
|
||||
| `defineApplication()` | Nakonfigurujte metadata aplikace (povinné, jedno na aplikaci) |
|
||||
| `defineObject()` | Definice vlastních objektů s poli |
|
||||
| `defineLogicFunction()` | Definice logických funkcí s obslužnými funkcemi |
|
||||
| `defineFrontComponent()` | Definujte frontendové komponenty pro vlastní uživatelské rozhraní |
|
||||
| `defineRole()` | Konfigurace oprávnění rolí a přístupu k objektům |
|
||||
| `defineField()` | Rozšiřte existující objekty o další pole |
|
||||
| Funkce | Účel |
|
||||
| ---------------------------- | ----------------------------------------------------------------- |
|
||||
| `defineApplication()` | Nakonfigurujte metadata aplikace (povinné, jedno na aplikaci) |
|
||||
| `defineObject()` | Definice vlastních objektů s poli |
|
||||
| `defineLogicFunction()` | Definice logických funkcí s obslužnými funkcemi |
|
||||
| `defineFrontComponent()` | Definujte frontendové komponenty pro vlastní uživatelské rozhraní |
|
||||
| `defineRole()` | Konfigurace oprávnění rolí a přístupu k objektům |
|
||||
| `defineField()` | Rozšiřte existující objekty o další pole |
|
||||
| `defineView()` | Definujte uložená zobrazení pro objekty |
|
||||
| `defineNavigationMenuItem()` | Definujte odkazy postranní navigace |
|
||||
| `defineSkill()` | Define AI agent skills |
|
||||
|
||||
Tyto funkce validují vaši konfiguraci v době sestavení a poskytují automatické doplňování v IDE a typovou bezpečnost.
|
||||
|
||||
@@ -470,7 +502,7 @@ Poznámky:
|
||||
|
||||
Postinstalační funkce je logická funkce, která se automaticky spouští po instalaci vaší aplikace do pracovního prostoru. To je užitečné pro jednorázové úlohy nastavení, jako je naplnění výchozími daty, vytvoření počátečních záznamů nebo konfigurace nastavení pracovního prostoru.
|
||||
|
||||
When you scaffold a new app with `create-twenty-app`, a post-install function is generated for you at `src/logic-functions/post-install.ts`:
|
||||
Když vygenerujete kostru nové aplikace pomocí `create-twenty-app`, vytvoří se pro vás postinstalační funkce v `src/logic-functions/post-install.ts`:
|
||||
|
||||
```typescript
|
||||
// src/logic-functions/post-install.ts
|
||||
@@ -491,7 +523,7 @@ export default defineLogicFunction({
|
||||
});
|
||||
```
|
||||
|
||||
The function is wired into your app by referencing its universal identifier in `application-config.ts`:
|
||||
Funkce je připojena do vaší aplikace odkazem na její univerzální identifikátor v `application-config.ts`:
|
||||
|
||||
```typescript
|
||||
import { POST_INSTALL_UNIVERSAL_IDENTIFIER } from 'src/logic-functions/post-install';
|
||||
@@ -502,7 +534,7 @@ export default defineApplication({
|
||||
});
|
||||
```
|
||||
|
||||
You can also manually execute the post-install function at any time using the CLI:
|
||||
Postinstalační funkci můžete také kdykoli spustit ručně pomocí CLI:
|
||||
|
||||
```bash filename="Terminal"
|
||||
yarn twenty function:execute --postInstall
|
||||
@@ -510,10 +542,10 @@ yarn twenty function:execute --postInstall
|
||||
|
||||
Hlavní body:
|
||||
|
||||
* Post-install functions are standard logic functions — they use `defineLogicFunction()` like any other function.
|
||||
* The `postInstallLogicFunctionUniversalIdentifier` field in `defineApplication()` is optional. If omitted, no function runs after installation.
|
||||
* The default timeout is set to 300 seconds (5 minutes) to allow for longer setup tasks like data seeding.
|
||||
* Post-install functions do not need triggers — they are invoked by the platform during installation or manually via `function:execute --postInstall`.
|
||||
* Postinstalační funkce jsou standardní logické funkce — používají `defineLogicFunction()` stejně jako jakákoli jiná funkce.
|
||||
* Pole `postInstallLogicFunctionUniversalIdentifier` v `defineApplication()` je volitelné. Pokud je vynecháno, po instalaci se nespustí žádná funkce.
|
||||
* Výchozí časový limit je nastaven na 300 sekund (5 minut), aby umožnil delší úlohy nastavení, jako je naplnění daty.
|
||||
* Postinstalační funkce nepotřebují spouštěče — jsou spouštěny platformou během instalace nebo ručně pomocí `function:execute --postInstall`.
|
||||
|
||||
### Payload spouštěče trasy
|
||||
|
||||
@@ -714,6 +746,41 @@ Nové frontendové komponenty můžete vytvořit dvěma způsoby:
|
||||
* **Vygenerované**: Spusťte `yarn twenty entity:add` a zvolte možnost přidat novou frontendovou komponentu.
|
||||
* **Ruční**: Vytvořte nový soubor `*.front-component.tsx` a použijte `defineFrontComponent()`.
|
||||
|
||||
### Dovednosti
|
||||
|
||||
Skills define reusable instructions and capabilities that AI agents can use within your workspace. Use `defineSkill()` to define skills with built-in validation:
|
||||
|
||||
```typescript
|
||||
// src/skills/example-skill.ts
|
||||
import { defineSkill } from 'twenty-sdk';
|
||||
|
||||
export default defineSkill({
|
||||
universalIdentifier: 'a1b2c3d4-e5f6-7890-abcd-ef1234567890',
|
||||
name: 'sales-outreach',
|
||||
label: 'Sales Outreach',
|
||||
description: 'Guides the AI agent through a structured sales outreach process',
|
||||
icon: 'IconBrain',
|
||||
content: `You are a sales outreach assistant. When reaching out to a prospect:
|
||||
1. Research the company and recent news
|
||||
2. Identify the prospect's role and likely pain points
|
||||
3. Draft a personalized message referencing specific details
|
||||
4. Keep the tone professional but conversational`,
|
||||
});
|
||||
```
|
||||
|
||||
Hlavní body:
|
||||
|
||||
* `name` is a unique identifier string for the skill (kebab-case recommended).
|
||||
* `label` is the human-readable display name shown in the UI.
|
||||
* `content` contains the skill instructions — this is the text the AI agent uses.
|
||||
* `icon` (optional) sets the icon displayed in the UI.
|
||||
* `description` (optional) provides additional context about the skill's purpose.
|
||||
|
||||
You can create new skills in two ways:
|
||||
|
||||
* **Scaffolded**: Run `yarn twenty entity:add` and choose the option to add a new skill.
|
||||
* **Manual**: Create a new file and use `defineSkill()`, following the same pattern.
|
||||
|
||||
### Generovaný typovaný klient
|
||||
|
||||
Typovaný klient je automaticky generován pomocí `yarn twenty app:dev` a ukládá se do `node_modules/twenty-sdk/generated` podle schématu vašeho pracovního prostoru. Použijte jej ve svých funkcích:
|
||||
|
||||
@@ -15,6 +15,7 @@ Mit Apps können Sie Twenty-Anpassungen **als Code** erstellen und verwalten. An
|
||||
|
||||
* Benutzerdefinierte Objekte und Felder als Code definieren (verwaltetes Datenmodell)
|
||||
* Logikfunktionen mit benutzerdefinierten Triggern erstellen
|
||||
* Fähigkeiten für KI-Agenten definieren
|
||||
* Dieselbe App in mehreren Workspaces bereitstellen
|
||||
|
||||
## Voraussetzungen
|
||||
@@ -27,7 +28,7 @@ Mit Apps können Sie Twenty-Anpassungen **als Code** erstellen und verwalten. An
|
||||
Erstellen Sie mit dem offiziellen Scaffolder eine neue App, authentifizieren Sie sich und beginnen Sie mit der Entwicklung:
|
||||
|
||||
```bash filename="Terminal"
|
||||
# Eine neue App erstellen
|
||||
# Eine neue App erstellen (enthält standardmäßig alle Beispiele)
|
||||
npx create-twenty-app@latest my-twenty-app
|
||||
cd my-twenty-app
|
||||
|
||||
@@ -42,6 +43,19 @@ yarn twenty auth:login
|
||||
yarn twenty app:dev
|
||||
```
|
||||
|
||||
Das Scaffolding-Tool unterstützt drei Modi, um zu steuern, welche Beispieldateien enthalten sind:
|
||||
|
||||
```bash filename="Terminal"
|
||||
# Default (exhaustive): all examples (object, field, logic function, front component, view, navigation menu item, skill)
|
||||
npx create-twenty-app@latest my-app
|
||||
|
||||
# Minimal: only core files (application-config.ts and default-role.ts)
|
||||
npx create-twenty-app@latest my-app --minimal
|
||||
|
||||
# Interactive: select which examples to include
|
||||
npx create-twenty-app@latest my-app --interactive
|
||||
```
|
||||
|
||||
Von hier aus können Sie:
|
||||
|
||||
```bash filename="Terminal"
|
||||
@@ -73,9 +87,9 @@ Wenn Sie `npx create-twenty-app@latest my-twenty-app` ausführen, erledigt der S
|
||||
* Kopiert eine minimale Basisanwendung nach `my-twenty-app/`
|
||||
* Fügt eine lokale `twenty-sdk`-Abhängigkeit und die Yarn-4-Konfiguration hinzu
|
||||
* Erstellt Konfigurationsdateien und Skripte, die an die `twenty`-CLI angebunden sind
|
||||
* Generiert eine Standard-Anwendungskonfiguration, eine Standard-Funktionsrolle und eine Post-Installationsfunktion
|
||||
* Erzeugt Kerndateien (Anwendungskonfiguration, Standardrolle für Logikfunktionen, Post-Installationsfunktion) sowie Beispieldateien entsprechend dem Scaffolding-Modus
|
||||
|
||||
Eine frisch erzeugte App sieht so aus:
|
||||
Eine frisch erstellte App mit dem Standardmodus `--exhaustive` sieht so aus:
|
||||
|
||||
```text filename="my-twenty-app/"
|
||||
my-twenty-app/
|
||||
@@ -89,18 +103,30 @@ my-twenty-app/
|
||||
eslint.config.mjs
|
||||
tsconfig.json
|
||||
README.md
|
||||
public/ # Ordner für öffentliche Assets (Bilder, Schriftarten usw.)
|
||||
public/ # Public assets folder (images, fonts, etc.)
|
||||
src/
|
||||
├── application-config.ts # Erforderlich – Hauptkonfiguration der Anwendung
|
||||
├── application-config.ts # Required - main application configuration
|
||||
├── roles/
|
||||
│ └── default-role.ts # Standardrolle für Logikfunktionen
|
||||
│ └── default-role.ts # Default role for logic functions
|
||||
├── objects/
|
||||
│ └── example-object.ts # Example custom object definition
|
||||
├── fields/
|
||||
│ └── example-field.ts # Example standalone field definition
|
||||
├── logic-functions/
|
||||
│ ├── hello-world.ts # Beispiel für eine Logikfunktion
|
||||
│ └── post-install.ts # Post-Installations-Logikfunktion
|
||||
└── front-components/
|
||||
└── hello-world.tsx # Beispiel für eine Frontend-Komponente
|
||||
│ ├── hello-world.ts # Example logic function
|
||||
│ └── post-install.ts # Post-install logic function
|
||||
├── front-components/
|
||||
│ └── hello-world.tsx # Example front component
|
||||
├── views/
|
||||
│ └── example-view.ts # Example saved view definition
|
||||
├── navigation-menu-items/
|
||||
│ └── example-navigation-menu-item.ts # Example sidebar navigation link
|
||||
└── skills/
|
||||
└── example-skill.ts # Example AI agent skill definition
|
||||
```
|
||||
|
||||
Mit `--minimal` werden nur die Kerndateien erstellt (`application-config.ts`, `roles/default-role.ts` und `logic-functions/post-install.ts`). Mit `--interactive` wählst du aus, welche Beispieldateien enthalten sein sollen.
|
||||
|
||||
Auf hoher Ebene:
|
||||
|
||||
* **package.json**: Deklariert den App-Namen, die Version und die Engines (Node 24+, Yarn 4) und fügt `twenty-sdk` sowie ein `twenty`-Skript hinzu, das an die lokale `twenty`-CLI delegiert. Führe `yarn twenty help` aus, um alle verfügbaren Befehle aufzulisten.
|
||||
@@ -116,13 +142,16 @@ Auf hoher Ebene:
|
||||
|
||||
Das SDK erkennt Entitäten, indem es Ihre TypeScript-Dateien nach Aufrufen von **`export default define<Entity>({...})`** parst. Für jeden Entitätstyp gibt es eine entsprechende Hilfsfunktion, die aus `twenty-sdk` exportiert wird:
|
||||
|
||||
| Hilfsfunktion | Entitätstyp |
|
||||
| ------------------------ | ---------------------------------------- |
|
||||
| `defineObject()` | Benutzerdefinierte Objektdefinitionen |
|
||||
| `defineLogicFunction()` | Definitionen von Logikfunktionen |
|
||||
| `defineFrontComponent()` | Definitionen von Frontend-Komponenten |
|
||||
| `defineRole()` | Rollendefinitionen |
|
||||
| `defineField()` | Felderweiterungen für bestehende Objekte |
|
||||
| Hilfsfunktion | Entitätstyp |
|
||||
| ---------------------------- | ----------------------------------------- |
|
||||
| `defineObject()` | Benutzerdefinierte Objektdefinitionen |
|
||||
| `defineLogicFunction()` | Definitionen von Logikfunktionen |
|
||||
| `defineFrontComponent()` | Definitionen von Frontend-Komponenten |
|
||||
| `defineRole()` | Rollendefinitionen |
|
||||
| `defineField()` | Felderweiterungen für bestehende Objekte |
|
||||
| `defineView()` | Gespeicherte View-Definitionen |
|
||||
| `defineNavigationMenuItem()` | Definitionen von Navigationsmenüeinträgen |
|
||||
| `defineSkill()` | AI agent skill definitions |
|
||||
|
||||
<Note>
|
||||
**Dateibenennung ist flexibel.** Die Entitätserkennung ist AST-basiert — das SDK durchsucht Ihre Quelldateien nach dem Muster `export default define<Entity>({...})`. Sie können Ihre Dateien und Ordner nach Belieben organisieren. Die Gruppierung nach Entitätstyp (z. B. `logic-functions/`, `roles/`) ist lediglich eine Konvention zur Codeorganisation, keine Voraussetzung.
|
||||
@@ -144,7 +173,7 @@ export default defineObject({
|
||||
Spätere Befehle fügen weitere Dateien und Ordner hinzu:
|
||||
|
||||
* `yarn twenty app:dev` generiert automatisch einen typisierten API-Client in `node_modules/twenty-sdk/generated` (typisierter Twenty-Client + Arbeitsbereichs-Typen).
|
||||
* `yarn twenty entity:add` fügt unter `src/` Entitätsdefinitionsdateien für benutzerdefinierte Objekte, Funktionen, Frontend-Komponenten oder Rollen hinzu.
|
||||
* `yarn twenty entity:add` will add entity definition files under `src/` for your custom objects, functions, front components, roles, skills, and more.
|
||||
|
||||
## Authentifizierung
|
||||
|
||||
@@ -187,14 +216,17 @@ Das twenty-sdk stellt typisierte Bausteine und Hilfsfunktionen bereit, die Sie i
|
||||
|
||||
Das SDK stellt Hilfsfunktionen bereit, um die Entitäten Ihrer App zu definieren. Wie in [Entitätserkennung](#entity-detection) beschrieben, müssen Sie `export default define<Entity>({...})` verwenden, damit Ihre Entitäten erkannt werden:
|
||||
|
||||
| Funktion | Zweck |
|
||||
| ------------------------ | -------------------------------------------------------------- |
|
||||
| `defineApplication()` | Anwendungsmetadaten konfigurieren (erforderlich, eine pro App) |
|
||||
| `defineObject()` | Benutzerdefinierte Objekte mit Feldern definieren |
|
||||
| `defineLogicFunction()` | Logikfunktionen mit Handlern definieren |
|
||||
| `defineFrontComponent()` | Frontend-Komponenten für benutzerdefinierte UI definieren |
|
||||
| `defineRole()` | Rollenberechtigungen und Objektzugriff konfigurieren |
|
||||
| `defineField()` | Bestehende Objekte mit zusätzlichen Feldern erweitern |
|
||||
| Funktion | Zweck |
|
||||
| ---------------------------- | -------------------------------------------------------------- |
|
||||
| `defineApplication()` | Anwendungsmetadaten konfigurieren (erforderlich, eine pro App) |
|
||||
| `defineObject()` | Benutzerdefinierte Objekte mit Feldern definieren |
|
||||
| `defineLogicFunction()` | Logikfunktionen mit Handlern definieren |
|
||||
| `defineFrontComponent()` | Frontend-Komponenten für benutzerdefinierte UI definieren |
|
||||
| `defineRole()` | Rollenberechtigungen und Objektzugriff konfigurieren |
|
||||
| `defineField()` | Bestehende Objekte mit zusätzlichen Feldern erweitern |
|
||||
| `defineView()` | Gespeicherte Views für Objekte definieren |
|
||||
| `defineNavigationMenuItem()` | Seitenleisten-Navigationslinks definieren |
|
||||
| `defineSkill()` | Define AI agent skills |
|
||||
|
||||
Diese Funktionen validieren Ihre Konfiguration zur Build-Zeit und bieten IDE-Autovervollständigung sowie Typsicherheit.
|
||||
|
||||
@@ -470,7 +502,7 @@ Notizen:
|
||||
|
||||
Eine Post-Installationsfunktion ist eine Logikfunktion, die automatisch ausgeführt wird, nachdem Ihre App in einem Arbeitsbereich installiert wurde. Dies ist nützlich für einmalige Einrichtungsvorgänge wie das Befüllen mit Standarddaten, das Erstellen erster Datensätze oder das Konfigurieren von Arbeitsbereichseinstellungen.
|
||||
|
||||
When you scaffold a new app with `create-twenty-app`, a post-install function is generated for you at `src/logic-functions/post-install.ts`:
|
||||
Wenn du mit `create-twenty-app` eine neue App erstellst, wird für dich eine Post-Installationsfunktion unter `src/logic-functions/post-install.ts` erzeugt:
|
||||
|
||||
```typescript
|
||||
// src/logic-functions/post-install.ts
|
||||
@@ -491,7 +523,7 @@ export default defineLogicFunction({
|
||||
});
|
||||
```
|
||||
|
||||
The function is wired into your app by referencing its universal identifier in `application-config.ts`:
|
||||
Die Funktion wird in deine App eingebunden, indem ihr universeller Bezeichner in `application-config.ts` referenziert wird:
|
||||
|
||||
```typescript
|
||||
import { POST_INSTALL_UNIVERSAL_IDENTIFIER } from 'src/logic-functions/post-install';
|
||||
@@ -502,7 +534,7 @@ export default defineApplication({
|
||||
});
|
||||
```
|
||||
|
||||
You can also manually execute the post-install function at any time using the CLI:
|
||||
Du kannst die Post-Installationsfunktion auch jederzeit manuell über die CLI ausführen:
|
||||
|
||||
```bash filename="Terminal"
|
||||
yarn twenty function:execute --postInstall
|
||||
@@ -510,10 +542,10 @@ yarn twenty function:execute --postInstall
|
||||
|
||||
Hauptpunkte:
|
||||
|
||||
* Post-install functions are standard logic functions — they use `defineLogicFunction()` like any other function.
|
||||
* The `postInstallLogicFunctionUniversalIdentifier` field in `defineApplication()` is optional. If omitted, no function runs after installation.
|
||||
* The default timeout is set to 300 seconds (5 minutes) to allow for longer setup tasks like data seeding.
|
||||
* Post-install functions do not need triggers — they are invoked by the platform during installation or manually via `function:execute --postInstall`.
|
||||
* Post-Installationsfunktionen sind Standard-Logikfunktionen — sie verwenden `defineLogicFunction()` wie jede andere Funktion.
|
||||
* Das Feld `postInstallLogicFunctionUniversalIdentifier` in `defineApplication()` ist optional. Wenn es weggelassen wird, wird nach der Installation keine Funktion ausgeführt.
|
||||
* Das standardmäßige Timeout ist auf 300 Sekunden (5 Minuten) festgelegt, um längere Einrichtungsvorgänge wie Daten-Seeding zu ermöglichen.
|
||||
* Post-Installationsfunktionen benötigen keine Trigger — sie werden von der Plattform während der Installation oder manuell über `function:execute --postInstall` aufgerufen.
|
||||
|
||||
### Routen-Trigger-Payload
|
||||
|
||||
@@ -714,6 +746,41 @@ Sie können neue Frontend-Komponenten auf zwei Arten erstellen:
|
||||
* **Generiert**: Führen Sie `yarn twenty entity:add` aus und wählen Sie die Option zum Hinzufügen einer neuen Frontend-Komponente.
|
||||
* **Manuell**: Erstellen Sie eine neue `*.front-component.tsx`-Datei und verwenden Sie `defineFrontComponent()`.
|
||||
|
||||
### Fähigkeiten
|
||||
|
||||
Skills define reusable instructions and capabilities that AI agents can use within your workspace. Use `defineSkill()` to define skills with built-in validation:
|
||||
|
||||
```typescript
|
||||
// src/skills/example-skill.ts
|
||||
import { defineSkill } from 'twenty-sdk';
|
||||
|
||||
export default defineSkill({
|
||||
universalIdentifier: 'a1b2c3d4-e5f6-7890-abcd-ef1234567890',
|
||||
name: 'sales-outreach',
|
||||
label: 'Sales Outreach',
|
||||
description: 'Guides the AI agent through a structured sales outreach process',
|
||||
icon: 'IconBrain',
|
||||
content: `You are a sales outreach assistant. When reaching out to a prospect:
|
||||
1. Research the company and recent news
|
||||
2. Identify the prospect's role and likely pain points
|
||||
3. Draft a personalized message referencing specific details
|
||||
4. Keep the tone professional but conversational`,
|
||||
});
|
||||
```
|
||||
|
||||
Hauptpunkte:
|
||||
|
||||
* `name` is a unique identifier string for the skill (kebab-case recommended).
|
||||
* `label` is the human-readable display name shown in the UI.
|
||||
* `content` contains the skill instructions — this is the text the AI agent uses.
|
||||
* `icon` (optional) sets the icon displayed in the UI.
|
||||
* `description` (optional) provides additional context about the skill's purpose.
|
||||
|
||||
You can create new skills in two ways:
|
||||
|
||||
* **Scaffolded**: Run `yarn twenty entity:add` and choose the option to add a new skill.
|
||||
* **Manual**: Create a new file and use `defineSkill()`, following the same pattern.
|
||||
|
||||
### Generierter typisierter Client
|
||||
|
||||
Der typisierte Client wird von `yarn twenty app:dev` automatisch generiert und basierend auf Ihrem Arbeitsbereichs-Schema in `node_modules/twenty-sdk/generated` gespeichert. Verwenden Sie ihn in Ihren Funktionen:
|
||||
|
||||
@@ -15,6 +15,7 @@ Le app ti consentono di creare e gestire le personalizzazioni di Twenty **come c
|
||||
|
||||
* Definisci oggetti e campi personalizzati come codice (modello dati gestito)
|
||||
* Crea funzioni logiche con trigger personalizzati
|
||||
* Definire le abilità per gli agenti IA
|
||||
* Distribuisci la stessa app su più spazi di lavoro
|
||||
|
||||
## Prerequisiti
|
||||
@@ -27,7 +28,7 @@ Le app ti consentono di creare e gestire le personalizzazioni di Twenty **come c
|
||||
Crea una nuova app utilizzando lo scaffolder ufficiale, quindi autenticati e inizia a sviluppare:
|
||||
|
||||
```bash filename="Terminal"
|
||||
# Crea lo scaffold di una nuova app
|
||||
# Crea lo scaffold di una nuova app (include tutti gli esempi per impostazione predefinita)
|
||||
npx create-twenty-app@latest my-twenty-app
|
||||
cd my-twenty-app
|
||||
|
||||
@@ -42,6 +43,19 @@ yarn twenty auth:login
|
||||
yarn twenty app:dev
|
||||
```
|
||||
|
||||
Lo strumento di scaffolding supporta tre modalità per controllare quali file di esempio vengono inclusi:
|
||||
|
||||
```bash filename="Terminal"
|
||||
# Default (exhaustive): all examples (object, field, logic function, front component, view, navigation menu item, skill)
|
||||
npx create-twenty-app@latest my-app
|
||||
|
||||
# Minimal: only core files (application-config.ts and default-role.ts)
|
||||
npx create-twenty-app@latest my-app --minimal
|
||||
|
||||
# Interactive: select which examples to include
|
||||
npx create-twenty-app@latest my-app --interactive
|
||||
```
|
||||
|
||||
Da qui puoi:
|
||||
|
||||
```bash filename="Terminal"
|
||||
@@ -73,9 +87,9 @@ Quando esegui `npx create-twenty-app@latest my-twenty-app`, lo scaffolder:
|
||||
* Copia un'applicazione base minimale in `my-twenty-app/`
|
||||
* Aggiunge una dipendenza locale `twenty-sdk` e la configurazione di Yarn 4
|
||||
* Crea file di configurazione e script collegati alla CLI `twenty`
|
||||
* Genera una configurazione applicativa predefinita, un ruolo funzione predefinito e una funzione post-installazione
|
||||
* Genera i file principali (configurazione dell'applicazione, ruolo predefinito per le funzioni logiche, funzione di post-installazione) più i file di esempio in base alla modalità di scaffolding
|
||||
|
||||
Un'app appena generata dallo scaffolder si presenta così:
|
||||
Un'app appena creata con la modalità predefinita `--exhaustive` si presenta così:
|
||||
|
||||
```text filename="my-twenty-app/"
|
||||
my-twenty-app/
|
||||
@@ -89,18 +103,30 @@ my-twenty-app/
|
||||
eslint.config.mjs
|
||||
tsconfig.json
|
||||
README.md
|
||||
public/ # Cartella delle risorse pubbliche (immagini, font, ecc.)
|
||||
public/ # Public assets folder (images, fonts, etc.)
|
||||
src/
|
||||
├── application-config.ts # Obbligatorio - configurazione principale dell'applicazione
|
||||
├── application-config.ts # Required - main application configuration
|
||||
├── roles/
|
||||
│ └── default-role.ts # Ruolo predefinito per le funzioni logiche
|
||||
│ └── default-role.ts # Default role for logic functions
|
||||
├── objects/
|
||||
│ └── example-object.ts # Example custom object definition
|
||||
├── fields/
|
||||
│ └── example-field.ts # Example standalone field definition
|
||||
├── logic-functions/
|
||||
│ ├── hello-world.ts # Funzione logica di esempio
|
||||
│ └── post-install.ts # Funzione logica post-installazione
|
||||
└── front-components/
|
||||
└── hello-world.tsx # Componente front-end di esempio
|
||||
│ ├── hello-world.ts # Example logic function
|
||||
│ └── post-install.ts # Post-install logic function
|
||||
├── front-components/
|
||||
│ └── hello-world.tsx # Example front component
|
||||
├── views/
|
||||
│ └── example-view.ts # Example saved view definition
|
||||
├── navigation-menu-items/
|
||||
│ └── example-navigation-menu-item.ts # Example sidebar navigation link
|
||||
└── skills/
|
||||
└── example-skill.ts # Example AI agent skill definition
|
||||
```
|
||||
|
||||
Con `--minimal`, vengono creati solo i file principali (`application-config.ts`, `roles/default-role.ts` e `logic-functions/post-install.ts`). Con `--interactive`, scegli quali file di esempio includere.
|
||||
|
||||
A livello generale:
|
||||
|
||||
* **package.json**: Dichiara il nome dell'app, la versione, i motori (Node 24+, Yarn 4) e aggiunge `twenty-sdk` più uno script `twenty` che delega alla CLI locale `twenty`. Esegui `yarn twenty help` per elencare tutti i comandi disponibili.
|
||||
@@ -116,13 +142,16 @@ A livello generale:
|
||||
|
||||
L'SDK rileva le entità analizzando i tuoi file TypeScript alla ricerca di chiamate **`export default define<Entity>({...})`**. Ogni tipo di entità ha una corrispondente funzione helper esportata da `twenty-sdk`:
|
||||
|
||||
| Funzione helper | Tipo di entità |
|
||||
| ------------------------ | ----------------------------------------- |
|
||||
| `defineObject()` | Definizioni di oggetti personalizzati |
|
||||
| `defineLogicFunction()` | Definizioni di funzioni logiche |
|
||||
| `defineFrontComponent()` | Definizioni dei componenti front-end |
|
||||
| `defineRole()` | Definizioni di ruoli |
|
||||
| `defineField()` | Estensioni di campo per oggetti esistenti |
|
||||
| Funzione helper | Tipo di entità |
|
||||
| ---------------------------- | ---------------------------------------------- |
|
||||
| `defineObject()` | Definizioni di oggetti personalizzati |
|
||||
| `defineLogicFunction()` | Definizioni di funzioni logiche |
|
||||
| `defineFrontComponent()` | Definizioni dei componenti front-end |
|
||||
| `defineRole()` | Definizioni di ruoli |
|
||||
| `defineField()` | Estensioni di campo per oggetti esistenti |
|
||||
| `defineView()` | Definizioni di viste salvate |
|
||||
| `defineNavigationMenuItem()` | Definizioni delle voci del menu di navigazione |
|
||||
| `defineSkill()` | AI agent skill definitions |
|
||||
|
||||
<Note>
|
||||
**La denominazione dei file è flessibile.** Il rilevamento delle entità è basato sull'AST — l'SDK esegue la scansione dei file sorgente alla ricerca del pattern `export default define<Entity>({...})`. Puoi organizzare file e cartelle come preferisci. Raggruppare per tipo di entità (ad es., `logic-functions/`, `roles/`) è solo una convenzione per l'organizzazione del codice, non un requisito.
|
||||
@@ -144,7 +173,7 @@ export default defineObject({
|
||||
Comandi successivi aggiungeranno altri file e cartelle:
|
||||
|
||||
* `yarn twenty app:dev` genererà automaticamente un client API tipizzato in `node_modules/twenty-sdk/generated` (client Twenty tipizzato + tipi dell'area di lavoro).
|
||||
* `yarn twenty entity:add` aggiungerà file di definizione delle entità sotto `src/` per i tuoi oggetti, funzioni, componenti front-end o ruoli personalizzati.
|
||||
* `yarn twenty entity:add` will add entity definition files under `src/` for your custom objects, functions, front components, roles, skills, and more.
|
||||
|
||||
## Autenticazione
|
||||
|
||||
@@ -187,14 +216,17 @@ Il pacchetto twenty-sdk fornisce blocchi tipizzati e funzioni helper da usare ne
|
||||
|
||||
L'SDK fornisce funzioni helper per definire le entità della tua app. Come descritto in [Rilevamento delle entità](#entity-detection), devi usare `export default define<Entity>({...})` affinché le tue entità vengano rilevate:
|
||||
|
||||
| Funzione | Scopo |
|
||||
| ------------------------ | ----------------------------------------------------------------------- |
|
||||
| `defineApplication()` | Configura i metadati dell'applicazione (obbligatorio, uno per app) |
|
||||
| `defineObject()` | Definisci oggetti personalizzati con campi |
|
||||
| `defineLogicFunction()` | Definisci funzioni logiche con handler |
|
||||
| `defineFrontComponent()` | Definisci componenti front-end per un'interfaccia utente personalizzata |
|
||||
| `defineRole()` | Configura i permessi dei ruoli e l'accesso agli oggetti |
|
||||
| `defineField()` | Estendi gli oggetti esistenti con campi aggiuntivi |
|
||||
| Funzione | Scopo |
|
||||
| ---------------------------- | ----------------------------------------------------------------------- |
|
||||
| `defineApplication()` | Configura i metadati dell'applicazione (obbligatorio, uno per app) |
|
||||
| `defineObject()` | Definisci oggetti personalizzati con campi |
|
||||
| `defineLogicFunction()` | Definisci funzioni logiche con handler |
|
||||
| `defineFrontComponent()` | Definisci componenti front-end per un'interfaccia utente personalizzata |
|
||||
| `defineRole()` | Configura i permessi dei ruoli e l'accesso agli oggetti |
|
||||
| `defineField()` | Estendi gli oggetti esistenti con campi aggiuntivi |
|
||||
| `defineView()` | Definisce viste salvate per gli oggetti |
|
||||
| `defineNavigationMenuItem()` | Definisce i link di navigazione della barra laterale |
|
||||
| `defineSkill()` | Define AI agent skills |
|
||||
|
||||
Queste funzioni convalidano la configurazione in fase di build e offrono il completamento automatico nell'IDE e la sicurezza dei tipi.
|
||||
|
||||
@@ -470,7 +502,7 @@ Note:
|
||||
|
||||
Una funzione post-installazione è una funzione logica che viene eseguita automaticamente dopo che la tua app è stata installata in uno spazio di lavoro. Questo è utile per attività di configurazione una tantum come il popolamento di dati predefiniti, la creazione di record iniziali o la configurazione delle impostazioni dello spazio di lavoro.
|
||||
|
||||
When you scaffold a new app with `create-twenty-app`, a post-install function is generated for you at `src/logic-functions/post-install.ts`:
|
||||
Quando esegui lo scaffolding di una nuova app con `create-twenty-app`, viene generata automaticamente una funzione di post-installazione in `src/logic-functions/post-install.ts`:
|
||||
|
||||
```typescript
|
||||
// src/logic-functions/post-install.ts
|
||||
@@ -491,7 +523,7 @@ export default defineLogicFunction({
|
||||
});
|
||||
```
|
||||
|
||||
The function is wired into your app by referencing its universal identifier in `application-config.ts`:
|
||||
La funzione viene collegata alla tua app facendo riferimento al suo identificatore universale in `application-config.ts`:
|
||||
|
||||
```typescript
|
||||
import { POST_INSTALL_UNIVERSAL_IDENTIFIER } from 'src/logic-functions/post-install';
|
||||
@@ -502,7 +534,7 @@ export default defineApplication({
|
||||
});
|
||||
```
|
||||
|
||||
You can also manually execute the post-install function at any time using the CLI:
|
||||
Puoi anche eseguire manualmente la funzione di post-installazione in qualsiasi momento utilizzando la CLI:
|
||||
|
||||
```bash filename="Terminal"
|
||||
yarn twenty function:execute --postInstall
|
||||
@@ -510,10 +542,10 @@ yarn twenty function:execute --postInstall
|
||||
|
||||
Punti chiave:
|
||||
|
||||
* Post-install functions are standard logic functions — they use `defineLogicFunction()` like any other function.
|
||||
* The `postInstallLogicFunctionUniversalIdentifier` field in `defineApplication()` is optional. If omitted, no function runs after installation.
|
||||
* The default timeout is set to 300 seconds (5 minutes) to allow for longer setup tasks like data seeding.
|
||||
* Post-install functions do not need triggers — they are invoked by the platform during installation or manually via `function:execute --postInstall`.
|
||||
* Le funzioni di post-installazione sono funzioni logiche standard — usano `defineLogicFunction()` come qualsiasi altra funzione.
|
||||
* Il campo `postInstallLogicFunctionUniversalIdentifier` in `defineApplication()` è facoltativo. Se omesso, nessuna funzione viene eseguita dopo l'installazione.
|
||||
* Il timeout predefinito è impostato a 300 secondi (5 minuti) per consentire attività di configurazione più lunghe, come il popolamento dei dati.
|
||||
* Le funzioni di post-installazione non necessitano di trigger — vengono invocate dalla piattaforma durante l'installazione o manualmente tramite `function:execute --postInstall`.
|
||||
|
||||
### Payload del trigger di route
|
||||
|
||||
@@ -714,6 +746,41 @@ Puoi creare nuovi componenti front-end in due modi:
|
||||
* **Generata dallo scaffolder**: Esegui `yarn twenty entity:add` e scegli l'opzione per aggiungere un nuovo componente front-end.
|
||||
* **Manuale**: Crea un nuovo file `*.front-component.tsx` e usa `defineFrontComponent()`.
|
||||
|
||||
### Abilità
|
||||
|
||||
Skills define reusable instructions and capabilities that AI agents can use within your workspace. Use `defineSkill()` to define skills with built-in validation:
|
||||
|
||||
```typescript
|
||||
// src/skills/example-skill.ts
|
||||
import { defineSkill } from 'twenty-sdk';
|
||||
|
||||
export default defineSkill({
|
||||
universalIdentifier: 'a1b2c3d4-e5f6-7890-abcd-ef1234567890',
|
||||
name: 'sales-outreach',
|
||||
label: 'Sales Outreach',
|
||||
description: 'Guides the AI agent through a structured sales outreach process',
|
||||
icon: 'IconBrain',
|
||||
content: `You are a sales outreach assistant. When reaching out to a prospect:
|
||||
1. Research the company and recent news
|
||||
2. Identify the prospect's role and likely pain points
|
||||
3. Draft a personalized message referencing specific details
|
||||
4. Keep the tone professional but conversational`,
|
||||
});
|
||||
```
|
||||
|
||||
Punti chiave:
|
||||
|
||||
* `name` is a unique identifier string for the skill (kebab-case recommended).
|
||||
* `label` is the human-readable display name shown in the UI.
|
||||
* `content` contains the skill instructions — this is the text the AI agent uses.
|
||||
* `icon` (optional) sets the icon displayed in the UI.
|
||||
* `description` (optional) provides additional context about the skill's purpose.
|
||||
|
||||
You can create new skills in two ways:
|
||||
|
||||
* **Scaffolded**: Run `yarn twenty entity:add` and choose the option to add a new skill.
|
||||
* **Manual**: Create a new file and use `defineSkill()`, following the same pattern.
|
||||
|
||||
### Client tipizzato generato
|
||||
|
||||
Il client tipizzato è generato automaticamente da `yarn twenty app:dev` e salvato in `node_modules/twenty-sdk/generated` in base allo schema della tua area di lavoro. Usalo nelle tue funzioni:
|
||||
|
||||
@@ -15,6 +15,7 @@ Os aplicativos permitem criar e gerenciar personalizações do Twenty **como có
|
||||
|
||||
* Defina objetos e campos personalizados como código (modelo de dados gerenciado)
|
||||
* Crie funções de lógica com gatilhos personalizados
|
||||
* Definir habilidades para agentes de IA
|
||||
* Implemente o mesmo aplicativo em vários espaços de trabalho
|
||||
|
||||
## Pré-requisitos
|
||||
@@ -27,40 +28,53 @@ Os aplicativos permitem criar e gerenciar personalizações do Twenty **como có
|
||||
Crie um novo aplicativo usando o gerador oficial, depois autentique-se e comece a desenvolver:
|
||||
|
||||
```bash filename="Terminal"
|
||||
# Scaffold a new app
|
||||
# Criar a estrutura de um novo app (inclui todos os exemplos por padrão)
|
||||
npx create-twenty-app@latest my-twenty-app
|
||||
cd my-twenty-app
|
||||
|
||||
# If you don't use yarn@4
|
||||
# Se você não usa yarn@4
|
||||
corepack enable
|
||||
yarn install
|
||||
|
||||
# Authenticate using your API key (you'll be prompted)
|
||||
# Autentique-se usando sua chave de API (você será solicitado)
|
||||
yarn twenty auth:login
|
||||
|
||||
# Start dev mode: automatically syncs local changes to your workspace
|
||||
# Iniciar modo de desenvolvimento: sincroniza automaticamente as alterações locais com seu workspace
|
||||
yarn twenty app:dev
|
||||
```
|
||||
|
||||
O gerador de estrutura oferece suporte a três modos para controlar quais arquivos de exemplo são incluídos:
|
||||
|
||||
```bash filename="Terminal"
|
||||
# Default (exhaustive): all examples (object, field, logic function, front component, view, navigation menu item, skill)
|
||||
npx create-twenty-app@latest my-app
|
||||
|
||||
# Minimal: only core files (application-config.ts and default-role.ts)
|
||||
npx create-twenty-app@latest my-app --minimal
|
||||
|
||||
# Interactive: select which examples to include
|
||||
npx create-twenty-app@latest my-app --interactive
|
||||
```
|
||||
|
||||
A partir daqui você pode:
|
||||
|
||||
```bash filename="Terminal"
|
||||
# Add a new entity to your application (guided)
|
||||
# Adicionar uma nova entidade à sua aplicação (assistido)
|
||||
yarn twenty entity:add
|
||||
|
||||
# Watch your application's function logs
|
||||
# Acompanhar os logs das funções da sua aplicação
|
||||
yarn twenty function:logs
|
||||
|
||||
# Execute a function by name
|
||||
yarn twenty function:execute -n my-function -p '{"name": "test"}'
|
||||
# Executar uma função pelo nome
|
||||
yarn twenty function:execute -n my-function -p '{\"name\": \"test\"}'
|
||||
|
||||
# Execute the post-install function
|
||||
# Executar a função de pós-instalação
|
||||
yarn twenty function:execute --postInstall
|
||||
|
||||
# Uninstall the application from the current workspace
|
||||
# Desinstalar a aplicação do espaço de trabalho atual
|
||||
yarn twenty app:uninstall
|
||||
|
||||
# Display commands' help
|
||||
# Exibir a ajuda dos comandos
|
||||
yarn twenty help
|
||||
```
|
||||
|
||||
@@ -73,9 +87,9 @@ Ao executar `npx create-twenty-app@latest my-twenty-app`, o gerador:
|
||||
* Copia um aplicativo base mínimo para `my-twenty-app/`
|
||||
* Adiciona uma dependência local `twenty-sdk` e a configuração do Yarn 4
|
||||
* Cria arquivos de configuração e scripts conectados à CLI `twenty`
|
||||
* Generates a default application config, a default function role, and a post-install function
|
||||
* Gera arquivos principais (configuração da aplicação, papel padrão para funções de lógica, função de pós-instalação) além de arquivos de exemplo com base no modo de geração de estrutura
|
||||
|
||||
Um aplicativo recém-criado pelo scaffold fica assim:
|
||||
Um app recém-criado com o modo padrão `--exhaustive` fica assim:
|
||||
|
||||
```text filename="my-twenty-app/"
|
||||
my-twenty-app/
|
||||
@@ -94,13 +108,25 @@ my-twenty-app/
|
||||
├── application-config.ts # Required - main application configuration
|
||||
├── roles/
|
||||
│ └── default-role.ts # Default role for logic functions
|
||||
├── objects/
|
||||
│ └── example-object.ts # Example custom object definition
|
||||
├── fields/
|
||||
│ └── example-field.ts # Example standalone field definition
|
||||
├── logic-functions/
|
||||
│ ├── hello-world.ts # Example logic function
|
||||
│ └── post-install.ts # Post-install logic function
|
||||
└── front-components/
|
||||
└── hello-world.tsx # Example front component
|
||||
├── front-components/
|
||||
│ └── hello-world.tsx # Example front component
|
||||
├── views/
|
||||
│ └── example-view.ts # Example saved view definition
|
||||
├── navigation-menu-items/
|
||||
│ └── example-navigation-menu-item.ts # Example sidebar navigation link
|
||||
└── skills/
|
||||
└── example-skill.ts # Example AI agent skill definition
|
||||
```
|
||||
|
||||
Com `--minimal`, apenas os arquivos principais são criados (`application-config.ts`, `roles/default-role.ts` e `logic-functions/post-install.ts`). Com `--interactive`, você escolhe quais arquivos de exemplo incluir.
|
||||
|
||||
Em alto nível:
|
||||
|
||||
* **package.json**: Declara o nome do app, versão, engines (Node 24+, Yarn 4), e adiciona `twenty-sdk` além de um script `twenty` que delega para a CLI `twenty` local. Execute `yarn twenty help` para listar todos os comandos disponíveis.
|
||||
@@ -116,13 +142,16 @@ Em alto nível:
|
||||
|
||||
O SDK detecta entidades analisando seus arquivos TypeScript em busca de chamadas **`export default define<Entity>({...})`**. Cada tipo de entidade tem uma função utilitária correspondente exportada de `twenty-sdk`:
|
||||
|
||||
| Função utilitária | Tipo de entidade |
|
||||
| ------------------------ | ------------------------------------------- |
|
||||
| `defineObject()` | Definições de objetos personalizados |
|
||||
| `defineLogicFunction()` | Definições de funções de lógica |
|
||||
| `defineFrontComponent()` | Definições de componentes de front-end |
|
||||
| `defineRole()` | Definições de papéis |
|
||||
| `defineField()` | Extensões de campos para objetos existentes |
|
||||
| Função utilitária | Tipo de entidade |
|
||||
| ---------------------------- | ------------------------------------------- |
|
||||
| `defineObject()` | Definições de objetos personalizados |
|
||||
| `defineLogicFunction()` | Definições de funções de lógica |
|
||||
| `defineFrontComponent()` | Definições de componentes de front-end |
|
||||
| `defineRole()` | Definições de papéis |
|
||||
| `defineField()` | Extensões de campos para objetos existentes |
|
||||
| `defineView()` | Definições de visualizações salvas |
|
||||
| `defineNavigationMenuItem()` | Definições de itens do menu de navegação |
|
||||
| `defineSkill()` | AI agent skill definitions |
|
||||
|
||||
<Note>
|
||||
**A nomeação de arquivos é flexível.** A detecção de entidades é baseada em AST — o SDK varre seus arquivos fonte em busca do padrão `export default define<Entity>({...})`. Você pode organizar seus arquivos e pastas como quiser. Agrupar por tipo de entidade (por exemplo, `logic-functions/`, `roles/`) é apenas uma convenção para organização do código, não um requisito.
|
||||
@@ -144,7 +173,7 @@ export default defineObject({
|
||||
Comandos posteriores adicionarão mais arquivos e pastas:
|
||||
|
||||
* `yarn twenty app:dev` vai gerar automaticamente um cliente de API tipado em `node_modules/twenty-sdk/generated` (cliente Twenty tipado + tipos do espaço de trabalho).
|
||||
* `yarn twenty entity:add` adicionará arquivos de definição de entidade em `src/` para seus objetos, funções, componentes de front-end ou papéis personalizados.
|
||||
* `yarn twenty entity:add` will add entity definition files under `src/` for your custom objects, functions, front components, roles, skills, and more.
|
||||
|
||||
## Autenticação
|
||||
|
||||
@@ -187,14 +216,17 @@ O twenty-sdk fornece blocos de construção tipados e funções utilitárias que
|
||||
|
||||
O SDK fornece funções utilitárias para definir as entidades do seu app. Conforme descrito em [Detecção de entidades](#entity-detection), você deve usar `export default define<Entity>({...})` para que suas entidades sejam detectadas:
|
||||
|
||||
| Função | Finalidade |
|
||||
| ------------------------ | ------------------------------------------------------------ |
|
||||
| `defineApplication()` | Configurar metadados do aplicativo (obrigatório, um por app) |
|
||||
| `defineObject()` | Define objetos personalizados com campos |
|
||||
| `defineLogicFunction()` | Defina funções de lógica com handlers |
|
||||
| `defineFrontComponent()` | Definir componentes de front-end para UI personalizada |
|
||||
| `defineRole()` | Configura permissões de papéis e acesso a objetos |
|
||||
| `defineField()` | Estender objetos existentes com campos adicionais |
|
||||
| Função | Finalidade |
|
||||
| ---------------------------- | ------------------------------------------------------------ |
|
||||
| `defineApplication()` | Configurar metadados do aplicativo (obrigatório, um por app) |
|
||||
| `defineObject()` | Define objetos personalizados com campos |
|
||||
| `defineLogicFunction()` | Defina funções de lógica com handlers |
|
||||
| `defineFrontComponent()` | Definir componentes de front-end para UI personalizada |
|
||||
| `defineRole()` | Configura permissões de papéis e acesso a objetos |
|
||||
| `defineField()` | Estender objetos existentes com campos adicionais |
|
||||
| `defineView()` | Define visualizações salvas para objetos |
|
||||
| `defineNavigationMenuItem()` | Define links de navegação da barra lateral |
|
||||
| `defineSkill()` | Define AI agent skills |
|
||||
|
||||
Essas funções validam sua configuração em tempo de compilação e oferecem autocompletar na IDE e segurança de tipos.
|
||||
|
||||
@@ -294,7 +326,7 @@ Todo aplicativo tem um único arquivo `application-config.ts` que descreve:
|
||||
* **O que é o aplicativo**: identificadores, nome de exibição e descrição.
|
||||
* **Como suas funções são executadas**: qual papel usam para permissões.
|
||||
* **Variáveis (opcional)**: pares chave–valor expostos às suas funções como variáveis de ambiente.
|
||||
* **(Optional) post-install function**: a logic function that runs after the app is installed.
|
||||
* **(Opcional) função de pós-instalação**: uma função de lógica que é executada após a instalação da aplicação.
|
||||
|
||||
Use `defineApplication()` to define your application configuration:
|
||||
|
||||
@@ -327,7 +359,7 @@ Notas:
|
||||
* `universalIdentifier` são IDs determinísticos que você controla; gere-os uma vez e mantenha-os estáveis entre sincronizações.
|
||||
* `applicationVariables` tornam-se variáveis de ambiente para suas funções (por exemplo, `DEFAULT_RECIPIENT_NAME` fica disponível como `process.env.DEFAULT_RECIPIENT_NAME`).
|
||||
* `defaultRoleUniversalIdentifier` deve corresponder ao arquivo do papel (veja abaixo).
|
||||
* `postInstallLogicFunctionUniversalIdentifier` (optional) points to a logic function that runs automatically after the app is installed. See [Post-install functions](#post-install-functions).
|
||||
* `postInstallLogicFunctionUniversalIdentifier` (opcional) aponta para uma função de lógica que é executada automaticamente após a instalação da aplicação. Consulte [Funções de pós-instalação](#post-install-functions).
|
||||
|
||||
#### Papéis e permissões
|
||||
|
||||
@@ -466,11 +498,11 @@ Notas:
|
||||
* O array `triggers` é opcional. Funções sem gatilhos podem ser usadas como funções utilitárias chamadas por outras funções.
|
||||
* Você pode misturar vários tipos de gatilho em uma única função.
|
||||
|
||||
### Post-install functions
|
||||
### Funções de pós-instalação
|
||||
|
||||
A post-install function is a logic function that runs automatically after your app is installed on a workspace. This is useful for one-time setup tasks such as seeding default data, creating initial records, or configuring workspace settings.
|
||||
Uma função de pós-instalação é uma função de lógica que é executada automaticamente após a sua aplicação ser instalada em um espaço de trabalho. Isso é útil para tarefas de configuração únicas, como preencher dados padrão, criar registros iniciais ou configurar as configurações do espaço de trabalho.
|
||||
|
||||
When you scaffold a new app with `create-twenty-app`, a post-install function is generated for you at `src/logic-functions/post-install.ts`:
|
||||
Ao criar a estrutura de um novo app com `create-twenty-app`, uma função de pós-instalação é gerada para você em `src/logic-functions/post-install.ts`:
|
||||
|
||||
```typescript
|
||||
// src/logic-functions/post-install.ts
|
||||
@@ -491,7 +523,7 @@ export default defineLogicFunction({
|
||||
});
|
||||
```
|
||||
|
||||
The function is wired into your app by referencing its universal identifier in `application-config.ts`:
|
||||
A função é conectada ao seu app referenciando seu identificador universal em `application-config.ts`:
|
||||
|
||||
```typescript
|
||||
import { POST_INSTALL_UNIVERSAL_IDENTIFIER } from 'src/logic-functions/post-install';
|
||||
@@ -502,7 +534,7 @@ export default defineApplication({
|
||||
});
|
||||
```
|
||||
|
||||
You can also manually execute the post-install function at any time using the CLI:
|
||||
Você também pode executar manualmente a função de pós-instalação a qualquer momento usando a CLI:
|
||||
|
||||
```bash filename="Terminal"
|
||||
yarn twenty function:execute --postInstall
|
||||
@@ -510,10 +542,10 @@ yarn twenty function:execute --postInstall
|
||||
|
||||
Pontos-chave:
|
||||
|
||||
* Post-install functions are standard logic functions — they use `defineLogicFunction()` like any other function.
|
||||
* The `postInstallLogicFunctionUniversalIdentifier` field in `defineApplication()` is optional. If omitted, no function runs after installation.
|
||||
* The default timeout is set to 300 seconds (5 minutes) to allow for longer setup tasks like data seeding.
|
||||
* Post-install functions do not need triggers — they are invoked by the platform during installation or manually via `function:execute --postInstall`.
|
||||
* As funções de pós-instalação são funções de lógica padrão — elas usam `defineLogicFunction()` como qualquer outra função.
|
||||
* O campo `postInstallLogicFunctionUniversalIdentifier` em `defineApplication()` é opcional. Se omitido, nenhuma função é executada após a instalação.
|
||||
* O tempo limite padrão é definido como 300 segundos (5 minutos) para permitir tarefas de configuração mais longas, como o pré-carregamento de dados.
|
||||
* As funções de pós-instalação não precisam de gatilhos — elas são invocadas pela plataforma durante a instalação ou manualmente via `function:execute --postInstall`.
|
||||
|
||||
### Payload de gatilho de rota
|
||||
|
||||
@@ -714,6 +746,41 @@ Você pode criar novos componentes de front-end de duas formas:
|
||||
* **Gerado automaticamente**: Execute `yarn twenty entity:add` e escolha a opção para adicionar um novo componente de front-end.
|
||||
* **Manual**: Crie um novo arquivo `*.front-component.tsx` e use `defineFrontComponent()`.
|
||||
|
||||
### Habilidades
|
||||
|
||||
Skills define reusable instructions and capabilities that AI agents can use within your workspace. Use `defineSkill()` to define skills with built-in validation:
|
||||
|
||||
```typescript
|
||||
// src/skills/example-skill.ts
|
||||
import { defineSkill } from 'twenty-sdk';
|
||||
|
||||
export default defineSkill({
|
||||
universalIdentifier: 'a1b2c3d4-e5f6-7890-abcd-ef1234567890',
|
||||
name: 'sales-outreach',
|
||||
label: 'Sales Outreach',
|
||||
description: 'Guides the AI agent through a structured sales outreach process',
|
||||
icon: 'IconBrain',
|
||||
content: `You are a sales outreach assistant. When reaching out to a prospect:
|
||||
1. Research the company and recent news
|
||||
2. Identify the prospect's role and likely pain points
|
||||
3. Draft a personalized message referencing specific details
|
||||
4. Keep the tone professional but conversational`,
|
||||
});
|
||||
```
|
||||
|
||||
Pontos-chave:
|
||||
|
||||
* `name` is a unique identifier string for the skill (kebab-case recommended).
|
||||
* `label` is the human-readable display name shown in the UI.
|
||||
* `content` contains the skill instructions — this is the text the AI agent uses.
|
||||
* `icon` (optional) sets the icon displayed in the UI.
|
||||
* `description` (optional) provides additional context about the skill's purpose.
|
||||
|
||||
You can create new skills in two ways:
|
||||
|
||||
* **Scaffolded**: Run `yarn twenty entity:add` and choose the option to add a new skill.
|
||||
* **Manual**: Create a new file and use `defineSkill()`, following the same pattern.
|
||||
|
||||
### Cliente tipado gerado
|
||||
|
||||
O cliente tipado é gerado automaticamente pelo `yarn twenty app:dev` e armazenado em `node_modules/twenty-sdk/generated` com base no esquema do seu espaço de trabalho. Use-o em suas funções:
|
||||
|
||||
@@ -15,6 +15,7 @@ Aplicațiile vă permit să construiți și să gestionați personalizările Twe
|
||||
|
||||
* Definiți obiecte și câmpuri personalizate sub formă de cod (model de date gestionat)
|
||||
* Creați funcții de logică cu declanșatoare personalizate
|
||||
* Definiți abilități pentru agenți de IA
|
||||
* Implementați aceeași aplicație în mai multe spații de lucru
|
||||
|
||||
## Cerințe
|
||||
@@ -27,7 +28,7 @@ Aplicațiile vă permit să construiți și să gestionați personalizările Twe
|
||||
Creați o aplicație nouă folosind generatorul oficial, apoi autentificați-vă și începeți să dezvoltați:
|
||||
|
||||
```bash filename="Terminal"
|
||||
# Creează scheletul unei aplicații noi
|
||||
# Creează scheletul unei aplicații noi (include toate exemplele în mod implicit)
|
||||
npx create-twenty-app@latest my-twenty-app
|
||||
cd my-twenty-app
|
||||
|
||||
@@ -42,6 +43,19 @@ yarn twenty auth:login
|
||||
yarn twenty app:dev
|
||||
```
|
||||
|
||||
Generatorul de schelet acceptă trei moduri pentru a controla ce fișiere de exemplu sunt incluse:
|
||||
|
||||
```bash filename="Terminal"
|
||||
# Implicit (exhaustiv): toate exemplele (obiect, câmp, funcție logică, componentă de interfață, vizualizare, element de meniu de navigare, abilitate)
|
||||
npx create-twenty-app@latest my-app
|
||||
|
||||
# Minimal: doar fișierele de bază (application-config.ts și default-role.ts)
|
||||
npx create-twenty-app@latest my-app --minimal
|
||||
|
||||
# Interactiv: selectezi ce exemple să incluzi
|
||||
npx create-twenty-app@latest my-app --interactive
|
||||
```
|
||||
|
||||
De aici puteți:
|
||||
|
||||
```bash filename="Terminal"
|
||||
@@ -73,9 +87,9 @@ Când rulați `npx create-twenty-app@latest my-twenty-app`, generatorul:
|
||||
* Copiază o aplicație de bază minimală în `my-twenty-app/`
|
||||
* Adaugă o dependență locală `twenty-sdk` și configurația Yarn 4
|
||||
* Creează fișiere de configurare și scripturi conectate la CLI-ul `twenty`
|
||||
* Generează o configurație implicită a aplicației, un rol implicit pentru funcții și o funcție post-instalare
|
||||
* Generează fișierele de bază (configurația aplicației, rolul implicit al funcțiilor, funcția post-instalare) plus fișiere de exemplu în funcție de modul de generare a scheletului
|
||||
|
||||
O aplicație nou generată arată astfel:
|
||||
O aplicație proaspăt generată cu modul implicit `--exhaustive` arată astfel:
|
||||
|
||||
```text filename="my-twenty-app/"
|
||||
my-twenty-app/
|
||||
@@ -94,13 +108,25 @@ my-twenty-app/
|
||||
├── application-config.ts # Obligatoriu - configurația principală a aplicației
|
||||
├── roles/
|
||||
│ └── default-role.ts # Rol implicit pentru funcțiile logice
|
||||
├── objects/
|
||||
│ └── example-object.ts # Exemplu de definiție a unui obiect personalizat
|
||||
├── fields/
|
||||
│ └── example-field.ts # Exemplu de definiție de câmp independent
|
||||
├── logic-functions/
|
||||
│ ├── hello-world.ts # Exemplu de funcție logică
|
||||
│ └── post-install.ts # Funcție logică post-instalare
|
||||
└── front-components/
|
||||
└── hello-world.tsx # Exemplu de componentă de interfață
|
||||
├── front-components/
|
||||
│ └── hello-world.tsx # Exemplu de componentă de interfață
|
||||
├── views/
|
||||
│ └── example-view.ts # Exemplu de definiție a unei vizualizări salvate
|
||||
├── navigation-menu-items/
|
||||
│ └── example-navigation-menu-item.ts # Exemplu de link de navigare în bara laterală
|
||||
└── skills/
|
||||
└── example-skill.ts # Exemplu de definiție a unei abilități a agentului AI
|
||||
```
|
||||
|
||||
Cu `--minimal`, sunt create doar fișierele de bază (`application-config.ts`, `roles/default-role.ts` și `logic-functions/post-install.ts`). Cu `--interactive`, alegi ce fișiere de exemplu să incluzi.
|
||||
|
||||
Pe scurt:
|
||||
|
||||
* **package.json**: Declară numele aplicației, versiunea, motoarele (Node 24+, Yarn 4) și adaugă `twenty-sdk` plus un script `twenty` care deleagă către CLI-ul local `twenty`. Rulează `yarn twenty help` pentru a lista toate comenzile disponibile.
|
||||
@@ -116,13 +142,16 @@ Pe scurt:
|
||||
|
||||
SDK-ul detectează entitățile analizând fișierele TypeScript pentru apeluri **`export default define<Entity>({...})`**. Fiecare tip de entitate are o funcție ajutătoare corespunzătoare, exportată din `twenty-sdk`:
|
||||
|
||||
| Funcție ajutătoare | Tipul entității |
|
||||
| ------------------------ | ------------------------------------------- |
|
||||
| `defineObject()` | Definiții de obiecte personalizate |
|
||||
| `defineLogicFunction()` | Definiții de funcții de logică |
|
||||
| `defineFrontComponent()` | Definiții ale componentelor de interfață |
|
||||
| `defineRole()` | Definiții de rol |
|
||||
| `defineField()` | Extensii de câmp pentru obiectele existente |
|
||||
| Funcție ajutătoare | Tipul entității |
|
||||
| ---------------------------- | ---------------------------------------------- |
|
||||
| `defineObject()` | Definiții de obiecte personalizate |
|
||||
| `defineLogicFunction()` | Definiții de funcții de logică |
|
||||
| `defineFrontComponent()` | Definiții ale componentelor de interfață |
|
||||
| `defineRole()` | Definiții de rol |
|
||||
| `defineField()` | Extensii de câmp pentru obiectele existente |
|
||||
| `defineView()` | Definiții pentru vizualizări salvate |
|
||||
| `defineNavigationMenuItem()` | Definiții pentru elemente de meniu de navigare |
|
||||
| `defineSkill()` | Definiții ale abilităților agentului AI |
|
||||
|
||||
<Note>
|
||||
**Denumirea fișierelor este flexibilă.** Detectarea entităților se bazează pe AST — SDK-ul scanează fișierele sursă pentru tiparul `export default define<Entity>({...})`. Puteți organiza fișierele și folderele cum doriți. Gruparea după tipul de entitate (de exemplu, `logic-functions/`, `roles/`) este doar o convenție pentru organizarea codului, nu o cerință.
|
||||
@@ -144,7 +173,7 @@ export default defineObject({
|
||||
Comenzile ulterioare vor adăuga mai multe fișiere și foldere:
|
||||
|
||||
* `yarn twenty app:dev` va genera automat un client API tipizat în `node_modules/twenty-sdk/generated` (client Twenty tipizat + tipuri ale spațiului de lucru).
|
||||
* `yarn twenty entity:add` va adăuga fișiere de definire a entităților în `src/` pentru obiectele, funcțiile, componentele front-end sau rolurile personalizate.
|
||||
* `yarn twenty entity:add` va adăuga fișiere de definire a entităților în `src/` pentru obiectele, funcțiile, componentele front-end, rolurile, abilitățile și altele.
|
||||
|
||||
## Autentificare
|
||||
|
||||
@@ -187,14 +216,17 @@ Biblioteca twenty-sdk oferă blocuri de bază tipizate și funcții ajutătoare
|
||||
|
||||
SDK-ul oferă funcții ajutătoare pentru definirea entităților aplicației. După cum este descris în [Detectarea entităților](#entity-detection), trebuie să folosiți `export default define<Entity>({...})` pentru ca entitățile să fie detectate:
|
||||
|
||||
| Funcție | Scop |
|
||||
| ------------------------ | ---------------------------------------------------------------------- |
|
||||
| `defineApplication()` | Configurați metadatele aplicației (obligatoriu, una per aplicație) |
|
||||
| `defineObject()` | Definiți obiecte personalizate cu câmpuri |
|
||||
| `defineLogicFunction()` | Definiți funcții de logică cu handleri |
|
||||
| `defineFrontComponent()` | Definiți componente Front pentru interfața de utilizator personalizată |
|
||||
| `defineRole()` | Configurați permisiunile rolurilor și accesul la obiecte |
|
||||
| `defineField()` | Extindeți obiectele existente cu câmpuri suplimentare |
|
||||
| Funcție | Scop |
|
||||
| ---------------------------- | ---------------------------------------------------------------------- |
|
||||
| `defineApplication()` | Configurați metadatele aplicației (obligatoriu, una per aplicație) |
|
||||
| `defineObject()` | Definiți obiecte personalizate cu câmpuri |
|
||||
| `defineLogicFunction()` | Definiți funcții de logică cu handleri |
|
||||
| `defineFrontComponent()` | Definiți componente Front pentru interfața de utilizator personalizată |
|
||||
| `defineRole()` | Configurați permisiunile rolurilor și accesul la obiecte |
|
||||
| `defineField()` | Extindeți obiectele existente cu câmpuri suplimentare |
|
||||
| `defineView()` | Definește vizualizări salvate pentru obiecte |
|
||||
| `defineNavigationMenuItem()` | Definește linkuri de navigare în bara laterală |
|
||||
| `defineSkill()` | Definiți abilități pentru agentul AI |
|
||||
|
||||
Aceste funcții validează configurația în timpul build-ului și oferă completare automată în IDE și siguranța tipurilor.
|
||||
|
||||
@@ -470,7 +502,7 @@ Notițe:
|
||||
|
||||
O funcție post-instalare este o funcție logică care rulează automat după instalarea aplicației într-un spațiu de lucru. Aceasta este utilă pentru sarcini de configurare unice, cum ar fi popularea cu date implicite, crearea înregistrărilor inițiale sau configurarea setărilor spațiului de lucru.
|
||||
|
||||
When you scaffold a new app with `create-twenty-app`, a post-install function is generated for you at `src/logic-functions/post-install.ts`:
|
||||
Când creezi scheletul unei aplicații noi cu `create-twenty-app`, este generată o funcție post-instalare la `src/logic-functions/post-install.ts`:
|
||||
|
||||
```typescript
|
||||
// src/logic-functions/post-install.ts
|
||||
@@ -491,7 +523,7 @@ export default defineLogicFunction({
|
||||
});
|
||||
```
|
||||
|
||||
The function is wired into your app by referencing its universal identifier in `application-config.ts`:
|
||||
Funcția este integrată în aplicația ta prin referirea la identificatorul său universal în `application-config.ts`:
|
||||
|
||||
```typescript
|
||||
import { POST_INSTALL_UNIVERSAL_IDENTIFIER } from 'src/logic-functions/post-install';
|
||||
@@ -502,7 +534,7 @@ export default defineApplication({
|
||||
});
|
||||
```
|
||||
|
||||
You can also manually execute the post-install function at any time using the CLI:
|
||||
Poți, de asemenea, să execuți manual funcția post-instalare oricând folosind CLI:
|
||||
|
||||
```bash filename="Terminal"
|
||||
yarn twenty function:execute --postInstall
|
||||
@@ -510,10 +542,10 @@ yarn twenty function:execute --postInstall
|
||||
|
||||
Puncte cheie:
|
||||
|
||||
* Post-install functions are standard logic functions — they use `defineLogicFunction()` like any other function.
|
||||
* The `postInstallLogicFunctionUniversalIdentifier` field in `defineApplication()` is optional. If omitted, no function runs after installation.
|
||||
* The default timeout is set to 300 seconds (5 minutes) to allow for longer setup tasks like data seeding.
|
||||
* Post-install functions do not need triggers — they are invoked by the platform during installation or manually via `function:execute --postInstall`.
|
||||
* Funcțiile post-instalare sunt funcții logice standard — folosesc `defineLogicFunction()` la fel ca orice altă funcție.
|
||||
* Câmpul `postInstallLogicFunctionUniversalIdentifier` din `defineApplication()` este opțional. Dacă este omis, nu rulează nicio funcție după instalare.
|
||||
* Timpul de expirare implicit este setat la 300 de secunde (5 minute) pentru a permite sarcini de configurare mai lungi, cum ar fi popularea datelor.
|
||||
* Funcțiile post-instalare nu au nevoie de declanșatoare — sunt invocate de platformă în timpul instalării sau manual prin `function:execute --postInstall`.
|
||||
|
||||
### Payload-ul declanșatorului de rută
|
||||
|
||||
@@ -714,6 +746,41 @@ Puteți crea componente Front noi în două moduri:
|
||||
* **Generat**: Rulați `yarn twenty entity:add` și alegeți opțiunea de a adăuga o componentă frontend nouă.
|
||||
* **Manual**: Creați un fișier nou `*.front-component.tsx` și folosiți `defineFrontComponent()`.
|
||||
|
||||
### Abilități
|
||||
|
||||
Abilitățile definesc instrucțiuni și capabilități reutilizabile pe care agenții AI le pot folosi în spațiul dvs. de lucru. Folosiți `defineSkill()` pentru a defini abilități cu validare încorporată:
|
||||
|
||||
```typescript
|
||||
// src/skills/example-skill.ts
|
||||
import { defineSkill } from 'twenty-sdk';
|
||||
|
||||
export default defineSkill({
|
||||
universalIdentifier: 'a1b2c3d4-e5f6-7890-abcd-ef1234567890',
|
||||
name: 'sales-outreach',
|
||||
label: 'Abordare de vânzări',
|
||||
description: 'Ghidează agentul AI printr-un proces structurat de abordare de vânzări',
|
||||
icon: 'IconBrain',
|
||||
content: `Ești un asistent pentru abordare de vânzări. Când contactezi un potențial client:
|
||||
1. Cercetează compania și noutățile recente
|
||||
2. Identifică rolul potențialului client și probabilele puncte sensibile
|
||||
3. Redactează un mesaj personalizat care face referire la detalii specifice
|
||||
4. Păstrează un ton profesionist, dar conversațional`,
|
||||
});
|
||||
```
|
||||
|
||||
Puncte cheie:
|
||||
|
||||
* `name` este un șir identificator unic pentru abilitate (se recomandă kebab-case).
|
||||
* `label` este numele lizibil afișat în interfața cu utilizatorul (UI).
|
||||
* `content` conține instrucțiunile abilității — acesta este textul pe care agentul AI îl folosește.
|
||||
* `icon` (opțional) setează pictograma afișată în UI.
|
||||
* `description` (opțional) oferă context suplimentar despre scopul abilității.
|
||||
|
||||
Puteți crea abilități noi în două moduri:
|
||||
|
||||
* **Generat**: Rulați `yarn twenty entity:add` și alegeți opțiunea de a adăuga o abilitate nouă.
|
||||
* **Manual**: Creați un fișier nou și folosiți `defineSkill()`, urmând același model.
|
||||
|
||||
### Client tipizat generat
|
||||
|
||||
Clientul tipizat este generat automat de `yarn twenty app:dev` și stocat în `node_modules/twenty-sdk/generated`, pe baza schemei spațiului tău de lucru. Folosiți-l în funcțiile dvs.:
|
||||
|
||||
@@ -15,6 +15,7 @@ description: Создавайте и управляйте настройками
|
||||
|
||||
* Определяйте пользовательские объекты и поля в виде кода (управляемая модель данных)
|
||||
* Создавайте логические функции с пользовательскими триггерами
|
||||
* Определите навыки для ИИ-агентов
|
||||
* Развёртывайте одно и то же приложение в нескольких рабочих пространствах
|
||||
|
||||
## Требования
|
||||
@@ -27,7 +28,7 @@ description: Создавайте и управляйте настройками
|
||||
Создайте новое приложение с помощью официального генератора, затем выполните аутентификацию и начните разработку:
|
||||
|
||||
```bash filename="Terminal"
|
||||
# Создать каркас нового приложения
|
||||
# Создать каркас нового приложения (по умолчанию включает все примеры)
|
||||
npx create-twenty-app@latest my-twenty-app
|
||||
cd my-twenty-app
|
||||
|
||||
@@ -42,25 +43,38 @@ yarn twenty auth:login
|
||||
yarn twenty app:dev
|
||||
```
|
||||
|
||||
Генератор каркаса поддерживает три режима для управления тем, какие примерные файлы включаются:
|
||||
|
||||
```bash filename="Terminal"
|
||||
# Default (exhaustive): all examples (object, field, logic function, front component, view, navigation menu item, skill)
|
||||
npx create-twenty-app@latest my-app
|
||||
|
||||
# Minimal: only core files (application-config.ts and default-role.ts)
|
||||
npx create-twenty-app@latest my-app --minimal
|
||||
|
||||
# Interactive: select which examples to include
|
||||
npx create-twenty-app@latest my-app --interactive
|
||||
```
|
||||
|
||||
Отсюда вы можете:
|
||||
|
||||
```bash filename="Terminal"
|
||||
# Add a new entity to your application (guided)
|
||||
# Добавить новую сущность в ваше приложение (с мастером)
|
||||
yarn twenty entity:add
|
||||
|
||||
# Watch your application's function logs
|
||||
# Просматривать логи функций вашего приложения
|
||||
yarn twenty function:logs
|
||||
|
||||
# Execute a function by name
|
||||
yarn twenty function:execute -n my-function -p '{"name": "test"}'
|
||||
# Выполнить функцию по имени
|
||||
yarn twenty function:execute -n my-function -p '{\"name\": \"test\"}'
|
||||
|
||||
# Execute the post-install function
|
||||
# Выполнить послеустановочную функцию
|
||||
yarn twenty function:execute --postInstall
|
||||
|
||||
# Uninstall the application from the current workspace
|
||||
# Удалить приложение из текущего рабочего пространства
|
||||
yarn twenty app:uninstall
|
||||
|
||||
# Display commands' help
|
||||
# Показать справку по командам
|
||||
yarn twenty help
|
||||
```
|
||||
|
||||
@@ -73,9 +87,9 @@ yarn twenty help
|
||||
* Копирует минимальное базовое приложение в `my-twenty-app/`
|
||||
* Добавляет локальную зависимость `twenty-sdk` и конфигурацию Yarn 4
|
||||
* Создаёт файлы конфигурации и скрипты, подключённые к CLI `twenty`
|
||||
* Generates a default application config, a default function role, and a post-install function
|
||||
* Генерирует основные файлы (конфигурацию приложения, роль функций по умолчанию, постустановочную функцию), а также примерные файлы в зависимости от выбранного режима создания каркаса
|
||||
|
||||
Свежесгенерированное приложение выглядит так:
|
||||
Сгенерированное с помощью каркаса приложение с режимом по умолчанию `--exhaustive` выглядит так:
|
||||
|
||||
```text filename="my-twenty-app/"
|
||||
my-twenty-app/
|
||||
@@ -94,13 +108,25 @@ my-twenty-app/
|
||||
├── application-config.ts # Required - main application configuration
|
||||
├── roles/
|
||||
│ └── default-role.ts # Default role for logic functions
|
||||
├── objects/
|
||||
│ └── example-object.ts # Example custom object definition
|
||||
├── fields/
|
||||
│ └── example-field.ts # Example standalone field definition
|
||||
├── logic-functions/
|
||||
│ ├── hello-world.ts # Example logic function
|
||||
│ └── post-install.ts # Post-install logic function
|
||||
└── front-components/
|
||||
└── hello-world.tsx # Example front component
|
||||
├── front-components/
|
||||
│ └── hello-world.tsx # Example front component
|
||||
├── views/
|
||||
│ └── example-view.ts # Example saved view definition
|
||||
├── navigation-menu-items/
|
||||
│ └── example-navigation-menu-item.ts # Example sidebar navigation link
|
||||
└── skills/
|
||||
└── example-skill.ts # Example AI agent skill definition
|
||||
```
|
||||
|
||||
С `--minimal` создаются только основные файлы (`application-config.ts`, `roles/default-role.ts` и `logic-functions/post-install.ts`). С `--interactive` вы выбираете, какие примерные файлы включить.
|
||||
|
||||
В общих чертах:
|
||||
|
||||
* **package.json**: Объявляет имя приложения, версию, движки (Node 24+, Yarn 4) и добавляет `twenty-sdk`, а также скрипт `twenty`, который делегирует выполнение локальному CLI `twenty`. Выполните `yarn twenty help`, чтобы вывести список всех доступных команд.
|
||||
@@ -116,13 +142,16 @@ my-twenty-app/
|
||||
|
||||
SDK обнаруживает сущности, разбирая ваши файлы TypeScript в поисках вызовов **`export default define<Entity>({...})`**. Для каждого типа сущности существует соответствующая вспомогательная функция, экспортируемая из `twenty-sdk`:
|
||||
|
||||
| Вспомогательная функция | Тип сущности |
|
||||
| ------------------------ | ------------------------------------------ |
|
||||
| `defineObject()` | Определения пользовательских объектов |
|
||||
| `defineLogicFunction()` | Определения логических функций |
|
||||
| `defineFrontComponent()` | Определения компонентов фронтенда |
|
||||
| `defineRole()` | Определения ролей |
|
||||
| `defineField()` | Расширения полей для существующих объектов |
|
||||
| Вспомогательная функция | Тип сущности |
|
||||
| ---------------------------- | ------------------------------------------ |
|
||||
| `defineObject()` | Определения пользовательских объектов |
|
||||
| `defineLogicFunction()` | Определения логических функций |
|
||||
| `defineFrontComponent()` | Определения компонентов фронтенда |
|
||||
| `defineRole()` | Определения ролей |
|
||||
| `defineField()` | Расширения полей для существующих объектов |
|
||||
| `defineView()` | Определения сохранённых представлений |
|
||||
| `defineNavigationMenuItem()` | Определения пунктов меню навигации |
|
||||
| `defineSkill()` | AI agent skill definitions |
|
||||
|
||||
<Note>
|
||||
**Имена файлов заданы гибко.** Обнаружение сущностей основано на AST — SDK сканирует ваши исходные файлы в поисках шаблона `export default define<Entity>({...})`. Вы можете организовывать файлы и папки как угодно. Группировка по типу сущности (например, `logic-functions/`, `roles/`) — это лишь соглашение для организации кода, а не требование.
|
||||
@@ -144,7 +173,7 @@ export default defineObject({
|
||||
Позднее команды добавят больше файлов и папок:
|
||||
|
||||
* `yarn twenty app:dev` автоматически сгенерирует типизированный клиент API в `node_modules/twenty-sdk/generated` (типизированный клиент Twenty + типы рабочего пространства).
|
||||
* `yarn twenty entity:add` добавит файлы определений сущностей в `src/` для ваших пользовательских объектов, функций, фронтенд-компонентов или ролей.
|
||||
* `yarn twenty entity:add` will add entity definition files under `src/` for your custom objects, functions, front components, roles, skills, and more.
|
||||
|
||||
## Аутентификация
|
||||
|
||||
@@ -187,14 +216,17 @@ yarn twenty auth:status
|
||||
|
||||
SDK предоставляет вспомогательные функции для определения сущностей вашего приложения. Как описано в [Обнаружение сущностей](#entity-detection), вы должны использовать `export default define<Entity>({...})`, чтобы ваши сущности были обнаружены:
|
||||
|
||||
| Функция | Назначение |
|
||||
| ------------------------ | ---------------------------------------------------------------------- |
|
||||
| `defineApplication()` | Настройка метаданных приложения (обязательно, по одному на приложение) |
|
||||
| `defineObject()` | Определяет пользовательские объекты с полями |
|
||||
| `defineLogicFunction()` | Определение логических функций с обработчиками |
|
||||
| `defineFrontComponent()` | Определение фронт-компонентов для настраиваемого интерфейса |
|
||||
| `defineRole()` | Настраивает права роли и доступ к объектам |
|
||||
| `defineField()` | Расширение существующих объектов дополнительными полями |
|
||||
| Функция | Назначение |
|
||||
| ---------------------------- | ---------------------------------------------------------------------- |
|
||||
| `defineApplication()` | Настройка метаданных приложения (обязательно, по одному на приложение) |
|
||||
| `defineObject()` | Определяет пользовательские объекты с полями |
|
||||
| `defineLogicFunction()` | Определение логических функций с обработчиками |
|
||||
| `defineFrontComponent()` | Определение фронт-компонентов для настраиваемого интерфейса |
|
||||
| `defineRole()` | Настраивает права роли и доступ к объектам |
|
||||
| `defineField()` | Расширение существующих объектов дополнительными полями |
|
||||
| `defineView()` | Определяйте сохранённые представления для объектов |
|
||||
| `defineNavigationMenuItem()` | Определяйте ссылки боковой панели навигации |
|
||||
| `defineSkill()` | Define AI agent skills |
|
||||
|
||||
Эти функции проверяют вашу конфигурацию на этапе сборки и обеспечивают автодополнение в IDE и безопасность типов.
|
||||
|
||||
@@ -294,7 +326,7 @@ export default defineObject({
|
||||
* **Что это за приложение**: идентификаторы, отображаемое имя и описание.
|
||||
* **Как запускаются его функции**: какую роль они используют для прав доступа.
|
||||
* **(Необязательно) переменные**: пары ключ-значение, предоставляемые вашим функциям как переменные окружения.
|
||||
* **(Optional) post-install function**: a logic function that runs after the app is installed.
|
||||
* **(Необязательно) послеустановочная функция**: функция логики, которая запускается после установки приложения.
|
||||
|
||||
Используйте `defineApplication()` для определения конфигурации вашего приложения:
|
||||
|
||||
@@ -327,7 +359,7 @@ export default defineApplication({
|
||||
* `universalIdentifier` — это детерминированные идентификаторы, которыми вы управляете; сгенерируйте их один раз и сохраняйте стабильными между синхронизациями.
|
||||
* `applicationVariables` становятся переменными окружения для ваших функций (например, `DEFAULT_RECIPIENT_NAME` доступна как `process.env.DEFAULT_RECIPIENT_NAME`).
|
||||
* `defaultRoleUniversalIdentifier` должен соответствовать файлу роли (см. ниже).
|
||||
* `postInstallLogicFunctionUniversalIdentifier` (optional) points to a logic function that runs automatically after the app is installed. See [Post-install functions](#post-install-functions).
|
||||
* `postInstallLogicFunctionUniversalIdentifier` (необязательно) указывает на логическую функцию, которая автоматически выполняется после установки приложения. См. [Послеустановочные функции](#post-install-functions).
|
||||
|
||||
#### Роли и разрешения
|
||||
|
||||
@@ -466,11 +498,11 @@ export default defineLogicFunction({
|
||||
* Массив `triggers` необязателен. Функции без триггеров можно использовать как вспомогательные, вызываемые другими функциями.
|
||||
* Вы можете сочетать несколько типов триггеров в одной функции.
|
||||
|
||||
### Post-install functions
|
||||
### Послеустановочные функции
|
||||
|
||||
A post-install function is a logic function that runs automatically after your app is installed on a workspace. This is useful for one-time setup tasks such as seeding default data, creating initial records, or configuring workspace settings.
|
||||
Послеустановочная функция — это функция логики, которая автоматически выполняется после установки вашего приложения в рабочем пространстве. Это полезно для одноразовых задач настройки, таких как инициализация данных по умолчанию, создание начальных записей или настройка параметров рабочего пространства.
|
||||
|
||||
When you scaffold a new app with `create-twenty-app`, a post-install function is generated for you at `src/logic-functions/post-install.ts`:
|
||||
Когда вы создаёте каркас нового приложения с помощью `create-twenty-app`, для вас генерируется постустановочная функция по пути `src/logic-functions/post-install.ts`:
|
||||
|
||||
```typescript
|
||||
// src/logic-functions/post-install.ts
|
||||
@@ -491,7 +523,7 @@ export default defineLogicFunction({
|
||||
});
|
||||
```
|
||||
|
||||
The function is wired into your app by referencing its universal identifier in `application-config.ts`:
|
||||
Функция подключается к вашему приложению посредством ссылки на её универсальный идентификатор в `application-config.ts`:
|
||||
|
||||
```typescript
|
||||
import { POST_INSTALL_UNIVERSAL_IDENTIFIER } from 'src/logic-functions/post-install';
|
||||
@@ -502,7 +534,7 @@ export default defineApplication({
|
||||
});
|
||||
```
|
||||
|
||||
You can also manually execute the post-install function at any time using the CLI:
|
||||
Вы также можете вручную выполнить постустановочную функцию в любое время с помощью CLI:
|
||||
|
||||
```bash filename="Terminal"
|
||||
yarn twenty function:execute --postInstall
|
||||
@@ -510,10 +542,10 @@ yarn twenty function:execute --postInstall
|
||||
|
||||
Основные моменты:
|
||||
|
||||
* Post-install functions are standard logic functions — they use `defineLogicFunction()` like any other function.
|
||||
* The `postInstallLogicFunctionUniversalIdentifier` field in `defineApplication()` is optional. If omitted, no function runs after installation.
|
||||
* The default timeout is set to 300 seconds (5 minutes) to allow for longer setup tasks like data seeding.
|
||||
* Post-install functions do not need triggers — they are invoked by the platform during installation or manually via `function:execute --postInstall`.
|
||||
* Постустановочные функции — это стандартные логические функции: они используют `defineLogicFunction()` как и любые другие функции.
|
||||
* Поле `postInstallLogicFunctionUniversalIdentifier` в `defineApplication()` является необязательным. Если его опустить, после установки никакая функция выполняться не будет.
|
||||
* Тайм-аут по умолчанию установлен на 300 секунд (5 минут), чтобы позволить выполнять более длительные задачи настройки, такие как инициализация данных.
|
||||
* Постустановочным функциям не нужны триггеры — платформа вызывает их во время установки или вручную через `function:execute --postInstall`.
|
||||
|
||||
### Полезная нагрузка триггера маршрута
|
||||
|
||||
@@ -714,6 +746,41 @@ export default defineFrontComponent({
|
||||
* **Сгенерировано**: Запустите `yarn twenty entity:add` и выберите опцию добавления нового фронтенд-компонента.
|
||||
* **Вручную**: Создайте новый файл `*.front-component.tsx` и используйте `defineFrontComponent()`.
|
||||
|
||||
### Навыки
|
||||
|
||||
Skills define reusable instructions and capabilities that AI agents can use within your workspace. Use `defineSkill()` to define skills with built-in validation:
|
||||
|
||||
```typescript
|
||||
// src/skills/example-skill.ts
|
||||
import { defineSkill } from 'twenty-sdk';
|
||||
|
||||
export default defineSkill({
|
||||
universalIdentifier: 'a1b2c3d4-e5f6-7890-abcd-ef1234567890',
|
||||
name: 'sales-outreach',
|
||||
label: 'Sales Outreach',
|
||||
description: 'Guides the AI agent through a structured sales outreach process',
|
||||
icon: 'IconBrain',
|
||||
content: `You are a sales outreach assistant. When reaching out to a prospect:
|
||||
1. Research the company and recent news
|
||||
2. Identify the prospect's role and likely pain points
|
||||
3. Draft a personalized message referencing specific details
|
||||
4. Keep the tone professional but conversational`,
|
||||
});
|
||||
```
|
||||
|
||||
Основные моменты:
|
||||
|
||||
* `name` is a unique identifier string for the skill (kebab-case recommended).
|
||||
* `label` is the human-readable display name shown in the UI.
|
||||
* `content` contains the skill instructions — this is the text the AI agent uses.
|
||||
* `icon` (optional) sets the icon displayed in the UI.
|
||||
* `description` (optional) provides additional context about the skill's purpose.
|
||||
|
||||
You can create new skills in two ways:
|
||||
|
||||
* **Scaffolded**: Run `yarn twenty entity:add` and choose the option to add a new skill.
|
||||
* **Manual**: Create a new file and use `defineSkill()`, following the same pattern.
|
||||
|
||||
### Сгенерированный типизированный клиент
|
||||
|
||||
Типизированный клиент автоматически генерируется с помощью `yarn twenty app:dev` и сохраняется в `node_modules/twenty-sdk/generated` на основе схемы вашего рабочего пространства. Используйте его в своих функциях:
|
||||
|
||||
@@ -15,6 +15,7 @@ Uygulamalar, Twenty özelleştirmelerini **kod olarak** oluşturup yönetmenizi
|
||||
|
||||
* Özel nesneleri ve alanları kod olarak tanımlayın (yönetilen veri modeli)
|
||||
* Özel tetikleyicilerle mantık fonksiyonları oluşturun
|
||||
* Yapay zekâ ajanları için becerileri tanımlayın
|
||||
* Aynı uygulamayı birden çok çalışma alanına dağıtın
|
||||
|
||||
## Ön Gereksinimler
|
||||
@@ -27,7 +28,7 @@ Uygulamalar, Twenty özelleştirmelerini **kod olarak** oluşturup yönetmenizi
|
||||
Resmi scaffolder aracını kullanarak yeni bir uygulama oluşturun, ardından kimlik doğrulaması yapıp geliştirmeye başlayın:
|
||||
|
||||
```bash filename="Terminal"
|
||||
# Scaffold a new app
|
||||
# Scaffold a new app (includes all examples by default)
|
||||
npx create-twenty-app@latest my-twenty-app
|
||||
cd my-twenty-app
|
||||
|
||||
@@ -42,6 +43,19 @@ yarn twenty auth:login
|
||||
yarn twenty app:dev
|
||||
```
|
||||
|
||||
İskelet oluşturucu, hangi örnek dosyaların dahil edileceğini kontrol etmek için üç modu destekler:
|
||||
|
||||
```bash filename="Terminal"
|
||||
# Default (exhaustive): all examples (object, field, logic function, front component, view, navigation menu item, skill)
|
||||
npx create-twenty-app@latest my-app
|
||||
|
||||
# Minimal: only core files (application-config.ts and default-role.ts)
|
||||
npx create-twenty-app@latest my-app --minimal
|
||||
|
||||
# Interactive: select which examples to include
|
||||
npx create-twenty-app@latest my-app --interactive
|
||||
```
|
||||
|
||||
Buradan şunları yapabilirsiniz:
|
||||
|
||||
```bash filename="Terminal"
|
||||
@@ -73,9 +87,9 @@ Ayrıca bkz.: [create-twenty-app](https://www.npmjs.com/package/create-twenty-ap
|
||||
* Minimal bir temel uygulamayı `my-twenty-app/` içine kopyalar
|
||||
* Yerel bir `twenty-sdk` bağımlılığı ve Yarn 4 yapılandırması ekler
|
||||
* `twenty` CLI ile bağlantılı yapılandırma dosyaları ve betikler oluşturur
|
||||
* Generates a default application config, a default function role, and a post-install function
|
||||
* İskelet oluşturma moduna bağlı olarak çekirdek dosyaları (uygulama yapılandırması, varsayılan işlev rolü, kurulum sonrası işlev) ile örnek dosyaları üretir
|
||||
|
||||
Yeni şablondan oluşturulan bir uygulama şöyle görünür:
|
||||
Varsayılan `--exhaustive` moduyla yeni oluşturulmuş bir uygulama şu şekilde görünür:
|
||||
|
||||
```text filename="my-twenty-app/"
|
||||
my-twenty-app/
|
||||
@@ -94,13 +108,25 @@ my-twenty-app/
|
||||
├── application-config.ts # Required - main application configuration
|
||||
├── roles/
|
||||
│ └── default-role.ts # Default role for logic functions
|
||||
├── objects/
|
||||
│ └── example-object.ts # Example custom object definition
|
||||
├── fields/
|
||||
│ └── example-field.ts # Example standalone field definition
|
||||
├── logic-functions/
|
||||
│ ├── hello-world.ts # Example logic function
|
||||
│ └── post-install.ts # Post-install logic function
|
||||
└── front-components/
|
||||
└── hello-world.tsx # Example front component
|
||||
├── front-components/
|
||||
│ └── hello-world.tsx # Example front component
|
||||
├── views/
|
||||
│ └── example-view.ts # Example saved view definition
|
||||
├── navigation-menu-items/
|
||||
│ └── example-navigation-menu-item.ts # Example sidebar navigation link
|
||||
└── skills/
|
||||
└── example-skill.ts # Example AI agent skill definition
|
||||
```
|
||||
|
||||
`--minimal` ile yalnızca çekirdek dosyalar oluşturulur (`application-config.ts`, `roles/default-role.ts` ve `logic-functions/post-install.ts`). `--interactive` ile hangi örnek dosyaların dahil edileceğini siz seçersiniz.
|
||||
|
||||
Genel hatlarıyla:
|
||||
|
||||
* **package.json**: Uygulama adını, sürümünü, motorları (Node 24+, Yarn 4) bildirir ve `twenty-sdk` ile yerel `twenty` CLI'sine yetki devreden bir `twenty` betiği ekler. Tüm mevcut komutları listelemek için `yarn twenty help` komutunu çalıştırın.
|
||||
@@ -116,13 +142,16 @@ Genel hatlarıyla:
|
||||
|
||||
SDK, TypeScript dosyalarınızı **`export default define<Entity>({...})`** çağrılarını arayarak ayrıştırıp varlıkları algılar. Her varlık türünün, `twenty-sdk` tarafından dışa aktarılan karşılık gelen bir yardımcı fonksiyonu vardır:
|
||||
|
||||
| Yardımcı fonksiyon | Varlık türü |
|
||||
| ------------------------ | ---------------------------------------- |
|
||||
| `defineObject()` | Özel nesne tanımları |
|
||||
| `defineLogicFunction()` | Mantık fonksiyon tanımları |
|
||||
| `defineFrontComponent()` | Front component definitions |
|
||||
| `defineRole()` | Rol tanımları |
|
||||
| `defineField()` | Mevcut nesneler için alan genişletmeleri |
|
||||
| Yardımcı fonksiyon | Varlık türü |
|
||||
| ---------------------------- | ---------------------------------------- |
|
||||
| `defineObject()` | Özel nesne tanımları |
|
||||
| `defineLogicFunction()` | Mantık fonksiyon tanımları |
|
||||
| `defineFrontComponent()` | Front component definitions |
|
||||
| `defineRole()` | Rol tanımları |
|
||||
| `defineField()` | Mevcut nesneler için alan genişletmeleri |
|
||||
| `defineView()` | Kaydedilmiş görünüm tanımları |
|
||||
| `defineNavigationMenuItem()` | Gezinme menüsü öğesi tanımları |
|
||||
| `defineSkill()` | AI agent skill definitions |
|
||||
|
||||
<Note>
|
||||
**Dosya adlandırma esnektir.** Varlık algılama AST tabanlıdır — SDK, kaynak dosyalarınızı `export default define<Entity>({...})` desenini bulmak için tarar. Dosyalarınızı ve klasörlerinizi dilediğiniz gibi düzenleyebilirsiniz. Varlık türüne göre gruplama (örn. `logic-functions/`, `roles/`) bir gereklilik değil, yalnızca kod organizasyonu için bir gelenektir.
|
||||
@@ -144,7 +173,7 @@ export default defineObject({
|
||||
İlerideki komutlar daha fazla dosya ve klasör ekleyecektir:
|
||||
|
||||
* `yarn twenty app:dev`, `node_modules/twenty-sdk/generated` içinde tipli bir API istemcisini otomatik olarak oluşturur (tipli Twenty istemcisi + çalışma alanı türleri).
|
||||
* `yarn twenty entity:add`, özel nesneleriniz, fonksiyonlarınız, ön bileşenleriniz veya rolleriniz için `src/` altında varlık tanım dosyaları ekler.
|
||||
* `yarn twenty entity:add` will add entity definition files under `src/` for your custom objects, functions, front components, roles, skills, and more.
|
||||
|
||||
## Kimlik Doğrulama
|
||||
|
||||
@@ -187,14 +216,17 @@ twenty-sdk, uygulamanız içinde kullandığınız türlendirilmiş yapı taşla
|
||||
|
||||
SDK, uygulama varlıklarınızı tanımlamak için yardımcı fonksiyonlar sağlar. [Varlık algılama](#entity-detection) bölümünde açıklandığı gibi, varlıklarınızın algılanması için `export default define<Entity>({...})` kullanmalısınız:
|
||||
|
||||
| Fonksiyon | Amaç |
|
||||
| ------------------------ | ------------------------------------------------------------------------- |
|
||||
| `defineApplication()` | Uygulama meta verilerini yapılandırın (zorunlu, uygulama başına bir adet) |
|
||||
| `defineObject()` | Alanlara sahip özel nesneler tanımlayın |
|
||||
| `defineLogicFunction()` | İşleyicilerle mantık fonksiyonları tanımlayın |
|
||||
| `defineFrontComponent()` | Özel kullanıcı arayüzü için ön uç bileşenlerini tanımlayın |
|
||||
| `defineRole()` | Rol izinlerini ve nesne erişimini yapılandırın |
|
||||
| `defineField()` | Mevcut nesneleri ek alanlarla genişletin |
|
||||
| Fonksiyon | Amaç |
|
||||
| ---------------------------- | ------------------------------------------------------------------------- |
|
||||
| `defineApplication()` | Uygulama meta verilerini yapılandırın (zorunlu, uygulama başına bir adet) |
|
||||
| `defineObject()` | Alanlara sahip özel nesneler tanımlayın |
|
||||
| `defineLogicFunction()` | İşleyicilerle mantık fonksiyonları tanımlayın |
|
||||
| `defineFrontComponent()` | Özel kullanıcı arayüzü için ön uç bileşenlerini tanımlayın |
|
||||
| `defineRole()` | Rol izinlerini ve nesne erişimini yapılandırın |
|
||||
| `defineField()` | Mevcut nesneleri ek alanlarla genişletin |
|
||||
| `defineView()` | Nesneler için kaydedilmiş görünümler tanımlayın |
|
||||
| `defineNavigationMenuItem()` | Kenar çubuğu gezinme bağlantılarını tanımlayın |
|
||||
| `defineSkill()` | Define AI agent skills |
|
||||
|
||||
Bu fonksiyonlar, derleme zamanında yapılandırmanızı doğrular ve IDE otomatik tamamlama ile tür güvenliği sağlar.
|
||||
|
||||
@@ -294,7 +326,7 @@ Her uygulamanın aşağıdakileri açıklayan tek bir `application-config.ts` do
|
||||
* **Uygulamanın kim olduğu**: tanımlayıcılar, görünen ad ve açıklama.
|
||||
* **Fonksiyonlarının nasıl çalıştığı**: izinler için hangi rolü kullandıkları.
|
||||
* **(İsteğe bağlı) değişkenler**: fonksiyonlarınıza ortam değişkenleri olarak sunulan anahtar–değer çiftleri.
|
||||
* **(Optional) post-install function**: a logic function that runs after the app is installed.
|
||||
* **(İsteğe bağlı) kurulum sonrası işlev**: uygulama yüklendikten sonra çalışan bir mantık işlevi.
|
||||
|
||||
Uygulama yapılandırmanızı tanımlamak için `defineApplication()` kullanın:
|
||||
|
||||
@@ -327,7 +359,7 @@ Notlar:
|
||||
* `universalIdentifier` alanları size ait belirleyici kimliklerdir; bunları bir kez oluşturun ve eşitlemeler boyunca kararlı tutun.
|
||||
* `applicationVariables`, fonksiyonlarınız için ortam değişkenlerine dönüşür (örneğin, `DEFAULT_RECIPIENT_NAME` değeri `process.env.DEFAULT_RECIPIENT_NAME` olarak kullanılabilir).
|
||||
* `defaultRoleUniversalIdentifier`, rol dosyasıyla eşleşmelidir (aşağıya bakın).
|
||||
* `postInstallLogicFunctionUniversalIdentifier` (optional) points to a logic function that runs automatically after the app is installed. See [Post-install functions](#post-install-functions).
|
||||
* `postInstallLogicFunctionUniversalIdentifier` (isteğe bağlı), uygulama yüklendikten sonra otomatik olarak çalışan bir mantık işlevine işaret eder. Bkz. [Kurulum sonrası işlevler](#post-install-functions).
|
||||
|
||||
#### Roller ve izinler
|
||||
|
||||
@@ -466,11 +498,11 @@ Notlar:
|
||||
* `triggers` dizisi isteğe bağlıdır. Tetikleyicisi olmayan fonksiyonlar, diğer fonksiyonlar tarafından çağrılan yardımcı fonksiyonlar olarak kullanılabilir.
|
||||
* Tek bir fonksiyonda birden çok tetikleyici türünü birleştirebilirsiniz.
|
||||
|
||||
### Post-install functions
|
||||
### Kurulum sonrası işlevler
|
||||
|
||||
A post-install function is a logic function that runs automatically after your app is installed on a workspace. This is useful for one-time setup tasks such as seeding default data, creating initial records, or configuring workspace settings.
|
||||
Kurulum sonrası işlev, uygulamanız bir çalışma alanına yüklendikten sonra otomatik olarak çalışan bir mantık işlevidir. Bu, varsayılan verileri tohumlama, ilk kayıtları oluşturma veya çalışma alanı ayarlarını yapılandırma gibi tek seferlik kurulum görevleri için yararlıdır.
|
||||
|
||||
When you scaffold a new app with `create-twenty-app`, a post-install function is generated for you at `src/logic-functions/post-install.ts`:
|
||||
`create-twenty-app` ile yeni bir uygulama iskeleti oluşturduğunuzda, `src/logic-functions/post-install.ts` konumunda sizin için bir kurulum sonrası işlevi oluşturulur:
|
||||
|
||||
```typescript
|
||||
// src/logic-functions/post-install.ts
|
||||
@@ -491,7 +523,7 @@ export default defineLogicFunction({
|
||||
});
|
||||
```
|
||||
|
||||
The function is wired into your app by referencing its universal identifier in `application-config.ts`:
|
||||
İşlev, `application-config.ts` içinde evrensel tanımlayıcısına başvurularak uygulamanıza bağlanır:
|
||||
|
||||
```typescript
|
||||
import { POST_INSTALL_UNIVERSAL_IDENTIFIER } from 'src/logic-functions/post-install';
|
||||
@@ -502,7 +534,7 @@ export default defineApplication({
|
||||
});
|
||||
```
|
||||
|
||||
You can also manually execute the post-install function at any time using the CLI:
|
||||
Ayrıca kurulum sonrası işlevi istediğiniz zaman CLI kullanarak manuel olarak çalıştırabilirsiniz:
|
||||
|
||||
```bash filename="Terminal"
|
||||
yarn twenty function:execute --postInstall
|
||||
@@ -510,10 +542,10 @@ yarn twenty function:execute --postInstall
|
||||
|
||||
Önemli noktalar:
|
||||
|
||||
* Post-install functions are standard logic functions — they use `defineLogicFunction()` like any other function.
|
||||
* The `postInstallLogicFunctionUniversalIdentifier` field in `defineApplication()` is optional. If omitted, no function runs after installation.
|
||||
* The default timeout is set to 300 seconds (5 minutes) to allow for longer setup tasks like data seeding.
|
||||
* Post-install functions do not need triggers — they are invoked by the platform during installation or manually via `function:execute --postInstall`.
|
||||
* Kurulum sonrası işlevleri standart mantık işlevleridir — diğer herhangi bir işlev gibi `defineLogicFunction()` kullanırlar.
|
||||
* `defineApplication()` içindeki `postInstallLogicFunctionUniversalIdentifier` alanı isteğe bağlıdır. Atlanırsa, kurulumdan sonra hiçbir işlev çalıştırılmaz.
|
||||
* Varsayılan zaman aşımı, veri tohumlama gibi daha uzun kurulum görevlerine izin vermek için 300 saniye (5 dakika) olarak ayarlanmıştır.
|
||||
* Kurulum sonrası işlevlerin tetikleyicilere ihtiyacı yoktur — kurulum sırasında platform tarafından veya `function:execute --postInstall` aracılığıyla manuel olarak çağrılırlar.
|
||||
|
||||
### Rota tetikleyicisi yükü
|
||||
|
||||
@@ -714,6 +746,41 @@ Yeni ön uç bileşenlerini iki şekilde oluşturabilirsiniz:
|
||||
* **Şablondan**: `yarn twenty entity:add` çalıştırın ve yeni bir ön uç bileşeni ekleme seçeneğini seçin.
|
||||
* **Manuel**: Yeni bir `*.front-component.tsx` dosyası oluşturun ve `defineFrontComponent()` kullanın.
|
||||
|
||||
### Beceriler
|
||||
|
||||
Skills define reusable instructions and capabilities that AI agents can use within your workspace. Use `defineSkill()` to define skills with built-in validation:
|
||||
|
||||
```typescript
|
||||
// src/skills/example-skill.ts
|
||||
import { defineSkill } from 'twenty-sdk';
|
||||
|
||||
export default defineSkill({
|
||||
universalIdentifier: 'a1b2c3d4-e5f6-7890-abcd-ef1234567890',
|
||||
name: 'sales-outreach',
|
||||
label: 'Sales Outreach',
|
||||
description: 'Guides the AI agent through a structured sales outreach process',
|
||||
icon: 'IconBrain',
|
||||
content: `You are a sales outreach assistant. When reaching out to a prospect:
|
||||
1. Research the company and recent news
|
||||
2. Identify the prospect's role and likely pain points
|
||||
3. Draft a personalized message referencing specific details
|
||||
4. Keep the tone professional but conversational`,
|
||||
});
|
||||
```
|
||||
|
||||
Önemli noktalar:
|
||||
|
||||
* `name` is a unique identifier string for the skill (kebab-case recommended).
|
||||
* `label` is the human-readable display name shown in the UI.
|
||||
* `content` contains the skill instructions — this is the text the AI agent uses.
|
||||
* `icon` (optional) sets the icon displayed in the UI.
|
||||
* `description` (optional) provides additional context about the skill's purpose.
|
||||
|
||||
You can create new skills in two ways:
|
||||
|
||||
* **Scaffolded**: Run `yarn twenty entity:add` and choose the option to add a new skill.
|
||||
* **Manual**: Create a new file and use `defineSkill()`, following the same pattern.
|
||||
|
||||
### Oluşturulmuş türlendirilmiş istemci
|
||||
|
||||
Tipli istemci, `yarn twenty app:dev` tarafından otomatik olarak oluşturulur ve çalışma alanı şemanıza göre `node_modules/twenty-sdk/generated` içine kaydedilir. Fonksiyonlarınızda kullanın:
|
||||
|
||||
@@ -15,6 +15,7 @@ description: 以代码的形式构建并管理 Twenty 自定义项。
|
||||
|
||||
* 以代码定义自定义对象和字段(受管理的数据模型)
|
||||
* 构建带有自定义触发器的逻辑函数
|
||||
* 为 AI 智能体定义技能
|
||||
* 将同一个应用部署到多个工作空间
|
||||
|
||||
## 先决条件
|
||||
@@ -27,40 +28,53 @@ description: 以代码的形式构建并管理 Twenty 自定义项。
|
||||
使用官方脚手架创建一个新应用,然后进行身份验证并开始开发:
|
||||
|
||||
```bash filename="Terminal"
|
||||
# 搭建一个新应用
|
||||
# Scaffold a new app (includes all examples by default)
|
||||
npx create-twenty-app@latest my-twenty-app
|
||||
cd my-twenty-app
|
||||
|
||||
# 如果你不使用 yarn@4
|
||||
# If you don't use yarn@4
|
||||
corepack enable
|
||||
yarn install
|
||||
|
||||
# 使用你的 API 密钥进行身份验证(系统会提示你)
|
||||
# Authenticate using your API key (you'll be prompted)
|
||||
yarn twenty auth:login
|
||||
|
||||
# 启动开发模式:会将本地更改自动同步到你的工作区
|
||||
# Start dev mode: automatically syncs local changes to your workspace
|
||||
yarn twenty app:dev
|
||||
```
|
||||
|
||||
The scaffolder supports three modes for controlling which example files are included:
|
||||
|
||||
```bash filename="Terminal"
|
||||
# Default (exhaustive): all examples (object, field, logic function, front component, view, navigation menu item, skill)
|
||||
npx create-twenty-app@latest my-app
|
||||
|
||||
# Minimal: only core files (application-config.ts and default-role.ts)
|
||||
npx create-twenty-app@latest my-app --minimal
|
||||
|
||||
# Interactive: select which examples to include
|
||||
npx create-twenty-app@latest my-app --interactive
|
||||
```
|
||||
|
||||
从这里您可以:
|
||||
|
||||
```bash filename="Terminal"
|
||||
# Add a new entity to your application (guided)
|
||||
# 向你的应用添加一个新实体(引导式)
|
||||
yarn twenty entity:add
|
||||
|
||||
# Watch your application's function logs
|
||||
# 监听你的应用函数日志
|
||||
yarn twenty function:logs
|
||||
|
||||
# Execute a function by name
|
||||
yarn twenty function:execute -n my-function -p '{"name": "test"}'
|
||||
# 按名称执行一个函数
|
||||
yarn twenty function:execute -n my-function -p '{\"name\": \"test\"}'
|
||||
|
||||
# Execute the post-install function
|
||||
# 执行安装后函数
|
||||
yarn twenty function:execute --postInstall
|
||||
|
||||
# Uninstall the application from the current workspace
|
||||
# 从当前工作区卸载该应用
|
||||
yarn twenty app:uninstall
|
||||
|
||||
# Display commands' help
|
||||
# 显示命令帮助
|
||||
yarn twenty help
|
||||
```
|
||||
|
||||
@@ -73,9 +87,9 @@ yarn twenty help
|
||||
* 将一个最小的基础应用复制到 `my-twenty-app/` 中
|
||||
* 添加本地 `twenty-sdk` 依赖和 Yarn 4 配置
|
||||
* 创建与 `twenty` CLI 关联的配置文件和脚本
|
||||
* Generates a default application config, a default function role, and a post-install function
|
||||
* Generates core files (application config, default function role, post-install function) plus example files based on the scaffolding mode
|
||||
|
||||
一个新生成的脚手架应用如下所示:
|
||||
A freshly scaffolded app with the default `--exhaustive` mode looks like this:
|
||||
|
||||
```text filename="my-twenty-app/"
|
||||
my-twenty-app/
|
||||
@@ -94,13 +108,25 @@ my-twenty-app/
|
||||
├── application-config.ts # Required - main application configuration
|
||||
├── roles/
|
||||
│ └── default-role.ts # Default role for logic functions
|
||||
├── objects/
|
||||
│ └── example-object.ts # Example custom object definition
|
||||
├── fields/
|
||||
│ └── example-field.ts # Example standalone field definition
|
||||
├── logic-functions/
|
||||
│ ├── hello-world.ts # Example logic function
|
||||
│ └── post-install.ts # Post-install logic function
|
||||
└── front-components/
|
||||
└── hello-world.tsx # Example front component
|
||||
├── front-components/
|
||||
│ └── hello-world.tsx # Example front component
|
||||
├── views/
|
||||
│ └── example-view.ts # Example saved view definition
|
||||
├── navigation-menu-items/
|
||||
│ └── example-navigation-menu-item.ts # Example sidebar navigation link
|
||||
└── skills/
|
||||
└── example-skill.ts # Example AI agent skill definition
|
||||
```
|
||||
|
||||
With `--minimal`, only the core files are created (`application-config.ts`, `roles/default-role.ts`, and `logic-functions/post-install.ts`). With `--interactive`, you choose which example files to include.
|
||||
|
||||
总体来说:
|
||||
|
||||
* **package.json**:声明应用名称、版本、引擎(Node 24+、Yarn 4),并添加 `twenty-sdk` 以及一个 `twenty` 脚本,该脚本会委托给本地的 `twenty` CLI。 运行 `yarn twenty help` 以列出所有可用命令。
|
||||
@@ -116,13 +142,16 @@ my-twenty-app/
|
||||
|
||||
该 SDK 通过在你的 TypeScript 文件中解析 **`export default define<Entity>({...})`** 调用来检测实体。 每种实体类型都有一个从 `twenty-sdk` 导出的对应辅助函数:
|
||||
|
||||
| 辅助函数 | 实体类型 |
|
||||
| ------------------------ | --------- |
|
||||
| `defineObject()` | 自定义对象定义 |
|
||||
| `defineLogicFunction()` | 逻辑函数定义 |
|
||||
| `defineFrontComponent()` | 前端组件定义 |
|
||||
| `defineRole()` | 角色定义 |
|
||||
| `defineField()` | 现有对象的字段扩展 |
|
||||
| 辅助函数 | 实体类型 |
|
||||
| ---------------------------- | -------------------------------- |
|
||||
| `defineObject()` | 自定义对象定义 |
|
||||
| `defineLogicFunction()` | 逻辑函数定义 |
|
||||
| `defineFrontComponent()` | 前端组件定义 |
|
||||
| `defineRole()` | 角色定义 |
|
||||
| `defineField()` | 现有对象的字段扩展 |
|
||||
| `defineView()` | Saved view definitions |
|
||||
| `defineNavigationMenuItem()` | Navigation menu item definitions |
|
||||
| `defineSkill()` | AI agent skill definitions |
|
||||
|
||||
<Note>
|
||||
**文件命名是灵活的。** 实体检测基于 AST — SDK 会扫描你的源文件以查找 `export default define<Entity>({...})` 模式。 你可以按照自己的喜好组织文件和文件夹。 按实体类型分组(例如 `logic-functions/`、`roles/`)只是代码组织的一种约定,并非必需。
|
||||
@@ -144,7 +173,7 @@ export default defineObject({
|
||||
后续命令将添加更多文件和文件夹:
|
||||
|
||||
* `yarn twenty app:dev` 将在 `node_modules/twenty-sdk/generated` 中自动生成一个类型化的 API 客户端(类型化的 Twenty 客户端 + 工作区类型)。
|
||||
* `yarn twenty entity:add` 会在 `src/` 下为你的自定义对象、函数、前端组件或角色添加实体定义文件。
|
||||
* `yarn twenty entity:add` will add entity definition files under `src/` for your custom objects, functions, front components, roles, skills, and more.
|
||||
|
||||
## 身份验证
|
||||
|
||||
@@ -187,14 +216,17 @@ twenty-sdk 提供你在应用中使用的类型化构件和辅助函数。 以
|
||||
|
||||
该 SDK 提供辅助函数用于定义你的应用实体。 如 [实体检测](#entity-detection) 中所述,你必须使用 `export default define<Entity>({...})` 才能让你的实体被检测到:
|
||||
|
||||
| 函数 | 目的 |
|
||||
| ------------------------ | ------------------ |
|
||||
| `defineApplication()` | 配置应用元数据(必需,每个应用一个) |
|
||||
| `defineObject()` | 定义带字段的自定义对象 |
|
||||
| `defineLogicFunction()` | 定义带处理程序的逻辑函数 |
|
||||
| `defineFrontComponent()` | 为自定义 UI 定义前端组件 |
|
||||
| `defineRole()` | 配置角色权限和对象访问 |
|
||||
| `defineField()` | 为现有对象扩展额外字段 |
|
||||
| 函数 | 目的 |
|
||||
| ---------------------------- | ------------------------------- |
|
||||
| `defineApplication()` | 配置应用元数据(必需,每个应用一个) |
|
||||
| `defineObject()` | 定义带字段的自定义对象 |
|
||||
| `defineLogicFunction()` | 定义带处理程序的逻辑函数 |
|
||||
| `defineFrontComponent()` | 为自定义 UI 定义前端组件 |
|
||||
| `defineRole()` | 配置角色权限和对象访问 |
|
||||
| `defineField()` | 为现有对象扩展额外字段 |
|
||||
| `defineView()` | Define saved views for objects |
|
||||
| `defineNavigationMenuItem()` | Define sidebar navigation links |
|
||||
| `defineSkill()` | Define AI agent skills |
|
||||
|
||||
这些函数会在构建时校验你的配置,并提供 IDE 自动补全和类型安全。
|
||||
|
||||
@@ -294,7 +326,7 @@ export default defineObject({
|
||||
* **应用的身份**:标识符、显示名称和描述。
|
||||
* **函数如何运行**:它们用于权限的角色。
|
||||
* **(可选)变量**:以环境变量形式提供给函数的键值对。
|
||||
* **(Optional) post-install function**: a logic function that runs after the app is installed.
|
||||
* **(可选)安装后函数**:在应用安装后运行的逻辑函数。
|
||||
|
||||
使用 `defineApplication()` 定义你的应用配置:
|
||||
|
||||
@@ -327,7 +359,7 @@ export default defineApplication({
|
||||
* `universalIdentifier` 字段是你拥有的确定性 ID;生成一次并在多次同步中保持稳定。
|
||||
* `applicationVariables` 会变成函数可用的环境变量(例如,`DEFAULT_RECIPIENT_NAME` 可作为 `process.env.DEFAULT_RECIPIENT_NAME` 使用)。
|
||||
* `defaultRoleUniversalIdentifier` 必须与角色文件一致(见下文)。
|
||||
* `postInstallLogicFunctionUniversalIdentifier` (optional) points to a logic function that runs automatically after the app is installed. See [Post-install functions](#post-install-functions).
|
||||
* `postInstallLogicFunctionUniversalIdentifier`(可选)指向一个在应用安装后自动运行的逻辑函数。 参见 [安装后函数](#post-install-functions)。
|
||||
|
||||
#### 角色和权限
|
||||
|
||||
@@ -466,11 +498,11 @@ export default defineLogicFunction({
|
||||
* `triggers` 数组是可选的。 没有触发器的函数可作为实用函数,被其他函数调用。
|
||||
* 你可以在单个函数中混用多种触发器类型。
|
||||
|
||||
### Post-install functions
|
||||
### 安装后函数
|
||||
|
||||
A post-install function is a logic function that runs automatically after your app is installed on a workspace. This is useful for one-time setup tasks such as seeding default data, creating initial records, or configuring workspace settings.
|
||||
安装后函数是在你的应用安装到工作区后自动运行的逻辑函数。 这对于一次性设置任务很有用,例如填充默认数据、创建初始记录或配置工作区设置。
|
||||
|
||||
When you scaffold a new app with `create-twenty-app`, a post-install function is generated for you at `src/logic-functions/post-install.ts`:
|
||||
当你使用 `create-twenty-app` 脚手架创建一个新应用时,会在 `src/logic-functions/post-install.ts` 为你生成一个安装后函数:
|
||||
|
||||
```typescript
|
||||
// src/logic-functions/post-install.ts
|
||||
@@ -491,7 +523,7 @@ export default defineLogicFunction({
|
||||
});
|
||||
```
|
||||
|
||||
The function is wired into your app by referencing its universal identifier in `application-config.ts`:
|
||||
通过在 `application-config.ts` 中引用其通用标识符,可将该函数接入你的应用:
|
||||
|
||||
```typescript
|
||||
import { POST_INSTALL_UNIVERSAL_IDENTIFIER } from 'src/logic-functions/post-install';
|
||||
@@ -714,6 +746,41 @@ export default defineFrontComponent({
|
||||
* **脚手架生成**:运行 `yarn twenty entity:add` 并选择添加新前端组件的选项。
|
||||
* **手动**:创建一个新的 `*.front-component.tsx` 文件,并使用 `defineFrontComponent()`。
|
||||
|
||||
### 技能
|
||||
|
||||
Skills define reusable instructions and capabilities that AI agents can use within your workspace. Use `defineSkill()` to define skills with built-in validation:
|
||||
|
||||
```typescript
|
||||
// src/skills/example-skill.ts
|
||||
import { defineSkill } from 'twenty-sdk';
|
||||
|
||||
export default defineSkill({
|
||||
universalIdentifier: 'a1b2c3d4-e5f6-7890-abcd-ef1234567890',
|
||||
name: 'sales-outreach',
|
||||
label: 'Sales Outreach',
|
||||
description: 'Guides the AI agent through a structured sales outreach process',
|
||||
icon: 'IconBrain',
|
||||
content: `You are a sales outreach assistant. When reaching out to a prospect:
|
||||
1. Research the company and recent news
|
||||
2. Identify the prospect's role and likely pain points
|
||||
3. Draft a personalized message referencing specific details
|
||||
4. Keep the tone professional but conversational`,
|
||||
});
|
||||
```
|
||||
|
||||
关键点:
|
||||
|
||||
* `name` is a unique identifier string for the skill (kebab-case recommended).
|
||||
* `label` is the human-readable display name shown in the UI.
|
||||
* `content` contains the skill instructions — this is the text the AI agent uses.
|
||||
* `icon` (optional) sets the icon displayed in the UI.
|
||||
* `description` (optional) provides additional context about the skill's purpose.
|
||||
|
||||
You can create new skills in two ways:
|
||||
|
||||
* **Scaffolded**: Run `yarn twenty entity:add` and choose the option to add a new skill.
|
||||
* **Manual**: Create a new file and use `defineSkill()`, following the same pattern.
|
||||
|
||||
### 生成的类型化客户端
|
||||
|
||||
类型化客户端由 `yarn twenty app:dev` 自动生成,并基于你的工作区架构存放在 `node_modules/twenty-sdk/generated`。 在你的函数中使用它:
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@lingui/cli": "^5.1.2",
|
||||
"@lingui/swc-plugin": "^5.6.0",
|
||||
"@lingui/swc-plugin": "^5.11.0",
|
||||
"@lingui/vite-plugin": "^5.1.2",
|
||||
"@react-email/preview-server": "5.1.0",
|
||||
"@tiptap/core": "^3.4.2",
|
||||
|
||||
@@ -9,6 +9,8 @@ import { SOURCE_LOCALE } from 'twenty-shared/translations';
|
||||
|
||||
// eslint-disable-next-line no-restricted-imports
|
||||
import { RootDecorator } from '../src/testing/decorators/RootDecorator';
|
||||
// eslint-disable-next-line no-restricted-imports
|
||||
import { resetJotaiStore } from '../src/modules/ui/utilities/state/jotai/jotaiStore';
|
||||
|
||||
import 'react-loading-skeleton/dist/skeleton.css';
|
||||
import 'twenty-ui/style.css';
|
||||
@@ -84,6 +86,10 @@ const preview: Preview = {
|
||||
RootDecorator,
|
||||
],
|
||||
|
||||
beforeEach: () => {
|
||||
resetJotaiStore();
|
||||
},
|
||||
|
||||
loaders: [mswLoader],
|
||||
|
||||
parameters: {
|
||||
|
||||
@@ -120,7 +120,7 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@lingui/cli": "^5.1.2",
|
||||
"@lingui/swc-plugin": "^5.6.0",
|
||||
"@lingui/swc-plugin": "^5.11.0",
|
||||
"@lingui/vite-plugin": "^5.1.2",
|
||||
"@playwright/test": "^1.56.1",
|
||||
"@tiptap/suggestion": "3.4.2",
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -311,6 +311,11 @@ msgstr "{morphRelationCount} Objekte"
|
||||
msgid "{num, selectordinal, one {{num}st} two {{num}nd} few {{num}rd} other {{num}th}}"
|
||||
msgstr "{num, selectordinal, one {{num}ste} other {{num}de}}"
|
||||
|
||||
#. js-lingui-id: fTSz8d
|
||||
#: src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownActorSelect.tsx
|
||||
msgid "{numberOfSelectedItems} workspace members"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 7kYa/u
|
||||
#: src/modules/object-record/record-show/hooks/useRecordShowPagePagination.ts
|
||||
msgid "{objectLabelPlural} ({totalCount})"
|
||||
@@ -770,6 +775,11 @@ msgstr "Voeg \"{trimmedName}\" by opsies"
|
||||
msgid "Add a {objectLabelSingular}"
|
||||
msgstr "Voeg 'n {objectLabelSingular} by"
|
||||
|
||||
#. js-lingui-id: 7W8nJr
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
|
||||
msgid "Add a Group"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: CZDwqQ
|
||||
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
|
||||
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
|
||||
@@ -786,11 +796,6 @@ msgstr "Voeg 'n nodus by"
|
||||
msgid "Add a record"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: r8W+9y
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationSectionEditor.tsx
|
||||
msgid "Add a Section"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: eMc2xs
|
||||
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
|
||||
msgid "Add a step"
|
||||
@@ -1512,6 +1517,9 @@ msgstr "'n Fout het voorgekom tydens die oplaai van die prent."
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
@@ -1974,7 +1982,6 @@ msgstr "Aanhegsels"
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr ""
|
||||
@@ -2251,9 +2258,9 @@ msgstr "Bruin"
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2615,7 +2622,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "Kies die velde wat jou rekords sal identifiseer"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Kies die formaat wat gebruik word om datumwaarde te vertoon"
|
||||
|
||||
@@ -3244,11 +3251,6 @@ msgstr "Kern"
|
||||
msgid "Core Objects"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: cfa2VJ
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Core Schema"
|
||||
msgstr "Kernskema"
|
||||
|
||||
#. js-lingui-id: I99Miw
|
||||
#: src/modules/billing/components/SettingsBillingCreditsSection.tsx
|
||||
#: src/modules/ai/components/internal/AIChatContextUsageButton.tsx
|
||||
@@ -5041,10 +5043,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Voer filter in"
|
||||
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
msgstr "Voer in <0>Unicode</0> formaat"
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -6284,7 +6286,9 @@ msgstr ""
|
||||
#: src/pages/settings/SettingsWorkspace.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetEditorGroupsData.ts
|
||||
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
|
||||
msgid "General"
|
||||
msgstr "Algemeen"
|
||||
@@ -7008,11 +7012,6 @@ msgstr "Instruksies vir KI"
|
||||
msgid "Integrations - Settings"
|
||||
msgstr "Integrasies - Instellings"
|
||||
|
||||
#. js-lingui-id: ntgzzG
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Interact with your workspace data"
|
||||
msgstr "Interaksie met jou werkspasie-data"
|
||||
|
||||
#. js-lingui-id: jyjroS
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Interval switching has been cancelled."
|
||||
@@ -8126,11 +8125,6 @@ msgstr "Metadata"
|
||||
msgid "Metadata file generation failed"
|
||||
msgstr "Metadataleêr generasie het misluk"
|
||||
|
||||
#. js-lingui-id: 0BF9eC
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Metadata Schema"
|
||||
msgstr "Metadataskema"
|
||||
|
||||
#. js-lingui-id: onCJJ6
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Metered tier switching has been cancelled."
|
||||
@@ -8523,6 +8517,11 @@ msgstr "Nuwe Veld"
|
||||
msgid "New folder"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 93KA8w
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
|
||||
msgid "New Group"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: o8MyXb
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
|
||||
msgid "New key"
|
||||
@@ -9569,7 +9568,7 @@ msgstr ""
|
||||
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuNewSidebarItemMainMenu.tsx
|
||||
msgid "Other"
|
||||
msgstr "Ander"
|
||||
@@ -14212,6 +14211,7 @@ msgid "Workspace Domain"
|
||||
msgstr "Werkruimte Domein"
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr ""
|
||||
|
||||
@@ -311,6 +311,11 @@ msgstr "{morphRelationCount, plural, zero {لا كائنات} one {كائن وا
|
||||
msgid "{num, selectordinal, one {{num}st} two {{num}nd} few {{num}rd} other {{num}th}}"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: fTSz8d
|
||||
#: src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownActorSelect.tsx
|
||||
msgid "{numberOfSelectedItems} workspace members"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 7kYa/u
|
||||
#: src/modules/object-record/record-show/hooks/useRecordShowPagePagination.ts
|
||||
msgid "{objectLabelPlural} ({totalCount})"
|
||||
@@ -770,6 +775,11 @@ msgstr "أضف \"{trimmedName}\" إلى الخيارات"
|
||||
msgid "Add a {objectLabelSingular}"
|
||||
msgstr "أضف {objectLabelSingular}"
|
||||
|
||||
#. js-lingui-id: 7W8nJr
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
|
||||
msgid "Add a Group"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: CZDwqQ
|
||||
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
|
||||
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
|
||||
@@ -786,11 +796,6 @@ msgstr "إضافة عقدة"
|
||||
msgid "Add a record"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: r8W+9y
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationSectionEditor.tsx
|
||||
msgid "Add a Section"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: eMc2xs
|
||||
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
|
||||
msgid "Add a step"
|
||||
@@ -1512,6 +1517,9 @@ msgstr "حدث خطأ أثناء تحميل الصورة."
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
@@ -1974,7 +1982,6 @@ msgstr "المرفقات"
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr ""
|
||||
@@ -2251,9 +2258,9 @@ msgstr "بني"
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2615,7 +2622,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "اختر الحقول التي ستحدد سجلاتك"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "اختر التنسيق المستخدم لعرض قيمة التاريخ"
|
||||
|
||||
@@ -3244,11 +3251,6 @@ msgstr "النواة"
|
||||
msgid "Core Objects"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: cfa2VJ
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Core Schema"
|
||||
msgstr "المخطط الأساسي"
|
||||
|
||||
#. js-lingui-id: I99Miw
|
||||
#: src/modules/billing/components/SettingsBillingCreditsSection.tsx
|
||||
#: src/modules/ai/components/internal/AIChatContextUsageButton.tsx
|
||||
@@ -5041,10 +5043,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "أدخل عامل تصفية"
|
||||
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
msgstr "إدخل بصيغة <0>Unicode</0>"
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -6284,7 +6286,9 @@ msgstr "الرسم البياني القياسي"
|
||||
#: src/pages/settings/SettingsWorkspace.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetEditorGroupsData.ts
|
||||
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
|
||||
msgid "General"
|
||||
msgstr "عام"
|
||||
@@ -7008,11 +7012,6 @@ msgstr "تعليمات إلى الذكاء الاصطناعي"
|
||||
msgid "Integrations - Settings"
|
||||
msgstr "التكاملات - إعدادات"
|
||||
|
||||
#. js-lingui-id: ntgzzG
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Interact with your workspace data"
|
||||
msgstr "تفاعل مع بيانات مساحة العمل الخاصة بك"
|
||||
|
||||
#. js-lingui-id: jyjroS
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Interval switching has been cancelled."
|
||||
@@ -8126,11 +8125,6 @@ msgstr "البيانات الوصفية"
|
||||
msgid "Metadata file generation failed"
|
||||
msgstr "فشل في توليد ملف البيانات الوصفية"
|
||||
|
||||
#. js-lingui-id: 0BF9eC
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Metadata Schema"
|
||||
msgstr "مخطط البيانات الوصفية"
|
||||
|
||||
#. js-lingui-id: onCJJ6
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Metered tier switching has been cancelled."
|
||||
@@ -8523,6 +8517,11 @@ msgstr "حقل جديد"
|
||||
msgid "New folder"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 93KA8w
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
|
||||
msgid "New Group"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: o8MyXb
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
|
||||
msgid "New key"
|
||||
@@ -9569,7 +9568,7 @@ msgstr ""
|
||||
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuNewSidebarItemMainMenu.tsx
|
||||
msgid "Other"
|
||||
msgstr "أخرى"
|
||||
@@ -14210,6 +14209,7 @@ msgid "Workspace Domain"
|
||||
msgstr "نطاق مساحة العمل"
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr ""
|
||||
|
||||
@@ -311,6 +311,11 @@ msgstr "{morphRelationCount} objectes"
|
||||
msgid "{num, selectordinal, one {{num}st} two {{num}nd} few {{num}rd} other {{num}th}}"
|
||||
msgstr "{num, selectordinal, one {{num}r} other {{num}è}}"
|
||||
|
||||
#. js-lingui-id: fTSz8d
|
||||
#: src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownActorSelect.tsx
|
||||
msgid "{numberOfSelectedItems} workspace members"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 7kYa/u
|
||||
#: src/modules/object-record/record-show/hooks/useRecordShowPagePagination.ts
|
||||
msgid "{objectLabelPlural} ({totalCount})"
|
||||
@@ -770,6 +775,11 @@ msgstr "Afegeix \"{trimmedName}\" a les opcions"
|
||||
msgid "Add a {objectLabelSingular}"
|
||||
msgstr "Afegeix un {objectLabelSingular}"
|
||||
|
||||
#. js-lingui-id: 7W8nJr
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
|
||||
msgid "Add a Group"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: CZDwqQ
|
||||
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
|
||||
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
|
||||
@@ -786,11 +796,6 @@ msgstr "Afegeix un node"
|
||||
msgid "Add a record"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: r8W+9y
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationSectionEditor.tsx
|
||||
msgid "Add a Section"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: eMc2xs
|
||||
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
|
||||
msgid "Add a step"
|
||||
@@ -1512,6 +1517,9 @@ msgstr "S'ha produït un error en carregar la imatge."
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
@@ -1974,7 +1982,6 @@ msgstr "Adjunts"
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr ""
|
||||
@@ -2251,9 +2258,9 @@ msgstr "Marró"
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2615,7 +2622,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "Trieu els camps que identificaran els vostres registres"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Tria el format utilitzat per mostrar el valor de la data"
|
||||
|
||||
@@ -3244,11 +3251,6 @@ msgstr "Nucli"
|
||||
msgid "Core Objects"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: cfa2VJ
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Core Schema"
|
||||
msgstr "Esquema del nucli"
|
||||
|
||||
#. js-lingui-id: I99Miw
|
||||
#: src/modules/billing/components/SettingsBillingCreditsSection.tsx
|
||||
#: src/modules/ai/components/internal/AIChatContextUsageButton.tsx
|
||||
@@ -5041,10 +5043,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Introdueix el filtre"
|
||||
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
msgstr "Introdueix en format <0>Unicode</0>"
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -6284,7 +6286,9 @@ msgstr "Gràfic de mesurador"
|
||||
#: src/pages/settings/SettingsWorkspace.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetEditorGroupsData.ts
|
||||
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
|
||||
msgid "General"
|
||||
msgstr "General"
|
||||
@@ -7008,11 +7012,6 @@ msgstr "Instruccions per a la IA"
|
||||
msgid "Integrations - Settings"
|
||||
msgstr "Integracions - Configuració"
|
||||
|
||||
#. js-lingui-id: ntgzzG
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Interact with your workspace data"
|
||||
msgstr "Interactua amb les dades del teu espai de treball"
|
||||
|
||||
#. js-lingui-id: jyjroS
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Interval switching has been cancelled."
|
||||
@@ -8126,11 +8125,6 @@ msgstr "Metadades"
|
||||
msgid "Metadata file generation failed"
|
||||
msgstr "Error en la generació del fitxer de metadades"
|
||||
|
||||
#. js-lingui-id: 0BF9eC
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Metadata Schema"
|
||||
msgstr "Esquema de metadades"
|
||||
|
||||
#. js-lingui-id: onCJJ6
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Metered tier switching has been cancelled."
|
||||
@@ -8523,6 +8517,11 @@ msgstr "Nou camp"
|
||||
msgid "New folder"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 93KA8w
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
|
||||
msgid "New Group"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: o8MyXb
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
|
||||
msgid "New key"
|
||||
@@ -9569,7 +9568,7 @@ msgstr ""
|
||||
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuNewSidebarItemMainMenu.tsx
|
||||
msgid "Other"
|
||||
msgstr "Altres"
|
||||
@@ -14212,6 +14211,7 @@ msgid "Workspace Domain"
|
||||
msgstr "Domini de l'espai de treball"
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr ""
|
||||
|
||||
@@ -311,6 +311,11 @@ msgstr "{morphRelationCount} objektů"
|
||||
msgid "{num, selectordinal, one {{num}st} two {{num}nd} few {{num}rd} other {{num}th}}"
|
||||
msgstr "{num, selectordinal, one {{num}.} few {{num}.} many {{num}.} other {{num}.}}"
|
||||
|
||||
#. js-lingui-id: fTSz8d
|
||||
#: src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownActorSelect.tsx
|
||||
msgid "{numberOfSelectedItems} workspace members"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 7kYa/u
|
||||
#: src/modules/object-record/record-show/hooks/useRecordShowPagePagination.ts
|
||||
msgid "{objectLabelPlural} ({totalCount})"
|
||||
@@ -770,6 +775,11 @@ msgstr "Přidat \"{trimmedName}\" do možností"
|
||||
msgid "Add a {objectLabelSingular}"
|
||||
msgstr "Přidat {objectLabelSingular}"
|
||||
|
||||
#. js-lingui-id: 7W8nJr
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
|
||||
msgid "Add a Group"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: CZDwqQ
|
||||
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
|
||||
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
|
||||
@@ -786,11 +796,6 @@ msgstr "Přidat uzel"
|
||||
msgid "Add a record"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: r8W+9y
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationSectionEditor.tsx
|
||||
msgid "Add a Section"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: eMc2xs
|
||||
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
|
||||
msgid "Add a step"
|
||||
@@ -1512,6 +1517,9 @@ msgstr "Při nahrávání obrázku došlo k chybě."
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
@@ -1974,7 +1982,6 @@ msgstr "Přílohy"
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr ""
|
||||
@@ -2251,9 +2258,9 @@ msgstr "Hnědá"
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2615,7 +2622,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "Vyberte pole, která budou identifikovat vaše záznamy"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Vyberte formát použitý k zobrazení datumové hodnoty"
|
||||
|
||||
@@ -3244,11 +3251,6 @@ msgstr "Jádro"
|
||||
msgid "Core Objects"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: cfa2VJ
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Core Schema"
|
||||
msgstr "Základní schéma"
|
||||
|
||||
#. js-lingui-id: I99Miw
|
||||
#: src/modules/billing/components/SettingsBillingCreditsSection.tsx
|
||||
#: src/modules/ai/components/internal/AIChatContextUsageButton.tsx
|
||||
@@ -5041,10 +5043,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Zadejte filtr"
|
||||
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
msgstr "Zadejte v <0>Unicode</0> formátu"
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -6284,7 +6286,9 @@ msgstr "Ukazatelový graf"
|
||||
#: src/pages/settings/SettingsWorkspace.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetEditorGroupsData.ts
|
||||
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
|
||||
msgid "General"
|
||||
msgstr "Obecné"
|
||||
@@ -7008,11 +7012,6 @@ msgstr "Pokyny pro AI"
|
||||
msgid "Integrations - Settings"
|
||||
msgstr "Integrace - Nastavení"
|
||||
|
||||
#. js-lingui-id: ntgzzG
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Interact with your workspace data"
|
||||
msgstr "Interakce s daty vašeho pracovního prostoru"
|
||||
|
||||
#. js-lingui-id: jyjroS
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Interval switching has been cancelled."
|
||||
@@ -8126,11 +8125,6 @@ msgstr "Metadata"
|
||||
msgid "Metadata file generation failed"
|
||||
msgstr "Generování souboru metadat selhalo"
|
||||
|
||||
#. js-lingui-id: 0BF9eC
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Metadata Schema"
|
||||
msgstr "Schéma metadat"
|
||||
|
||||
#. js-lingui-id: onCJJ6
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Metered tier switching has been cancelled."
|
||||
@@ -8523,6 +8517,11 @@ msgstr "Nové pole"
|
||||
msgid "New folder"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 93KA8w
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
|
||||
msgid "New Group"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: o8MyXb
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
|
||||
msgid "New key"
|
||||
@@ -9569,7 +9568,7 @@ msgstr ""
|
||||
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuNewSidebarItemMainMenu.tsx
|
||||
msgid "Other"
|
||||
msgstr "Ostatní"
|
||||
@@ -14212,6 +14211,7 @@ msgid "Workspace Domain"
|
||||
msgstr "Doména pracovního prostoru"
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr ""
|
||||
|
||||
@@ -311,6 +311,11 @@ msgstr "{morphRelationCount} objekter"
|
||||
msgid "{num, selectordinal, one {{num}st} two {{num}nd} few {{num}rd} other {{num}th}}"
|
||||
msgstr "{num, selectordinal, one {{num}ste} other {{num}te}}"
|
||||
|
||||
#. js-lingui-id: fTSz8d
|
||||
#: src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownActorSelect.tsx
|
||||
msgid "{numberOfSelectedItems} workspace members"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 7kYa/u
|
||||
#: src/modules/object-record/record-show/hooks/useRecordShowPagePagination.ts
|
||||
msgid "{objectLabelPlural} ({totalCount})"
|
||||
@@ -770,6 +775,11 @@ msgstr "Tilføj \"{trimmedName}\" til muligheder"
|
||||
msgid "Add a {objectLabelSingular}"
|
||||
msgstr "Tilføj {objectLabelSingular}"
|
||||
|
||||
#. js-lingui-id: 7W8nJr
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
|
||||
msgid "Add a Group"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: CZDwqQ
|
||||
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
|
||||
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
|
||||
@@ -786,11 +796,6 @@ msgstr "Tilføj en node"
|
||||
msgid "Add a record"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: r8W+9y
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationSectionEditor.tsx
|
||||
msgid "Add a Section"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: eMc2xs
|
||||
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
|
||||
msgid "Add a step"
|
||||
@@ -1512,6 +1517,9 @@ msgstr "Der opstod en fejl under upload af billedet."
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
@@ -1974,7 +1982,6 @@ msgstr "Vedhæftninger"
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr ""
|
||||
@@ -2251,9 +2258,9 @@ msgstr "Brun"
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2615,7 +2622,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "Vælg de felter, der vil identificere dine poster"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Vælg det format, der bruges til at vise datoværdien"
|
||||
|
||||
@@ -3244,11 +3251,6 @@ msgstr "Kerne"
|
||||
msgid "Core Objects"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: cfa2VJ
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Core Schema"
|
||||
msgstr "Kerneskema"
|
||||
|
||||
#. js-lingui-id: I99Miw
|
||||
#: src/modules/billing/components/SettingsBillingCreditsSection.tsx
|
||||
#: src/modules/ai/components/internal/AIChatContextUsageButton.tsx
|
||||
@@ -5041,10 +5043,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Indtast filter"
|
||||
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
msgstr "Indtast i <0>Unicode</0> format"
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -6284,7 +6286,9 @@ msgstr "Målediagram"
|
||||
#: src/pages/settings/SettingsWorkspace.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetEditorGroupsData.ts
|
||||
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
|
||||
msgid "General"
|
||||
msgstr "Generelt"
|
||||
@@ -7008,11 +7012,6 @@ msgstr "Instruktioner til AI"
|
||||
msgid "Integrations - Settings"
|
||||
msgstr "Integrationer - Indstillinger"
|
||||
|
||||
#. js-lingui-id: ntgzzG
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Interact with your workspace data"
|
||||
msgstr "Interagér med dine arbejdspladsdata"
|
||||
|
||||
#. js-lingui-id: jyjroS
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Interval switching has been cancelled."
|
||||
@@ -8126,11 +8125,6 @@ msgstr "Metadata"
|
||||
msgid "Metadata file generation failed"
|
||||
msgstr "Generering af metadatafil mislykkedes"
|
||||
|
||||
#. js-lingui-id: 0BF9eC
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Metadata Schema"
|
||||
msgstr "Metadata-skema"
|
||||
|
||||
#. js-lingui-id: onCJJ6
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Metered tier switching has been cancelled."
|
||||
@@ -8523,6 +8517,11 @@ msgstr "Nyt felt"
|
||||
msgid "New folder"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 93KA8w
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
|
||||
msgid "New Group"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: o8MyXb
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
|
||||
msgid "New key"
|
||||
@@ -9569,7 +9568,7 @@ msgstr ""
|
||||
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuNewSidebarItemMainMenu.tsx
|
||||
msgid "Other"
|
||||
msgstr "Andet"
|
||||
@@ -14214,6 +14213,7 @@ msgid "Workspace Domain"
|
||||
msgstr "Arbejdsområdedomæne"
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr ""
|
||||
|
||||
@@ -311,6 +311,11 @@ msgstr "{morphRelationCount} Objekte"
|
||||
msgid "{num, selectordinal, one {{num}st} two {{num}nd} few {{num}rd} other {{num}th}}"
|
||||
msgstr "{num, selectordinal, one {{num}.} other {{num}.}}"
|
||||
|
||||
#. js-lingui-id: fTSz8d
|
||||
#: src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownActorSelect.tsx
|
||||
msgid "{numberOfSelectedItems} workspace members"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 7kYa/u
|
||||
#: src/modules/object-record/record-show/hooks/useRecordShowPagePagination.ts
|
||||
msgid "{objectLabelPlural} ({totalCount})"
|
||||
@@ -770,6 +775,11 @@ msgstr "\"{trimmedName}\" zu den Optionen hinzufügen"
|
||||
msgid "Add a {objectLabelSingular}"
|
||||
msgstr "Ein {objectLabelSingular} hinzufügen"
|
||||
|
||||
#. js-lingui-id: 7W8nJr
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
|
||||
msgid "Add a Group"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: CZDwqQ
|
||||
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
|
||||
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
|
||||
@@ -786,11 +796,6 @@ msgstr "Knoten hinzufügen"
|
||||
msgid "Add a record"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: r8W+9y
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationSectionEditor.tsx
|
||||
msgid "Add a Section"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: eMc2xs
|
||||
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
|
||||
msgid "Add a step"
|
||||
@@ -1512,6 +1517,9 @@ msgstr "Beim Hochladen des Bildes ist ein Fehler aufgetreten."
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
@@ -1974,7 +1982,6 @@ msgstr "Anhänge"
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr ""
|
||||
@@ -2251,9 +2258,9 @@ msgstr "Braun"
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2615,7 +2622,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "Wählen Sie die Felder aus, die Ihre Datensätze identifizieren werden"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Wählen Sie das Format zur Anzeige des Datumswertes"
|
||||
|
||||
@@ -3244,11 +3251,6 @@ msgstr "Kern"
|
||||
msgid "Core Objects"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: cfa2VJ
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Core Schema"
|
||||
msgstr "Kernschema"
|
||||
|
||||
#. js-lingui-id: I99Miw
|
||||
#: src/modules/billing/components/SettingsBillingCreditsSection.tsx
|
||||
#: src/modules/ai/components/internal/AIChatContextUsageButton.tsx
|
||||
@@ -5041,10 +5043,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Filter eingeben"
|
||||
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
msgstr "Im <0>Unicode</0>-Format eingeben"
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -6284,7 +6286,9 @@ msgstr ""
|
||||
#: src/pages/settings/SettingsWorkspace.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetEditorGroupsData.ts
|
||||
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
|
||||
msgid "General"
|
||||
msgstr "Allgemein"
|
||||
@@ -7008,11 +7012,6 @@ msgstr "Anweisungen für die KI"
|
||||
msgid "Integrations - Settings"
|
||||
msgstr "Integrationen - Einstellungen"
|
||||
|
||||
#. js-lingui-id: ntgzzG
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Interact with your workspace data"
|
||||
msgstr "Interagieren Sie mit Ihren Arbeitsbereichsdaten"
|
||||
|
||||
#. js-lingui-id: jyjroS
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Interval switching has been cancelled."
|
||||
@@ -8126,11 +8125,6 @@ msgstr "Metadaten"
|
||||
msgid "Metadata file generation failed"
|
||||
msgstr "Generierung der Metadatendatei fehlgeschlagen"
|
||||
|
||||
#. js-lingui-id: 0BF9eC
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Metadata Schema"
|
||||
msgstr "Metadaten-Schema"
|
||||
|
||||
#. js-lingui-id: onCJJ6
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Metered tier switching has been cancelled."
|
||||
@@ -8523,6 +8517,11 @@ msgstr "Neues Feld"
|
||||
msgid "New folder"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 93KA8w
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
|
||||
msgid "New Group"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: o8MyXb
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
|
||||
msgid "New key"
|
||||
@@ -9569,7 +9568,7 @@ msgstr ""
|
||||
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuNewSidebarItemMainMenu.tsx
|
||||
msgid "Other"
|
||||
msgstr "Andere"
|
||||
@@ -14212,6 +14211,7 @@ msgid "Workspace Domain"
|
||||
msgstr "Arbeitsbereichsdomäne"
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr ""
|
||||
|
||||
@@ -311,6 +311,11 @@ msgstr "{morphRelationCount} Αντικείμενα"
|
||||
msgid "{num, selectordinal, one {{num}st} two {{num}nd} few {{num}rd} other {{num}th}}"
|
||||
msgstr "{num, selectordinal, one {{num}η} other {{num}η}}"
|
||||
|
||||
#. js-lingui-id: fTSz8d
|
||||
#: src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownActorSelect.tsx
|
||||
msgid "{numberOfSelectedItems} workspace members"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 7kYa/u
|
||||
#: src/modules/object-record/record-show/hooks/useRecordShowPagePagination.ts
|
||||
msgid "{objectLabelPlural} ({totalCount})"
|
||||
@@ -770,6 +775,11 @@ msgstr "Προσθήκη \"{trimmedName}\" στις επιλογές"
|
||||
msgid "Add a {objectLabelSingular}"
|
||||
msgstr "Προσθήκη {objectLabelSingular}"
|
||||
|
||||
#. js-lingui-id: 7W8nJr
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
|
||||
msgid "Add a Group"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: CZDwqQ
|
||||
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
|
||||
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
|
||||
@@ -786,11 +796,6 @@ msgstr "Προσθήκη κόμβου"
|
||||
msgid "Add a record"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: r8W+9y
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationSectionEditor.tsx
|
||||
msgid "Add a Section"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: eMc2xs
|
||||
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
|
||||
msgid "Add a step"
|
||||
@@ -1512,6 +1517,9 @@ msgstr "Παρουσιάστηκε σφάλμα κατά τη μεταφόρτω
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
@@ -1974,7 +1982,6 @@ msgstr "Συνημμένα"
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr ""
|
||||
@@ -2251,9 +2258,9 @@ msgstr "Καφέ"
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2615,7 +2622,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "Επιλέξτε τα πεδία που θα ταυτοποιήσουν τις εγγραφές σας"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Επιλέξτε τη μορφή που χρησιμοποιείται για την εμφάνιση της τιμής ημερομηνίας"
|
||||
|
||||
@@ -3244,11 +3251,6 @@ msgstr "Πυρήνας"
|
||||
msgid "Core Objects"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: cfa2VJ
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Core Schema"
|
||||
msgstr "Βασικό σχήμα"
|
||||
|
||||
#. js-lingui-id: I99Miw
|
||||
#: src/modules/billing/components/SettingsBillingCreditsSection.tsx
|
||||
#: src/modules/ai/components/internal/AIChatContextUsageButton.tsx
|
||||
@@ -5041,10 +5043,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Εισάγετε φίλτρο"
|
||||
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
msgstr "Εισάγετε σε μορφή <0>Unicode</0>"
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -6284,7 +6286,9 @@ msgstr "Διάγραμμα δείκτη"
|
||||
#: src/pages/settings/SettingsWorkspace.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetEditorGroupsData.ts
|
||||
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
|
||||
msgid "General"
|
||||
msgstr "Γενικά"
|
||||
@@ -7008,11 +7012,6 @@ msgstr "Οδηγίες για το AI"
|
||||
msgid "Integrations - Settings"
|
||||
msgstr "Ενσωματώσεις - Ρυθμίσεις"
|
||||
|
||||
#. js-lingui-id: ntgzzG
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Interact with your workspace data"
|
||||
msgstr "Αλληλεπιδράστε με τα δεδομένα του χώρου εργασίας σας"
|
||||
|
||||
#. js-lingui-id: jyjroS
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Interval switching has been cancelled."
|
||||
@@ -8126,11 +8125,6 @@ msgstr "Μεταδεδομένα"
|
||||
msgid "Metadata file generation failed"
|
||||
msgstr "Αποτυχία δημιουργίας αρχείου μεταδεδομένων"
|
||||
|
||||
#. js-lingui-id: 0BF9eC
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Metadata Schema"
|
||||
msgstr "Σχήμα μεταδεδομένων"
|
||||
|
||||
#. js-lingui-id: onCJJ6
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Metered tier switching has been cancelled."
|
||||
@@ -8523,6 +8517,11 @@ msgstr "Νέο Πεδίο"
|
||||
msgid "New folder"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 93KA8w
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
|
||||
msgid "New Group"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: o8MyXb
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
|
||||
msgid "New key"
|
||||
@@ -9569,7 +9568,7 @@ msgstr ""
|
||||
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuNewSidebarItemMainMenu.tsx
|
||||
msgid "Other"
|
||||
msgstr "Άλλο"
|
||||
@@ -14216,6 +14215,7 @@ msgid "Workspace Domain"
|
||||
msgstr "Τομέας Χώρου εργασίας"
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr ""
|
||||
|
||||
@@ -306,6 +306,11 @@ msgstr "{morphRelationCount} Objects"
|
||||
msgid "{num, selectordinal, one {{num}st} two {{num}nd} few {{num}rd} other {{num}th}}"
|
||||
msgstr "{num, selectordinal, one {{num}st} two {{num}nd} few {{num}rd} other {{num}th}}"
|
||||
|
||||
#. js-lingui-id: fTSz8d
|
||||
#: src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownActorSelect.tsx
|
||||
msgid "{numberOfSelectedItems} workspace members"
|
||||
msgstr "{numberOfSelectedItems} workspace members"
|
||||
|
||||
#. js-lingui-id: 7kYa/u
|
||||
#: src/modules/object-record/record-show/hooks/useRecordShowPagePagination.ts
|
||||
msgid "{objectLabelPlural} ({totalCount})"
|
||||
@@ -765,6 +770,11 @@ msgstr "Add \"{trimmedName}\" to options"
|
||||
msgid "Add a {objectLabelSingular}"
|
||||
msgstr "Add a {objectLabelSingular}"
|
||||
|
||||
#. js-lingui-id: 7W8nJr
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
|
||||
msgid "Add a Group"
|
||||
msgstr "Add a Group"
|
||||
|
||||
#. js-lingui-id: CZDwqQ
|
||||
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
|
||||
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
|
||||
@@ -781,11 +791,6 @@ msgstr "Add a node"
|
||||
msgid "Add a record"
|
||||
msgstr "Add a record"
|
||||
|
||||
#. js-lingui-id: r8W+9y
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationSectionEditor.tsx
|
||||
msgid "Add a Section"
|
||||
msgstr "Add a Section"
|
||||
|
||||
#. js-lingui-id: eMc2xs
|
||||
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
|
||||
msgid "Add a step"
|
||||
@@ -1507,6 +1512,9 @@ msgstr "An error occurred while uploading the picture."
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
@@ -1969,7 +1977,6 @@ msgstr "Attachments"
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr "Audit Logs"
|
||||
@@ -2246,10 +2253,10 @@ msgstr "Brown"
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
|
||||
#. js-lingui-id: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgstr "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr "Build many-to-many relations"
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
#: src/pages/settings/ai/components/SettingsToolsTable.tsx
|
||||
@@ -2610,7 +2617,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "Choose the fields that will identify your records"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Choose the format used to display date value"
|
||||
|
||||
@@ -3239,11 +3246,6 @@ msgstr "Core"
|
||||
msgid "Core Objects"
|
||||
msgstr "Core Objects"
|
||||
|
||||
#. js-lingui-id: cfa2VJ
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Core Schema"
|
||||
msgstr "Core Schema"
|
||||
|
||||
#. js-lingui-id: I99Miw
|
||||
#: src/modules/billing/components/SettingsBillingCreditsSection.tsx
|
||||
#: src/modules/ai/components/internal/AIChatContextUsageButton.tsx
|
||||
@@ -5036,10 +5038,10 @@ msgstr "Enter files as JSON array"
|
||||
msgid "Enter filter"
|
||||
msgstr "Enter filter"
|
||||
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
msgstr "Enter in <0>Unicode</0> format"
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr "Enter in Unicode format"
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -6279,7 +6281,9 @@ msgstr "Gauge Chart"
|
||||
#: src/pages/settings/SettingsWorkspace.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetEditorGroupsData.ts
|
||||
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
|
||||
msgid "General"
|
||||
msgstr "General"
|
||||
@@ -7003,11 +7007,6 @@ msgstr "Instructions for AI"
|
||||
msgid "Integrations - Settings"
|
||||
msgstr "Integrations - Settings"
|
||||
|
||||
#. js-lingui-id: ntgzzG
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Interact with your workspace data"
|
||||
msgstr "Interact with your workspace data"
|
||||
|
||||
#. js-lingui-id: jyjroS
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Interval switching has been cancelled."
|
||||
@@ -8121,11 +8120,6 @@ msgstr "Metadata"
|
||||
msgid "Metadata file generation failed"
|
||||
msgstr "Metadata file generation failed"
|
||||
|
||||
#. js-lingui-id: 0BF9eC
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Metadata Schema"
|
||||
msgstr "Metadata Schema"
|
||||
|
||||
#. js-lingui-id: onCJJ6
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Metered tier switching has been cancelled."
|
||||
@@ -8518,6 +8512,11 @@ msgstr "New Field"
|
||||
msgid "New folder"
|
||||
msgstr "New folder"
|
||||
|
||||
#. js-lingui-id: 93KA8w
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
|
||||
msgid "New Group"
|
||||
msgstr "New Group"
|
||||
|
||||
#. js-lingui-id: o8MyXb
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
|
||||
msgid "New key"
|
||||
@@ -9564,7 +9563,7 @@ msgstr "Organize"
|
||||
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuNewSidebarItemMainMenu.tsx
|
||||
msgid "Other"
|
||||
msgstr "Other"
|
||||
@@ -14209,6 +14208,7 @@ msgid "Workspace Domain"
|
||||
msgstr "Workspace Domain"
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr "Workspace Events"
|
||||
|
||||
@@ -311,6 +311,11 @@ msgstr "{morphRelationCount} objetos"
|
||||
msgid "{num, selectordinal, one {{num}st} two {{num}nd} few {{num}rd} other {{num}th}}"
|
||||
msgstr "{num, selectordinal, one {{num}º} other {{num}.º}}"
|
||||
|
||||
#. js-lingui-id: fTSz8d
|
||||
#: src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownActorSelect.tsx
|
||||
msgid "{numberOfSelectedItems} workspace members"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 7kYa/u
|
||||
#: src/modules/object-record/record-show/hooks/useRecordShowPagePagination.ts
|
||||
msgid "{objectLabelPlural} ({totalCount})"
|
||||
@@ -770,6 +775,11 @@ msgstr "Agregar \"{trimmedName}\" a las opciones"
|
||||
msgid "Add a {objectLabelSingular}"
|
||||
msgstr "Agregar un {objectLabelSingular}"
|
||||
|
||||
#. js-lingui-id: 7W8nJr
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
|
||||
msgid "Add a Group"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: CZDwqQ
|
||||
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
|
||||
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
|
||||
@@ -786,11 +796,6 @@ msgstr "Añadir un nodo"
|
||||
msgid "Add a record"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: r8W+9y
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationSectionEditor.tsx
|
||||
msgid "Add a Section"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: eMc2xs
|
||||
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
|
||||
msgid "Add a step"
|
||||
@@ -1512,6 +1517,9 @@ msgstr "Se produjo un error al subir la imagen."
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
@@ -1974,7 +1982,6 @@ msgstr "Adjuntos"
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr ""
|
||||
@@ -2251,9 +2258,9 @@ msgstr "Marrón"
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2615,7 +2622,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "Elige los campos que identificarán tus registros"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Elige el formato utilizado para mostrar el valor de la fecha"
|
||||
|
||||
@@ -3244,11 +3251,6 @@ msgstr "Núcleo"
|
||||
msgid "Core Objects"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: cfa2VJ
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Core Schema"
|
||||
msgstr "Esquema principal"
|
||||
|
||||
#. js-lingui-id: I99Miw
|
||||
#: src/modules/billing/components/SettingsBillingCreditsSection.tsx
|
||||
#: src/modules/ai/components/internal/AIChatContextUsageButton.tsx
|
||||
@@ -5041,10 +5043,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Introduce un filtro"
|
||||
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
msgstr "Ingresar en formato <0>Unicode</0>"
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -6284,7 +6286,9 @@ msgstr "Gráfico de Medidor"
|
||||
#: src/pages/settings/SettingsWorkspace.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetEditorGroupsData.ts
|
||||
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
|
||||
msgid "General"
|
||||
msgstr "General"
|
||||
@@ -7008,11 +7012,6 @@ msgstr "Instrucciones para la IA"
|
||||
msgid "Integrations - Settings"
|
||||
msgstr "Integraciones - Ajustes"
|
||||
|
||||
#. js-lingui-id: ntgzzG
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Interact with your workspace data"
|
||||
msgstr "Interactúe con los datos de su espacio de trabajo"
|
||||
|
||||
#. js-lingui-id: jyjroS
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Interval switching has been cancelled."
|
||||
@@ -8126,11 +8125,6 @@ msgstr "Metadatos"
|
||||
msgid "Metadata file generation failed"
|
||||
msgstr "Fallo en la generación del archivo de metadatos"
|
||||
|
||||
#. js-lingui-id: 0BF9eC
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Metadata Schema"
|
||||
msgstr "Esquema de metadatos"
|
||||
|
||||
#. js-lingui-id: onCJJ6
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Metered tier switching has been cancelled."
|
||||
@@ -8523,6 +8517,11 @@ msgstr "Nuevo Campo"
|
||||
msgid "New folder"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 93KA8w
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
|
||||
msgid "New Group"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: o8MyXb
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
|
||||
msgid "New key"
|
||||
@@ -9569,7 +9568,7 @@ msgstr ""
|
||||
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuNewSidebarItemMainMenu.tsx
|
||||
msgid "Other"
|
||||
msgstr "Otros"
|
||||
@@ -14214,6 +14213,7 @@ msgid "Workspace Domain"
|
||||
msgstr "Dominio del espacio de trabajo"
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr ""
|
||||
|
||||
@@ -311,6 +311,11 @@ msgstr "{morphRelationCount} objektia"
|
||||
msgid "{num, selectordinal, one {{num}st} two {{num}nd} few {{num}rd} other {{num}th}}"
|
||||
msgstr "{num, selectordinal, one {{num}.} other {{num}.}}"
|
||||
|
||||
#. js-lingui-id: fTSz8d
|
||||
#: src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownActorSelect.tsx
|
||||
msgid "{numberOfSelectedItems} workspace members"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 7kYa/u
|
||||
#: src/modules/object-record/record-show/hooks/useRecordShowPagePagination.ts
|
||||
msgid "{objectLabelPlural} ({totalCount})"
|
||||
@@ -770,6 +775,11 @@ msgstr "Lisää \"{trimmedName}\" valintoihin"
|
||||
msgid "Add a {objectLabelSingular}"
|
||||
msgstr "Lisää {objectLabelSingular}"
|
||||
|
||||
#. js-lingui-id: 7W8nJr
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
|
||||
msgid "Add a Group"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: CZDwqQ
|
||||
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
|
||||
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
|
||||
@@ -786,11 +796,6 @@ msgstr "Lisää solmu"
|
||||
msgid "Add a record"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: r8W+9y
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationSectionEditor.tsx
|
||||
msgid "Add a Section"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: eMc2xs
|
||||
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
|
||||
msgid "Add a step"
|
||||
@@ -1512,6 +1517,9 @@ msgstr "Kuvaa ladattaessa tapahtui virhe."
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
@@ -1974,7 +1982,6 @@ msgstr "Liitteet"
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr ""
|
||||
@@ -2251,9 +2258,9 @@ msgstr "Ruskea"
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2615,7 +2622,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "Valitse kentät, jotka identifioivat tietueesi"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Valitse päivämäärän näyttämiseen käytetty muoto"
|
||||
|
||||
@@ -3244,11 +3251,6 @@ msgstr "Ydin"
|
||||
msgid "Core Objects"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: cfa2VJ
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Core Schema"
|
||||
msgstr "Ydinskeema"
|
||||
|
||||
#. js-lingui-id: I99Miw
|
||||
#: src/modules/billing/components/SettingsBillingCreditsSection.tsx
|
||||
#: src/modules/ai/components/internal/AIChatContextUsageButton.tsx
|
||||
@@ -5041,10 +5043,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Syötä suodatin"
|
||||
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
msgstr "Kirjoita <0>Unicode</0>-muodossa"
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -6284,7 +6286,9 @@ msgstr "Mittarikaavio"
|
||||
#: src/pages/settings/SettingsWorkspace.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetEditorGroupsData.ts
|
||||
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
|
||||
msgid "General"
|
||||
msgstr "Yleiset"
|
||||
@@ -7008,11 +7012,6 @@ msgstr "Ohjeet tekoälylle"
|
||||
msgid "Integrations - Settings"
|
||||
msgstr "Integraatiot - Asetukset"
|
||||
|
||||
#. js-lingui-id: ntgzzG
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Interact with your workspace data"
|
||||
msgstr "Vuorovaikuta työtilasi tietojen kanssa"
|
||||
|
||||
#. js-lingui-id: jyjroS
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Interval switching has been cancelled."
|
||||
@@ -8126,11 +8125,6 @@ msgstr "Metatiedot"
|
||||
msgid "Metadata file generation failed"
|
||||
msgstr "Metatiedostotiedoston luonti epäonnistui"
|
||||
|
||||
#. js-lingui-id: 0BF9eC
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Metadata Schema"
|
||||
msgstr "Metatietoskeema"
|
||||
|
||||
#. js-lingui-id: onCJJ6
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Metered tier switching has been cancelled."
|
||||
@@ -8523,6 +8517,11 @@ msgstr "Uusi kenttä"
|
||||
msgid "New folder"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 93KA8w
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
|
||||
msgid "New Group"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: o8MyXb
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
|
||||
msgid "New key"
|
||||
@@ -9569,7 +9568,7 @@ msgstr ""
|
||||
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuNewSidebarItemMainMenu.tsx
|
||||
msgid "Other"
|
||||
msgstr "Muu"
|
||||
@@ -14212,6 +14211,7 @@ msgid "Workspace Domain"
|
||||
msgstr "Työtilan verkkotunnus"
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr ""
|
||||
|
||||
@@ -311,6 +311,11 @@ msgstr "{morphRelationCount} objets"
|
||||
msgid "{num, selectordinal, one {{num}st} two {{num}nd} few {{num}rd} other {{num}th}}"
|
||||
msgstr "{num, selectordinal, one {{num}er} other {{num}e}}"
|
||||
|
||||
#. js-lingui-id: fTSz8d
|
||||
#: src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownActorSelect.tsx
|
||||
msgid "{numberOfSelectedItems} workspace members"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 7kYa/u
|
||||
#: src/modules/object-record/record-show/hooks/useRecordShowPagePagination.ts
|
||||
msgid "{objectLabelPlural} ({totalCount})"
|
||||
@@ -770,6 +775,11 @@ msgstr "Ajouter \"{trimmedName}\" aux options"
|
||||
msgid "Add a {objectLabelSingular}"
|
||||
msgstr "Ajouter un {objectLabelSingular}"
|
||||
|
||||
#. js-lingui-id: 7W8nJr
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
|
||||
msgid "Add a Group"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: CZDwqQ
|
||||
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
|
||||
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
|
||||
@@ -786,11 +796,6 @@ msgstr "Ajouter un nœud"
|
||||
msgid "Add a record"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: r8W+9y
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationSectionEditor.tsx
|
||||
msgid "Add a Section"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: eMc2xs
|
||||
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
|
||||
msgid "Add a step"
|
||||
@@ -1512,6 +1517,9 @@ msgstr "Une erreur s'est produite lors du téléversement de l'image."
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
@@ -1974,7 +1982,6 @@ msgstr "Pièces jointes"
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr ""
|
||||
@@ -2251,9 +2258,9 @@ msgstr "Marron"
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2615,7 +2622,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "Choisissez les champs qui identifieront vos enregistrements"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Choisir le format utilisé pour afficher la valeur de la date"
|
||||
|
||||
@@ -3244,11 +3251,6 @@ msgstr "Noyau"
|
||||
msgid "Core Objects"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: cfa2VJ
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Core Schema"
|
||||
msgstr "Schéma principal"
|
||||
|
||||
#. js-lingui-id: I99Miw
|
||||
#: src/modules/billing/components/SettingsBillingCreditsSection.tsx
|
||||
#: src/modules/ai/components/internal/AIChatContextUsageButton.tsx
|
||||
@@ -5041,10 +5043,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Saisissez un filtre"
|
||||
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
msgstr "Entrer au format <0>Unicode</0>"
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -6284,7 +6286,9 @@ msgstr ""
|
||||
#: src/pages/settings/SettingsWorkspace.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetEditorGroupsData.ts
|
||||
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
|
||||
msgid "General"
|
||||
msgstr "Général"
|
||||
@@ -7008,11 +7012,6 @@ msgstr "Instructions pour l'IA"
|
||||
msgid "Integrations - Settings"
|
||||
msgstr "Intégrations - Paramètres"
|
||||
|
||||
#. js-lingui-id: ntgzzG
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Interact with your workspace data"
|
||||
msgstr "Interagissez avec les données de votre espace de travail"
|
||||
|
||||
#. js-lingui-id: jyjroS
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Interval switching has been cancelled."
|
||||
@@ -8126,11 +8125,6 @@ msgstr "Métadonnées"
|
||||
msgid "Metadata file generation failed"
|
||||
msgstr "Échec de la génération du fichier des métadonnées"
|
||||
|
||||
#. js-lingui-id: 0BF9eC
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Metadata Schema"
|
||||
msgstr "Schéma des métadonnées"
|
||||
|
||||
#. js-lingui-id: onCJJ6
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Metered tier switching has been cancelled."
|
||||
@@ -8523,6 +8517,11 @@ msgstr "Nouveau champ"
|
||||
msgid "New folder"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 93KA8w
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
|
||||
msgid "New Group"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: o8MyXb
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
|
||||
msgid "New key"
|
||||
@@ -9569,7 +9568,7 @@ msgstr ""
|
||||
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuNewSidebarItemMainMenu.tsx
|
||||
msgid "Other"
|
||||
msgstr "Autres"
|
||||
@@ -14214,6 +14213,7 @@ msgid "Workspace Domain"
|
||||
msgstr "Domaine de l'espace de travail"
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr ""
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -311,6 +311,11 @@ msgstr "{morphRelationCount} אובייקטים"
|
||||
msgid "{num, selectordinal, one {{num}st} two {{num}nd} few {{num}rd} other {{num}th}}"
|
||||
msgstr "{num, selectordinal, one {{num} ראשון} two {{num} שני} many {{num} ־ות} other {{num} ־ות}}"
|
||||
|
||||
#. js-lingui-id: fTSz8d
|
||||
#: src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownActorSelect.tsx
|
||||
msgid "{numberOfSelectedItems} workspace members"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 7kYa/u
|
||||
#: src/modules/object-record/record-show/hooks/useRecordShowPagePagination.ts
|
||||
msgid "{objectLabelPlural} ({totalCount})"
|
||||
@@ -770,6 +775,11 @@ msgstr "הוסף \"{trimmedName}\" לאפשרויות"
|
||||
msgid "Add a {objectLabelSingular}"
|
||||
msgstr "הוסף {objectLabelSingular}"
|
||||
|
||||
#. js-lingui-id: 7W8nJr
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
|
||||
msgid "Add a Group"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: CZDwqQ
|
||||
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
|
||||
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
|
||||
@@ -786,11 +796,6 @@ msgstr "הוסף צומת"
|
||||
msgid "Add a record"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: r8W+9y
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationSectionEditor.tsx
|
||||
msgid "Add a Section"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: eMc2xs
|
||||
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
|
||||
msgid "Add a step"
|
||||
@@ -1512,6 +1517,9 @@ msgstr "אירעה שגיאה בעת העלאת התמונה."
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
@@ -1974,7 +1982,6 @@ msgstr "קבצים מצורפים"
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr ""
|
||||
@@ -2251,9 +2258,9 @@ msgstr "חום"
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2615,7 +2622,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "בחרו את השדות שיזהו את הרשומות שלכם"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "בחר את הפורמט להצגת תאריך"
|
||||
|
||||
@@ -3244,11 +3251,6 @@ msgstr "ליבה"
|
||||
msgid "Core Objects"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: cfa2VJ
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Core Schema"
|
||||
msgstr "סכימת ליבה"
|
||||
|
||||
#. js-lingui-id: I99Miw
|
||||
#: src/modules/billing/components/SettingsBillingCreditsSection.tsx
|
||||
#: src/modules/ai/components/internal/AIChatContextUsageButton.tsx
|
||||
@@ -5041,10 +5043,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "הזן מסנן"
|
||||
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
msgstr "הכנס בפורמט <0>Unicode</0>"
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -6284,7 +6286,9 @@ msgstr "תרשים מד"
|
||||
#: src/pages/settings/SettingsWorkspace.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetEditorGroupsData.ts
|
||||
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
|
||||
msgid "General"
|
||||
msgstr "כללי"
|
||||
@@ -7008,11 +7012,6 @@ msgstr "הוראות לבינה מלאכותית"
|
||||
msgid "Integrations - Settings"
|
||||
msgstr "אינטגרציות - הגדרות"
|
||||
|
||||
#. js-lingui-id: ntgzzG
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Interact with your workspace data"
|
||||
msgstr "אינטראקציה עם נתוני סביבת העבודה שלך"
|
||||
|
||||
#. js-lingui-id: jyjroS
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Interval switching has been cancelled."
|
||||
@@ -8126,11 +8125,6 @@ msgstr "מטא-נתונים"
|
||||
msgid "Metadata file generation failed"
|
||||
msgstr "יצירת קובץ מטא נתונים נכשלה"
|
||||
|
||||
#. js-lingui-id: 0BF9eC
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Metadata Schema"
|
||||
msgstr "סכימת מטא-נתונים"
|
||||
|
||||
#. js-lingui-id: onCJJ6
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Metered tier switching has been cancelled."
|
||||
@@ -8523,6 +8517,11 @@ msgstr "שדה חדש"
|
||||
msgid "New folder"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 93KA8w
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
|
||||
msgid "New Group"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: o8MyXb
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
|
||||
msgid "New key"
|
||||
@@ -9569,7 +9568,7 @@ msgstr ""
|
||||
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuNewSidebarItemMainMenu.tsx
|
||||
msgid "Other"
|
||||
msgstr "אחר"
|
||||
@@ -14212,6 +14211,7 @@ msgid "Workspace Domain"
|
||||
msgstr "תחום סביבת עבודה"
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr ""
|
||||
|
||||
@@ -311,6 +311,11 @@ msgstr "{morphRelationCount} objektum"
|
||||
msgid "{num, selectordinal, one {{num}st} two {{num}nd} few {{num}rd} other {{num}th}}"
|
||||
msgstr "{num, selectordinal, one {{num}-ik} other {{num}-ik}}"
|
||||
|
||||
#. js-lingui-id: fTSz8d
|
||||
#: src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownActorSelect.tsx
|
||||
msgid "{numberOfSelectedItems} workspace members"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 7kYa/u
|
||||
#: src/modules/object-record/record-show/hooks/useRecordShowPagePagination.ts
|
||||
msgid "{objectLabelPlural} ({totalCount})"
|
||||
@@ -770,6 +775,11 @@ msgstr "\"{trimmedName}\" hozzáadása az opciókhoz"
|
||||
msgid "Add a {objectLabelSingular}"
|
||||
msgstr "Új {objectLabelSingular} hozzáadása"
|
||||
|
||||
#. js-lingui-id: 7W8nJr
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
|
||||
msgid "Add a Group"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: CZDwqQ
|
||||
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
|
||||
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
|
||||
@@ -786,11 +796,6 @@ msgstr "Csomópont hozzáadása"
|
||||
msgid "Add a record"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: r8W+9y
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationSectionEditor.tsx
|
||||
msgid "Add a Section"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: eMc2xs
|
||||
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
|
||||
msgid "Add a step"
|
||||
@@ -1512,6 +1517,9 @@ msgstr "Hiba történt a kép feltöltése közben."
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
@@ -1974,7 +1982,6 @@ msgstr "Csatolmányok"
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr ""
|
||||
@@ -2251,9 +2258,9 @@ msgstr "Barna"
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2615,7 +2622,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "Válassza ki azon mezőket, amelyek azonosítják a bejegyzéseit"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Válassza ki a dátumérték megjelenítésére használt formátumot"
|
||||
|
||||
@@ -3244,11 +3251,6 @@ msgstr "Mag"
|
||||
msgid "Core Objects"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: cfa2VJ
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Core Schema"
|
||||
msgstr "Alap séma"
|
||||
|
||||
#. js-lingui-id: I99Miw
|
||||
#: src/modules/billing/components/SettingsBillingCreditsSection.tsx
|
||||
#: src/modules/ai/components/internal/AIChatContextUsageButton.tsx
|
||||
@@ -5041,10 +5043,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Adja meg a szűrőt"
|
||||
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
msgstr "Adja meg <0>Unicode</0> formátumban"
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -6284,7 +6286,9 @@ msgstr "Mérőműszer diagram"
|
||||
#: src/pages/settings/SettingsWorkspace.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetEditorGroupsData.ts
|
||||
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
|
||||
msgid "General"
|
||||
msgstr "Általános"
|
||||
@@ -7008,11 +7012,6 @@ msgstr "Utasítások az AI-nak"
|
||||
msgid "Integrations - Settings"
|
||||
msgstr "Integrációk - Beállítások"
|
||||
|
||||
#. js-lingui-id: ntgzzG
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Interact with your workspace data"
|
||||
msgstr "Lépjen kapcsolatba a munkaterület adatával"
|
||||
|
||||
#. js-lingui-id: jyjroS
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Interval switching has been cancelled."
|
||||
@@ -8126,11 +8125,6 @@ msgstr "Metaadatok"
|
||||
msgid "Metadata file generation failed"
|
||||
msgstr "Metadat fájl generálása sikertelen"
|
||||
|
||||
#. js-lingui-id: 0BF9eC
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Metadata Schema"
|
||||
msgstr "Metaadatséma"
|
||||
|
||||
#. js-lingui-id: onCJJ6
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Metered tier switching has been cancelled."
|
||||
@@ -8523,6 +8517,11 @@ msgstr "Új mező"
|
||||
msgid "New folder"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 93KA8w
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
|
||||
msgid "New Group"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: o8MyXb
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
|
||||
msgid "New key"
|
||||
@@ -9569,7 +9568,7 @@ msgstr ""
|
||||
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuNewSidebarItemMainMenu.tsx
|
||||
msgid "Other"
|
||||
msgstr "Egyéb"
|
||||
@@ -14212,6 +14211,7 @@ msgid "Workspace Domain"
|
||||
msgstr "Munkaterületi Domain"
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr ""
|
||||
|
||||
@@ -311,6 +311,11 @@ msgstr "{morphRelationCount} oggetti"
|
||||
msgid "{num, selectordinal, one {{num}st} two {{num}nd} few {{num}rd} other {{num}th}}"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: fTSz8d
|
||||
#: src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownActorSelect.tsx
|
||||
msgid "{numberOfSelectedItems} workspace members"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 7kYa/u
|
||||
#: src/modules/object-record/record-show/hooks/useRecordShowPagePagination.ts
|
||||
msgid "{objectLabelPlural} ({totalCount})"
|
||||
@@ -770,6 +775,11 @@ msgstr "Aggiungi \"{trimmedName}\" alle opzioni"
|
||||
msgid "Add a {objectLabelSingular}"
|
||||
msgstr "Aggiungi {objectLabelSingular}"
|
||||
|
||||
#. js-lingui-id: 7W8nJr
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
|
||||
msgid "Add a Group"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: CZDwqQ
|
||||
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
|
||||
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
|
||||
@@ -786,11 +796,6 @@ msgstr "Aggiungi un nodo"
|
||||
msgid "Add a record"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: r8W+9y
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationSectionEditor.tsx
|
||||
msgid "Add a Section"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: eMc2xs
|
||||
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
|
||||
msgid "Add a step"
|
||||
@@ -1512,6 +1517,9 @@ msgstr "Si è verificato un errore durante il caricamento dell'immagine."
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
@@ -1974,7 +1982,6 @@ msgstr "Allegati"
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr ""
|
||||
@@ -2251,9 +2258,9 @@ msgstr "Marrone"
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2615,7 +2622,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "Scegli i campi che identificheranno i tuoi record"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Scegli il formato utilizzato per visualizzare il valore della data"
|
||||
|
||||
@@ -3244,11 +3251,6 @@ msgstr "Core"
|
||||
msgid "Core Objects"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: cfa2VJ
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Core Schema"
|
||||
msgstr "Schema principale"
|
||||
|
||||
#. js-lingui-id: I99Miw
|
||||
#: src/modules/billing/components/SettingsBillingCreditsSection.tsx
|
||||
#: src/modules/ai/components/internal/AIChatContextUsageButton.tsx
|
||||
@@ -5041,10 +5043,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Inserisci il filtro"
|
||||
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
msgstr "Inserisci nel formato <0>Unicode</0>"
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -6284,7 +6286,9 @@ msgstr "Grafico a Indicatore"
|
||||
#: src/pages/settings/SettingsWorkspace.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetEditorGroupsData.ts
|
||||
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
|
||||
msgid "General"
|
||||
msgstr "Generale"
|
||||
@@ -7008,11 +7012,6 @@ msgstr "Istruzioni per l'AI"
|
||||
msgid "Integrations - Settings"
|
||||
msgstr "Integrazioni - Impostazioni"
|
||||
|
||||
#. js-lingui-id: ntgzzG
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Interact with your workspace data"
|
||||
msgstr "Interagisci con i dati del tuo spazio di lavoro"
|
||||
|
||||
#. js-lingui-id: jyjroS
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Interval switching has been cancelled."
|
||||
@@ -8126,11 +8125,6 @@ msgstr "Metadati"
|
||||
msgid "Metadata file generation failed"
|
||||
msgstr "Generazione del file di metadata fallita"
|
||||
|
||||
#. js-lingui-id: 0BF9eC
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Metadata Schema"
|
||||
msgstr "Schema dei metadati"
|
||||
|
||||
#. js-lingui-id: onCJJ6
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Metered tier switching has been cancelled."
|
||||
@@ -8523,6 +8517,11 @@ msgstr "Nuovo Campo"
|
||||
msgid "New folder"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 93KA8w
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
|
||||
msgid "New Group"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: o8MyXb
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
|
||||
msgid "New key"
|
||||
@@ -9569,7 +9568,7 @@ msgstr ""
|
||||
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuNewSidebarItemMainMenu.tsx
|
||||
msgid "Other"
|
||||
msgstr "Altro"
|
||||
@@ -14214,6 +14213,7 @@ msgid "Workspace Domain"
|
||||
msgstr "Dominio del workspace"
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr ""
|
||||
|
||||
@@ -311,6 +311,11 @@ msgstr "{morphRelationCount} 個のオブジェクト"
|
||||
msgid "{num, selectordinal, one {{num}st} two {{num}nd} few {{num}rd} other {{num}th}}"
|
||||
msgstr "{num, selectordinal, other {{num}番目}}"
|
||||
|
||||
#. js-lingui-id: fTSz8d
|
||||
#: src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownActorSelect.tsx
|
||||
msgid "{numberOfSelectedItems} workspace members"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 7kYa/u
|
||||
#: src/modules/object-record/record-show/hooks/useRecordShowPagePagination.ts
|
||||
msgid "{objectLabelPlural} ({totalCount})"
|
||||
@@ -770,6 +775,11 @@ msgstr "「{trimmedName}」をオプションに追加"
|
||||
msgid "Add a {objectLabelSingular}"
|
||||
msgstr "{objectLabelSingular} を追加"
|
||||
|
||||
#. js-lingui-id: 7W8nJr
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
|
||||
msgid "Add a Group"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: CZDwqQ
|
||||
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
|
||||
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
|
||||
@@ -786,11 +796,6 @@ msgstr "ノードを追加する"
|
||||
msgid "Add a record"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: r8W+9y
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationSectionEditor.tsx
|
||||
msgid "Add a Section"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: eMc2xs
|
||||
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
|
||||
msgid "Add a step"
|
||||
@@ -1512,6 +1517,9 @@ msgstr "画像のアップロード中にエラーが発生しました。"
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
@@ -1974,7 +1982,6 @@ msgstr "添付ファイル"
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr ""
|
||||
@@ -2251,9 +2258,9 @@ msgstr "茶色"
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2615,7 +2622,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "レコードを識別するフィールドを選択してください"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "日付値を表示するために使用される形式を選択"
|
||||
|
||||
@@ -3244,11 +3251,6 @@ msgstr "コア"
|
||||
msgid "Core Objects"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: cfa2VJ
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Core Schema"
|
||||
msgstr "コアスキーマ"
|
||||
|
||||
#. js-lingui-id: I99Miw
|
||||
#: src/modules/billing/components/SettingsBillingCreditsSection.tsx
|
||||
#: src/modules/ai/components/internal/AIChatContextUsageButton.tsx
|
||||
@@ -5041,10 +5043,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "フィルターを入力"
|
||||
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
msgstr "<0>Unicode</0>形式で入力"
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -6284,7 +6286,9 @@ msgstr "ゲージチャート"
|
||||
#: src/pages/settings/SettingsWorkspace.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetEditorGroupsData.ts
|
||||
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
|
||||
msgid "General"
|
||||
msgstr "一般"
|
||||
@@ -7008,11 +7012,6 @@ msgstr "AIのための指示"
|
||||
msgid "Integrations - Settings"
|
||||
msgstr "統合 - 設定"
|
||||
|
||||
#. js-lingui-id: ntgzzG
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Interact with your workspace data"
|
||||
msgstr "ワークスペースデータとのインタラクション"
|
||||
|
||||
#. js-lingui-id: jyjroS
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Interval switching has been cancelled."
|
||||
@@ -8126,11 +8125,6 @@ msgstr "メタデータ"
|
||||
msgid "Metadata file generation failed"
|
||||
msgstr "メタデータファイルの生成に失敗しました"
|
||||
|
||||
#. js-lingui-id: 0BF9eC
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Metadata Schema"
|
||||
msgstr "メタデータスキーマ"
|
||||
|
||||
#. js-lingui-id: onCJJ6
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Metered tier switching has been cancelled."
|
||||
@@ -8523,6 +8517,11 @@ msgstr "新規フィールド"
|
||||
msgid "New folder"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 93KA8w
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
|
||||
msgid "New Group"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: o8MyXb
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
|
||||
msgid "New key"
|
||||
@@ -9569,7 +9568,7 @@ msgstr ""
|
||||
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuNewSidebarItemMainMenu.tsx
|
||||
msgid "Other"
|
||||
msgstr "その他"
|
||||
@@ -14212,6 +14211,7 @@ msgid "Workspace Domain"
|
||||
msgstr "ワークスペースドメイン"
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr ""
|
||||
|
||||
@@ -311,6 +311,11 @@ msgstr "객체 {morphRelationCount}개"
|
||||
msgid "{num, selectordinal, one {{num}st} two {{num}nd} few {{num}rd} other {{num}th}}"
|
||||
msgstr "{num, selectordinal, other {{num}번째}}"
|
||||
|
||||
#. js-lingui-id: fTSz8d
|
||||
#: src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownActorSelect.tsx
|
||||
msgid "{numberOfSelectedItems} workspace members"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 7kYa/u
|
||||
#: src/modules/object-record/record-show/hooks/useRecordShowPagePagination.ts
|
||||
msgid "{objectLabelPlural} ({totalCount})"
|
||||
@@ -770,6 +775,11 @@ msgstr "\"{trimmedName}\"을 옵션에 추가하기"
|
||||
msgid "Add a {objectLabelSingular}"
|
||||
msgstr "{objectLabelSingular} 추가"
|
||||
|
||||
#. js-lingui-id: 7W8nJr
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
|
||||
msgid "Add a Group"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: CZDwqQ
|
||||
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
|
||||
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
|
||||
@@ -786,11 +796,6 @@ msgstr "노드 추가"
|
||||
msgid "Add a record"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: r8W+9y
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationSectionEditor.tsx
|
||||
msgid "Add a Section"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: eMc2xs
|
||||
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
|
||||
msgid "Add a step"
|
||||
@@ -1512,6 +1517,9 @@ msgstr "사진을 업로드하는 중 오류가 발생했습니다."
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
@@ -1974,7 +1982,6 @@ msgstr "첨부 파일"
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr ""
|
||||
@@ -2251,9 +2258,9 @@ msgstr "갈색"
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2615,7 +2622,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "레코드를 식별할 필드를 선택하세요"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "날짜 형식을 선택하세요"
|
||||
|
||||
@@ -3244,11 +3251,6 @@ msgstr "코어"
|
||||
msgid "Core Objects"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: cfa2VJ
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Core Schema"
|
||||
msgstr "코어 스키마"
|
||||
|
||||
#. js-lingui-id: I99Miw
|
||||
#: src/modules/billing/components/SettingsBillingCreditsSection.tsx
|
||||
#: src/modules/ai/components/internal/AIChatContextUsageButton.tsx
|
||||
@@ -5041,10 +5043,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "필터를 입력하세요"
|
||||
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
msgstr "<0>유니코드</0> 형식으로 입력"
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -6284,7 +6286,9 @@ msgstr "게이지 차트"
|
||||
#: src/pages/settings/SettingsWorkspace.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetEditorGroupsData.ts
|
||||
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
|
||||
msgid "General"
|
||||
msgstr "일반"
|
||||
@@ -7008,11 +7012,6 @@ msgstr "AI 사용 지침"
|
||||
msgid "Integrations - Settings"
|
||||
msgstr "통합 - 설정"
|
||||
|
||||
#. js-lingui-id: ntgzzG
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Interact with your workspace data"
|
||||
msgstr "작업 공간 데이터와 상호 작용"
|
||||
|
||||
#. js-lingui-id: jyjroS
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Interval switching has been cancelled."
|
||||
@@ -8126,11 +8125,6 @@ msgstr "메타데이터"
|
||||
msgid "Metadata file generation failed"
|
||||
msgstr "메타데이터 파일 생성 실패"
|
||||
|
||||
#. js-lingui-id: 0BF9eC
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Metadata Schema"
|
||||
msgstr "메타데이터 스키마"
|
||||
|
||||
#. js-lingui-id: onCJJ6
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Metered tier switching has been cancelled."
|
||||
@@ -8523,6 +8517,11 @@ msgstr "새 필드"
|
||||
msgid "New folder"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 93KA8w
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
|
||||
msgid "New Group"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: o8MyXb
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
|
||||
msgid "New key"
|
||||
@@ -9569,7 +9568,7 @@ msgstr ""
|
||||
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuNewSidebarItemMainMenu.tsx
|
||||
msgid "Other"
|
||||
msgstr "기타"
|
||||
@@ -14212,6 +14211,7 @@ msgid "Workspace Domain"
|
||||
msgstr "워크스페이스 도메인"
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr ""
|
||||
|
||||
@@ -311,6 +311,11 @@ msgstr "{morphRelationCount} objecten"
|
||||
msgid "{num, selectordinal, one {{num}st} two {{num}nd} few {{num}rd} other {{num}th}}"
|
||||
msgstr "{num, selectordinal, one {{num}e} other {{num}e}}"
|
||||
|
||||
#. js-lingui-id: fTSz8d
|
||||
#: src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownActorSelect.tsx
|
||||
msgid "{numberOfSelectedItems} workspace members"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 7kYa/u
|
||||
#: src/modules/object-record/record-show/hooks/useRecordShowPagePagination.ts
|
||||
msgid "{objectLabelPlural} ({totalCount})"
|
||||
@@ -770,6 +775,11 @@ msgstr "Voeg \"{trimmedName}\" toe aan opties"
|
||||
msgid "Add a {objectLabelSingular}"
|
||||
msgstr "Voeg een {objectLabelSingular} toe"
|
||||
|
||||
#. js-lingui-id: 7W8nJr
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
|
||||
msgid "Add a Group"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: CZDwqQ
|
||||
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
|
||||
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
|
||||
@@ -786,11 +796,6 @@ msgstr "Voeg een knooppunt toe"
|
||||
msgid "Add a record"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: r8W+9y
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationSectionEditor.tsx
|
||||
msgid "Add a Section"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: eMc2xs
|
||||
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
|
||||
msgid "Add a step"
|
||||
@@ -1512,6 +1517,9 @@ msgstr "Er is een fout opgetreden bij het uploaden van de afbeelding."
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
@@ -1974,7 +1982,6 @@ msgstr "Bijlagen"
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr ""
|
||||
@@ -2251,9 +2258,9 @@ msgstr "Bruin"
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2615,7 +2622,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "Kies de velden die uw records zullen identificeren"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Kies het formaat dat wordt gebruikt om de datumnotatie weer te geven"
|
||||
|
||||
@@ -3244,11 +3251,6 @@ msgstr "Kern"
|
||||
msgid "Core Objects"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: cfa2VJ
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Core Schema"
|
||||
msgstr "Kernschema"
|
||||
|
||||
#. js-lingui-id: I99Miw
|
||||
#: src/modules/billing/components/SettingsBillingCreditsSection.tsx
|
||||
#: src/modules/ai/components/internal/AIChatContextUsageButton.tsx
|
||||
@@ -5041,10 +5043,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Voer een filter in"
|
||||
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
msgstr "Voer in <0>Unicode</0>-formaat in"
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -6284,7 +6286,9 @@ msgstr ""
|
||||
#: src/pages/settings/SettingsWorkspace.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetEditorGroupsData.ts
|
||||
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
|
||||
msgid "General"
|
||||
msgstr "Algemeen"
|
||||
@@ -7008,11 +7012,6 @@ msgstr "Instructies voor AI"
|
||||
msgid "Integrations - Settings"
|
||||
msgstr "Integraties - Instellingen"
|
||||
|
||||
#. js-lingui-id: ntgzzG
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Interact with your workspace data"
|
||||
msgstr "Interageer met uw werkruimtegegevens"
|
||||
|
||||
#. js-lingui-id: jyjroS
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Interval switching has been cancelled."
|
||||
@@ -8126,11 +8125,6 @@ msgstr "Metadata"
|
||||
msgid "Metadata file generation failed"
|
||||
msgstr "Metadatabestandsgeneratie mislukt"
|
||||
|
||||
#. js-lingui-id: 0BF9eC
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Metadata Schema"
|
||||
msgstr "Metadataschema"
|
||||
|
||||
#. js-lingui-id: onCJJ6
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Metered tier switching has been cancelled."
|
||||
@@ -8523,6 +8517,11 @@ msgstr "Nieuw veld"
|
||||
msgid "New folder"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 93KA8w
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
|
||||
msgid "New Group"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: o8MyXb
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
|
||||
msgid "New key"
|
||||
@@ -9569,7 +9568,7 @@ msgstr ""
|
||||
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuNewSidebarItemMainMenu.tsx
|
||||
msgid "Other"
|
||||
msgstr "Overige"
|
||||
@@ -14214,6 +14213,7 @@ msgid "Workspace Domain"
|
||||
msgstr "Werkruimte Domein"
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr ""
|
||||
|
||||
@@ -311,6 +311,11 @@ msgstr "{morphRelationCount} objekter"
|
||||
msgid "{num, selectordinal, one {{num}st} two {{num}nd} few {{num}rd} other {{num}th}}"
|
||||
msgstr "{num, selectordinal, one {{num}.} other {{num}.}}"
|
||||
|
||||
#. js-lingui-id: fTSz8d
|
||||
#: src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownActorSelect.tsx
|
||||
msgid "{numberOfSelectedItems} workspace members"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 7kYa/u
|
||||
#: src/modules/object-record/record-show/hooks/useRecordShowPagePagination.ts
|
||||
msgid "{objectLabelPlural} ({totalCount})"
|
||||
@@ -770,6 +775,11 @@ msgstr "Legg til \"{trimmedName}\" i valg"
|
||||
msgid "Add a {objectLabelSingular}"
|
||||
msgstr "Legg til {objectLabelSingular}"
|
||||
|
||||
#. js-lingui-id: 7W8nJr
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
|
||||
msgid "Add a Group"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: CZDwqQ
|
||||
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
|
||||
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
|
||||
@@ -786,11 +796,6 @@ msgstr "Legg til node"
|
||||
msgid "Add a record"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: r8W+9y
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationSectionEditor.tsx
|
||||
msgid "Add a Section"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: eMc2xs
|
||||
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
|
||||
msgid "Add a step"
|
||||
@@ -1512,6 +1517,9 @@ msgstr "Det oppstod en feil under opplasting av bildet."
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
@@ -1974,7 +1982,6 @@ msgstr "Vedlegg"
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr ""
|
||||
@@ -2251,9 +2258,9 @@ msgstr "Brun"
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2615,7 +2622,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "Velg feltene som vil identifisere postene dine"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Velg formatet som brukes til å vise dato"
|
||||
|
||||
@@ -3244,11 +3251,6 @@ msgstr "Kjerne"
|
||||
msgid "Core Objects"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: cfa2VJ
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Core Schema"
|
||||
msgstr "Kjernesjema"
|
||||
|
||||
#. js-lingui-id: I99Miw
|
||||
#: src/modules/billing/components/SettingsBillingCreditsSection.tsx
|
||||
#: src/modules/ai/components/internal/AIChatContextUsageButton.tsx
|
||||
@@ -5041,10 +5043,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Skriv inn filter"
|
||||
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
msgstr "Skriv inn i <0>Unicode</0>-format"
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -6284,7 +6286,9 @@ msgstr "Målediagram"
|
||||
#: src/pages/settings/SettingsWorkspace.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetEditorGroupsData.ts
|
||||
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
|
||||
msgid "General"
|
||||
msgstr "Generelt"
|
||||
@@ -7008,11 +7012,6 @@ msgstr "Instruksjoner for AI"
|
||||
msgid "Integrations - Settings"
|
||||
msgstr "Integrasjoner - Innstillinger"
|
||||
|
||||
#. js-lingui-id: ntgzzG
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Interact with your workspace data"
|
||||
msgstr "Samhandle med dataene i arbeidsområdet ditt"
|
||||
|
||||
#. js-lingui-id: jyjroS
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Interval switching has been cancelled."
|
||||
@@ -8126,11 +8125,6 @@ msgstr "Metadata"
|
||||
msgid "Metadata file generation failed"
|
||||
msgstr "Generering av metadatafil mislyktes"
|
||||
|
||||
#. js-lingui-id: 0BF9eC
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Metadata Schema"
|
||||
msgstr "Metadataskjema"
|
||||
|
||||
#. js-lingui-id: onCJJ6
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Metered tier switching has been cancelled."
|
||||
@@ -8523,6 +8517,11 @@ msgstr "Nytt felt"
|
||||
msgid "New folder"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 93KA8w
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
|
||||
msgid "New Group"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: o8MyXb
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
|
||||
msgid "New key"
|
||||
@@ -9569,7 +9568,7 @@ msgstr ""
|
||||
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuNewSidebarItemMainMenu.tsx
|
||||
msgid "Other"
|
||||
msgstr "Annen"
|
||||
@@ -14212,6 +14211,7 @@ msgid "Workspace Domain"
|
||||
msgstr "Arbeidsområdets domene"
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr ""
|
||||
|
||||
@@ -311,6 +311,11 @@ msgstr "{morphRelationCount, plural, one {# obiekt} few {# obiekty} many {# obie
|
||||
msgid "{num, selectordinal, one {{num}st} two {{num}nd} few {{num}rd} other {{num}th}}"
|
||||
msgstr "{num, selectordinal, one {{num}sz} two {{num}gi} few {{num}ci} other {{num}ty}}"
|
||||
|
||||
#. js-lingui-id: fTSz8d
|
||||
#: src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownActorSelect.tsx
|
||||
msgid "{numberOfSelectedItems} workspace members"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 7kYa/u
|
||||
#: src/modules/object-record/record-show/hooks/useRecordShowPagePagination.ts
|
||||
msgid "{objectLabelPlural} ({totalCount})"
|
||||
@@ -770,6 +775,11 @@ msgstr "Dodaj \"{trimmedName}\" do opcji"
|
||||
msgid "Add a {objectLabelSingular}"
|
||||
msgstr "Dodaj {objectLabelSingular}"
|
||||
|
||||
#. js-lingui-id: 7W8nJr
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
|
||||
msgid "Add a Group"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: CZDwqQ
|
||||
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
|
||||
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
|
||||
@@ -786,11 +796,6 @@ msgstr "Dodaj węzeł"
|
||||
msgid "Add a record"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: r8W+9y
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationSectionEditor.tsx
|
||||
msgid "Add a Section"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: eMc2xs
|
||||
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
|
||||
msgid "Add a step"
|
||||
@@ -1512,6 +1517,9 @@ msgstr "Wystąpił błąd podczas przesyłania zdjęcia."
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
@@ -1974,7 +1982,6 @@ msgstr "Załączniki"
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr ""
|
||||
@@ -2251,9 +2258,9 @@ msgstr "Brązowy"
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2615,7 +2622,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "Wybierz pola, które będą identyfikować Twoje rekordy"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Wybierz format używany do wyświetlania daty"
|
||||
|
||||
@@ -3244,11 +3251,6 @@ msgstr "Trzon"
|
||||
msgid "Core Objects"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: cfa2VJ
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Core Schema"
|
||||
msgstr "Główny schemat"
|
||||
|
||||
#. js-lingui-id: I99Miw
|
||||
#: src/modules/billing/components/SettingsBillingCreditsSection.tsx
|
||||
#: src/modules/ai/components/internal/AIChatContextUsageButton.tsx
|
||||
@@ -5041,10 +5043,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Wprowadź filtr"
|
||||
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
msgstr "Wprowadź w formacie <0>Unicode</0>"
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -6284,7 +6286,9 @@ msgstr ""
|
||||
#: src/pages/settings/SettingsWorkspace.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetEditorGroupsData.ts
|
||||
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
|
||||
msgid "General"
|
||||
msgstr "Ogólne"
|
||||
@@ -7008,11 +7012,6 @@ msgstr "Instrukcje dla AI"
|
||||
msgid "Integrations - Settings"
|
||||
msgstr "Integracje - Ustawienia"
|
||||
|
||||
#. js-lingui-id: ntgzzG
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Interact with your workspace data"
|
||||
msgstr "Wejdź w interakcję z danymi w swoim miejscu pracy"
|
||||
|
||||
#. js-lingui-id: jyjroS
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Interval switching has been cancelled."
|
||||
@@ -8126,11 +8125,6 @@ msgstr "Metadane"
|
||||
msgid "Metadata file generation failed"
|
||||
msgstr "Generowanie pliku metadanych nie powiodło się"
|
||||
|
||||
#. js-lingui-id: 0BF9eC
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Metadata Schema"
|
||||
msgstr "Schemat metadanych"
|
||||
|
||||
#. js-lingui-id: onCJJ6
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Metered tier switching has been cancelled."
|
||||
@@ -8523,6 +8517,11 @@ msgstr "Nowe pole"
|
||||
msgid "New folder"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 93KA8w
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
|
||||
msgid "New Group"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: o8MyXb
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
|
||||
msgid "New key"
|
||||
@@ -9569,7 +9568,7 @@ msgstr ""
|
||||
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuNewSidebarItemMainMenu.tsx
|
||||
msgid "Other"
|
||||
msgstr "Inne"
|
||||
@@ -14212,6 +14211,7 @@ msgid "Workspace Domain"
|
||||
msgstr "Domena miejsca pracy"
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr ""
|
||||
|
||||
@@ -306,6 +306,11 @@ msgstr ""
|
||||
msgid "{num, selectordinal, one {{num}st} two {{num}nd} few {{num}rd} other {{num}th}}"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: fTSz8d
|
||||
#: src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownActorSelect.tsx
|
||||
msgid "{numberOfSelectedItems} workspace members"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 7kYa/u
|
||||
#: src/modules/object-record/record-show/hooks/useRecordShowPagePagination.ts
|
||||
msgid "{objectLabelPlural} ({totalCount})"
|
||||
@@ -765,6 +770,11 @@ msgstr ""
|
||||
msgid "Add a {objectLabelSingular}"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 7W8nJr
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
|
||||
msgid "Add a Group"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: CZDwqQ
|
||||
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
|
||||
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
|
||||
@@ -781,11 +791,6 @@ msgstr ""
|
||||
msgid "Add a record"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: r8W+9y
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationSectionEditor.tsx
|
||||
msgid "Add a Section"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: eMc2xs
|
||||
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
|
||||
msgid "Add a step"
|
||||
@@ -1507,6 +1512,9 @@ msgstr ""
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
@@ -1969,7 +1977,6 @@ msgstr ""
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr ""
|
||||
@@ -2246,9 +2253,9 @@ msgstr ""
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2610,7 +2617,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr ""
|
||||
|
||||
@@ -3239,11 +3246,6 @@ msgstr ""
|
||||
msgid "Core Objects"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: cfa2VJ
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Core Schema"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: I99Miw
|
||||
#: src/modules/billing/components/SettingsBillingCreditsSection.tsx
|
||||
#: src/modules/ai/components/internal/AIChatContextUsageButton.tsx
|
||||
@@ -5036,9 +5038,9 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
@@ -6279,7 +6281,9 @@ msgstr ""
|
||||
#: src/pages/settings/SettingsWorkspace.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetEditorGroupsData.ts
|
||||
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
|
||||
msgid "General"
|
||||
msgstr ""
|
||||
@@ -7003,11 +7007,6 @@ msgstr ""
|
||||
msgid "Integrations - Settings"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: ntgzzG
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Interact with your workspace data"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: jyjroS
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Interval switching has been cancelled."
|
||||
@@ -8121,11 +8120,6 @@ msgstr ""
|
||||
msgid "Metadata file generation failed"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 0BF9eC
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Metadata Schema"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: onCJJ6
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Metered tier switching has been cancelled."
|
||||
@@ -8518,6 +8512,11 @@ msgstr ""
|
||||
msgid "New folder"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 93KA8w
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
|
||||
msgid "New Group"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: o8MyXb
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
|
||||
msgid "New key"
|
||||
@@ -9564,7 +9563,7 @@ msgstr ""
|
||||
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuNewSidebarItemMainMenu.tsx
|
||||
msgid "Other"
|
||||
msgstr ""
|
||||
@@ -14205,6 +14204,7 @@ msgid "Workspace Domain"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr ""
|
||||
|
||||
@@ -311,6 +311,11 @@ msgstr "{morphRelationCount} objetos"
|
||||
msgid "{num, selectordinal, one {{num}st} two {{num}nd} few {{num}rd} other {{num}th}}"
|
||||
msgstr "{num, selectordinal, one {{num}º} other {{num}º}}"
|
||||
|
||||
#. js-lingui-id: fTSz8d
|
||||
#: src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownActorSelect.tsx
|
||||
msgid "{numberOfSelectedItems} workspace members"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 7kYa/u
|
||||
#: src/modules/object-record/record-show/hooks/useRecordShowPagePagination.ts
|
||||
msgid "{objectLabelPlural} ({totalCount})"
|
||||
@@ -770,6 +775,11 @@ msgstr "Adicionar \"{trimmedName}\" às opções"
|
||||
msgid "Add a {objectLabelSingular}"
|
||||
msgstr "Adicionar um {objectLabelSingular}"
|
||||
|
||||
#. js-lingui-id: 7W8nJr
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
|
||||
msgid "Add a Group"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: CZDwqQ
|
||||
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
|
||||
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
|
||||
@@ -786,11 +796,6 @@ msgstr "Adicionar nó"
|
||||
msgid "Add a record"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: r8W+9y
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationSectionEditor.tsx
|
||||
msgid "Add a Section"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: eMc2xs
|
||||
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
|
||||
msgid "Add a step"
|
||||
@@ -1512,6 +1517,9 @@ msgstr "Ocorreu um erro ao carregar a imagem."
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
@@ -1974,7 +1982,6 @@ msgstr "Anexos"
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr ""
|
||||
@@ -2251,9 +2258,9 @@ msgstr "Marrom"
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2615,7 +2622,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "Escolha os campos que irão identificar seus registros"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Escolha o formato usado para exibir o valor da data"
|
||||
|
||||
@@ -3244,11 +3251,6 @@ msgstr "Núcleo"
|
||||
msgid "Core Objects"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: cfa2VJ
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Core Schema"
|
||||
msgstr "Esquema principal"
|
||||
|
||||
#. js-lingui-id: I99Miw
|
||||
#: src/modules/billing/components/SettingsBillingCreditsSection.tsx
|
||||
#: src/modules/ai/components/internal/AIChatContextUsageButton.tsx
|
||||
@@ -5041,10 +5043,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Insira o filtro"
|
||||
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
msgstr "Digite no formato <0>Unicode</0>"
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -6284,7 +6286,9 @@ msgstr "Gráfico de Medidor"
|
||||
#: src/pages/settings/SettingsWorkspace.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetEditorGroupsData.ts
|
||||
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
|
||||
msgid "General"
|
||||
msgstr "Geral"
|
||||
@@ -7008,11 +7012,6 @@ msgstr "Instruções para IA"
|
||||
msgid "Integrations - Settings"
|
||||
msgstr "Integrações - Configurações"
|
||||
|
||||
#. js-lingui-id: ntgzzG
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Interact with your workspace data"
|
||||
msgstr "Interagir com os dados do seu espaço de trabalho"
|
||||
|
||||
#. js-lingui-id: jyjroS
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Interval switching has been cancelled."
|
||||
@@ -8126,11 +8125,6 @@ msgstr "Metadados"
|
||||
msgid "Metadata file generation failed"
|
||||
msgstr "Falha na geração do arquivo de metadados"
|
||||
|
||||
#. js-lingui-id: 0BF9eC
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Metadata Schema"
|
||||
msgstr "Esquema de metadados"
|
||||
|
||||
#. js-lingui-id: onCJJ6
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Metered tier switching has been cancelled."
|
||||
@@ -8523,6 +8517,11 @@ msgstr "Novo campo"
|
||||
msgid "New folder"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 93KA8w
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
|
||||
msgid "New Group"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: o8MyXb
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
|
||||
msgid "New key"
|
||||
@@ -9569,7 +9568,7 @@ msgstr ""
|
||||
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuNewSidebarItemMainMenu.tsx
|
||||
msgid "Other"
|
||||
msgstr "Outros"
|
||||
@@ -14212,6 +14211,7 @@ msgid "Workspace Domain"
|
||||
msgstr "Domínio do Workspace"
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr ""
|
||||
|
||||
@@ -311,6 +311,11 @@ msgstr "{morphRelationCount} Objetos"
|
||||
msgid "{num, selectordinal, one {{num}st} two {{num}nd} few {{num}rd} other {{num}th}}"
|
||||
msgstr "{num, selectordinal, one {{num}º} other {{num}º}}"
|
||||
|
||||
#. js-lingui-id: fTSz8d
|
||||
#: src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownActorSelect.tsx
|
||||
msgid "{numberOfSelectedItems} workspace members"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 7kYa/u
|
||||
#: src/modules/object-record/record-show/hooks/useRecordShowPagePagination.ts
|
||||
msgid "{objectLabelPlural} ({totalCount})"
|
||||
@@ -770,6 +775,11 @@ msgstr "Adicionar \"{trimmedName}\" às opções"
|
||||
msgid "Add a {objectLabelSingular}"
|
||||
msgstr "Adicionar um {objectLabelSingular}"
|
||||
|
||||
#. js-lingui-id: 7W8nJr
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
|
||||
msgid "Add a Group"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: CZDwqQ
|
||||
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
|
||||
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
|
||||
@@ -786,11 +796,6 @@ msgstr "Adicionar nó"
|
||||
msgid "Add a record"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: r8W+9y
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationSectionEditor.tsx
|
||||
msgid "Add a Section"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: eMc2xs
|
||||
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
|
||||
msgid "Add a step"
|
||||
@@ -1512,6 +1517,9 @@ msgstr "Ocorreu um erro ao carregar a imagem."
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
@@ -1974,7 +1982,6 @@ msgstr "Anexos"
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr ""
|
||||
@@ -2251,9 +2258,9 @@ msgstr "Castanho"
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2615,7 +2622,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "Escolha os campos que identificarão seus registros"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Escolha o formato usado para exibir o valor da data"
|
||||
|
||||
@@ -3244,11 +3251,6 @@ msgstr "Núcleo"
|
||||
msgid "Core Objects"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: cfa2VJ
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Core Schema"
|
||||
msgstr "Esquema Principal"
|
||||
|
||||
#. js-lingui-id: I99Miw
|
||||
#: src/modules/billing/components/SettingsBillingCreditsSection.tsx
|
||||
#: src/modules/ai/components/internal/AIChatContextUsageButton.tsx
|
||||
@@ -5041,10 +5043,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Introduza o filtro"
|
||||
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
msgstr "Digite no formato <0>Unicode</0>"
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -6284,7 +6286,9 @@ msgstr ""
|
||||
#: src/pages/settings/SettingsWorkspace.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetEditorGroupsData.ts
|
||||
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
|
||||
msgid "General"
|
||||
msgstr "Geral"
|
||||
@@ -7008,11 +7012,6 @@ msgstr "Instruções para AI"
|
||||
msgid "Integrations - Settings"
|
||||
msgstr "Integrações - Configurações"
|
||||
|
||||
#. js-lingui-id: ntgzzG
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Interact with your workspace data"
|
||||
msgstr "Interaja com os dados do seu espaço de trabalho"
|
||||
|
||||
#. js-lingui-id: jyjroS
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Interval switching has been cancelled."
|
||||
@@ -8126,11 +8125,6 @@ msgstr "Metadados"
|
||||
msgid "Metadata file generation failed"
|
||||
msgstr "Falha na geração do arquivo de metadados"
|
||||
|
||||
#. js-lingui-id: 0BF9eC
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Metadata Schema"
|
||||
msgstr "Esquema de Metadados"
|
||||
|
||||
#. js-lingui-id: onCJJ6
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Metered tier switching has been cancelled."
|
||||
@@ -8523,6 +8517,11 @@ msgstr "Novo Campo"
|
||||
msgid "New folder"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 93KA8w
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
|
||||
msgid "New Group"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: o8MyXb
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
|
||||
msgid "New key"
|
||||
@@ -9569,7 +9568,7 @@ msgstr ""
|
||||
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuNewSidebarItemMainMenu.tsx
|
||||
msgid "Other"
|
||||
msgstr "Outros"
|
||||
@@ -14212,6 +14211,7 @@ msgid "Workspace Domain"
|
||||
msgstr "Domínio do espaço de trabalho"
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr ""
|
||||
|
||||
@@ -311,6 +311,11 @@ msgstr "{morphRelationCount} obiecte"
|
||||
msgid "{num, selectordinal, one {{num}st} two {{num}nd} few {{num}rd} other {{num}th}}"
|
||||
msgstr "{num, selectordinal, one {{num}st} few {{num}nd} few {{num}rd} other {{num}th}}"
|
||||
|
||||
#. js-lingui-id: fTSz8d
|
||||
#: src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownActorSelect.tsx
|
||||
msgid "{numberOfSelectedItems} workspace members"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 7kYa/u
|
||||
#: src/modules/object-record/record-show/hooks/useRecordShowPagePagination.ts
|
||||
msgid "{objectLabelPlural} ({totalCount})"
|
||||
@@ -770,6 +775,11 @@ msgstr "Adaugă \"{trimmedName}\" la opțiuni"
|
||||
msgid "Add a {objectLabelSingular}"
|
||||
msgstr "Adaugă un {objectLabelSingular}"
|
||||
|
||||
#. js-lingui-id: 7W8nJr
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
|
||||
msgid "Add a Group"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: CZDwqQ
|
||||
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
|
||||
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
|
||||
@@ -786,11 +796,6 @@ msgstr "Adaugă nod"
|
||||
msgid "Add a record"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: r8W+9y
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationSectionEditor.tsx
|
||||
msgid "Add a Section"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: eMc2xs
|
||||
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
|
||||
msgid "Add a step"
|
||||
@@ -1512,6 +1517,9 @@ msgstr "A apărut o eroare la încărcarea imaginii."
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
@@ -1974,7 +1982,6 @@ msgstr "Atașamente"
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr ""
|
||||
@@ -2251,9 +2258,9 @@ msgstr "Maro"
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2615,7 +2622,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "Alegeți câmpurile care vor identifica înregistrările dvs"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Alege formatul utilizat pentru a afișa valoarea datei"
|
||||
|
||||
@@ -3244,11 +3251,6 @@ msgstr "Nucleu"
|
||||
msgid "Core Objects"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: cfa2VJ
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Core Schema"
|
||||
msgstr "Schemă de bază"
|
||||
|
||||
#. js-lingui-id: I99Miw
|
||||
#: src/modules/billing/components/SettingsBillingCreditsSection.tsx
|
||||
#: src/modules/ai/components/internal/AIChatContextUsageButton.tsx
|
||||
@@ -5041,10 +5043,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Introduceți filtrul"
|
||||
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
msgstr "Introduceți în format <0>Unicode</0>"
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -6284,7 +6286,9 @@ msgstr "Grafic tip ceas"
|
||||
#: src/pages/settings/SettingsWorkspace.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetEditorGroupsData.ts
|
||||
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
|
||||
msgid "General"
|
||||
msgstr "General"
|
||||
@@ -7008,11 +7012,6 @@ msgstr "Instrucțiuni pentru AI"
|
||||
msgid "Integrations - Settings"
|
||||
msgstr "Integrări - Setări"
|
||||
|
||||
#. js-lingui-id: ntgzzG
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Interact with your workspace data"
|
||||
msgstr "Interacţionează cu datele workspace-ului tău"
|
||||
|
||||
#. js-lingui-id: jyjroS
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Interval switching has been cancelled."
|
||||
@@ -8126,11 +8125,6 @@ msgstr "Metadata"
|
||||
msgid "Metadata file generation failed"
|
||||
msgstr "Generarea fișierului de metadate a eșuat"
|
||||
|
||||
#. js-lingui-id: 0BF9eC
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Metadata Schema"
|
||||
msgstr "Schemă de metadate"
|
||||
|
||||
#. js-lingui-id: onCJJ6
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Metered tier switching has been cancelled."
|
||||
@@ -8523,6 +8517,11 @@ msgstr "Câmp nou"
|
||||
msgid "New folder"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 93KA8w
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
|
||||
msgid "New Group"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: o8MyXb
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
|
||||
msgid "New key"
|
||||
@@ -9569,7 +9568,7 @@ msgstr ""
|
||||
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuNewSidebarItemMainMenu.tsx
|
||||
msgid "Other"
|
||||
msgstr "Altul"
|
||||
@@ -14212,6 +14211,7 @@ msgid "Workspace Domain"
|
||||
msgstr "Domeniu Spațiu de lucru"
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr ""
|
||||
|
||||
Binary file not shown.
@@ -311,6 +311,11 @@ msgstr "{morphRelationCount} објеката"
|
||||
msgid "{num, selectordinal, one {{num}st} two {{num}nd} few {{num}rd} other {{num}th}}"
|
||||
msgstr "{num, selectordinal, one {{num}ст} few {{num}нд} other {{num}ти}}"
|
||||
|
||||
#. js-lingui-id: fTSz8d
|
||||
#: src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownActorSelect.tsx
|
||||
msgid "{numberOfSelectedItems} workspace members"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 7kYa/u
|
||||
#: src/modules/object-record/record-show/hooks/useRecordShowPagePagination.ts
|
||||
msgid "{objectLabelPlural} ({totalCount})"
|
||||
@@ -770,6 +775,11 @@ msgstr "Додај \"{trimmedName}\" у опције"
|
||||
msgid "Add a {objectLabelSingular}"
|
||||
msgstr "Додај {objectLabelSingular}"
|
||||
|
||||
#. js-lingui-id: 7W8nJr
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
|
||||
msgid "Add a Group"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: CZDwqQ
|
||||
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
|
||||
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
|
||||
@@ -786,11 +796,6 @@ msgstr "Додај чвор"
|
||||
msgid "Add a record"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: r8W+9y
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationSectionEditor.tsx
|
||||
msgid "Add a Section"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: eMc2xs
|
||||
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
|
||||
msgid "Add a step"
|
||||
@@ -1512,6 +1517,9 @@ msgstr "Дошло је до грешке приликом отпремања с
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
@@ -1974,7 +1982,6 @@ msgstr "Прилози"
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr ""
|
||||
@@ -2251,9 +2258,9 @@ msgstr "Браон"
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2615,7 +2622,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "Изаберите поља која ће идентификовати ваше записе"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Изаберите формат за приказ датума"
|
||||
|
||||
@@ -3244,11 +3251,6 @@ msgstr "Језгро"
|
||||
msgid "Core Objects"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: cfa2VJ
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Core Schema"
|
||||
msgstr "Основна шема"
|
||||
|
||||
#. js-lingui-id: I99Miw
|
||||
#: src/modules/billing/components/SettingsBillingCreditsSection.tsx
|
||||
#: src/modules/ai/components/internal/AIChatContextUsageButton.tsx
|
||||
@@ -5041,10 +5043,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Унесите филтер"
|
||||
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
msgstr "Унеси у <0>Unicode</0> формату"
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -6284,7 +6286,9 @@ msgstr ""
|
||||
#: src/pages/settings/SettingsWorkspace.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetEditorGroupsData.ts
|
||||
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
|
||||
msgid "General"
|
||||
msgstr "Опште"
|
||||
@@ -7008,11 +7012,6 @@ msgstr "Упутства за AI"
|
||||
msgid "Integrations - Settings"
|
||||
msgstr "Интеграције - Подешавања"
|
||||
|
||||
#. js-lingui-id: ntgzzG
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Interact with your workspace data"
|
||||
msgstr "Интеракција са подацима ваше радне површине"
|
||||
|
||||
#. js-lingui-id: jyjroS
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Interval switching has been cancelled."
|
||||
@@ -8126,11 +8125,6 @@ msgstr "Метаподаци"
|
||||
msgid "Metadata file generation failed"
|
||||
msgstr "Генерисање датотеке метаподатака није успело"
|
||||
|
||||
#. js-lingui-id: 0BF9eC
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Metadata Schema"
|
||||
msgstr "Шема метаподатака"
|
||||
|
||||
#. js-lingui-id: onCJJ6
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Metered tier switching has been cancelled."
|
||||
@@ -8523,6 +8517,11 @@ msgstr "Ново поље"
|
||||
msgid "New folder"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 93KA8w
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
|
||||
msgid "New Group"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: o8MyXb
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
|
||||
msgid "New key"
|
||||
@@ -9569,7 +9568,7 @@ msgstr ""
|
||||
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuNewSidebarItemMainMenu.tsx
|
||||
msgid "Other"
|
||||
msgstr "Остало"
|
||||
@@ -14212,6 +14211,7 @@ msgid "Workspace Domain"
|
||||
msgstr "Домен радног простора"
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr ""
|
||||
|
||||
@@ -311,6 +311,11 @@ msgstr "{morphRelationCount} objekt"
|
||||
msgid "{num, selectordinal, one {{num}st} two {{num}nd} few {{num}rd} other {{num}th}}"
|
||||
msgstr "{num, selectordinal, one {{num}:a} other {{num}e}}"
|
||||
|
||||
#. js-lingui-id: fTSz8d
|
||||
#: src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownActorSelect.tsx
|
||||
msgid "{numberOfSelectedItems} workspace members"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 7kYa/u
|
||||
#: src/modules/object-record/record-show/hooks/useRecordShowPagePagination.ts
|
||||
msgid "{objectLabelPlural} ({totalCount})"
|
||||
@@ -770,6 +775,11 @@ msgstr "Lägg till \"{trimmedName}\" i alternativ"
|
||||
msgid "Add a {objectLabelSingular}"
|
||||
msgstr "Lägg till {objectLabelSingular}"
|
||||
|
||||
#. js-lingui-id: 7W8nJr
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
|
||||
msgid "Add a Group"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: CZDwqQ
|
||||
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
|
||||
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
|
||||
@@ -786,11 +796,6 @@ msgstr "Lägg till en nod"
|
||||
msgid "Add a record"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: r8W+9y
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationSectionEditor.tsx
|
||||
msgid "Add a Section"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: eMc2xs
|
||||
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
|
||||
msgid "Add a step"
|
||||
@@ -1512,6 +1517,9 @@ msgstr "Ett fel uppstod när bilden laddades upp."
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
@@ -1974,7 +1982,6 @@ msgstr "Bilagor"
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr ""
|
||||
@@ -2251,9 +2258,9 @@ msgstr "Brun"
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2615,7 +2622,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "Välj de fält som kommer att identifiera dina poster"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Välj formatet som används för att visa datumvärdet"
|
||||
|
||||
@@ -3244,11 +3251,6 @@ msgstr "Kärna"
|
||||
msgid "Core Objects"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: cfa2VJ
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Core Schema"
|
||||
msgstr "Kärnschema"
|
||||
|
||||
#. js-lingui-id: I99Miw
|
||||
#: src/modules/billing/components/SettingsBillingCreditsSection.tsx
|
||||
#: src/modules/ai/components/internal/AIChatContextUsageButton.tsx
|
||||
@@ -5041,10 +5043,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Ange filter"
|
||||
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
msgstr "Ange i <0>Unicode</0>-format"
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -6284,7 +6286,9 @@ msgstr "Mätardiagram"
|
||||
#: src/pages/settings/SettingsWorkspace.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetEditorGroupsData.ts
|
||||
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
|
||||
msgid "General"
|
||||
msgstr "Allmänt"
|
||||
@@ -7008,11 +7012,6 @@ msgstr "Instruktioner för AI"
|
||||
msgid "Integrations - Settings"
|
||||
msgstr "Integrationer - Inställningar"
|
||||
|
||||
#. js-lingui-id: ntgzzG
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Interact with your workspace data"
|
||||
msgstr "Interagera med dina arbetsytedata"
|
||||
|
||||
#. js-lingui-id: jyjroS
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Interval switching has been cancelled."
|
||||
@@ -8126,11 +8125,6 @@ msgstr "Metadata"
|
||||
msgid "Metadata file generation failed"
|
||||
msgstr "Generering av metadatafilen misslyckades"
|
||||
|
||||
#. js-lingui-id: 0BF9eC
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Metadata Schema"
|
||||
msgstr "Metadataschema"
|
||||
|
||||
#. js-lingui-id: onCJJ6
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Metered tier switching has been cancelled."
|
||||
@@ -8525,6 +8519,11 @@ msgstr "Nytt fält"
|
||||
msgid "New folder"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 93KA8w
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
|
||||
msgid "New Group"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: o8MyXb
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
|
||||
msgid "New key"
|
||||
@@ -9571,7 +9570,7 @@ msgstr ""
|
||||
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuNewSidebarItemMainMenu.tsx
|
||||
msgid "Other"
|
||||
msgstr "Annat"
|
||||
@@ -14226,6 +14225,7 @@ msgid "Workspace Domain"
|
||||
msgstr "Arbetsyta domän"
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr ""
|
||||
|
||||
@@ -311,6 +311,11 @@ msgstr "{morphRelationCount} Nesne"
|
||||
msgid "{num, selectordinal, one {{num}st} two {{num}nd} few {{num}rd} other {{num}th}}"
|
||||
msgstr "{num, selectordinal, one {{num}'inci} other {{num}'inci}}"
|
||||
|
||||
#. js-lingui-id: fTSz8d
|
||||
#: src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownActorSelect.tsx
|
||||
msgid "{numberOfSelectedItems} workspace members"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 7kYa/u
|
||||
#: src/modules/object-record/record-show/hooks/useRecordShowPagePagination.ts
|
||||
msgid "{objectLabelPlural} ({totalCount})"
|
||||
@@ -770,6 +775,11 @@ msgstr "\"{trimmedName}\" seçeneğe ekle"
|
||||
msgid "Add a {objectLabelSingular}"
|
||||
msgstr "Bir {objectLabelSingular} ekle"
|
||||
|
||||
#. js-lingui-id: 7W8nJr
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
|
||||
msgid "Add a Group"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: CZDwqQ
|
||||
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
|
||||
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
|
||||
@@ -786,11 +796,6 @@ msgstr "Bir düğüm ekle"
|
||||
msgid "Add a record"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: r8W+9y
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationSectionEditor.tsx
|
||||
msgid "Add a Section"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: eMc2xs
|
||||
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
|
||||
msgid "Add a step"
|
||||
@@ -1512,6 +1517,9 @@ msgstr "Resim yüklenirken bir hata oluştu."
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
@@ -1974,7 +1982,6 @@ msgstr "Ekler"
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr ""
|
||||
@@ -2251,9 +2258,9 @@ msgstr "Kahverengi"
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2615,7 +2622,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "Kayıtlarınızı tanımlayacak alanları seçin"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Tarih değerini görüntülemek için kullanılan formatı seçin"
|
||||
|
||||
@@ -3244,11 +3251,6 @@ msgstr "Çekirdek"
|
||||
msgid "Core Objects"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: cfa2VJ
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Core Schema"
|
||||
msgstr "Çekirdek Şema"
|
||||
|
||||
#. js-lingui-id: I99Miw
|
||||
#: src/modules/billing/components/SettingsBillingCreditsSection.tsx
|
||||
#: src/modules/ai/components/internal/AIChatContextUsageButton.tsx
|
||||
@@ -5041,10 +5043,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Filtre girin"
|
||||
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
msgstr "<0>Unicode</0> formatında girin"
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -6284,7 +6286,9 @@ msgstr "Gösterge Grafiği"
|
||||
#: src/pages/settings/SettingsWorkspace.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetEditorGroupsData.ts
|
||||
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
|
||||
msgid "General"
|
||||
msgstr "Genel"
|
||||
@@ -7008,11 +7012,6 @@ msgstr "AI için Talimatlar"
|
||||
msgid "Integrations - Settings"
|
||||
msgstr "Entegrasyonlar - Ayarlar"
|
||||
|
||||
#. js-lingui-id: ntgzzG
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Interact with your workspace data"
|
||||
msgstr "Çalışma alanı verileriyle etkileşim kurma"
|
||||
|
||||
#. js-lingui-id: jyjroS
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Interval switching has been cancelled."
|
||||
@@ -8126,11 +8125,6 @@ msgstr "Meta veri"
|
||||
msgid "Metadata file generation failed"
|
||||
msgstr "Metadata dosyası oluşturulamadı"
|
||||
|
||||
#. js-lingui-id: 0BF9eC
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Metadata Schema"
|
||||
msgstr "Meta Veri Şeması"
|
||||
|
||||
#. js-lingui-id: onCJJ6
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Metered tier switching has been cancelled."
|
||||
@@ -8523,6 +8517,11 @@ msgstr "Yeni Alan"
|
||||
msgid "New folder"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 93KA8w
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
|
||||
msgid "New Group"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: o8MyXb
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
|
||||
msgid "New key"
|
||||
@@ -9569,7 +9568,7 @@ msgstr ""
|
||||
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuNewSidebarItemMainMenu.tsx
|
||||
msgid "Other"
|
||||
msgstr "Diğer"
|
||||
@@ -14212,6 +14211,7 @@ msgid "Workspace Domain"
|
||||
msgstr "İş Alanı Alan Adı"
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr ""
|
||||
|
||||
@@ -311,6 +311,11 @@ msgstr "{morphRelationCount} об’єктів"
|
||||
msgid "{num, selectordinal, one {{num}st} two {{num}nd} few {{num}rd} other {{num}th}}"
|
||||
msgstr "{num, selectordinal, one {{num}-й} few {{num}-й} many {{num}-й} other {{num}-й}}"
|
||||
|
||||
#. js-lingui-id: fTSz8d
|
||||
#: src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownActorSelect.tsx
|
||||
msgid "{numberOfSelectedItems} workspace members"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 7kYa/u
|
||||
#: src/modules/object-record/record-show/hooks/useRecordShowPagePagination.ts
|
||||
msgid "{objectLabelPlural} ({totalCount})"
|
||||
@@ -770,6 +775,11 @@ msgstr "Додати \"{trimmedName}\" до параметрів"
|
||||
msgid "Add a {objectLabelSingular}"
|
||||
msgstr "Додати {objectLabelSingular}"
|
||||
|
||||
#. js-lingui-id: 7W8nJr
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
|
||||
msgid "Add a Group"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: CZDwqQ
|
||||
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
|
||||
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
|
||||
@@ -786,11 +796,6 @@ msgstr "Додати вузол"
|
||||
msgid "Add a record"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: r8W+9y
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationSectionEditor.tsx
|
||||
msgid "Add a Section"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: eMc2xs
|
||||
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
|
||||
msgid "Add a step"
|
||||
@@ -1512,6 +1517,9 @@ msgstr "Під час завантаження зображення сталас
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
@@ -1974,7 +1982,6 @@ msgstr "Вкладення"
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr ""
|
||||
@@ -2251,9 +2258,9 @@ msgstr "Коричневий"
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2615,7 +2622,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "Виберіть поля, які будуть ідентифікувати ваші записи"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Оберіть формат для відображення значення дати"
|
||||
|
||||
@@ -3244,11 +3251,6 @@ msgstr "Ядро"
|
||||
msgid "Core Objects"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: cfa2VJ
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Core Schema"
|
||||
msgstr "Основна схема"
|
||||
|
||||
#. js-lingui-id: I99Miw
|
||||
#: src/modules/billing/components/SettingsBillingCreditsSection.tsx
|
||||
#: src/modules/ai/components/internal/AIChatContextUsageButton.tsx
|
||||
@@ -5041,10 +5043,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Введіть фільтр"
|
||||
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
msgstr "Введіть у форматі <0>Unicode</0>"
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -6284,7 +6286,9 @@ msgstr ""
|
||||
#: src/pages/settings/SettingsWorkspace.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetEditorGroupsData.ts
|
||||
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
|
||||
msgid "General"
|
||||
msgstr "Загальні"
|
||||
@@ -7008,11 +7012,6 @@ msgstr "Інструкції для AI"
|
||||
msgid "Integrations - Settings"
|
||||
msgstr "Інтеграції - Налаштування"
|
||||
|
||||
#. js-lingui-id: ntgzzG
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Interact with your workspace data"
|
||||
msgstr "Взаємодія з даними вашого робочого простору"
|
||||
|
||||
#. js-lingui-id: jyjroS
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Interval switching has been cancelled."
|
||||
@@ -8126,11 +8125,6 @@ msgstr "Метадані"
|
||||
msgid "Metadata file generation failed"
|
||||
msgstr "Не вдалося згенерувати файл метаданих"
|
||||
|
||||
#. js-lingui-id: 0BF9eC
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Metadata Schema"
|
||||
msgstr "Схема метаданих"
|
||||
|
||||
#. js-lingui-id: onCJJ6
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Metered tier switching has been cancelled."
|
||||
@@ -8523,6 +8517,11 @@ msgstr "Нове поле"
|
||||
msgid "New folder"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 93KA8w
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
|
||||
msgid "New Group"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: o8MyXb
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
|
||||
msgid "New key"
|
||||
@@ -9569,7 +9568,7 @@ msgstr ""
|
||||
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuNewSidebarItemMainMenu.tsx
|
||||
msgid "Other"
|
||||
msgstr "Інший"
|
||||
@@ -14214,6 +14213,7 @@ msgid "Workspace Domain"
|
||||
msgstr "Домен робочої області"
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr ""
|
||||
|
||||
@@ -311,6 +311,11 @@ msgstr "{morphRelationCount} Đối tượng"
|
||||
msgid "{num, selectordinal, one {{num}st} two {{num}nd} few {{num}rd} other {{num}th}}"
|
||||
msgstr "{num, selectordinal, other {{num}}}"
|
||||
|
||||
#. js-lingui-id: fTSz8d
|
||||
#: src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownActorSelect.tsx
|
||||
msgid "{numberOfSelectedItems} workspace members"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 7kYa/u
|
||||
#: src/modules/object-record/record-show/hooks/useRecordShowPagePagination.ts
|
||||
msgid "{objectLabelPlural} ({totalCount})"
|
||||
@@ -770,6 +775,11 @@ msgstr "Thêm \"{trimmedName}\" vào các tùy chọn"
|
||||
msgid "Add a {objectLabelSingular}"
|
||||
msgstr "Thêm {objectLabelSingular}"
|
||||
|
||||
#. js-lingui-id: 7W8nJr
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
|
||||
msgid "Add a Group"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: CZDwqQ
|
||||
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
|
||||
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
|
||||
@@ -786,11 +796,6 @@ msgstr "Thêm nút"
|
||||
msgid "Add a record"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: r8W+9y
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationSectionEditor.tsx
|
||||
msgid "Add a Section"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: eMc2xs
|
||||
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
|
||||
msgid "Add a step"
|
||||
@@ -1512,6 +1517,9 @@ msgstr "Đã xảy ra lỗi khi tải lên ảnh."
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
@@ -1974,7 +1982,6 @@ msgstr "Tập tin đính kèm"
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr ""
|
||||
@@ -2251,9 +2258,9 @@ msgstr "Nâu"
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2615,7 +2622,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "Chọn các trường sẽ xác định bản ghi của bạn"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Chọn định dạng dùng để hiển thị giá trị ngày"
|
||||
|
||||
@@ -3244,11 +3251,6 @@ msgstr "Lõi"
|
||||
msgid "Core Objects"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: cfa2VJ
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Core Schema"
|
||||
msgstr "Lược đồ lõi"
|
||||
|
||||
#. js-lingui-id: I99Miw
|
||||
#: src/modules/billing/components/SettingsBillingCreditsSection.tsx
|
||||
#: src/modules/ai/components/internal/AIChatContextUsageButton.tsx
|
||||
@@ -5041,10 +5043,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Nhập bộ lọc"
|
||||
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
msgstr "Nhập theo định dạng <0>Unicode</0>"
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -6284,7 +6286,9 @@ msgstr "Biểu đồ đo lường"
|
||||
#: src/pages/settings/SettingsWorkspace.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetEditorGroupsData.ts
|
||||
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
|
||||
msgid "General"
|
||||
msgstr "\\"
|
||||
@@ -7008,11 +7012,6 @@ msgstr "Hướng dẫn cho AI"
|
||||
msgid "Integrations - Settings"
|
||||
msgstr "Cài đặt - Tích hợp"
|
||||
|
||||
#. js-lingui-id: ntgzzG
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Interact with your workspace data"
|
||||
msgstr "Tương tác với dữ liệu không gian làm việc của bạn"
|
||||
|
||||
#. js-lingui-id: jyjroS
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Interval switching has been cancelled."
|
||||
@@ -8126,11 +8125,6 @@ msgstr "Siêu dữ liệu"
|
||||
msgid "Metadata file generation failed"
|
||||
msgstr "Tạo tập tin Metadata thất bại"
|
||||
|
||||
#. js-lingui-id: 0BF9eC
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Metadata Schema"
|
||||
msgstr "Lược đồ siêu dữ liệu"
|
||||
|
||||
#. js-lingui-id: onCJJ6
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Metered tier switching has been cancelled."
|
||||
@@ -8523,6 +8517,11 @@ msgstr "Trường mới"
|
||||
msgid "New folder"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 93KA8w
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
|
||||
msgid "New Group"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: o8MyXb
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
|
||||
msgid "New key"
|
||||
@@ -9569,7 +9568,7 @@ msgstr ""
|
||||
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuNewSidebarItemMainMenu.tsx
|
||||
msgid "Other"
|
||||
msgstr "Khác"
|
||||
@@ -14212,6 +14211,7 @@ msgid "Workspace Domain"
|
||||
msgstr "Tên miền không gian làm việc"
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr ""
|
||||
|
||||
@@ -311,6 +311,11 @@ msgstr "{morphRelationCount} 个对象"
|
||||
msgid "{num, selectordinal, one {{num}st} two {{num}nd} few {{num}rd} other {{num}th}}"
|
||||
msgstr "{num, selectordinal, other {{num}th}}"
|
||||
|
||||
#. js-lingui-id: fTSz8d
|
||||
#: src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownActorSelect.tsx
|
||||
msgid "{numberOfSelectedItems} workspace members"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 7kYa/u
|
||||
#: src/modules/object-record/record-show/hooks/useRecordShowPagePagination.ts
|
||||
msgid "{objectLabelPlural} ({totalCount})"
|
||||
@@ -770,6 +775,11 @@ msgstr "将 \"{trimmedName}\" 添加到选项中"
|
||||
msgid "Add a {objectLabelSingular}"
|
||||
msgstr "添加一个 {objectLabelSingular}"
|
||||
|
||||
#. js-lingui-id: 7W8nJr
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
|
||||
msgid "Add a Group"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: CZDwqQ
|
||||
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
|
||||
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
|
||||
@@ -786,11 +796,6 @@ msgstr "添加节点"
|
||||
msgid "Add a record"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: r8W+9y
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationSectionEditor.tsx
|
||||
msgid "Add a Section"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: eMc2xs
|
||||
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
|
||||
msgid "Add a step"
|
||||
@@ -1512,6 +1517,9 @@ msgstr "上传图片时发生错误。"
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
@@ -1974,7 +1982,6 @@ msgstr "附件"
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr ""
|
||||
@@ -2251,9 +2258,9 @@ msgstr "棕色"
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2615,7 +2622,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "选择将标识您记录的字段"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "选择用于显示日期值的格式"
|
||||
|
||||
@@ -3244,11 +3251,6 @@ msgstr "核心"
|
||||
msgid "Core Objects"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: cfa2VJ
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Core Schema"
|
||||
msgstr "核心架构"
|
||||
|
||||
#. js-lingui-id: I99Miw
|
||||
#: src/modules/billing/components/SettingsBillingCreditsSection.tsx
|
||||
#: src/modules/ai/components/internal/AIChatContextUsageButton.tsx
|
||||
@@ -5041,10 +5043,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "输入筛选条件"
|
||||
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
msgstr "以<0>Unicode</0>格式输入"
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -6284,7 +6286,9 @@ msgstr "仪表图"
|
||||
#: src/pages/settings/SettingsWorkspace.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetEditorGroupsData.ts
|
||||
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
|
||||
msgid "General"
|
||||
msgstr "常规"
|
||||
@@ -7008,11 +7012,6 @@ msgstr "AI 指令"
|
||||
msgid "Integrations - Settings"
|
||||
msgstr "集成 - 设置"
|
||||
|
||||
#. js-lingui-id: ntgzzG
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Interact with your workspace data"
|
||||
msgstr "与您的工作区数据互动"
|
||||
|
||||
#. js-lingui-id: jyjroS
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Interval switching has been cancelled."
|
||||
@@ -8126,11 +8125,6 @@ msgstr "元数据"
|
||||
msgid "Metadata file generation failed"
|
||||
msgstr "元数据文件生成失败"
|
||||
|
||||
#. js-lingui-id: 0BF9eC
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Metadata Schema"
|
||||
msgstr "元数据架构"
|
||||
|
||||
#. js-lingui-id: onCJJ6
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Metered tier switching has been cancelled."
|
||||
@@ -8523,6 +8517,11 @@ msgstr "新字段"
|
||||
msgid "New folder"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 93KA8w
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
|
||||
msgid "New Group"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: o8MyXb
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
|
||||
msgid "New key"
|
||||
@@ -9569,7 +9568,7 @@ msgstr ""
|
||||
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuNewSidebarItemMainMenu.tsx
|
||||
msgid "Other"
|
||||
msgstr "其他"
|
||||
@@ -14212,6 +14211,7 @@ msgid "Workspace Domain"
|
||||
msgstr "工作区域"
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr ""
|
||||
|
||||
@@ -311,6 +311,11 @@ msgstr "{morphRelationCount} 個物件"
|
||||
msgid "{num, selectordinal, one {{num}st} two {{num}nd} few {{num}rd} other {{num}th}}"
|
||||
msgstr "{num, selectordinal, other {{num} 第}}"
|
||||
|
||||
#. js-lingui-id: fTSz8d
|
||||
#: src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownActorSelect.tsx
|
||||
msgid "{numberOfSelectedItems} workspace members"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 7kYa/u
|
||||
#: src/modules/object-record/record-show/hooks/useRecordShowPagePagination.ts
|
||||
msgid "{objectLabelPlural} ({totalCount})"
|
||||
@@ -770,6 +775,11 @@ msgstr "將 \"{trimmedName}\" 添加到選項中"
|
||||
msgid "Add a {objectLabelSingular}"
|
||||
msgstr "新增一個 {objectLabelSingular}"
|
||||
|
||||
#. js-lingui-id: 7W8nJr
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
|
||||
msgid "Add a Group"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: CZDwqQ
|
||||
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
|
||||
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
|
||||
@@ -786,11 +796,6 @@ msgstr "添加節點"
|
||||
msgid "Add a record"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: r8W+9y
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationSectionEditor.tsx
|
||||
msgid "Add a Section"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: eMc2xs
|
||||
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
|
||||
msgid "Add a step"
|
||||
@@ -1512,6 +1517,9 @@ msgstr "上傳圖片時發生錯誤。"
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldGroupAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
#: src/modules/views/hooks/internal/usePerformViewFieldAPIPersist.ts
|
||||
@@ -1974,7 +1982,6 @@ msgstr "附件"
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr ""
|
||||
@@ -2251,9 +2258,9 @@ msgstr "棕色"
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2615,7 +2622,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "選擇將識別您記錄的欄位"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "選擇用于顯示日期值的格式"
|
||||
|
||||
@@ -3244,11 +3251,6 @@ msgstr "核心"
|
||||
msgid "Core Objects"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: cfa2VJ
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Core Schema"
|
||||
msgstr "核心結構描述"
|
||||
|
||||
#. js-lingui-id: I99Miw
|
||||
#: src/modules/billing/components/SettingsBillingCreditsSection.tsx
|
||||
#: src/modules/ai/components/internal/AIChatContextUsageButton.tsx
|
||||
@@ -5041,10 +5043,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "輸入篩選條件"
|
||||
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
msgstr "以<0>Unicode</0>格式輸入"
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -6284,7 +6286,9 @@ msgstr "儀表圖"
|
||||
#: src/pages/settings/SettingsWorkspace.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetEditorGroupsData.ts
|
||||
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
|
||||
msgid "General"
|
||||
msgstr "常規"
|
||||
@@ -7008,11 +7012,6 @@ msgstr "AI 指示"
|
||||
msgid "Integrations - Settings"
|
||||
msgstr "整合 - 設定"
|
||||
|
||||
#. js-lingui-id: ntgzzG
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Interact with your workspace data"
|
||||
msgstr "與您的工作空間數據互動"
|
||||
|
||||
#. js-lingui-id: jyjroS
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Interval switching has been cancelled."
|
||||
@@ -8126,11 +8125,6 @@ msgstr "元數據"
|
||||
msgid "Metadata file generation failed"
|
||||
msgstr "元數據文件生成失敗"
|
||||
|
||||
#. js-lingui-id: 0BF9eC
|
||||
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
|
||||
msgid "Metadata Schema"
|
||||
msgstr "中繼資料結構描述"
|
||||
|
||||
#. js-lingui-id: onCJJ6
|
||||
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
|
||||
msgid "Metered tier switching has been cancelled."
|
||||
@@ -8523,6 +8517,11 @@ msgstr "新字段"
|
||||
msgid "New folder"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 93KA8w
|
||||
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
|
||||
msgid "New Group"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: o8MyXb
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
|
||||
msgid "New key"
|
||||
@@ -9569,7 +9568,7 @@ msgstr ""
|
||||
#: src/pages/settings/admin-panel/SettingsAdminConfigVariableDetails.tsx
|
||||
#: src/pages/settings/admin-panel/SettingsAdmin.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/page-layout/hooks/useTemporaryFieldsConfiguration.ts
|
||||
#: src/modules/page-layout/widgets/fields/hooks/useFieldsWidgetGroups.ts
|
||||
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuNewSidebarItemMainMenu.tsx
|
||||
msgid "Other"
|
||||
msgstr "其他"
|
||||
@@ -14212,6 +14211,7 @@ msgid "Workspace Domain"
|
||||
msgstr "工作區域名"
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr ""
|
||||
|
||||
@@ -8,7 +8,7 @@ import { useCloseActionMenu } from '@/action-menu/hooks/useCloseActionMenu';
|
||||
import { ConfirmationModal } from '@/ui/layout/modal/components/ConfirmationModal';
|
||||
import { useModal } from '@/ui/layout/modal/hooks/useModal';
|
||||
import { isModalOpenedComponentState } from '@/ui/layout/modal/states/isModalOpenedComponentState';
|
||||
import { useRecoilComponentValue } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValue';
|
||||
import { useRecoilComponentValueV2 } from '@/ui/utilities/state/jotai/hooks/useRecoilComponentValueV2';
|
||||
import { type ButtonAccent } from 'twenty-ui/input';
|
||||
|
||||
export type ActionModalProps = {
|
||||
@@ -49,7 +49,7 @@ export const ActionModal = ({
|
||||
|
||||
const modalId = `${actionConfig?.key}-action-modal-${actionMenuType}`;
|
||||
|
||||
const isModalOpened = useRecoilComponentValue(
|
||||
const isModalOpened = useRecoilComponentValueV2(
|
||||
isModalOpenedComponentState,
|
||||
modalId,
|
||||
);
|
||||
|
||||
+1
-1
@@ -2,11 +2,11 @@ import { ActionDisplay } from '@/action-menu/actions/display/components/ActionDi
|
||||
import { ActionConfigContext } from '@/action-menu/contexts/ActionConfigContext';
|
||||
import { useNavigateCommandMenu } from '@/command-menu/hooks/useNavigateCommandMenu';
|
||||
import { commandMenuSearchState } from '@/command-menu/states/commandMenuSearchState';
|
||||
import { type CommandMenuPages } from '@/command-menu/types/CommandMenuPages';
|
||||
import { type MessageDescriptor } from '@lingui/core';
|
||||
import { t } from '@lingui/core/macro';
|
||||
import { useContext } from 'react';
|
||||
import { useSetRecoilState } from 'recoil';
|
||||
import { type CommandMenuPages } from 'twenty-shared/types';
|
||||
import { type IconComponent } from 'twenty-ui/display';
|
||||
|
||||
export const ActionOpenSidePanelPage = ({
|
||||
|
||||
+4
-4
@@ -2,9 +2,9 @@ import { type ActionDisplayProps } from '@/action-menu/actions/display/component
|
||||
import { getActionLabel } from '@/action-menu/utils/getActionLabel';
|
||||
import { SelectableListItem } from '@/ui/layout/selectable-list/components/SelectableListItem';
|
||||
import { SelectableListComponentInstanceContext } from '@/ui/layout/selectable-list/states/contexts/SelectableListComponentInstanceContext';
|
||||
import { isSelectedItemIdComponentFamilySelector } from '@/ui/layout/selectable-list/states/selectors/isSelectedItemIdComponentFamilySelector';
|
||||
import { isSelectedItemIdComponentFamilyState } from '@/ui/layout/selectable-list/states/isSelectedItemIdComponentFamilyState';
|
||||
import { useAvailableComponentInstanceIdOrThrow } from '@/ui/utilities/state/component-state/hooks/useAvailableComponentInstanceIdOrThrow';
|
||||
import { useRecoilComponentFamilyValue } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentFamilyValue';
|
||||
import { useRecoilComponentFamilyValueV2 } from '@/ui/utilities/state/jotai/hooks/useRecoilComponentFamilyValueV2';
|
||||
import { useNavigate } from 'react-router-dom';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
import { MenuItem } from 'twenty-ui/navigation';
|
||||
@@ -31,8 +31,8 @@ export const ActionDropdownItem = ({
|
||||
SelectableListComponentInstanceContext,
|
||||
);
|
||||
|
||||
const isSelected = useRecoilComponentFamilyValue(
|
||||
isSelectedItemIdComponentFamilySelector,
|
||||
const isSelected = useRecoilComponentFamilyValueV2(
|
||||
isSelectedItemIdComponentFamilyState,
|
||||
action.key,
|
||||
selectableListInstanceId,
|
||||
);
|
||||
|
||||
+1
-13
@@ -2,24 +2,16 @@ import { Action } from '@/action-menu/actions/components/Action';
|
||||
import { useSelectedRecordIdOrThrow } from '@/action-menu/actions/record-actions/single-record/hooks/useSelectedRecordIdOrThrow';
|
||||
import { useContextStoreObjectMetadataItemOrThrow } from '@/context-store/hooks/useContextStoreObjectMetadataItemOrThrow';
|
||||
import { useCreateFavorite } from '@/favorites/hooks/useCreateFavorite';
|
||||
import { useCreateNavigationMenuItem } from '@/navigation-menu-item/hooks/useCreateNavigationMenuItem';
|
||||
import { recordStoreFamilyState } from '@/object-record/record-store/states/recordStoreFamilyState';
|
||||
import { useIsFeatureEnabled } from '@/workspace/hooks/useIsFeatureEnabled';
|
||||
import { useRecoilValue } from 'recoil';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
import { FeatureFlagKey } from '~/generated-metadata/graphql';
|
||||
|
||||
export const AddToFavoritesSingleRecordAction = () => {
|
||||
const { objectMetadataItem } = useContextStoreObjectMetadataItemOrThrow();
|
||||
|
||||
const recordId = useSelectedRecordIdOrThrow();
|
||||
|
||||
const isNavigationMenuItemEnabled = useIsFeatureEnabled(
|
||||
FeatureFlagKey.IS_NAVIGATION_MENU_ITEM_ENABLED,
|
||||
);
|
||||
|
||||
const { createFavorite } = useCreateFavorite();
|
||||
const { createNavigationMenuItem } = useCreateNavigationMenuItem();
|
||||
|
||||
const selectedRecord = useRecoilValue(recordStoreFamilyState(recordId));
|
||||
|
||||
@@ -28,11 +20,7 @@ export const AddToFavoritesSingleRecordAction = () => {
|
||||
return;
|
||||
}
|
||||
|
||||
if (isNavigationMenuItemEnabled) {
|
||||
createNavigationMenuItem(selectedRecord, objectMetadataItem.nameSingular);
|
||||
} else {
|
||||
createFavorite(selectedRecord, objectMetadataItem.nameSingular);
|
||||
}
|
||||
createFavorite(selectedRecord, objectMetadataItem.nameSingular);
|
||||
};
|
||||
|
||||
return <Action onClick={handleClick} />;
|
||||
|
||||
+7
-13
@@ -8,9 +8,7 @@ import { useDeleteOneRecord } from '@/object-record/hooks/useDeleteOneRecord';
|
||||
import { useRemoveSelectedRecordsFromRecordBoard } from '@/object-record/record-board/hooks/useRemoveSelectedRecordsFromRecordBoard';
|
||||
import { useRecordIndexIdFromCurrentContextStore } from '@/object-record/record-index/hooks/useRecordIndexIdFromCurrentContextStore';
|
||||
import { useResetTableRowSelection } from '@/object-record/record-table/hooks/internal/useResetTableRowSelection';
|
||||
import { useIsFeatureEnabled } from '@/workspace/hooks/useIsFeatureEnabled';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
import { FeatureFlagKey } from '~/generated-metadata/graphql';
|
||||
|
||||
export const DeleteSingleRecordAction = () => {
|
||||
const { recordIndexId, objectMetadataItem } =
|
||||
@@ -29,9 +27,7 @@ export const DeleteSingleRecordAction = () => {
|
||||
|
||||
const { sortedFavorites: favorites } = useFavorites();
|
||||
const { deleteFavorite } = useDeleteFavorite();
|
||||
const isNavigationMenuItemEnabled = useIsFeatureEnabled(
|
||||
FeatureFlagKey.IS_NAVIGATION_MENU_ITEM_ENABLED,
|
||||
);
|
||||
|
||||
const { navigationMenuItems, workspaceNavigationMenuItems } =
|
||||
usePrefetchedNavigationMenuItemsData();
|
||||
const { removeNavigationMenuItemsByTargetRecordIds } =
|
||||
@@ -50,15 +46,13 @@ export const DeleteSingleRecordAction = () => {
|
||||
deleteFavorite(foundFavorite.id);
|
||||
}
|
||||
|
||||
if (isNavigationMenuItemEnabled) {
|
||||
const foundNavigationMenuItem = [
|
||||
...navigationMenuItems,
|
||||
...workspaceNavigationMenuItems,
|
||||
].find((item) => item.targetRecordId === recordId);
|
||||
const foundNavigationMenuItem = [
|
||||
...navigationMenuItems,
|
||||
...workspaceNavigationMenuItems,
|
||||
].find((item) => item.targetRecordId === recordId);
|
||||
|
||||
if (isDefined(foundNavigationMenuItem)) {
|
||||
removeNavigationMenuItemsByTargetRecordIds([recordId]);
|
||||
}
|
||||
if (isDefined(foundNavigationMenuItem)) {
|
||||
removeNavigationMenuItemsByTargetRecordIds([recordId]);
|
||||
}
|
||||
|
||||
await deleteOneRecord(recordId);
|
||||
|
||||
+10
-22
@@ -5,9 +5,7 @@ import { useDeleteFavorite } from '@/favorites/hooks/useDeleteFavorite';
|
||||
import { useFavorites } from '@/favorites/hooks/useFavorites';
|
||||
import { useDeleteNavigationMenuItem } from '@/navigation-menu-item/hooks/useDeleteNavigationMenuItem';
|
||||
import { usePrefetchedNavigationMenuItemsData } from '@/navigation-menu-item/hooks/usePrefetchedNavigationMenuItemsData';
|
||||
import { useIsFeatureEnabled } from '@/workspace/hooks/useIsFeatureEnabled';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
import { FeatureFlagKey } from '~/generated-metadata/graphql';
|
||||
|
||||
export const RemoveFromFavoritesSingleRecordAction = () => {
|
||||
const recordId = useSelectedRecordIdOrThrow();
|
||||
@@ -16,9 +14,6 @@ export const RemoveFromFavoritesSingleRecordAction = () => {
|
||||
const { sortedFavorites: favorites } = useFavorites();
|
||||
const { navigationMenuItems, workspaceNavigationMenuItems } =
|
||||
usePrefetchedNavigationMenuItemsData();
|
||||
const isNavigationMenuItemEnabled = useIsFeatureEnabled(
|
||||
FeatureFlagKey.IS_NAVIGATION_MENU_ITEM_ENABLED,
|
||||
);
|
||||
|
||||
const { deleteFavorite } = useDeleteFavorite();
|
||||
const { deleteNavigationMenuItem } = useDeleteNavigationMenuItem();
|
||||
@@ -27,28 +22,21 @@ export const RemoveFromFavoritesSingleRecordAction = () => {
|
||||
(favorite) => favorite.recordId === recordId,
|
||||
);
|
||||
|
||||
const foundNavigationMenuItem = isNavigationMenuItemEnabled
|
||||
? [...navigationMenuItems, ...workspaceNavigationMenuItems].find(
|
||||
(item) =>
|
||||
item.targetRecordId === recordId &&
|
||||
item.targetObjectMetadataId === objectMetadataItem.id,
|
||||
)
|
||||
: undefined;
|
||||
const foundNavigationMenuItem = [
|
||||
...navigationMenuItems,
|
||||
...workspaceNavigationMenuItems,
|
||||
].find(
|
||||
(item) =>
|
||||
item.targetRecordId === recordId &&
|
||||
item.targetObjectMetadataId === objectMetadataItem.id,
|
||||
);
|
||||
|
||||
const handleClick = () => {
|
||||
if (isNavigationMenuItemEnabled) {
|
||||
if (!isDefined(foundNavigationMenuItem)) {
|
||||
return;
|
||||
}
|
||||
|
||||
deleteNavigationMenuItem(foundNavigationMenuItem.id);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!isDefined(foundFavorite)) {
|
||||
if (!isDefined(foundNavigationMenuItem) || !isDefined(foundFavorite)) {
|
||||
return;
|
||||
}
|
||||
|
||||
deleteNavigationMenuItem(foundNavigationMenuItem.id);
|
||||
deleteFavorite(foundFavorite.id);
|
||||
};
|
||||
|
||||
|
||||
-4
@@ -1,5 +1,4 @@
|
||||
import { Action } from '@/action-menu/actions/components/Action';
|
||||
import { useSelectedRecordIdOrThrow } from '@/action-menu/actions/record-actions/single-record/hooks/useSelectedRecordIdOrThrow';
|
||||
import { useCommandMenu } from '@/command-menu/hooks/useCommandMenu';
|
||||
import { useContextStoreObjectMetadataItemOrThrow } from '@/context-store/hooks/useContextStoreObjectMetadataItemOrThrow';
|
||||
import { useRecordPageLayoutIdFromRecordStoreOrThrow } from '@/page-layout/hooks/useRecordPageLayoutIdFromRecordStoreOrThrow';
|
||||
@@ -7,12 +6,9 @@ import { useResetDraftPageLayoutToPersistedPageLayout } from '@/page-layout/hook
|
||||
import { useSetIsPageLayoutInEditMode } from '@/page-layout/hooks/useSetIsPageLayoutInEditMode';
|
||||
|
||||
export const CancelRecordPageLayoutSingleRecordAction = () => {
|
||||
const recordId = useSelectedRecordIdOrThrow();
|
||||
|
||||
const { objectMetadataItem } = useContextStoreObjectMetadataItemOrThrow();
|
||||
|
||||
const { pageLayoutId } = useRecordPageLayoutIdFromRecordStoreOrThrow({
|
||||
id: recordId,
|
||||
targetObjectNameSingular: objectMetadataItem.nameSingular,
|
||||
});
|
||||
|
||||
|
||||
-4
@@ -1,17 +1,13 @@
|
||||
import { Action } from '@/action-menu/actions/components/Action';
|
||||
import { useSelectedRecordIdOrThrow } from '@/action-menu/actions/record-actions/single-record/hooks/useSelectedRecordIdOrThrow';
|
||||
import { useContextStoreObjectMetadataItemOrThrow } from '@/context-store/hooks/useContextStoreObjectMetadataItemOrThrow';
|
||||
import { useRecordPageLayoutIdFromRecordStoreOrThrow } from '@/page-layout/hooks/useRecordPageLayoutIdFromRecordStoreOrThrow';
|
||||
import { useSetIsPageLayoutInEditMode } from '@/page-layout/hooks/useSetIsPageLayoutInEditMode';
|
||||
import { useResetLocationHash } from 'twenty-ui/utilities';
|
||||
|
||||
export const EditRecordPageLayoutSingleRecordAction = () => {
|
||||
const recordId = useSelectedRecordIdOrThrow();
|
||||
|
||||
const { objectMetadataItem } = useContextStoreObjectMetadataItemOrThrow();
|
||||
|
||||
const { pageLayoutId } = useRecordPageLayoutIdFromRecordStoreOrThrow({
|
||||
id: recordId,
|
||||
targetObjectNameSingular: objectMetadataItem.nameSingular,
|
||||
});
|
||||
|
||||
|
||||
+6
-4
@@ -1,22 +1,22 @@
|
||||
import { Action } from '@/action-menu/actions/components/Action';
|
||||
import { useSelectedRecordIdOrThrow } from '@/action-menu/actions/record-actions/single-record/hooks/useSelectedRecordIdOrThrow';
|
||||
import { useCommandMenu } from '@/command-menu/hooks/useCommandMenu';
|
||||
import { useContextStoreObjectMetadataItemOrThrow } from '@/context-store/hooks/useContextStoreObjectMetadataItemOrThrow';
|
||||
import { useRecordPageLayoutIdFromRecordStoreOrThrow } from '@/page-layout/hooks/useRecordPageLayoutIdFromRecordStoreOrThrow';
|
||||
import { useSaveFieldsWidgetGroups } from '@/page-layout/hooks/useSaveFieldsWidgetGroups';
|
||||
import { useSavePageLayout } from '@/page-layout/hooks/useSavePageLayout';
|
||||
import { useSetIsPageLayoutInEditMode } from '@/page-layout/hooks/useSetIsPageLayoutInEditMode';
|
||||
|
||||
export const SaveRecordPageLayoutSingleRecordAction = () => {
|
||||
const recordId = useSelectedRecordIdOrThrow();
|
||||
|
||||
const { objectMetadataItem } = useContextStoreObjectMetadataItemOrThrow();
|
||||
|
||||
const { pageLayoutId } = useRecordPageLayoutIdFromRecordStoreOrThrow({
|
||||
id: recordId,
|
||||
targetObjectNameSingular: objectMetadataItem.nameSingular,
|
||||
});
|
||||
|
||||
const { savePageLayout } = useSavePageLayout(pageLayoutId);
|
||||
const { saveFieldsWidgetGroups } = useSaveFieldsWidgetGroups({
|
||||
pageLayoutId,
|
||||
});
|
||||
|
||||
const { setIsPageLayoutInEditMode } =
|
||||
useSetIsPageLayoutInEditMode(pageLayoutId);
|
||||
@@ -27,6 +27,8 @@ export const SaveRecordPageLayoutSingleRecordAction = () => {
|
||||
const result = await savePageLayout();
|
||||
|
||||
if (result.status === 'successful') {
|
||||
await saveFieldsWidgetGroups();
|
||||
|
||||
closeCommandMenu();
|
||||
setIsPageLayoutInEditMode(false);
|
||||
}
|
||||
|
||||
+1
-1
@@ -4,8 +4,8 @@ import { type ActionConfig } from '@/action-menu/actions/types/ActionConfig';
|
||||
import { ActionScope } from '@/action-menu/actions/types/ActionScope';
|
||||
import { ActionType } from '@/action-menu/actions/types/ActionType';
|
||||
import { ActionViewType } from '@/action-menu/actions/types/ActionViewType';
|
||||
import { CommandMenuPages } from '@/command-menu/types/CommandMenuPages';
|
||||
import { msg } from '@lingui/core/macro';
|
||||
import { CommandMenuPages } from 'twenty-shared/types';
|
||||
import { IconHistory, IconSearch, IconSparkles } from 'twenty-ui/display';
|
||||
|
||||
export const RECORD_AGNOSTIC_ACTIONS_CONFIG: Record<string, ActionConfig> = {
|
||||
|
||||
+2
-1
@@ -218,10 +218,11 @@ describe('useRelatedRecordActions', () => {
|
||||
expect(result.current['create-related-company'].position).toBe(19);
|
||||
});
|
||||
|
||||
it('should filter out system fields', () => {
|
||||
it('should filter out hidden system fields', () => {
|
||||
const fields = [
|
||||
{
|
||||
type: 'RELATION',
|
||||
name: 'position',
|
||||
relation: {
|
||||
type: 'ONE_TO_MANY',
|
||||
targetObjectMetadata: {
|
||||
|
||||
+2
-1
@@ -6,6 +6,7 @@ import { ActionViewType } from '@/action-menu/actions/types/ActionViewType';
|
||||
import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems';
|
||||
import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular';
|
||||
import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
||||
import { isHiddenSystemField } from '@/object-metadata/utils/isHiddenSystemField';
|
||||
import { isRecordReadOnly } from '@/object-record/read-only/utils/isRecordReadOnly';
|
||||
import { msg } from '@lingui/core/macro';
|
||||
import React from 'react';
|
||||
@@ -35,7 +36,7 @@ export const useRelatedRecordActions = ({
|
||||
(field) =>
|
||||
field.type === 'RELATION' &&
|
||||
field.relation?.type === 'ONE_TO_MANY' &&
|
||||
!field.isSystem,
|
||||
!isHiddenSystemField(field),
|
||||
);
|
||||
|
||||
let currentPosition = startPosition;
|
||||
|
||||
+2
-1
@@ -16,6 +16,7 @@ import { SelectableListItem } from '@/ui/layout/selectable-list/components/Selec
|
||||
import { selectedItemIdComponentState } from '@/ui/layout/selectable-list/states/selectedItemIdComponentState';
|
||||
import { useAvailableComponentInstanceIdOrThrow } from '@/ui/utilities/state/component-state/hooks/useAvailableComponentInstanceIdOrThrow';
|
||||
import { useRecoilComponentValue } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValue';
|
||||
import { useRecoilComponentValueV2 } from '@/ui/utilities/state/jotai/hooks/useRecoilComponentValueV2';
|
||||
import styled from '@emotion/styled';
|
||||
import { useLingui } from '@lingui/react/macro';
|
||||
import { useContext } from 'react';
|
||||
@@ -61,7 +62,7 @@ export const RecordIndexActionMenuDropdown = () => {
|
||||
'more-actions',
|
||||
];
|
||||
|
||||
const selectedItemId = useRecoilComponentValue(
|
||||
const selectedItemId = useRecoilComponentValueV2(
|
||||
selectedItemIdComponentState,
|
||||
dropdownId,
|
||||
);
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user