Compare commits
127
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
60a203b371 | ||
|
|
79529a7a26 | ||
|
|
3c3a4daeb2 | ||
|
|
6926aa3c25 | ||
|
|
ad15eb371b | ||
|
|
0d46d98943 | ||
|
|
c206e2eee0 | ||
|
|
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 | ||
|
|
7ec4508d5f | ||
|
|
a05a9c8f79 | ||
|
|
ce1ffa8550 | ||
|
|
2cc3c75c7e | ||
|
|
9733ff1b8e | ||
|
|
e4075caa65 | ||
|
|
c3781e87cc | ||
|
|
e9b5cb830c | ||
|
|
e40c758aa6 | ||
|
|
53c314d0fa | ||
|
|
618df704e6 | ||
|
|
058489b5cc | ||
|
|
3bd431e95d | ||
|
|
f4a61f26c0 | ||
|
|
8e6b267ff3 | ||
|
|
88146c2170 | ||
|
|
3706da9bcb | ||
|
|
9bac8f15d4 | ||
|
|
7332379d26 | ||
|
|
2455c859b4 | ||
|
|
e3753bf822 | ||
|
|
f3faa11dd2 | ||
|
|
477fbc0865 | ||
|
|
08a3d983cb | ||
|
|
ee15e034b5 | ||
|
|
b7274da8fa | ||
|
|
4a485aecb0 | ||
|
|
5ae1d94f23 | ||
|
|
015ccbf0a7 | ||
|
|
3d362e6e01 | ||
|
|
d7f025157b | ||
|
|
98482f3a01 | ||
|
|
171efe2a19 | ||
|
|
7512b9f9bb | ||
|
|
c0cc0689d6 | ||
|
|
0891886aa0 | ||
|
|
f768bbe512 | ||
|
|
610c0ebc9d | ||
|
|
e4aad7751f | ||
|
|
7c5a13852b | ||
|
|
163c1175cb | ||
|
|
963f2de864 | ||
|
|
e3fcff00b0 | ||
|
|
b4e924b671 | ||
|
|
63a3f93a78 | ||
|
|
8938dd637f | ||
|
|
20977428a1 | ||
|
|
347298902d | ||
|
|
5750c9be0c | ||
|
|
08feb6f651 | ||
|
|
c9c3b2b691 | ||
|
|
09e1684300 | ||
|
|
e80e9a6a25 | ||
|
|
c2fe18af53 | ||
|
|
2b702b2b45 | ||
|
|
dc167b2d3d | ||
|
|
1e6c5b57b2 | ||
|
|
3516be2cf4 | ||
|
|
9477bb3677 | ||
|
|
aac032e517 | ||
|
|
5544b5dcfe | ||
|
|
8244610bdc | ||
|
|
e3db73ef46 | ||
|
|
7523143f12 | ||
|
|
cfc4e0e343 | ||
|
|
c3d565f266 | ||
|
|
2b7b05de2e | ||
|
|
4b3c58e013 | ||
|
|
c775d65952 | ||
|
|
b80146c890 | ||
|
|
5604cdbb4b |
@@ -56,7 +56,7 @@ Follow these skills in order:
|
||||
- Create TypeORM entity (extends `SyncableEntity`)
|
||||
- Define flat entity types
|
||||
- Define action types (universal + flat)
|
||||
- Register in 4 central constants
|
||||
- Register in 5 central constants
|
||||
|
||||
**Why first:** Everything else depends on these types
|
||||
|
||||
@@ -177,9 +177,12 @@ packages/twenty-server/src/engine/metadata-modules/
|
||||
│ ├── services/
|
||||
│ └── utils/
|
||||
└── flat-entity/constant/ # Step 1 (central registries)
|
||||
├── all-entity-properties-configuration-by-metadata-name.constant.ts
|
||||
├── all-one-to-many-metadata-relations.constant.ts
|
||||
├── all-many-to-one-metadata-foreign-key.constant.ts
|
||||
└── all-many-to-one-metadata-relations.constant.ts
|
||||
|
||||
packages/twenty-server/src/engine/workspace-manager/workspace-migration/
|
||||
├── universal-flat-entity/constants/ # Step 1
|
||||
├── workspace-migration-builder/ # Step 3
|
||||
│ ├── builders/my-entity/
|
||||
│ └── validators/services/
|
||||
@@ -192,7 +195,7 @@ packages/twenty-server/src/engine/workspace-manager/workspace-migration/
|
||||
Before considering complete:
|
||||
- [ ] All 6 guides completed
|
||||
- [ ] TypeORM entity extends `SyncableEntity`
|
||||
- [ ] All constants registered (4 central registries)
|
||||
- [ ] All constants registered (5 central registries)
|
||||
- [ ] Cache service with correct decorator
|
||||
- [ ] Transform utils return universal flat entities
|
||||
- [ ] Validator never throws/mutates
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
name: syncable-entity-types-and-constants
|
||||
description: Define types, entities, and central constant registrations for syncable entities in Twenty's workspace migration system. Use when creating new syncable entities, defining TypeORM entities, flat entity types, or registering in central constants (ALL_ENTITY_PROPERTIES_CONFIGURATION_BY_METADATA_NAME, ALL_METADATA_RELATIONS, ALL_UNIVERSAL_METADATA_RELATIONS).
|
||||
description: Define types, entities, and central constant registrations for syncable entities in Twenty's workspace migration system. Use when creating new syncable entities, defining TypeORM entities, flat entity types, or registering in central constants (ALL_ENTITY_PROPERTIES_CONFIGURATION_BY_METADATA_NAME, ALL_ONE_TO_MANY_METADATA_RELATIONS, ALL_MANY_TO_ONE_METADATA_FOREIGN_KEY, ALL_MANY_TO_ONE_METADATA_RELATIONS).
|
||||
---
|
||||
|
||||
# Syncable Entity: Types & Constants (Step 1/6)
|
||||
@@ -18,7 +18,7 @@ This step creates:
|
||||
2. TypeORM entity (extends `SyncableEntity`)
|
||||
3. Flat entity types
|
||||
4. Action types (universal + flat)
|
||||
5. Central constant registrations (4 constants)
|
||||
5. Central constant registrations (5 constants)
|
||||
|
||||
---
|
||||
|
||||
@@ -225,61 +225,91 @@ export const ALL_ENTITY_PROPERTIES_CONFIGURATION_BY_METADATA_NAME = {
|
||||
- `toStringify: true` → JSONB/object property (needs JSON serialization)
|
||||
- `universalProperty` → Maps to universal version (for foreign keys & JSONB with `SerializedRelation`)
|
||||
|
||||
### 6c. ALL_METADATA_RELATIONS
|
||||
### 6c. ALL_ONE_TO_MANY_METADATA_RELATIONS
|
||||
|
||||
**File**: `src/engine/metadata-modules/flat-entity/constant/all-metadata-relations.constant.ts`
|
||||
**File**: `src/engine/metadata-modules/flat-entity/constant/all-one-to-many-metadata-relations.constant.ts`
|
||||
|
||||
This constant is **type-checked** — values for `metadataName`, `flatEntityForeignKeyAggregator`, and `universalFlatEntityForeignKeyAggregator` are derived from entity type definitions. The aggregator names follow the pattern: remove trailing `'s'` from the relation property name, then append `Ids` or `UniversalIdentifiers`.
|
||||
|
||||
```typescript
|
||||
export const ALL_METADATA_RELATIONS = {
|
||||
export const ALL_ONE_TO_MANY_METADATA_RELATIONS = {
|
||||
// ... existing entries
|
||||
myEntity: {
|
||||
manyToOne: {
|
||||
workspace: null,
|
||||
application: null,
|
||||
parentEntity: {
|
||||
metadataName: 'parentEntity',
|
||||
flatEntityForeignKeyAggregator: 'myEntityIds',
|
||||
foreignKey: 'parentEntityId',
|
||||
isNullable: false,
|
||||
},
|
||||
// If myEntity has a `childEntities: ChildEntityEntity[]` property:
|
||||
childEntities: {
|
||||
metadataName: 'childEntity',
|
||||
flatEntityForeignKeyAggregator: 'childEntityIds',
|
||||
universalFlatEntityForeignKeyAggregator: 'childEntityUniversalIdentifiers',
|
||||
},
|
||||
oneToMany: {
|
||||
childEntities: { metadataName: 'childEntity' },
|
||||
},
|
||||
// Only if JSONB contains SerializedRelation fields
|
||||
serializedRelations: {
|
||||
fieldMetadata: true,
|
||||
// null for relations to non-syncable entities
|
||||
someNonSyncableRelation: null,
|
||||
},
|
||||
} as const;
|
||||
```
|
||||
|
||||
### 6d. ALL_MANY_TO_ONE_METADATA_FOREIGN_KEY
|
||||
|
||||
**File**: `src/engine/metadata-modules/flat-entity/constant/all-many-to-one-metadata-foreign-key.constant.ts`
|
||||
|
||||
Low-level primitive constant. Only contains `foreignKey` — the column name ending in `Id` that stores the foreign key. Type-checked against entity properties.
|
||||
|
||||
```typescript
|
||||
export const ALL_MANY_TO_ONE_METADATA_FOREIGN_KEY = {
|
||||
// ... existing entries
|
||||
myEntity: {
|
||||
workspace: null,
|
||||
application: null,
|
||||
parentEntity: {
|
||||
foreignKey: 'parentEntityId',
|
||||
},
|
||||
},
|
||||
} as const;
|
||||
```
|
||||
|
||||
### 6d. ALL_UNIVERSAL_METADATA_RELATIONS
|
||||
### 6e. ALL_MANY_TO_ONE_METADATA_RELATIONS
|
||||
|
||||
**File**: `src/engine/workspace-manager/workspace-migration/universal-flat-entity/constants/all-universal-metadata-relations.constant.ts`
|
||||
**File**: `src/engine/metadata-modules/flat-entity/constant/all-many-to-one-metadata-relations.constant.ts`
|
||||
|
||||
Derived from both `ALL_MANY_TO_ONE_METADATA_FOREIGN_KEY` (for `foreignKey` type and `universalForeignKey` derivation) and `ALL_ONE_TO_MANY_METADATA_RELATIONS` (for `inverseOneToManyProperty` key constraint). This is the main constant consumed by utils and optimistic tooling.
|
||||
|
||||
```typescript
|
||||
export const ALL_UNIVERSAL_METADATA_RELATIONS = {
|
||||
export const ALL_MANY_TO_ONE_METADATA_RELATIONS = {
|
||||
// ... existing entries
|
||||
myEntity: {
|
||||
manyToOne: {
|
||||
workspace: null,
|
||||
application: null,
|
||||
parentEntity: {
|
||||
metadataName: 'parentEntity',
|
||||
foreignKey: 'parentEntityId',
|
||||
universalForeignKey: 'parentEntityUniversalIdentifier',
|
||||
universalFlatEntityForeignKeyAggregator: 'myEntityUniversalIdentifiers',
|
||||
isNullable: false,
|
||||
},
|
||||
},
|
||||
oneToMany: {
|
||||
childEntities: { metadataName: 'childEntity' },
|
||||
workspace: null,
|
||||
application: null,
|
||||
parentEntity: {
|
||||
metadataName: 'parentEntity',
|
||||
foreignKey: 'parentEntityId',
|
||||
inverseOneToManyProperty: 'myEntities', // key in ALL_ONE_TO_MANY_METADATA_RELATIONS['parentEntity'], or null if no inverse
|
||||
isNullable: false,
|
||||
universalForeignKey: 'parentEntityUniversalIdentifier',
|
||||
},
|
||||
},
|
||||
} as const;
|
||||
```
|
||||
|
||||
**Derivation dependency graph**:
|
||||
|
||||
```
|
||||
ALL_MANY_TO_ONE_METADATA_FOREIGN_KEY ALL_ONE_TO_MANY_METADATA_RELATIONS
|
||||
(foreignKey only) (metadataName, aggregators)
|
||||
│ │
|
||||
│ FK type + universalFK derivation │ inverseOneToManyProperty keys
|
||||
│ │
|
||||
└────────────────┬───────────────────────┘
|
||||
▼
|
||||
ALL_MANY_TO_ONE_METADATA_RELATIONS
|
||||
(metadataName, foreignKey, inverseOneToManyProperty,
|
||||
isNullable, universalForeignKey)
|
||||
```
|
||||
|
||||
**Rules**:
|
||||
- `workspace: null`, `application: null` — always present, always null (non-syncable relations)
|
||||
- `inverseOneToManyProperty` — must be a key in `ALL_ONE_TO_MANY_METADATA_RELATIONS[targetMetadataName]`, or `null` if the target entity doesn't expose an inverse one-to-many relation
|
||||
- `universalForeignKey` — derived from `foreignKey` by replacing the `Id` suffix with `UniversalIdentifier`
|
||||
- Optimistic utils resolve `flatEntityForeignKeyAggregator` / `universalFlatEntityForeignKeyAggregator` at runtime by looking up `inverseOneToManyProperty` in `ALL_ONE_TO_MANY_METADATA_RELATIONS`
|
||||
|
||||
---
|
||||
|
||||
## Checklist
|
||||
@@ -295,8 +325,9 @@ Before moving to Step 2:
|
||||
- [ ] Universal and flat action types defined
|
||||
- [ ] Registered in `AllFlatEntityTypesByMetadataName`
|
||||
- [ ] Registered in `ALL_ENTITY_PROPERTIES_CONFIGURATION_BY_METADATA_NAME`
|
||||
- [ ] Registered in `ALL_METADATA_RELATIONS`
|
||||
- [ ] Registered in `ALL_UNIVERSAL_METADATA_RELATIONS`
|
||||
- [ ] Registered in `ALL_ONE_TO_MANY_METADATA_RELATIONS` (if entity has one-to-many relations)
|
||||
- [ ] Registered in `ALL_MANY_TO_ONE_METADATA_FOREIGN_KEY`
|
||||
- [ ] Registered in `ALL_MANY_TO_ONE_METADATA_RELATIONS`
|
||||
- [ ] TypeScript compiles without errors
|
||||
|
||||
---
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -118,6 +118,7 @@
|
||||
"outputs": ["{projectRoot}/coverage"],
|
||||
"options": {
|
||||
"jestConfig": "{projectRoot}/jest.config.mjs",
|
||||
"silent": true,
|
||||
"coverage": true,
|
||||
"coverageReporters": ["text-summary"],
|
||||
"cacheDirectory": "../../.cache/jest/{projectRoot}"
|
||||
|
||||
+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",
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
Create Twenty App is the official scaffolding CLI for building apps on top of [Twenty CRM](https://twenty.com). It sets up a ready‑to‑run project that works seamlessly with the [twenty-sdk](https://www.npmjs.com/package/twenty-sdk).
|
||||
|
||||
- Zero‑config project bootstrap
|
||||
- Preconfigured scripts for auth, dev mode (watch & sync), generate, uninstall, and function management
|
||||
- Preconfigured scripts for auth, dev mode (watch & sync), uninstall, and function management
|
||||
- Strong TypeScript support and typed client generation
|
||||
|
||||
## Documentation
|
||||
@@ -44,10 +44,8 @@ yarn twenty auth:login
|
||||
# Add a new entity to your application (guided)
|
||||
yarn twenty entity:add
|
||||
|
||||
# Generate a typed Twenty client and workspace entity types
|
||||
yarn twenty app:generate
|
||||
|
||||
# Start dev mode: watches, builds, and syncs local changes to your workspace
|
||||
# (also auto-generates a typed API client in node_modules/twenty-sdk/generated)
|
||||
yarn twenty app:dev
|
||||
|
||||
# Watch your application's function logs
|
||||
@@ -56,25 +54,67 @@ yarn twenty function:logs
|
||||
# Execute a function with a JSON payload
|
||||
yarn twenty function:execute -n my-function -p '{"key": "value"}'
|
||||
|
||||
# Execute the post-install function
|
||||
yarn twenty function:execute --postInstall
|
||||
|
||||
# Uninstall the application from the current workspace
|
||||
yarn twenty app:uninstall
|
||||
```
|
||||
|
||||
## Scaffolding modes
|
||||
|
||||
Control which example files are included when creating a new app:
|
||||
|
||||
| Flag | Behavior |
|
||||
|------|----------|
|
||||
| `-e, --exhaustive` | **(default)** Creates all example files without prompting |
|
||||
| `-m, --minimal` | Creates only core files (`application-config.ts` and `default-role.ts`) |
|
||||
| `-i, --interactive` | Prompts you to select which examples to include |
|
||||
|
||||
```bash
|
||||
# Default: all examples included
|
||||
npx create-twenty-app@latest my-app
|
||||
|
||||
# Minimal: only core files
|
||||
npx create-twenty-app@latest my-app -m
|
||||
|
||||
# Interactive: choose which examples to include
|
||||
npx create-twenty-app@latest my-app -i
|
||||
```
|
||||
|
||||
In interactive mode, you can pick from:
|
||||
- **Example object** — a custom CRM object definition (`objects/example-object.ts`)
|
||||
- **Example field** — a custom field on the example object (`fields/example-field.ts`)
|
||||
- **Example logic function** — a server-side handler with HTTP trigger (`logic-functions/hello-world.ts`)
|
||||
- **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
|
||||
- A minimal app structure ready for Twenty with example files:
|
||||
- `application-config.ts` - Application metadata configuration
|
||||
- `roles/default-role.ts` - Default role for logic functions
|
||||
- `logic-functions/hello-world.ts` - Example logic function with HTTP trigger
|
||||
- `front-components/hello-world.tsx` - Example front component
|
||||
- TypeScript configuration
|
||||
|
||||
**Core files (always created):**
|
||||
- `application-config.ts` — Application metadata configuration
|
||||
- `roles/default-role.ts` — Default role for logic functions
|
||||
- `logic-functions/post-install.ts` — Post-install logic function (runs after app installation)
|
||||
- TypeScript configuration, ESLint, package.json, .gitignore
|
||||
- A prewired `twenty` script that delegates to the `twenty` CLI from twenty-sdk
|
||||
|
||||
**Example files (controlled by scaffolding mode):**
|
||||
- `objects/example-object.ts` — Example custom object with a text field
|
||||
- `fields/example-field.ts` — Example standalone field extending the example object
|
||||
- `logic-functions/hello-world.ts` — Example logic function with HTTP trigger
|
||||
- `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).
|
||||
- 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.
|
||||
- Keep your types up‑to‑date using `yarn twenty app:generate`.
|
||||
- Types are auto‑generated by `yarn twenty app:dev` and stored in `node_modules/twenty-sdk/generated`.
|
||||
|
||||
|
||||
## Publish your application
|
||||
@@ -103,7 +143,7 @@ Our team reviews contributions for quality, security, and reusability before mer
|
||||
|
||||
## Troubleshooting
|
||||
- Auth prompts not appearing: run `yarn twenty auth:login` again and verify the API key permissions.
|
||||
- Types not generated: ensure `yarn twenty app:generate` runs without errors, then re‑start `yarn twenty app:dev`.
|
||||
- Types not generated: ensure `yarn twenty app:dev` is running — it auto‑generates the typed client.
|
||||
|
||||
## Contributing
|
||||
- See our [GitHub](https://github.com/twentyhq/twenty)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "create-twenty-app",
|
||||
"version": "0.6.0-alpha",
|
||||
"version": "0.6.0",
|
||||
"description": "Command-line interface to create Twenty application",
|
||||
"main": "dist/cli.cjs",
|
||||
"bin": "dist/cli.cjs",
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
import chalk from 'chalk';
|
||||
import { Command, CommanderError } from 'commander';
|
||||
import { CreateAppCommand } from '@/create-app.command';
|
||||
import { type ScaffoldingMode } from '@/types/scaffolding-options';
|
||||
import packageJson from '../package.json';
|
||||
|
||||
const program = new Command(packageJson.name)
|
||||
@@ -12,18 +13,58 @@ const program = new Command(packageJson.name)
|
||||
'Output the current version of create-twenty-app.',
|
||||
)
|
||||
.argument('[directory]')
|
||||
.option('-e, --exhaustive', 'Create all example entities (default)')
|
||||
.option(
|
||||
'-m, --minimal',
|
||||
'Create only core entities (application-config and default-role)',
|
||||
)
|
||||
.option(
|
||||
'-i, --interactive',
|
||||
'Interactively choose which entity examples to include',
|
||||
)
|
||||
.helpOption('-h, --help', 'Display this help message.')
|
||||
.action(async (directory?: string) => {
|
||||
if (directory && !/^[a-z0-9-]+$/.test(directory)) {
|
||||
console.error(
|
||||
chalk.red(
|
||||
`Invalid directory "${directory}". Must contain only lowercase letters, numbers, and hyphens`,
|
||||
),
|
||||
);
|
||||
process.exit(1);
|
||||
}
|
||||
await new CreateAppCommand().execute(directory);
|
||||
});
|
||||
.action(
|
||||
async (
|
||||
directory?: string,
|
||||
options?: {
|
||||
exhaustive?: boolean;
|
||||
minimal?: boolean;
|
||||
interactive?: boolean;
|
||||
},
|
||||
) => {
|
||||
const modeFlags = [
|
||||
options?.exhaustive,
|
||||
options?.minimal,
|
||||
options?.interactive,
|
||||
].filter(Boolean);
|
||||
|
||||
if (modeFlags.length > 1) {
|
||||
console.error(
|
||||
chalk.red(
|
||||
'Error: --exhaustive, --minimal, and --interactive are mutually exclusive.',
|
||||
),
|
||||
);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
if (directory && !/^[a-z0-9-]+$/.test(directory)) {
|
||||
console.error(
|
||||
chalk.red(
|
||||
`Invalid directory "${directory}". Must contain only lowercase letters, numbers, and hyphens`,
|
||||
),
|
||||
);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
const mode: ScaffoldingMode = options?.minimal
|
||||
? 'minimal'
|
||||
: options?.interactive
|
||||
? 'interactive'
|
||||
: 'exhaustive';
|
||||
|
||||
await new CreateAppCommand().execute(directory, mode);
|
||||
},
|
||||
);
|
||||
|
||||
program.exitOverride();
|
||||
|
||||
|
||||
@@ -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.
|
||||
@@ -29,14 +29,17 @@ yarn twenty auth:switch # Switch default workspace
|
||||
yarn twenty auth:list # List all configured workspaces
|
||||
|
||||
# Application
|
||||
yarn twenty app:dev # Start dev mode (watch, build, and sync)
|
||||
yarn twenty entity:add # Add a new entity (function, front-component, object, role)
|
||||
yarn twenty app:generate # Generate typed Twenty client
|
||||
yarn twenty app:dev # Start dev mode (watch, build, sync, and auto-generate typed client)
|
||||
yarn twenty entity:add # Add a new entity (object, field, function, front-component, role, view, navigation-menu-item)
|
||||
yarn twenty function:logs # Stream function logs
|
||||
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:
|
||||
|
||||
@@ -8,14 +8,24 @@ import inquirer from 'inquirer';
|
||||
import kebabCase from 'lodash.kebabcase';
|
||||
import * as path from 'path';
|
||||
|
||||
import {
|
||||
type ExampleOptions,
|
||||
type ScaffoldingMode,
|
||||
} from '@/types/scaffolding-options';
|
||||
|
||||
const CURRENT_EXECUTION_DIRECTORY = process.env.INIT_CWD || process.cwd();
|
||||
|
||||
export class CreateAppCommand {
|
||||
async execute(directory?: string): Promise<void> {
|
||||
async execute(
|
||||
directory?: string,
|
||||
mode: ScaffoldingMode = 'exhaustive',
|
||||
): Promise<void> {
|
||||
try {
|
||||
const { appName, appDisplayName, appDirectory, appDescription } =
|
||||
await this.getAppInfos(directory);
|
||||
|
||||
const exampleOptions = await this.resolveExampleOptions(mode);
|
||||
|
||||
await this.validateDirectory(appDirectory);
|
||||
|
||||
this.logCreationInfo({ appDirectory, appName });
|
||||
@@ -27,6 +37,7 @@ export class CreateAppCommand {
|
||||
appDisplayName,
|
||||
appDescription,
|
||||
appDirectory,
|
||||
exampleOptions,
|
||||
});
|
||||
|
||||
await install(appDirectory);
|
||||
@@ -92,6 +103,103 @@ export class CreateAppCommand {
|
||||
return { appName, appDisplayName, appDirectory, appDescription };
|
||||
}
|
||||
|
||||
private async resolveExampleOptions(
|
||||
mode: ScaffoldingMode,
|
||||
): Promise<ExampleOptions> {
|
||||
if (mode === 'minimal') {
|
||||
return {
|
||||
includeExampleObject: false,
|
||||
includeExampleField: false,
|
||||
includeExampleLogicFunction: false,
|
||||
includeExampleFrontComponent: false,
|
||||
includeExampleView: false,
|
||||
includeExampleNavigationMenuItem: false,
|
||||
includeExampleSkill: false,
|
||||
};
|
||||
}
|
||||
|
||||
if (mode === 'exhaustive') {
|
||||
return {
|
||||
includeExampleObject: true,
|
||||
includeExampleField: true,
|
||||
includeExampleLogicFunction: true,
|
||||
includeExampleFrontComponent: true,
|
||||
includeExampleView: true,
|
||||
includeExampleNavigationMenuItem: true,
|
||||
includeExampleSkill: true,
|
||||
};
|
||||
}
|
||||
|
||||
const { selectedExamples } = await inquirer.prompt([
|
||||
{
|
||||
type: 'checkbox',
|
||||
name: 'selectedExamples',
|
||||
message: 'Select which example files to include:',
|
||||
choices: [
|
||||
{
|
||||
name: 'Example object (custom object definition)',
|
||||
value: 'object',
|
||||
checked: true,
|
||||
},
|
||||
{
|
||||
name: 'Example field (custom field on the example object)',
|
||||
value: 'field',
|
||||
checked: true,
|
||||
},
|
||||
{
|
||||
name: 'Example logic function (server-side handler)',
|
||||
value: 'logicFunction',
|
||||
checked: true,
|
||||
},
|
||||
{
|
||||
name: 'Example front component (React UI component)',
|
||||
value: 'frontComponent',
|
||||
checked: true,
|
||||
},
|
||||
{
|
||||
name: 'Example view (saved view for the example object)',
|
||||
value: 'view',
|
||||
checked: true,
|
||||
},
|
||||
{
|
||||
name: 'Example navigation menu item (sidebar link)',
|
||||
value: 'navigationMenuItem',
|
||||
checked: true,
|
||||
},
|
||||
{
|
||||
name: 'Example skill (AI agent skill definition)',
|
||||
value: 'skill',
|
||||
checked: true,
|
||||
},
|
||||
],
|
||||
},
|
||||
]);
|
||||
|
||||
const includeField = selectedExamples.includes('field');
|
||||
const includeView = selectedExamples.includes('view');
|
||||
const includeObject =
|
||||
selectedExamples.includes('object') || includeField || includeView;
|
||||
|
||||
if ((includeField || includeView) && !selectedExamples.includes('object')) {
|
||||
console.log(
|
||||
chalk.yellow(
|
||||
'Note: Example object auto-included because example field/view depends on it.',
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
return {
|
||||
includeExampleObject: includeObject,
|
||||
includeExampleField: includeField,
|
||||
includeExampleLogicFunction: selectedExamples.includes('logicFunction'),
|
||||
includeExampleFrontComponent: selectedExamples.includes('frontComponent'),
|
||||
includeExampleView: includeView,
|
||||
includeExampleNavigationMenuItem:
|
||||
selectedExamples.includes('navigationMenuItem'),
|
||||
includeExampleSkill: selectedExamples.includes('skill'),
|
||||
};
|
||||
}
|
||||
|
||||
private async validateDirectory(appDirectory: string): Promise<void> {
|
||||
if (!(await fs.pathExists(appDirectory))) {
|
||||
return;
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
export type ScaffoldingMode = 'exhaustive' | 'minimal' | 'interactive';
|
||||
|
||||
export type ExampleOptions = {
|
||||
includeExampleObject: boolean;
|
||||
includeExampleField: boolean;
|
||||
includeExampleLogicFunction: boolean;
|
||||
includeExampleFrontComponent: boolean;
|
||||
includeExampleView: boolean;
|
||||
includeExampleNavigationMenuItem: boolean;
|
||||
includeExampleSkill: boolean;
|
||||
};
|
||||
@@ -1,7 +1,9 @@
|
||||
import * as fs from 'fs-extra';
|
||||
import { join } from 'path';
|
||||
import { tmpdir } from 'os';
|
||||
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', () => {
|
||||
@@ -15,6 +17,26 @@ jest.mock('fs-extra', () => {
|
||||
const APPLICATION_FILE_NAME = 'application-config.ts';
|
||||
const DEFAULT_ROLE_FILE_NAME = 'default-role.ts';
|
||||
|
||||
const ALL_EXAMPLES: ExampleOptions = {
|
||||
includeExampleObject: true,
|
||||
includeExampleField: true,
|
||||
includeExampleLogicFunction: true,
|
||||
includeExampleFrontComponent: true,
|
||||
includeExampleView: true,
|
||||
includeExampleNavigationMenuItem: true,
|
||||
includeExampleSkill: true,
|
||||
};
|
||||
|
||||
const NO_EXAMPLES: ExampleOptions = {
|
||||
includeExampleObject: false,
|
||||
includeExampleField: false,
|
||||
includeExampleSkill: false,
|
||||
includeExampleLogicFunction: false,
|
||||
includeExampleFrontComponent: false,
|
||||
includeExampleView: false,
|
||||
includeExampleNavigationMenuItem: false,
|
||||
};
|
||||
|
||||
describe('copyBaseApplicationProject', () => {
|
||||
let testAppDirectory: string;
|
||||
|
||||
@@ -41,6 +63,7 @@ describe('copyBaseApplicationProject', () => {
|
||||
appDisplayName: 'My Test App',
|
||||
appDescription: 'A test application',
|
||||
appDirectory: testAppDirectory,
|
||||
exampleOptions: ALL_EXAMPLES,
|
||||
});
|
||||
|
||||
// Verify src/ folder exists
|
||||
@@ -62,6 +85,7 @@ describe('copyBaseApplicationProject', () => {
|
||||
appDisplayName: 'My Test App',
|
||||
appDescription: 'A test application',
|
||||
appDirectory: testAppDirectory,
|
||||
exampleOptions: ALL_EXAMPLES,
|
||||
});
|
||||
|
||||
const packageJsonPath = join(testAppDirectory, 'package.json');
|
||||
@@ -80,6 +104,7 @@ describe('copyBaseApplicationProject', () => {
|
||||
appDisplayName: 'My Test App',
|
||||
appDescription: 'A test application',
|
||||
appDirectory: testAppDirectory,
|
||||
exampleOptions: ALL_EXAMPLES,
|
||||
});
|
||||
|
||||
const gitignorePath = join(testAppDirectory, '.gitignore');
|
||||
@@ -87,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 () => {
|
||||
@@ -96,6 +121,7 @@ describe('copyBaseApplicationProject', () => {
|
||||
appDisplayName: 'My Test App',
|
||||
appDescription: 'A test application',
|
||||
appDirectory: testAppDirectory,
|
||||
exampleOptions: ALL_EXAMPLES,
|
||||
});
|
||||
|
||||
const yarnLockPath = join(testAppDirectory, 'yarn.lock');
|
||||
@@ -111,6 +137,7 @@ describe('copyBaseApplicationProject', () => {
|
||||
appDisplayName: 'My Test App',
|
||||
appDescription: 'A test application',
|
||||
appDirectory: testAppDirectory,
|
||||
exampleOptions: ALL_EXAMPLES,
|
||||
});
|
||||
|
||||
const appConfigPath = join(testAppDirectory, 'src', APPLICATION_FILE_NAME);
|
||||
@@ -148,6 +175,7 @@ describe('copyBaseApplicationProject', () => {
|
||||
appDisplayName: 'My Test App',
|
||||
appDescription: 'A test application',
|
||||
appDirectory: testAppDirectory,
|
||||
exampleOptions: ALL_EXAMPLES,
|
||||
});
|
||||
|
||||
const roleConfigPath = join(
|
||||
@@ -192,6 +220,7 @@ describe('copyBaseApplicationProject', () => {
|
||||
appDisplayName: 'My Test App',
|
||||
appDescription: 'A test application',
|
||||
appDirectory: testAppDirectory,
|
||||
exampleOptions: ALL_EXAMPLES,
|
||||
});
|
||||
|
||||
// Verify fs.copy was called with correct destination
|
||||
@@ -208,6 +237,7 @@ describe('copyBaseApplicationProject', () => {
|
||||
appDisplayName: 'My Test App',
|
||||
appDescription: '',
|
||||
appDirectory: testAppDirectory,
|
||||
exampleOptions: ALL_EXAMPLES,
|
||||
});
|
||||
|
||||
const appConfigPath = join(testAppDirectory, 'src', APPLICATION_FILE_NAME);
|
||||
@@ -225,6 +255,7 @@ describe('copyBaseApplicationProject', () => {
|
||||
appDisplayName: 'App One',
|
||||
appDescription: 'First app',
|
||||
appDirectory: firstAppDir,
|
||||
exampleOptions: ALL_EXAMPLES,
|
||||
});
|
||||
|
||||
// Create second app
|
||||
@@ -235,6 +266,7 @@ describe('copyBaseApplicationProject', () => {
|
||||
appDisplayName: 'App Two',
|
||||
appDescription: 'Second app',
|
||||
appDirectory: secondAppDir,
|
||||
exampleOptions: ALL_EXAMPLES,
|
||||
});
|
||||
|
||||
// Read both app configs
|
||||
@@ -267,6 +299,7 @@ describe('copyBaseApplicationProject', () => {
|
||||
appDisplayName: 'App One',
|
||||
appDescription: 'First app',
|
||||
appDirectory: firstAppDir,
|
||||
exampleOptions: ALL_EXAMPLES,
|
||||
});
|
||||
|
||||
// Create second app
|
||||
@@ -277,6 +310,7 @@ describe('copyBaseApplicationProject', () => {
|
||||
appDisplayName: 'App Two',
|
||||
appDescription: 'Second app',
|
||||
appDirectory: secondAppDir,
|
||||
exampleOptions: ALL_EXAMPLES,
|
||||
});
|
||||
|
||||
const firstRoleConfig = await fs.readFile(
|
||||
@@ -299,4 +333,347 @@ describe('copyBaseApplicationProject', () => {
|
||||
expect(secondUuid).toBeDefined();
|
||||
expect(firstUuid).not.toBe(secondUuid);
|
||||
});
|
||||
|
||||
describe('scaffolding modes', () => {
|
||||
describe('exhaustive mode (all examples)', () => {
|
||||
it('should create all example files when all options are enabled', async () => {
|
||||
await copyBaseApplicationProject({
|
||||
appName: 'my-test-app',
|
||||
appDisplayName: 'My Test App',
|
||||
appDescription: 'A test application',
|
||||
appDirectory: testAppDirectory,
|
||||
exampleOptions: ALL_EXAMPLES,
|
||||
});
|
||||
|
||||
const srcPath = join(testAppDirectory, 'src');
|
||||
|
||||
expect(
|
||||
await fs.pathExists(join(srcPath, 'objects', 'example-object.ts')),
|
||||
).toBe(true);
|
||||
expect(
|
||||
await fs.pathExists(join(srcPath, 'fields', 'example-field.ts')),
|
||||
).toBe(true);
|
||||
expect(
|
||||
await fs.pathExists(
|
||||
join(srcPath, 'logic-functions', 'hello-world.ts'),
|
||||
),
|
||||
).toBe(true);
|
||||
expect(
|
||||
await fs.pathExists(
|
||||
join(srcPath, 'front-components', 'hello-world.tsx'),
|
||||
),
|
||||
).toBe(true);
|
||||
expect(
|
||||
await fs.pathExists(join(srcPath, 'views', 'example-view.ts')),
|
||||
).toBe(true);
|
||||
expect(
|
||||
await fs.pathExists(
|
||||
join(
|
||||
srcPath,
|
||||
'navigation-menu-items',
|
||||
'example-navigation-menu-item.ts',
|
||||
),
|
||||
),
|
||||
).toBe(true);
|
||||
});
|
||||
});
|
||||
|
||||
describe('minimal mode (no examples)', () => {
|
||||
it('should create only core files when no examples are enabled', async () => {
|
||||
await copyBaseApplicationProject({
|
||||
appName: 'my-test-app',
|
||||
appDisplayName: 'My Test App',
|
||||
appDescription: 'A test application',
|
||||
appDirectory: testAppDirectory,
|
||||
exampleOptions: NO_EXAMPLES,
|
||||
});
|
||||
|
||||
const srcPath = join(testAppDirectory, 'src');
|
||||
|
||||
// Core files should exist
|
||||
expect(await fs.pathExists(join(srcPath, APPLICATION_FILE_NAME))).toBe(
|
||||
true,
|
||||
);
|
||||
expect(
|
||||
await fs.pathExists(join(srcPath, 'roles', DEFAULT_ROLE_FILE_NAME)),
|
||||
).toBe(true);
|
||||
|
||||
// Example files should not exist
|
||||
expect(
|
||||
await fs.pathExists(join(srcPath, 'objects', 'example-object.ts')),
|
||||
).toBe(false);
|
||||
expect(
|
||||
await fs.pathExists(join(srcPath, 'fields', 'example-field.ts')),
|
||||
).toBe(false);
|
||||
expect(
|
||||
await fs.pathExists(
|
||||
join(srcPath, 'logic-functions', 'hello-world.ts'),
|
||||
),
|
||||
).toBe(false);
|
||||
expect(
|
||||
await fs.pathExists(
|
||||
join(srcPath, 'front-components', 'hello-world.tsx'),
|
||||
),
|
||||
).toBe(false);
|
||||
expect(
|
||||
await fs.pathExists(join(srcPath, 'views', 'example-view.ts')),
|
||||
).toBe(false);
|
||||
expect(
|
||||
await fs.pathExists(
|
||||
join(
|
||||
srcPath,
|
||||
'navigation-menu-items',
|
||||
'example-navigation-menu-item.ts',
|
||||
),
|
||||
),
|
||||
).toBe(false);
|
||||
});
|
||||
});
|
||||
|
||||
describe('selective examples', () => {
|
||||
it('should create only front component when only that option is enabled', async () => {
|
||||
await copyBaseApplicationProject({
|
||||
appName: 'my-test-app',
|
||||
appDisplayName: 'My Test App',
|
||||
appDescription: 'A test application',
|
||||
appDirectory: testAppDirectory,
|
||||
exampleOptions: {
|
||||
includeExampleObject: false,
|
||||
includeExampleField: false,
|
||||
includeExampleSkill: false,
|
||||
includeExampleLogicFunction: false,
|
||||
includeExampleFrontComponent: true,
|
||||
includeExampleView: false,
|
||||
includeExampleNavigationMenuItem: false,
|
||||
},
|
||||
});
|
||||
|
||||
const srcPath = join(testAppDirectory, 'src');
|
||||
|
||||
expect(
|
||||
await fs.pathExists(
|
||||
join(srcPath, 'front-components', 'hello-world.tsx'),
|
||||
),
|
||||
).toBe(true);
|
||||
expect(
|
||||
await fs.pathExists(join(srcPath, 'objects', 'example-object.ts')),
|
||||
).toBe(false);
|
||||
expect(
|
||||
await fs.pathExists(join(srcPath, 'fields', 'example-field.ts')),
|
||||
).toBe(false);
|
||||
expect(
|
||||
await fs.pathExists(
|
||||
join(srcPath, 'logic-functions', 'hello-world.ts'),
|
||||
),
|
||||
).toBe(false);
|
||||
});
|
||||
|
||||
it('should create only logic function when only that option is enabled', async () => {
|
||||
await copyBaseApplicationProject({
|
||||
appName: 'my-test-app',
|
||||
appDisplayName: 'My Test App',
|
||||
appDescription: 'A test application',
|
||||
appDirectory: testAppDirectory,
|
||||
exampleOptions: {
|
||||
includeExampleObject: false,
|
||||
includeExampleSkill: false,
|
||||
includeExampleField: false,
|
||||
includeExampleLogicFunction: true,
|
||||
includeExampleFrontComponent: false,
|
||||
includeExampleView: false,
|
||||
includeExampleNavigationMenuItem: false,
|
||||
},
|
||||
});
|
||||
|
||||
const srcPath = join(testAppDirectory, 'src');
|
||||
|
||||
expect(
|
||||
await fs.pathExists(
|
||||
join(srcPath, 'logic-functions', 'hello-world.ts'),
|
||||
),
|
||||
).toBe(true);
|
||||
expect(
|
||||
await fs.pathExists(join(srcPath, 'objects', 'example-object.ts')),
|
||||
).toBe(false);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('example object', () => {
|
||||
it('should create example-object.ts with defineObject and correct structure', async () => {
|
||||
await copyBaseApplicationProject({
|
||||
appName: 'my-test-app',
|
||||
appDisplayName: 'My Test App',
|
||||
appDescription: 'A test application',
|
||||
appDirectory: testAppDirectory,
|
||||
exampleOptions: ALL_EXAMPLES,
|
||||
});
|
||||
|
||||
const objectPath = join(
|
||||
testAppDirectory,
|
||||
'src',
|
||||
'objects',
|
||||
'example-object.ts',
|
||||
);
|
||||
|
||||
expect(await fs.pathExists(objectPath)).toBe(true);
|
||||
|
||||
const content = await fs.readFile(objectPath, 'utf8');
|
||||
|
||||
expect(content).toContain(
|
||||
"import { defineObject, FieldType } from 'twenty-sdk'",
|
||||
);
|
||||
expect(content).toContain('export default defineObject({');
|
||||
expect(content).toContain(
|
||||
'export const EXAMPLE_OBJECT_UNIVERSAL_IDENTIFIER',
|
||||
);
|
||||
expect(content).toContain('export const NAME_FIELD_UNIVERSAL_IDENTIFIER');
|
||||
expect(content).toContain("nameSingular: 'exampleItem'");
|
||||
expect(content).toContain("namePlural: 'exampleItems'");
|
||||
expect(content).toContain('FieldType.TEXT');
|
||||
expect(content).toContain(
|
||||
'labelIdentifierFieldMetadataUniversalIdentifier: NAME_FIELD_UNIVERSAL_IDENTIFIER',
|
||||
);
|
||||
});
|
||||
|
||||
it('should generate unique UUIDs for example objects across apps', async () => {
|
||||
const firstAppDir = join(testAppDirectory, 'app1');
|
||||
await fs.ensureDir(firstAppDir);
|
||||
await copyBaseApplicationProject({
|
||||
appName: 'app-one',
|
||||
appDisplayName: 'App One',
|
||||
appDescription: 'First app',
|
||||
appDirectory: firstAppDir,
|
||||
exampleOptions: ALL_EXAMPLES,
|
||||
});
|
||||
|
||||
const secondAppDir = join(testAppDirectory, 'app2');
|
||||
await fs.ensureDir(secondAppDir);
|
||||
await copyBaseApplicationProject({
|
||||
appName: 'app-two',
|
||||
appDisplayName: 'App Two',
|
||||
appDescription: 'Second app',
|
||||
appDirectory: secondAppDir,
|
||||
exampleOptions: ALL_EXAMPLES,
|
||||
});
|
||||
|
||||
const firstContent = await fs.readFile(
|
||||
join(firstAppDir, 'src', 'objects', 'example-object.ts'),
|
||||
'utf8',
|
||||
);
|
||||
const secondContent = await fs.readFile(
|
||||
join(secondAppDir, 'src', 'objects', 'example-object.ts'),
|
||||
'utf8',
|
||||
);
|
||||
|
||||
const uuidRegex =
|
||||
/EXAMPLE_OBJECT_UNIVERSAL_IDENTIFIER =\s*'([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})'/;
|
||||
const firstUuid = firstContent.match(uuidRegex)?.[1];
|
||||
const secondUuid = secondContent.match(uuidRegex)?.[1];
|
||||
|
||||
expect(firstUuid).toBeDefined();
|
||||
expect(secondUuid).toBeDefined();
|
||||
expect(firstUuid).not.toBe(secondUuid);
|
||||
});
|
||||
});
|
||||
|
||||
describe('example field', () => {
|
||||
it('should create example-field.ts with defineField referencing the object', async () => {
|
||||
await copyBaseApplicationProject({
|
||||
appName: 'my-test-app',
|
||||
appDisplayName: 'My Test App',
|
||||
appDescription: 'A test application',
|
||||
appDirectory: testAppDirectory,
|
||||
exampleOptions: ALL_EXAMPLES,
|
||||
});
|
||||
|
||||
const fieldPath = join(
|
||||
testAppDirectory,
|
||||
'src',
|
||||
'fields',
|
||||
'example-field.ts',
|
||||
);
|
||||
|
||||
expect(await fs.pathExists(fieldPath)).toBe(true);
|
||||
|
||||
const content = await fs.readFile(fieldPath, 'utf8');
|
||||
|
||||
expect(content).toContain(
|
||||
"import { defineField, FieldType } from 'twenty-sdk'",
|
||||
);
|
||||
expect(content).toContain(
|
||||
"import { EXAMPLE_OBJECT_UNIVERSAL_IDENTIFIER } from 'src/objects/example-object'",
|
||||
);
|
||||
expect(content).toContain('export default defineField({');
|
||||
expect(content).toContain(
|
||||
'objectUniversalIdentifier: EXAMPLE_OBJECT_UNIVERSAL_IDENTIFIER',
|
||||
);
|
||||
expect(content).toContain('FieldType.NUMBER');
|
||||
expect(content).toContain("name: 'priority'");
|
||||
});
|
||||
});
|
||||
|
||||
describe('example view', () => {
|
||||
it('should create example-view.ts with defineView referencing the object', async () => {
|
||||
await copyBaseApplicationProject({
|
||||
appName: 'my-test-app',
|
||||
appDisplayName: 'My Test App',
|
||||
appDescription: 'A test application',
|
||||
appDirectory: testAppDirectory,
|
||||
exampleOptions: ALL_EXAMPLES,
|
||||
});
|
||||
|
||||
const viewPath = join(
|
||||
testAppDirectory,
|
||||
'src',
|
||||
'views',
|
||||
'example-view.ts',
|
||||
);
|
||||
|
||||
expect(await fs.pathExists(viewPath)).toBe(true);
|
||||
|
||||
const content = await fs.readFile(viewPath, 'utf8');
|
||||
|
||||
expect(content).toContain("import { defineView } from 'twenty-sdk'");
|
||||
expect(content).toContain(
|
||||
"import { EXAMPLE_OBJECT_UNIVERSAL_IDENTIFIER } from 'src/objects/example-object'",
|
||||
);
|
||||
expect(content).toContain('export default defineView({');
|
||||
expect(content).toContain(
|
||||
'objectUniversalIdentifier: EXAMPLE_OBJECT_UNIVERSAL_IDENTIFIER',
|
||||
);
|
||||
expect(content).toContain("name: 'example-view'");
|
||||
});
|
||||
});
|
||||
|
||||
describe('example navigation menu item', () => {
|
||||
it('should create example-navigation-menu-item.ts with defineNavigationMenuItem', async () => {
|
||||
await copyBaseApplicationProject({
|
||||
appName: 'my-test-app',
|
||||
appDisplayName: 'My Test App',
|
||||
appDescription: 'A test application',
|
||||
appDirectory: testAppDirectory,
|
||||
exampleOptions: ALL_EXAMPLES,
|
||||
});
|
||||
|
||||
const navPath = join(
|
||||
testAppDirectory,
|
||||
'src',
|
||||
'navigation-menu-items',
|
||||
'example-navigation-menu-item.ts',
|
||||
);
|
||||
|
||||
expect(await fs.pathExists(navPath)).toBe(true);
|
||||
|
||||
const content = await fs.readFile(navPath, 'utf8');
|
||||
|
||||
expect(content).toContain(
|
||||
"import { defineNavigationMenuItem } from 'twenty-sdk'",
|
||||
);
|
||||
expect(content).toContain('export default defineNavigationMenuItem({');
|
||||
expect(content).toContain("name: 'example-navigation-menu-item'");
|
||||
expect(content).toContain("icon: 'IconList'");
|
||||
expect(content).toContain('position: 0');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -3,6 +3,8 @@ import { join } from 'path';
|
||||
import { v4 } from 'uuid';
|
||||
import { ASSETS_DIR } from 'twenty-shared/application';
|
||||
|
||||
import { type ExampleOptions } from '@/types/scaffolding-options';
|
||||
|
||||
const SRC_FOLDER = 'src';
|
||||
|
||||
export const copyBaseApplicationProject = async ({
|
||||
@@ -10,11 +12,13 @@ export const copyBaseApplicationProject = async ({
|
||||
appDisplayName,
|
||||
appDescription,
|
||||
appDirectory,
|
||||
exampleOptions,
|
||||
}: {
|
||||
appName: string;
|
||||
appDisplayName: string;
|
||||
appDescription: string;
|
||||
appDirectory: string;
|
||||
exampleOptions: ExampleOptions;
|
||||
}) => {
|
||||
await fs.copy(join(__dirname, './constants/base-application'), appDirectory);
|
||||
|
||||
@@ -37,16 +41,66 @@ export const copyBaseApplicationProject = async ({
|
||||
fileName: 'default-role.ts',
|
||||
});
|
||||
|
||||
await createDefaultFrontComponent({
|
||||
appDirectory: sourceFolderPath,
|
||||
fileFolder: 'front-components',
|
||||
fileName: 'hello-world.tsx',
|
||||
});
|
||||
if (exampleOptions.includeExampleObject) {
|
||||
await createExampleObject({
|
||||
appDirectory: sourceFolderPath,
|
||||
fileFolder: 'objects',
|
||||
fileName: 'example-object.ts',
|
||||
});
|
||||
}
|
||||
|
||||
await createDefaultFunction({
|
||||
if (exampleOptions.includeExampleField) {
|
||||
await createExampleField({
|
||||
appDirectory: sourceFolderPath,
|
||||
fileFolder: 'fields',
|
||||
fileName: 'example-field.ts',
|
||||
});
|
||||
}
|
||||
|
||||
if (exampleOptions.includeExampleLogicFunction) {
|
||||
await createDefaultFunction({
|
||||
appDirectory: sourceFolderPath,
|
||||
fileFolder: 'logic-functions',
|
||||
fileName: 'hello-world.ts',
|
||||
});
|
||||
}
|
||||
|
||||
if (exampleOptions.includeExampleFrontComponent) {
|
||||
await createDefaultFrontComponent({
|
||||
appDirectory: sourceFolderPath,
|
||||
fileFolder: 'front-components',
|
||||
fileName: 'hello-world.tsx',
|
||||
});
|
||||
}
|
||||
|
||||
if (exampleOptions.includeExampleView) {
|
||||
await createExampleView({
|
||||
appDirectory: sourceFolderPath,
|
||||
fileFolder: 'views',
|
||||
fileName: 'example-view.ts',
|
||||
});
|
||||
}
|
||||
|
||||
if (exampleOptions.includeExampleNavigationMenuItem) {
|
||||
await createExampleNavigationMenuItem({
|
||||
appDirectory: sourceFolderPath,
|
||||
fileFolder: 'navigation-menu-items',
|
||||
fileName: 'example-navigation-menu-item.ts',
|
||||
});
|
||||
}
|
||||
|
||||
if (exampleOptions.includeExampleSkill) {
|
||||
await createExampleSkill({
|
||||
appDirectory: sourceFolderPath,
|
||||
fileFolder: 'skills',
|
||||
fileName: 'example-skill.ts',
|
||||
});
|
||||
}
|
||||
|
||||
await createDefaultPostInstallFunction({
|
||||
appDirectory: sourceFolderPath,
|
||||
fileFolder: 'logic-functions',
|
||||
fileName: 'hello-world.ts',
|
||||
fileName: 'post-install.ts',
|
||||
});
|
||||
|
||||
await createApplicationConfig({
|
||||
@@ -196,7 +250,6 @@ const handler = async (): Promise<{ message: string }> => {
|
||||
return { message: 'Hello, World!' };
|
||||
};
|
||||
|
||||
// Logic function handler - rename and implement your logic
|
||||
export default defineLogicFunction({
|
||||
universalIdentifier: '${universalIdentifier}',
|
||||
name: 'hello-world-logic-function',
|
||||
@@ -215,6 +268,200 @@ export default defineLogicFunction({
|
||||
await fs.writeFile(join(appDirectory, fileFolder ?? '', fileName), content);
|
||||
};
|
||||
|
||||
const createDefaultPostInstallFunction = async ({
|
||||
appDirectory,
|
||||
fileFolder,
|
||||
fileName,
|
||||
}: {
|
||||
appDirectory: string;
|
||||
fileFolder?: string;
|
||||
fileName: string;
|
||||
}) => {
|
||||
const universalIdentifier = v4();
|
||||
|
||||
const content = `import { defineLogicFunction } from 'twenty-sdk';
|
||||
|
||||
export const POST_INSTALL_UNIVERSAL_IDENTIFIER = '${universalIdentifier}';
|
||||
|
||||
const handler = async (): Promise<void> => {
|
||||
console.log('Post install logic function executed successfully!');
|
||||
};
|
||||
|
||||
export default defineLogicFunction({
|
||||
universalIdentifier: POST_INSTALL_UNIVERSAL_IDENTIFIER,
|
||||
name: 'post-install',
|
||||
description: 'Runs after installation to set up the application.',
|
||||
timeoutSeconds: 300,
|
||||
handler,
|
||||
});
|
||||
`;
|
||||
|
||||
await fs.ensureDir(join(appDirectory, fileFolder ?? ''));
|
||||
await fs.writeFile(join(appDirectory, fileFolder ?? '', fileName), content);
|
||||
};
|
||||
|
||||
const createExampleObject = async ({
|
||||
appDirectory,
|
||||
fileFolder,
|
||||
fileName,
|
||||
}: {
|
||||
appDirectory: string;
|
||||
fileFolder?: string;
|
||||
fileName: string;
|
||||
}) => {
|
||||
const objectUniversalIdentifier = v4();
|
||||
const nameFieldUniversalIdentifier = v4();
|
||||
|
||||
const content = `import { defineObject, FieldType } from 'twenty-sdk';
|
||||
|
||||
export const EXAMPLE_OBJECT_UNIVERSAL_IDENTIFIER =
|
||||
'${objectUniversalIdentifier}';
|
||||
|
||||
export const NAME_FIELD_UNIVERSAL_IDENTIFIER =
|
||||
'${nameFieldUniversalIdentifier}';
|
||||
|
||||
export default defineObject({
|
||||
universalIdentifier: EXAMPLE_OBJECT_UNIVERSAL_IDENTIFIER,
|
||||
nameSingular: 'exampleItem',
|
||||
namePlural: 'exampleItems',
|
||||
labelSingular: 'Example item',
|
||||
labelPlural: 'Example items',
|
||||
description: 'A sample custom object',
|
||||
icon: 'IconBox',
|
||||
labelIdentifierFieldMetadataUniversalIdentifier: NAME_FIELD_UNIVERSAL_IDENTIFIER,
|
||||
fields: [
|
||||
{
|
||||
universalIdentifier: NAME_FIELD_UNIVERSAL_IDENTIFIER,
|
||||
type: FieldType.TEXT,
|
||||
name: 'name',
|
||||
label: 'Name',
|
||||
description: 'Name of the example item',
|
||||
icon: 'IconAbc',
|
||||
},
|
||||
],
|
||||
});
|
||||
`;
|
||||
|
||||
await fs.ensureDir(join(appDirectory, fileFolder ?? ''));
|
||||
await fs.writeFile(join(appDirectory, fileFolder ?? '', fileName), content);
|
||||
};
|
||||
|
||||
const createExampleField = async ({
|
||||
appDirectory,
|
||||
fileFolder,
|
||||
fileName,
|
||||
}: {
|
||||
appDirectory: string;
|
||||
fileFolder?: string;
|
||||
fileName: string;
|
||||
}) => {
|
||||
const universalIdentifier = v4();
|
||||
|
||||
const content = `import { defineField, FieldType } from 'twenty-sdk';
|
||||
import { EXAMPLE_OBJECT_UNIVERSAL_IDENTIFIER } from 'src/objects/example-object';
|
||||
|
||||
export default defineField({
|
||||
objectUniversalIdentifier: EXAMPLE_OBJECT_UNIVERSAL_IDENTIFIER,
|
||||
universalIdentifier: '${universalIdentifier}',
|
||||
type: FieldType.NUMBER,
|
||||
name: 'priority',
|
||||
label: 'Priority',
|
||||
description: 'Priority level for the example item (1-10)',
|
||||
});
|
||||
`;
|
||||
|
||||
await fs.ensureDir(join(appDirectory, fileFolder ?? ''));
|
||||
await fs.writeFile(join(appDirectory, fileFolder ?? '', fileName), content);
|
||||
};
|
||||
|
||||
const createExampleView = async ({
|
||||
appDirectory,
|
||||
fileFolder,
|
||||
fileName,
|
||||
}: {
|
||||
appDirectory: string;
|
||||
fileFolder?: string;
|
||||
fileName: string;
|
||||
}) => {
|
||||
const universalIdentifier = v4();
|
||||
|
||||
const content = `import { defineView } from 'twenty-sdk';
|
||||
import { EXAMPLE_OBJECT_UNIVERSAL_IDENTIFIER } from 'src/objects/example-object';
|
||||
|
||||
export default defineView({
|
||||
universalIdentifier: '${universalIdentifier}',
|
||||
name: 'example-view',
|
||||
objectUniversalIdentifier: EXAMPLE_OBJECT_UNIVERSAL_IDENTIFIER,
|
||||
icon: 'IconList',
|
||||
position: 0,
|
||||
});
|
||||
`;
|
||||
|
||||
await fs.ensureDir(join(appDirectory, fileFolder ?? ''));
|
||||
await fs.writeFile(join(appDirectory, fileFolder ?? '', fileName), content);
|
||||
};
|
||||
|
||||
const createExampleNavigationMenuItem = async ({
|
||||
appDirectory,
|
||||
fileFolder,
|
||||
fileName,
|
||||
}: {
|
||||
appDirectory: string;
|
||||
fileFolder?: string;
|
||||
fileName: string;
|
||||
}) => {
|
||||
const universalIdentifier = v4();
|
||||
|
||||
const content = `import { defineNavigationMenuItem } from 'twenty-sdk';
|
||||
|
||||
export default defineNavigationMenuItem({
|
||||
universalIdentifier: '${universalIdentifier}',
|
||||
name: 'example-navigation-menu-item',
|
||||
icon: 'IconList',
|
||||
position: 0,
|
||||
// Link to a view:
|
||||
// viewUniversalIdentifier: '...',
|
||||
// Or link to an object:
|
||||
// targetObjectUniversalIdentifier: '...',
|
||||
// Or link to an external URL:
|
||||
// link: 'https://example.com',
|
||||
});
|
||||
`;
|
||||
|
||||
await fs.ensureDir(join(appDirectory, fileFolder ?? ''));
|
||||
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,
|
||||
@@ -230,12 +477,14 @@ const createApplicationConfig = async ({
|
||||
}) => {
|
||||
const content = `import { defineApplication } from 'twenty-sdk';
|
||||
import { DEFAULT_ROLE_UNIVERSAL_IDENTIFIER } from 'src/roles/default-role';
|
||||
import { POST_INSTALL_UNIVERSAL_IDENTIFIER } from 'src/logic-functions/post-install';
|
||||
|
||||
export default defineApplication({
|
||||
universalIdentifier: '${v4()}',
|
||||
displayName: '${displayName}',
|
||||
description: '${description ?? ''}',
|
||||
defaultRoleUniversalIdentifier: DEFAULT_ROLE_UNIVERSAL_IDENTIFIER,
|
||||
postInstallLogicFunctionUniversalIdentifier: POST_INSTALL_UNIVERSAL_IDENTIFIER,
|
||||
});
|
||||
`;
|
||||
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
},
|
||||
"scripts": {
|
||||
"auth": "twenty auth login",
|
||||
"generate": "twenty app generate",
|
||||
"dev": "twenty app dev",
|
||||
"sync": "twenty app sync",
|
||||
"uninstall": "twenty app uninstall",
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
},
|
||||
"scripts": {
|
||||
"auth": "twenty auth login",
|
||||
"generate": "twenty app generate",
|
||||
"dev": "twenty app dev",
|
||||
"sync": "twenty app sync",
|
||||
"uninstall": "twenty app uninstall",
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
},
|
||||
"scripts": {
|
||||
"auth": "twenty auth login",
|
||||
"generate": "twenty app generate",
|
||||
"dev": "twenty app dev",
|
||||
"sync": "twenty app sync",
|
||||
"uninstall": "twenty app uninstall",
|
||||
|
||||
@@ -11,7 +11,6 @@
|
||||
"scripts": {
|
||||
"create-entity": "twenty app add",
|
||||
"dev": "twenty app dev",
|
||||
"generate": "twenty app generate",
|
||||
"sync": "twenty app sync",
|
||||
"uninstall": "twenty app uninstall",
|
||||
"auth": "twenty auth login"
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
"app:dev": "twenty app dev",
|
||||
"app:sync": "twenty app sync",
|
||||
"entity:add": "twenty entity add",
|
||||
"app:generate": "twenty app generate",
|
||||
"function:logs": "twenty function logs",
|
||||
"function:execute": "twenty function execute",
|
||||
"app:uninstall": "twenty app uninstall",
|
||||
|
||||
@@ -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
|
||||
@@ -26,7 +27,7 @@ Apps let you build and manage Twenty customizations **as code**. Instead of conf
|
||||
Create a new app using the official scaffolder, then authenticate and start developing:
|
||||
|
||||
```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
|
||||
|
||||
@@ -41,21 +42,34 @@ yarn twenty auth:login
|
||||
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
|
||||
```
|
||||
|
||||
From here you can:
|
||||
|
||||
```bash filename="Terminal"
|
||||
# Add a new entity to your application (guided)
|
||||
yarn twenty entity:add
|
||||
|
||||
# Generate a typed Twenty client and workspace entity types
|
||||
yarn twenty app:generate
|
||||
|
||||
# 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"}'
|
||||
|
||||
# Execute the post-install function
|
||||
yarn twenty function:execute --postInstall
|
||||
|
||||
# Uninstall the application from the current workspace
|
||||
yarn twenty app:uninstall
|
||||
|
||||
@@ -72,9 +86,9 @@ When you run `npx create-twenty-app@latest my-twenty-app`, the scaffolder:
|
||||
- Copies a minimal base application into `my-twenty-app/`
|
||||
- Adds a local `twenty-sdk` dependency and Yarn 4 configuration
|
||||
- Creates config files and scripts wired to the `twenty` CLI
|
||||
- Generates a default application config and a default function role
|
||||
- Generates core files (application config, default function role, post-install function) plus example files based on the scaffolding mode
|
||||
|
||||
A freshly scaffolded app looks like this:
|
||||
A freshly scaffolded app with the default `--exhaustive` mode looks like this:
|
||||
|
||||
```text filename="my-twenty-app/"
|
||||
my-twenty-app/
|
||||
@@ -93,12 +107,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
|
||||
└── front-components/
|
||||
└── hello-world.tsx # Example front component
|
||||
│ ├── 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
|
||||
```
|
||||
|
||||
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.
|
||||
|
||||
At a high level:
|
||||
|
||||
- **package.json**: Declares the app name, version, engines (Node 24+, Yarn 4), and adds `twenty-sdk` plus a `twenty` script that delegates to the local `twenty` CLI. Run `yarn twenty help` to list all available commands.
|
||||
@@ -121,6 +148,9 @@ The SDK detects entities by parsing your TypeScript files for **`export default
|
||||
| `defineFrontComponent()` | Front component definitions |
|
||||
| `defineRole()` | Role definitions |
|
||||
| `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.
|
||||
@@ -140,8 +170,8 @@ export default defineObject({
|
||||
|
||||
Later commands will add more files and folders:
|
||||
|
||||
- `yarn twenty app:generate` will create a `generated/` folder (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 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, roles, skills, and more.
|
||||
|
||||
## Authentication
|
||||
|
||||
@@ -192,6 +222,9 @@ The SDK provides helper functions for defining your app entities. As described i
|
||||
| `defineFrontComponent()` | Define front components for custom UI |
|
||||
| `defineRole()` | Configure role permissions and object access |
|
||||
| `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.
|
||||
|
||||
@@ -277,7 +310,11 @@ Key points:
|
||||
- You can scaffold new objects using `yarn twenty entity:add`, which guides you through naming, fields, and relationships.
|
||||
|
||||
<Note>
|
||||
**Base fields are created automatically.** When you define a custom object, Twenty automatically adds standard fields such as `name`, `createdAt`, `updatedAt`, `createdBy`, `position`, and `deletedAt`. You don't need to define these in your `fields` array — only add your custom fields.
|
||||
**Base fields are created automatically.** When you define a custom object, Twenty automatically adds standard fields
|
||||
such as `id`, `name`, `createdAt`, `updatedAt`, `createdBy`, `updatedBy` and `deletedAt`.
|
||||
You don't need to define these in your `fields` array — only add your custom fields.
|
||||
You can override default fields by defining a field with the same name in your `fields` array,
|
||||
but this is not recommended.
|
||||
</Note>
|
||||
|
||||
|
||||
@@ -288,6 +325,7 @@ Every app has a single `application-config.ts` file that describes:
|
||||
- **Who the app is**: identifiers, display name, and description.
|
||||
- **How its functions run**: which role they use for permissions.
|
||||
- **(Optional) variables**: key–value pairs exposed to your functions as environment variables.
|
||||
- **(Optional) post-install function**: a logic function that runs after the app is installed.
|
||||
|
||||
Use `defineApplication()` to define your application configuration:
|
||||
|
||||
@@ -295,6 +333,7 @@ Use `defineApplication()` to define your application configuration:
|
||||
// src/application-config.ts
|
||||
import { defineApplication } from 'twenty-sdk';
|
||||
import { DEFAULT_ROLE_UNIVERSAL_IDENTIFIER } from 'src/roles/default-role';
|
||||
import { POST_INSTALL_UNIVERSAL_IDENTIFIER } from 'src/logic-functions/post-install';
|
||||
|
||||
export default defineApplication({
|
||||
universalIdentifier: '4ec0391d-18d5-411c-b2f3-266ddc1c3ef7',
|
||||
@@ -310,6 +349,7 @@ export default defineApplication({
|
||||
},
|
||||
},
|
||||
defaultRoleUniversalIdentifier: DEFAULT_ROLE_UNIVERSAL_IDENTIFIER,
|
||||
postInstallLogicFunctionUniversalIdentifier: POST_INSTALL_UNIVERSAL_IDENTIFIER,
|
||||
});
|
||||
```
|
||||
|
||||
@@ -317,6 +357,7 @@ Notes:
|
||||
- `universalIdentifier` fields are deterministic IDs you own; generate them once and keep them stable across syncs.
|
||||
- `applicationVariables` become environment variables for your functions (for example, `DEFAULT_RECIPIENT_NAME` is available as `process.env.DEFAULT_RECIPIENT_NAME`).
|
||||
- `defaultRoleUniversalIdentifier` must match the role file (see below).
|
||||
- `postInstallLogicFunctionUniversalIdentifier` (optional) points to a logic function that runs automatically after the app is installed. See [Post-install functions](#post-install-functions).
|
||||
|
||||
#### Roles and permissions
|
||||
|
||||
@@ -449,6 +490,54 @@ Notes:
|
||||
- The `triggers` array is optional. Functions without triggers can be used as utility functions called by other functions.
|
||||
- You can mix multiple trigger types in a single function.
|
||||
|
||||
### 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`:
|
||||
|
||||
```typescript
|
||||
// src/logic-functions/post-install.ts
|
||||
import { defineLogicFunction } from 'twenty-sdk';
|
||||
|
||||
export const POST_INSTALL_UNIVERSAL_IDENTIFIER = '<generated-uuid>';
|
||||
|
||||
const handler = async (): Promise<void> => {
|
||||
console.log('Post install logic function executed successfully!');
|
||||
};
|
||||
|
||||
export default defineLogicFunction({
|
||||
universalIdentifier: POST_INSTALL_UNIVERSAL_IDENTIFIER,
|
||||
name: 'post-install',
|
||||
description: 'Runs after installation to set up the application.',
|
||||
timeoutSeconds: 300,
|
||||
handler,
|
||||
});
|
||||
```
|
||||
|
||||
The function is wired into your app by referencing its universal identifier in `application-config.ts`:
|
||||
|
||||
```typescript
|
||||
import { POST_INSTALL_UNIVERSAL_IDENTIFIER } from 'src/logic-functions/post-install';
|
||||
|
||||
export default defineApplication({
|
||||
// ...
|
||||
postInstallLogicFunctionUniversalIdentifier: POST_INSTALL_UNIVERSAL_IDENTIFIER,
|
||||
});
|
||||
```
|
||||
|
||||
You can also manually execute the post-install function at any time using the CLI:
|
||||
|
||||
```bash filename="Terminal"
|
||||
yarn twenty function:execute --postInstall
|
||||
```
|
||||
|
||||
Key points:
|
||||
- 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`.
|
||||
|
||||
### Route trigger payload
|
||||
|
||||
<Warning>
|
||||
@@ -645,9 +734,43 @@ 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
|
||||
|
||||
Run `yarn twenty app:generate` to create a local typed client in `generated/` based on your workspace schema. Use it in your functions:
|
||||
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:
|
||||
|
||||
```typescript
|
||||
import Twenty from '~/generated';
|
||||
@@ -656,7 +779,7 @@ const client = new Twenty();
|
||||
const { me } = await client.query({ me: { id: true, displayName: true } });
|
||||
```
|
||||
|
||||
The client is re-generated by `yarn twenty app:generate`. Re-run after changing your objects or when onboarding to a new workspace.
|
||||
The client is re-generated automatically by `yarn twenty app:dev` whenever your objects or fields change.
|
||||
|
||||
#### Runtime credentials in logic functions
|
||||
|
||||
@@ -693,13 +816,13 @@ Then add a `twenty` script:
|
||||
}
|
||||
```
|
||||
|
||||
Now you can run all commands via `yarn twenty <command>`, e.g. `yarn twenty app:dev`, `yarn twenty app:generate`, `yarn twenty help`, etc.
|
||||
Now you can run all commands via `yarn twenty <command>`, e.g. `yarn twenty app:dev`, `yarn twenty help`, etc.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
- Authentication errors: run `yarn twenty auth:login` and ensure your API key has the required permissions.
|
||||
- Cannot connect to server: verify the API URL and that the Twenty server is reachable.
|
||||
- Types or client missing/outdated: run `yarn twenty app:generate`.
|
||||
- Types or client missing/outdated: restart `yarn twenty app:dev` — it auto-generates the typed client.
|
||||
- Dev mode not syncing: ensure `yarn twenty app:dev` is running and that changes are not ignored by your environment.
|
||||
|
||||
Discord Help Channel: https://discord.com/channels/1130383047699738754/1130386664812982322
|
||||
|
||||
@@ -27,7 +27,7 @@ description: أنشئ وأدِر تخصيصات Twenty على هيئة كود.
|
||||
أنشئ تطبيقًا جديدًا باستخدام المُهيئ الرسمي، ثم قم بالمصادقة وابدأ التطوير:
|
||||
|
||||
```bash filename="Terminal"
|
||||
# إنشاء تطبيق جديد
|
||||
# إنشاء تطبيق جديد (يتضمن جميع الأمثلة افتراضيًا)
|
||||
npx create-twenty-app@latest my-twenty-app
|
||||
cd my-twenty-app
|
||||
|
||||
@@ -42,25 +42,38 @@ yarn twenty auth:login
|
||||
yarn twenty app:dev
|
||||
```
|
||||
|
||||
يدعم المُنشئ ثلاثة أوضاع للتحكم في ملفات الأمثلة التي سيتم تضمينها:
|
||||
|
||||
```bash filename="Terminal"
|
||||
# الافتراضي (شامل): جميع الأمثلة (كائن، حقل، دالة منطقية، مكوّن الواجهة الأمامية، عرض، عنصر قائمة التنقل)
|
||||
npx create-twenty-app@latest my-app
|
||||
|
||||
# الأدنى: الملفات الأساسية فقط (application-config.ts و default-role.ts)
|
||||
npx create-twenty-app@latest my-app --minimal
|
||||
|
||||
# التفاعلي: اختر الأمثلة التي تريد تضمينها
|
||||
npx create-twenty-app@latest my-app --interactive
|
||||
```
|
||||
|
||||
من هنا يمكنك:
|
||||
|
||||
```bash filename="Terminal"
|
||||
# أضف كيانًا جديدًا إلى تطبيقك (موجّه)
|
||||
# Add a new entity to your application (guided)
|
||||
yarn twenty entity:add
|
||||
|
||||
# ولِّد عميل Twenty مضبوط الأنواع وأنواع كيانات مساحة العمل
|
||||
yarn twenty app:generate
|
||||
|
||||
# راقب سجلات وظائف تطبيقك
|
||||
# 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"}'
|
||||
|
||||
# أزل تثبيت التطبيق من مساحة العمل الحالية
|
||||
# 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 +86,9 @@ yarn twenty help
|
||||
* ينسخ تطبيقًا أساسيًا مصغّرًا إلى `my-twenty-app/`
|
||||
* يضيف اعتمادًا محليًا `twenty-sdk` وتهيئة Yarn 4
|
||||
* ينشئ ملفات ضبط ونصوصًا مرتبطة بـ `twenty` CLI
|
||||
* يُولّد ضبطًا افتراضيًا للتطبيق ودورًا افتراضيًا للوظيفة
|
||||
* يُنشئ الملفات الأساسية (تهيئة التطبيق، دور الدالة الافتراضي، دالة ما بعد التثبيت) بالإضافة إلى ملفات الأمثلة بحسب وضع الإنشاء
|
||||
|
||||
يبدو التطبيق المُنشأ حديثًا بالقالب كما يلي:
|
||||
يبدو التطبيق المُنشأ حديثًا باستخدام الوضع الافتراضي `--exhaustive` كما يلي:
|
||||
|
||||
```text filename="my-twenty-app/"
|
||||
my-twenty-app/
|
||||
@@ -91,15 +104,26 @@ my-twenty-app/
|
||||
README.md
|
||||
public/ # مجلد الأصول العامة (صور، خطوط، إلخ)
|
||||
src/
|
||||
├── application-config.ts # مطلوب - التكوين الرئيسي للتطبيق
|
||||
├── application-config.ts # مطلوب - إعدادات التطبيق الرئيسية
|
||||
├── roles/
|
||||
│ └── default-role.ts # الدور الافتراضي لوظائف المنطق
|
||||
│ └── default-role.ts # الدور الافتراضي للدوال المنطقية
|
||||
├── objects/
|
||||
│ └── example-object.ts # تعريف كائن مخصص — مثال
|
||||
├── fields/
|
||||
│ └── example-field.ts # تعريف حقل مستقل — مثال
|
||||
├── logic-functions/
|
||||
│ └── hello-world.ts # مثال لوظيفة منطقية
|
||||
└── front-components/
|
||||
└── hello-world.tsx # مثال لمكوّن الواجهة الأمامية
|
||||
│ ├── hello-world.ts # دالة منطقية — مثال
|
||||
│ └── post-install.ts # دالة منطقية لما بعد التثبيت
|
||||
├── front-components/
|
||||
│ └── hello-world.tsx # مكوّن واجهة أمامية — مثال
|
||||
├── views/
|
||||
│ └── example-view.ts # تعريف عرض محفوظ — مثال
|
||||
└── navigation-menu-items/
|
||||
└── example-navigation-menu-item.ts # رابط تنقّل في الشريط الجانبي — مثال
|
||||
```
|
||||
|
||||
مع `--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` لعرض جميع الأوامر المتاحة.
|
||||
@@ -115,13 +139,15 @@ 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()` | تعريفات عناصر قائمة التنقل |
|
||||
|
||||
<Note>
|
||||
**تسمية الملفات مرنة.** يعتمد اكتشاف الكيانات على بنية الشجرة المجردة (AST) — إذ يقوم SDK بفحص ملفات المصدر لديك بحثًا عن النمط `export default define<Entity>({...})`. يمكنك تنظيم ملفاتك ومجلداتك كيفما تشاء. التجميع حسب نوع الكيان (مثلًا، `logic-functions/` و`roles/`) هو مجرد عرف لتنظيم الشيفرة، وليس مطلبًا إلزاميًا.
|
||||
@@ -142,7 +168,7 @@ export default defineObject({
|
||||
|
||||
ستضيف الأوامر اللاحقة مزيدًا من الملفات والمجلدات:
|
||||
|
||||
* `yarn twenty app:generate` سيُنشئ مجلدًا `generated/` (عميل Twenty مضبوط الأنواع + أنواع مساحة العمل).
|
||||
* `yarn twenty app:dev` سيولّد تلقائيًا عميل API مضبوط الأنواع في `node_modules/twenty-sdk/generated` (عميل Twenty مضبوط الأنواع + أنواع مساحة العمل).
|
||||
* `yarn twenty entity:add` سيضيف ملفات تعريف الكيانات تحت `src/` لكائناتك المخصصة أو الوظائف أو المكونات الواجهية أو الأدوار.
|
||||
|
||||
## المصادقة
|
||||
@@ -186,14 +212,16 @@ 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()` | تعريف روابط التنقل في الشريط الجانبي |
|
||||
|
||||
تتحقق هذه الدوال من تكوينك وقت البناء وتوفّر إكمالًا تلقائيًا في بيئة التطوير وأمان الأنواع.
|
||||
|
||||
@@ -279,7 +307,11 @@ export default defineObject({
|
||||
* يمكنك إنشاء كائنات جديدة باستخدام `yarn twenty entity:add`، والذي يرشدك خلال التسمية والحقول والعلاقات.
|
||||
|
||||
<Note>
|
||||
**يتم إنشاء الحقول الأساسية تلقائيًا.** عند تعريف كائن مخصص، يضيف Twenty تلقائيًا حقولًا قياسية مثل `name` و`createdAt` و`updatedAt` و`createdBy` و`position` و`deletedAt`. لا تحتاج إلى تعريف هذه في مصفوفة `fields` — أضف فقط حقولك المخصصة.
|
||||
**يتم إنشاء الحقول الأساسية تلقائيًا.** عند تعريف كائن مخصص، يضيف Twenty تلقائيًا حقولًا قياسية
|
||||
مثل `id` و`name` و`createdAt` و`updatedAt` و`createdBy` و`updatedBy` و`deletedAt`.
|
||||
لا تحتاج إلى تعريف هذه في مصفوفة `fields` — أضف فقط حقولك المخصصة.
|
||||
يمكنك تجاوز الحقول الافتراضية من خلال تعريف حقل بالاسم نفسه في مصفوفة `fields` الخاصة بك،
|
||||
لكن هذا غير مستحسن.
|
||||
</Note>
|
||||
|
||||
### تكوين التطبيق (application-config.ts)
|
||||
@@ -289,6 +321,7 @@ export default defineObject({
|
||||
* **هوية التطبيق**: المعرفات، اسم العرض، والوصف.
|
||||
* **كيفية تشغيل وظائفه**: الدور الذي تستخدمه للأذونات.
|
||||
* **متغيرات (اختياري)**: أزواج مفتاح-قيمة تُعرض لوظائفك كمتغيرات بيئة.
|
||||
* **(Optional) post-install function**: a logic function that runs after the app is installed.
|
||||
|
||||
Use `defineApplication()` to define your application configuration:
|
||||
|
||||
@@ -296,6 +329,7 @@ Use `defineApplication()` to define your application configuration:
|
||||
// src/application-config.ts
|
||||
import { defineApplication } from 'twenty-sdk';
|
||||
import { DEFAULT_ROLE_UNIVERSAL_IDENTIFIER } from 'src/roles/default-role';
|
||||
import { POST_INSTALL_UNIVERSAL_IDENTIFIER } from 'src/logic-functions/post-install';
|
||||
|
||||
export default defineApplication({
|
||||
universalIdentifier: '4ec0391d-18d5-411c-b2f3-266ddc1c3ef7',
|
||||
@@ -311,6 +345,7 @@ export default defineApplication({
|
||||
},
|
||||
},
|
||||
defaultRoleUniversalIdentifier: DEFAULT_ROLE_UNIVERSAL_IDENTIFIER,
|
||||
postInstallLogicFunctionUniversalIdentifier: POST_INSTALL_UNIVERSAL_IDENTIFIER,
|
||||
});
|
||||
```
|
||||
|
||||
@@ -319,6 +354,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).
|
||||
|
||||
#### الأدوار والصلاحيات
|
||||
|
||||
@@ -457,6 +493,55 @@ 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.
|
||||
|
||||
عند إنشاء هيكل تطبيق جديد باستخدام `create-twenty-app`، يتم إنشاء دالة ما بعد التثبيت لك في `src/logic-functions/post-install.ts`:
|
||||
|
||||
```typescript
|
||||
// src/logic-functions/post-install.ts
|
||||
import { defineLogicFunction } from 'twenty-sdk';
|
||||
|
||||
export const POST_INSTALL_UNIVERSAL_IDENTIFIER = '<generated-uuid>';
|
||||
|
||||
const handler = async (): Promise<void> => {
|
||||
console.log('Post install logic function executed successfully!');
|
||||
};
|
||||
|
||||
export default defineLogicFunction({
|
||||
universalIdentifier: POST_INSTALL_UNIVERSAL_IDENTIFIER,
|
||||
name: 'post-install',
|
||||
description: 'Runs after installation to set up the application.',
|
||||
timeoutSeconds: 300,
|
||||
handler,
|
||||
});
|
||||
```
|
||||
|
||||
يتم ربط الدالة بتطبيقك من خلال الإشارة إلى المعرِّف العالمي الخاص بها في `application-config.ts`:
|
||||
|
||||
```typescript
|
||||
import { POST_INSTALL_UNIVERSAL_IDENTIFIER } from 'src/logic-functions/post-install';
|
||||
|
||||
export default defineApplication({
|
||||
// ...
|
||||
postInstallLogicFunctionUniversalIdentifier: POST_INSTALL_UNIVERSAL_IDENTIFIER,
|
||||
});
|
||||
```
|
||||
|
||||
يمكنك أيضًا تنفيذ دالة ما بعد التثبيت يدويًا في أي وقت باستخدام CLI:
|
||||
|
||||
```bash filename="Terminal"
|
||||
yarn twenty function:execute --postInstall
|
||||
```
|
||||
|
||||
النقاط الرئيسية:
|
||||
|
||||
* دوال ما بعد التثبيت هي دوال منطقية قياسية — فهي تستخدم `defineLogicFunction()` مثل أي دالة أخرى.
|
||||
* حقل `postInstallLogicFunctionUniversalIdentifier` في `defineApplication()` اختياري. إذا تم تجاهله، لن يتم تشغيل أي دالة بعد التثبيت.
|
||||
* تم تعيين مهلة افتراضية إلى 300 ثانية (5 دقائق) للسماح بمهام الإعداد الأطول مثل تهيئة البيانات.
|
||||
* لا تحتاج دوال ما بعد التثبيت إلى مُشغِّلات — حيث يستدعيها النظام الأساسي أثناء التثبيت أو يدويًا عبر `function:execute --postInstall`.
|
||||
|
||||
### حمولة مشغل المسار
|
||||
|
||||
<Warning>
|
||||
@@ -554,6 +639,71 @@ const handler = async (event: RoutePayload) => {
|
||||
* **مُنشأ بالقالب**: شغّل `yarn twenty entity:add` واختر خيار إضافة وظيفة منطقية جديدة. يُولّد هذا ملفًا مبدئيًا مع معالج وتكوين.
|
||||
* **يدوي**: أنشئ ملفًا جديدًا `*.logic-function.ts` واستخدم `defineLogicFunction()` مع اتباع النمط نفسه.
|
||||
|
||||
### تمييز دالة منطقية كأداة
|
||||
|
||||
يمكن إتاحة الدوال المنطقية بوصفها **أدوات** لوكلاء الذكاء الاصطناعي وسير العمل. عندما يتم تمييز دالة كأداة، تصبح قابلة للاكتشاف بواسطة ميزات الذكاء الاصطناعي الخاصة بـ Twenty ويمكن اختيارها كخطوة في أتمتة سير العمل.
|
||||
|
||||
لتمييز دالة منطقية كأداة، عيّن `isTool: true` وقدّم `toolInputSchema` يصف معاملات الإدخال المتوقعة باستخدام [مخطط JSON](https://json-schema.org/):
|
||||
|
||||
```typescript
|
||||
// src/logic-functions/enrich-company.logic-function.ts
|
||||
import { defineLogicFunction } from 'twenty-sdk';
|
||||
import Twenty from '~/generated';
|
||||
|
||||
const handler = async (params: { companyName: string; domain?: string }) => {
|
||||
const client = new Twenty();
|
||||
|
||||
const result = await client.mutation({
|
||||
createTask: {
|
||||
__args: {
|
||||
data: {
|
||||
title: `Enrich data for ${params.companyName}`,
|
||||
body: `Domain: ${params.domain ?? 'unknown'}`,
|
||||
},
|
||||
},
|
||||
id: true,
|
||||
},
|
||||
});
|
||||
|
||||
return { taskId: result.createTask.id };
|
||||
};
|
||||
|
||||
export default defineLogicFunction({
|
||||
universalIdentifier: 'f47ac10b-58cc-4372-a567-0e02b2c3d479',
|
||||
name: 'enrich-company',
|
||||
description: 'Enrich a company record with external data',
|
||||
timeoutSeconds: 10,
|
||||
handler,
|
||||
isTool: true,
|
||||
toolInputSchema: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
companyName: {
|
||||
type: 'string',
|
||||
description: 'The name of the company to enrich',
|
||||
},
|
||||
domain: {
|
||||
type: 'string',
|
||||
description: 'The company website domain (optional)',
|
||||
},
|
||||
},
|
||||
required: ['companyName'],
|
||||
},
|
||||
});
|
||||
```
|
||||
|
||||
النقاط الرئيسية:
|
||||
|
||||
* **`isTool`** (`boolean`, الافتراضي: `false`): عند ضبطه على `true`، يتم تسجيل الدالة كأداة وتصبح متاحة لوكلاء الذكاء الاصطناعي ولأتمتة سير العمل.
|
||||
* **`toolInputSchema`** (`object`, اختياري): كائن JSON Schema يصف المعلمات التي تقبلها دالتك. يستخدم وكلاء الذكاء الاصطناعي هذا المخطط لفهم المدخلات التي تتوقعها الأداة وللتحقق من صحة الاستدعاءات. إذا تم إغفاله، فالقيمة الافتراضية للمخطط هي `{ type: 'object', properties: {} }` (من دون معلمات).
|
||||
* الدوال التي لديها `isTool: false` (أو غير معيَّنة) **غير** معروضة كأدوات. لا يزال بالإمكان تنفيذها مباشرةً أو استدعاؤها بواسطة دوال أخرى، لكنها لن تظهر في اكتشاف الأدوات.
|
||||
* **تسمية الأداة**: عند كشفها كأداة، يتم تطبيع اسم الدالة تلقائيًا إلى `logic_function_<name>` (تحويله إلى أحرف صغيرة، واستبدال المحارف غير الأبجدية الرقمية بشرطات سفلية). على سبيل المثال، `enrich-company` تصبح `logic_function_enrich_company`.
|
||||
* يمكنك دمج `isTool` مع المشغِّلات — إذ يمكن للدالة أن تكون أداة (قابلة للاستدعاء من قِبل وكلاء الذكاء الاصطناعي) وأن تُشغَّل بواسطة أحداث (cron، وأحداث قاعدة البيانات، والمسارات) في الوقت نفسه.
|
||||
|
||||
<Note>
|
||||
**اكتب `description` جيدًا.** يعتمد وكلاء الذكاء الاصطناعي على حقل `description` الخاص بالدالة لتحديد وقت استخدام الأداة. كن محددًا بشأن ما تفعله الأداة ومتى ينبغي استدعاؤها.
|
||||
</Note>
|
||||
|
||||
### المكوّنات الأمامية
|
||||
|
||||
تتيح لك المكوّنات الأمامية إنشاء مكوّنات React مخصّصة تُعرَض داخل واجهة مستخدم Twenty. استخدم `defineFrontComponent()` لتعريف مكوّنات مع تحقّق مدمج:
|
||||
@@ -593,7 +743,7 @@ export default defineFrontComponent({
|
||||
|
||||
### عميل مُولَّد مضبوط الأنواع
|
||||
|
||||
شغّل `yarn twenty app:generate` لإنشاء عميل محلي مضبوط الأنواع في `generated/` استنادًا إلى مخطط مساحة العمل لديك. استخدمه في وظائفك:
|
||||
يُولَّد العميل مضبوط الأنواع تلقائيًا بواسطة `yarn twenty app:dev` ويُخزَّن في `node_modules/twenty-sdk/generated` استنادًا إلى مخطط مساحة العمل لديك. استخدمه في وظائفك:
|
||||
|
||||
```typescript
|
||||
import Twenty from '~/generated';
|
||||
@@ -602,7 +752,7 @@ const client = new Twenty();
|
||||
const { me } = await client.query({ me: { id: true, displayName: true } });
|
||||
```
|
||||
|
||||
يُعاد توليد العميل بواسطة `yarn twenty app:generate`. أعِد التشغيل بعد تغيير كائناتك أو عند الانضمام إلى مساحة عمل جديدة.
|
||||
يُعاد توليد العميل تلقائيًا بواسطة `yarn twenty app:dev` كلما تغيّرت كائناتك أو حقولك.
|
||||
|
||||
#### بيانات الاعتماد وقت التشغيل في الوظائف المنطقية
|
||||
|
||||
@@ -639,13 +789,13 @@ yarn add -D twenty-sdk
|
||||
}
|
||||
```
|
||||
|
||||
الآن يمكنك تشغيل جميع الأوامر عبر `yarn twenty <command>`، مثلًا: `yarn twenty app:dev`، `yarn twenty app:generate`، `yarn twenty help`، إلخ.
|
||||
الآن يمكنك تشغيل جميع الأوامر عبر `yarn twenty <command>`، مثلًا: `yarn twenty app:dev`، `yarn twenty help`، إلخ.
|
||||
|
||||
## استكشاف الأخطاء وإصلاحها
|
||||
|
||||
* أخطاء المصادقة: شغّل `yarn twenty auth:login` وتأكد من أن مفتاح واجهة برمجة التطبيقات لديك يمتلك الأذونات المطلوبة.
|
||||
* يتعذّر الاتصال بالخادم: تحقق من عنوان URL لواجهة البرمجة وأن خادم Twenty قابل للوصول.
|
||||
* الأنواع أو العميل مفقود/قديم: شغّل `yarn twenty app:generate`.
|
||||
* الأنواع أو العميل مفقود/قديم: أعد تشغيل `yarn twenty app:dev` — فهو ينشئ العميل مضبوط الأنواع بشكل تلقائي.
|
||||
* وضع التطوير لا يزامن: تأكد من أن `yarn twenty app:dev` قيد التشغيل وأن التغييرات ليست متجاهلة من بيئتك.
|
||||
|
||||
قناة المساعدة على Discord: https://discord.com/channels/1130383047699738754/1130386664812982322
|
||||
|
||||
@@ -27,7 +27,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,21 +42,34 @@ 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"
|
||||
# Výchozí (úplný): všechny příklady (objekt, pole, logická funkce, front-endová komponenta, zobrazení, položka navigační nabídky)
|
||||
npx create-twenty-app@latest my-app
|
||||
|
||||
# Minimální: pouze základní soubory (application-config.ts a default-role.ts)
|
||||
npx create-twenty-app@latest my-app --minimal
|
||||
|
||||
# Interaktivní: vyberte, které příklady zahrnout
|
||||
npx create-twenty-app@latest my-app --interactive
|
||||
```
|
||||
|
||||
Odtud můžete:
|
||||
|
||||
```bash filename="Terminal"
|
||||
# Přidejte do vaší aplikace novou entitu (s průvodcem)
|
||||
yarn twenty entity:add
|
||||
|
||||
# Vygenerujte typovaného klienta Twenty a typy entit pracovního prostoru
|
||||
yarn twenty app:generate
|
||||
|
||||
# Sledujte logy funkcí vaší aplikace
|
||||
yarn twenty function:logs
|
||||
|
||||
# Spusťte funkci podle názvu
|
||||
yarn twenty function:execute -n my-function -p '{"name": "test"}'
|
||||
|
||||
# Spusťte postinstalační funkci
|
||||
yarn twenty function:execute --postInstall
|
||||
|
||||
# Odinstalujte aplikaci z aktuálního pracovního prostoru
|
||||
yarn twenty app:uninstall
|
||||
|
||||
@@ -73,9 +86,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 a výchozí roli funkcí
|
||||
* 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/
|
||||
@@ -94,12 +107,23 @@ my-twenty-app/
|
||||
├── application-config.ts # Povinné – hlavní konfigurace aplikace
|
||||
├── roles/
|
||||
│ └── default-role.ts # Výchozí role pro logické funkce
|
||||
├── objects/
|
||||
│ └── example-object.ts # Ukázková definice vlastního objektu
|
||||
├── fields/
|
||||
│ └── example-field.ts # Ukázková samostatná definice pole
|
||||
├── logic-functions/
|
||||
│ └── hello-world.ts # Ukázková logická funkce
|
||||
└── front-components/
|
||||
└── hello-world.tsx # Ukázková front-endová komponenta
|
||||
│ ├── hello-world.ts # Ukázková logická funkce
|
||||
│ └── post-install.ts # Postinstalační logická funkce
|
||||
├── front-components/
|
||||
│ └── hello-world.tsx # Ukázková front-endová komponenta
|
||||
├── views/
|
||||
│ └── example-view.ts # Ukázková definice uloženého zobrazení
|
||||
└── navigation-menu-items/
|
||||
└── example-navigation-menu-item.ts # Ukázkový odkaz postranní navigace
|
||||
```
|
||||
|
||||
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ů.
|
||||
@@ -115,13 +139,15 @@ 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 |
|
||||
|
||||
<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.
|
||||
@@ -142,7 +168,7 @@ export default defineObject({
|
||||
|
||||
Pozdější příkazy přidají další soubory a složky:
|
||||
|
||||
* `yarn twenty app:generate` vytvoří složku `generated/` (typovaný klient Twenty + typy pracovního prostoru).
|
||||
* `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.
|
||||
|
||||
## Ověření
|
||||
@@ -186,14 +212,16 @@ 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 |
|
||||
|
||||
Tyto funkce validují vaši konfiguraci v době sestavení a poskytují automatické doplňování v IDE a typovou bezpečnost.
|
||||
|
||||
@@ -279,7 +307,11 @@ Hlavní body:
|
||||
* Nové objekty můžete vygenerovat pomocí `yarn twenty entity:add`, který vás provede pojmenováním, poli a vztahy.
|
||||
|
||||
<Note>
|
||||
**Základní pole jsou vytvořena automaticky.** Když definujete vlastní objekt, Twenty automaticky přidá standardní pole jako `name`, `createdAt`, `updatedAt`, `createdBy`, `position` a `deletedAt`. Nemusíte je definovat v poli `fields` — přidejte pouze svá vlastní pole.
|
||||
**Základní pole jsou vytvořena automaticky.** Když definujete vlastní objekt, Twenty automaticky přidá standardní pole
|
||||
jako `id`, `name`, `createdAt`, `updatedAt`, `createdBy`, `updatedBy` a `deletedAt`.
|
||||
Nemusíte je definovat v poli `fields` — přidejte pouze svá vlastní pole.
|
||||
Výchozí pole můžete přepsat definováním pole se stejným názvem v poli `fields`,
|
||||
ale to se nedoporučuje.
|
||||
</Note>
|
||||
|
||||
### Konfigurace aplikace (application-config.ts)
|
||||
@@ -289,6 +321,7 @@ Každá aplikace má jeden soubor `application-config.ts`, který popisuje:
|
||||
* **Identitu aplikace**: identifikátory, zobrazovaný název a popis.
|
||||
* **Jak běží její funkce**: kterou roli používají pro oprávnění.
|
||||
* **(Volitelné) proměnné**: dvojice klíč–hodnota zpřístupněné vašim funkcím jako proměnné prostředí.
|
||||
* **(Volitelná) postinstalační funkce**: logická funkce, která se spouští po instalaci aplikace.
|
||||
|
||||
Use `defineApplication()` to define your application configuration:
|
||||
|
||||
@@ -296,6 +329,7 @@ Use `defineApplication()` to define your application configuration:
|
||||
// src/application-config.ts
|
||||
import { defineApplication } from 'twenty-sdk';
|
||||
import { DEFAULT_ROLE_UNIVERSAL_IDENTIFIER } from 'src/roles/default-role';
|
||||
import { POST_INSTALL_UNIVERSAL_IDENTIFIER } from 'src/logic-functions/post-install';
|
||||
|
||||
export default defineApplication({
|
||||
universalIdentifier: '4ec0391d-18d5-411c-b2f3-266ddc1c3ef7',
|
||||
@@ -311,6 +345,7 @@ export default defineApplication({
|
||||
},
|
||||
},
|
||||
defaultRoleUniversalIdentifier: DEFAULT_ROLE_UNIVERSAL_IDENTIFIER,
|
||||
postInstallLogicFunctionUniversalIdentifier: POST_INSTALL_UNIVERSAL_IDENTIFIER,
|
||||
});
|
||||
```
|
||||
|
||||
@@ -319,6 +354,7 @@ Poznámky:
|
||||
* Pole `universalIdentifier` jsou deterministická ID, která vlastníte; vygenerujte je jednou a udržujte je stabilní napříč synchronizacemi.
|
||||
* `applicationVariables` se stanou proměnnými prostředí pro vaše funkce (například `DEFAULT_RECIPIENT_NAME` je dostupné jako `process.env.DEFAULT_RECIPIENT_NAME`).
|
||||
* `defaultRoleUniversalIdentifier` se musí shodovat se souborem role (viz níže).
|
||||
* `postInstallLogicFunctionUniversalIdentifier` (volitelné) odkazuje na logickou funkci, která se automaticky spustí po instalaci aplikace. Viz [Postinstalační funkce](#post-install-functions).
|
||||
|
||||
#### Role a oprávnění
|
||||
|
||||
@@ -457,6 +493,55 @@ Poznámky:
|
||||
* Pole `triggers` je volitelné. Funkce bez spouštěčů lze použít jako pomocné funkce volané jinými funkcemi.
|
||||
* V jedné funkci můžete kombinovat více typů spouštěčů.
|
||||
|
||||
### Postinstalační funkce
|
||||
|
||||
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.
|
||||
|
||||
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
|
||||
import { defineLogicFunction } from 'twenty-sdk';
|
||||
|
||||
export const POST_INSTALL_UNIVERSAL_IDENTIFIER = '<generated-uuid>';
|
||||
|
||||
const handler = async (): Promise<void> => {
|
||||
console.log('Post install logic function executed successfully!');
|
||||
};
|
||||
|
||||
export default defineLogicFunction({
|
||||
universalIdentifier: POST_INSTALL_UNIVERSAL_IDENTIFIER,
|
||||
name: 'post-install',
|
||||
description: 'Runs after installation to set up the application.',
|
||||
timeoutSeconds: 300,
|
||||
handler,
|
||||
});
|
||||
```
|
||||
|
||||
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';
|
||||
|
||||
export default defineApplication({
|
||||
// ...
|
||||
postInstallLogicFunctionUniversalIdentifier: POST_INSTALL_UNIVERSAL_IDENTIFIER,
|
||||
});
|
||||
```
|
||||
|
||||
Postinstalační funkci můžete také kdykoli spustit ručně pomocí CLI:
|
||||
|
||||
```bash filename="Terminal"
|
||||
yarn twenty function:execute --postInstall
|
||||
```
|
||||
|
||||
Hlavní body:
|
||||
|
||||
* 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
|
||||
|
||||
<Warning>
|
||||
@@ -554,6 +639,71 @@ Nové funkce můžete vytvářet dvěma způsoby:
|
||||
* **Vygenerované**: Spusťte `yarn twenty entity:add` a zvolte možnost přidat novou logickou funkci. Tím se vygeneruje startovací soubor s obslužnou funkcí a konfigurací.
|
||||
* **Ruční**: Vytvořte nový soubor `*.logic-function.ts` a použijte `defineLogicFunction()` podle stejného vzoru.
|
||||
|
||||
### Označení logické funkce jako nástroje
|
||||
|
||||
Logické funkce lze zpřístupnit jako **nástroje** pro agenty AI a pracovní postupy. Když je funkce označena jako nástroj, stane se dohledatelnou funkcemi AI produktu Twenty a lze ji vybrat jako krok v automatizacích pracovních postupů.
|
||||
|
||||
Chcete-li označit logickou funkci jako nástroj, nastavte `isTool: true` a poskytněte `toolInputSchema` popisující očekávané vstupní parametry pomocí [JSON Schema](https://json-schema.org/):
|
||||
|
||||
```typescript
|
||||
// src/logic-functions/enrich-company.logic-function.ts
|
||||
import { defineLogicFunction } from 'twenty-sdk';
|
||||
import Twenty from '~/generated';
|
||||
|
||||
const handler = async (params: { companyName: string; domain?: string }) => {
|
||||
const client = new Twenty();
|
||||
|
||||
const result = await client.mutation({
|
||||
createTask: {
|
||||
__args: {
|
||||
data: {
|
||||
title: `Enrich data for ${params.companyName}`,
|
||||
body: `Domain: ${params.domain ?? 'unknown'}`,
|
||||
},
|
||||
},
|
||||
id: true,
|
||||
},
|
||||
});
|
||||
|
||||
return { taskId: result.createTask.id };
|
||||
};
|
||||
|
||||
export default defineLogicFunction({
|
||||
universalIdentifier: 'f47ac10b-58cc-4372-a567-0e02b2c3d479',
|
||||
name: 'enrich-company',
|
||||
description: 'Enrich a company record with external data',
|
||||
timeoutSeconds: 10,
|
||||
handler,
|
||||
isTool: true,
|
||||
toolInputSchema: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
companyName: {
|
||||
type: 'string',
|
||||
description: 'The name of the company to enrich',
|
||||
},
|
||||
domain: {
|
||||
type: 'string',
|
||||
description: 'The company website domain (optional)',
|
||||
},
|
||||
},
|
||||
required: ['companyName'],
|
||||
},
|
||||
});
|
||||
```
|
||||
|
||||
Hlavní body:
|
||||
|
||||
* **`isTool`** (`boolean`, výchozí: `false`): Když je nastaveno na `true`, funkce je zaregistrována jako nástroj a zpřístupní se agentům AI a automatizacím pracovních postupů.
|
||||
* **`toolInputSchema`** (`object`, volitelné): Objekt JSON Schema, který popisuje parametry, jež vaše funkce přijímá. Agenti AI používají toto schéma k pochopení toho, jaké vstupy nástroj očekává, a k ověřování volání. Pokud je vynecháno, schéma má výchozí podobu `{ type: 'object', properties: {} }` (žádné parametry).
|
||||
* Funkce s `isTool: false` (nebo není nastaveno) **nejsou** zpřístupněny jako nástroje. Stále je lze spouštět přímo nebo volat z jiných funkcí, ale neobjeví se ve vyhledávání nástrojů.
|
||||
* **Pojmenování nástrojů**: Když je funkce zpřístupněna jako nástroj, její název se automaticky normalizuje na `logic_function_<name>` (převedeno na malá písmena, nealfanumerické znaky jsou nahrazeny podtržítky). Například `enrich-company` se změní na `logic_function_enrich_company`.
|
||||
* Můžete kombinovat `isTool` se spouštěči — funkce může být zároveň nástrojem (volatelným agenty AI) i spouštěna událostmi (cron, databázové události, routes).
|
||||
|
||||
<Note>
|
||||
**Napište kvalitní `description`.** Agenti AI se spoléhají na pole funkce `description` při rozhodování, kdy nástroj použít. Buďte konkrétní ohledně toho, co nástroj dělá a kdy se má volat.
|
||||
</Note>
|
||||
|
||||
### Frontendové komponenty
|
||||
|
||||
Frontendové komponenty vám umožňují vytvářet vlastní React komponenty, které se vykreslují v rozhraní Twenty. K definování komponent s vestavěnou validací použijte `defineFrontComponent()`:
|
||||
@@ -593,7 +743,7 @@ Nové frontendové komponenty můžete vytvořit dvěma způsoby:
|
||||
|
||||
### Generovaný typovaný klient
|
||||
|
||||
Spusťte `yarn twenty app:generate` a vytvořte lokálního typovaného klienta v `generated/` na základě schématu vašeho pracovního prostoru. Použijte jej ve svých funkcích:
|
||||
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:
|
||||
|
||||
```typescript
|
||||
import Twenty from '~/generated';
|
||||
@@ -602,7 +752,7 @@ const client = new Twenty();
|
||||
const { me } = await client.query({ me: { id: true, displayName: true } });
|
||||
```
|
||||
|
||||
Klient je znovu generován příkazem `yarn twenty app:generate`. Spusťte znovu po změně vašich objektů nebo při připojování k novému pracovnímu prostoru.
|
||||
Klient se automaticky znovu generuje pomocí `yarn twenty app:dev` kdykoli se změní vaše objekty nebo pole.
|
||||
|
||||
#### Běhové přihlašovací údaje v logických funkcích
|
||||
|
||||
@@ -639,13 +789,13 @@ Poté přidejte skript `twenty`:
|
||||
}
|
||||
```
|
||||
|
||||
Nyní můžete spouštět všechny příkazy přes `yarn twenty <command>`, např. `yarn twenty app:dev`, `yarn twenty app:generate`, `yarn twenty help` atd.
|
||||
Nyní můžete spouštět všechny příkazy přes `yarn twenty <command>`, např. `yarn twenty app:dev`, `yarn twenty help` atd.
|
||||
|
||||
## Řešení potíží
|
||||
|
||||
* Chyby ověření: spusťte `yarn twenty auth:login` a ujistěte se, že váš klíč API má požadovaná oprávnění.
|
||||
* Nelze se připojit k serveru: ověřte URL API a že je server Twenty dosažitelný.
|
||||
* Typy nebo klient chybí nebo jsou zastaralé: spusťte `yarn twenty app:generate`.
|
||||
* Types or client missing/outdated: restart `yarn twenty app:dev` — it auto-generates the typed client.
|
||||
* Režim vývoje se nesynchronizuje: ujistěte se, že běží `yarn twenty app:dev` a že vaše prostředí změny neignoruje.
|
||||
|
||||
Kanál podpory na Discordu: https://discord.com/channels/1130383047699738754/1130386664812982322
|
||||
|
||||
@@ -27,7 +27,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,21 +42,34 @@ 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"
|
||||
# Standard (umfassend): alle Beispiele (Objekt, Feld, Logikfunktion, Frontend-Komponente, View, Navigationsmenüeintrag)
|
||||
npx create-twenty-app@latest my-app
|
||||
|
||||
# Minimal: nur Kerndateien (application-config.ts und default-role.ts)
|
||||
npx create-twenty-app@latest my-app --minimal
|
||||
|
||||
# Interaktiv: wähle aus, welche Beispiele enthalten sein sollen
|
||||
npx create-twenty-app@latest my-app --interactive
|
||||
```
|
||||
|
||||
Von hier aus können Sie:
|
||||
|
||||
```bash filename="Terminal"
|
||||
# Eine neue Entität zu deiner Anwendung hinzufügen (geführt)
|
||||
# Eine neue Entität zu Ihrer Anwendung hinzufügen (geführt)
|
||||
yarn twenty entity:add
|
||||
|
||||
# Einen typisierten Twenty-Client und Entitätstypen für den Arbeitsbereich generieren
|
||||
yarn twenty app:generate
|
||||
|
||||
# Die Funktionsprotokolle deiner Anwendung überwachen
|
||||
# Die Funktionsprotokolle Ihrer Anwendung überwachen
|
||||
yarn twenty function:logs
|
||||
|
||||
# Eine Funktion anhand ihres Namens ausführen
|
||||
yarn twenty function:execute -n my-function -p '{"name": "test"}'
|
||||
|
||||
# Die Post-Installationsfunktion ausführen
|
||||
yarn twenty function:execute --postInstall
|
||||
|
||||
# Die Anwendung aus dem aktuellen Arbeitsbereich deinstallieren
|
||||
yarn twenty app:uninstall
|
||||
|
||||
@@ -73,9 +86,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 und eine Standard-Funktionsrolle
|
||||
* 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,17 +102,28 @@ my-twenty-app/
|
||||
eslint.config.mjs
|
||||
tsconfig.json
|
||||
README.md
|
||||
public/ # Public assets folder (images, fonts, etc.)
|
||||
public/ # Ordner für öffentliche Assets (Bilder, Schriftarten usw.)
|
||||
src/
|
||||
├── application-config.ts # Required - main application configuration
|
||||
├── roles/
|
||||
│ └── default-role.ts # Default role for logic functions
|
||||
├── logic-functions/
|
||||
│ └── hello-world.ts # Example logic function
|
||||
└── front-components/
|
||||
└── hello-world.tsx # Example front component
|
||||
application-config.ts # Erforderlich Hauptkonfiguration der Anwendung
|
||||
roles/
|
||||
default-role.ts # Standardrolle für Logikfunktionen
|
||||
objects/
|
||||
example-object.ts # Beispiel für eine benutzerdefinierte Objektdefinition
|
||||
fields/
|
||||
example-field.ts # Beispiel für eine eigenständige Felddefinition
|
||||
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
|
||||
views/
|
||||
example-view.ts # Beispiel für eine gespeicherte View-Definition
|
||||
navigation-menu-items/
|
||||
example-navigation-menu-item.ts # Beispiel für einen Navigationslink in der Seitenleiste
|
||||
```
|
||||
|
||||
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.
|
||||
@@ -115,13 +139,15 @@ 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 |
|
||||
|
||||
<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.
|
||||
@@ -142,7 +168,7 @@ export default defineObject({
|
||||
|
||||
Spätere Befehle fügen weitere Dateien und Ordner hinzu:
|
||||
|
||||
* `yarn twenty app:generate` erstellt einen `generated/`-Ordner (typisierter Twenty-Client + Workspace-Typen).
|
||||
* `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.
|
||||
|
||||
## Authentifizierung
|
||||
@@ -186,14 +212,16 @@ 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 |
|
||||
|
||||
Diese Funktionen validieren Ihre Konfiguration zur Build-Zeit und bieten IDE-Autovervollständigung sowie Typsicherheit.
|
||||
|
||||
@@ -279,7 +307,11 @@ Hauptpunkte:
|
||||
* Sie können mit `yarn twenty entity:add` neue Objekte erzeugen; der Assistent führt Sie durch Benennung, Felder und Beziehungen.
|
||||
|
||||
<Note>
|
||||
**Basisfelder werden automatisch erstellt.** Wenn Sie ein benutzerdefiniertes Objekt definieren, fügt Twenty automatisch Standardfelder wie `name`, `createdAt`, `updatedAt`, `createdBy`, `position` und `deletedAt` hinzu. Sie müssen diese nicht in Ihrem `fields`-Array definieren — fügen Sie nur Ihre benutzerdefinierten Felder hinzu.
|
||||
**Basisfelder werden automatisch erstellt.** Wenn Sie ein benutzerdefiniertes Objekt definieren, fügt Twenty automatisch Standardfelder hinzu
|
||||
wie `id`, `name`, `createdAt`, `updatedAt`, `createdBy`, `updatedBy` und `deletedAt`.
|
||||
Sie müssen diese nicht in Ihrem `fields`-Array definieren — fügen Sie nur Ihre benutzerdefinierten Felder hinzu.
|
||||
Sie können Standardfelder überschreiben, indem Sie in Ihrem `fields`-Array ein Feld mit demselben Namen definieren,
|
||||
dies wird jedoch nicht empfohlen.
|
||||
</Note>
|
||||
|
||||
### Anwendungskonfiguration (application-config.ts)
|
||||
@@ -289,6 +321,7 @@ Jede App hat eine einzelne Datei `application-config.ts`, die Folgendes beschrei
|
||||
* **Was die App ist**: Bezeichner, Anzeigename und Beschreibung.
|
||||
* **Wie ihre Funktionen ausgeführt werden**: welche Rolle sie für Berechtigungen verwenden.
|
||||
* **(Optional) Variablen**: Schlüssel–Wert-Paare, die Ihren Funktionen als Umgebungsvariablen zur Verfügung gestellt werden.
|
||||
* **(Optional) Post-Installationsfunktion**: eine Logikfunktion, die nach der Installation der App ausgeführt wird.
|
||||
|
||||
Verwenden Sie `defineApplication()`, um Ihre Anwendungskonfiguration zu definieren:
|
||||
|
||||
@@ -296,6 +329,7 @@ Verwenden Sie `defineApplication()`, um Ihre Anwendungskonfiguration zu definier
|
||||
// src/application-config.ts
|
||||
import { defineApplication } from 'twenty-sdk';
|
||||
import { DEFAULT_ROLE_UNIVERSAL_IDENTIFIER } from 'src/roles/default-role';
|
||||
import { POST_INSTALL_UNIVERSAL_IDENTIFIER } from 'src/logic-functions/post-install';
|
||||
|
||||
export default defineApplication({
|
||||
universalIdentifier: '4ec0391d-18d5-411c-b2f3-266ddc1c3ef7',
|
||||
@@ -311,6 +345,7 @@ export default defineApplication({
|
||||
},
|
||||
},
|
||||
defaultRoleUniversalIdentifier: DEFAULT_ROLE_UNIVERSAL_IDENTIFIER,
|
||||
postInstallLogicFunctionUniversalIdentifier: POST_INSTALL_UNIVERSAL_IDENTIFIER,
|
||||
});
|
||||
```
|
||||
|
||||
@@ -319,6 +354,7 @@ Notizen:
|
||||
* `universalIdentifier`-Felder sind deterministische IDs, die Sie besitzen; generieren Sie sie einmal und halten Sie sie über Synchronisierungen hinweg stabil.
|
||||
* `applicationVariables` werden zu Umgebungsvariablen für Ihre Funktionen (zum Beispiel ist `DEFAULT_RECIPIENT_NAME` als `process.env.DEFAULT_RECIPIENT_NAME` verfügbar).
|
||||
* `defaultRoleUniversalIdentifier` muss mit der Rollendatei übereinstimmen (siehe unten).
|
||||
* `postInstallLogicFunctionUniversalIdentifier` (optional) verweist auf eine Logikfunktion, die nach der Installation der App automatisch ausgeführt wird. Siehe [Post-Installationsfunktionen](#post-install-functions).
|
||||
|
||||
#### Rollen und Berechtigungen
|
||||
|
||||
@@ -457,6 +493,55 @@ Notizen:
|
||||
* Das Array `triggers` ist optional. Funktionen ohne Trigger können als von anderen Funktionen aufgerufene Utility-Funktionen verwendet werden.
|
||||
* Sie können mehrere Trigger-Typen in einer Funktion kombinieren.
|
||||
|
||||
### Post-Installationsfunktionen
|
||||
|
||||
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.
|
||||
|
||||
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
|
||||
import { defineLogicFunction } from 'twenty-sdk';
|
||||
|
||||
export const POST_INSTALL_UNIVERSAL_IDENTIFIER = '<generated-uuid>';
|
||||
|
||||
const handler = async (): Promise<void> => {
|
||||
console.log('Post install logic function executed successfully!');
|
||||
};
|
||||
|
||||
export default defineLogicFunction({
|
||||
universalIdentifier: POST_INSTALL_UNIVERSAL_IDENTIFIER,
|
||||
name: 'post-install',
|
||||
description: 'Runs after installation to set up the application.',
|
||||
timeoutSeconds: 300,
|
||||
handler,
|
||||
});
|
||||
```
|
||||
|
||||
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';
|
||||
|
||||
export default defineApplication({
|
||||
// ...
|
||||
postInstallLogicFunctionUniversalIdentifier: POST_INSTALL_UNIVERSAL_IDENTIFIER,
|
||||
});
|
||||
```
|
||||
|
||||
Du kannst die Post-Installationsfunktion auch jederzeit manuell über die CLI ausführen:
|
||||
|
||||
```bash filename="Terminal"
|
||||
yarn twenty function:execute --postInstall
|
||||
```
|
||||
|
||||
Hauptpunkte:
|
||||
|
||||
* 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
|
||||
|
||||
<Warning>
|
||||
@@ -554,6 +639,71 @@ Sie können neue Funktionen auf zwei Arten erstellen:
|
||||
* **Generiert**: Führen Sie `yarn twenty entity:add` aus und wählen Sie die Option zum Hinzufügen einer neuen Logikfunktion. Dadurch wird eine Starterdatei mit Handler und Konfiguration erzeugt.
|
||||
* **Manuell**: Erstellen Sie eine neue `*.logic-function.ts`-Datei und verwenden Sie `defineLogicFunction()` nach demselben Muster.
|
||||
|
||||
### Eine Logikfunktion als Tool markieren
|
||||
|
||||
Logikfunktionen können als **Tools** für KI-Agenten und Workflows verfügbar gemacht werden. Wenn eine Funktion als Tool markiert ist, wird sie von den KI-Funktionen von Twenty auffindbar und kann als Schritt in Workflow-Automatisierungen ausgewählt werden.
|
||||
|
||||
Um eine Logikfunktion als Tool zu markieren, setzen Sie `isTool: true` und geben Sie ein `toolInputSchema` an, das die erwarteten Eingabeparameter mithilfe von [JSON Schema](https://json-schema.org/) beschreibt:
|
||||
|
||||
```typescript
|
||||
// src/logic-functions/enrich-company.logic-function.ts
|
||||
import { defineLogicFunction } from 'twenty-sdk';
|
||||
import Twenty from '~/generated';
|
||||
|
||||
const handler = async (params: { companyName: string; domain?: string }) => {
|
||||
const client = new Twenty();
|
||||
|
||||
const result = await client.mutation({
|
||||
createTask: {
|
||||
__args: {
|
||||
data: {
|
||||
title: `Enrich data for ${params.companyName}`,
|
||||
body: `Domain: ${params.domain ?? 'unknown'}`,
|
||||
},
|
||||
},
|
||||
id: true,
|
||||
},
|
||||
});
|
||||
|
||||
return { taskId: result.createTask.id };
|
||||
};
|
||||
|
||||
export default defineLogicFunction({
|
||||
universalIdentifier: 'f47ac10b-58cc-4372-a567-0e02b2c3d479',
|
||||
name: 'enrich-company',
|
||||
description: 'Enrich a company record with external data',
|
||||
timeoutSeconds: 10,
|
||||
handler,
|
||||
isTool: true,
|
||||
toolInputSchema: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
companyName: {
|
||||
type: 'string',
|
||||
description: 'The name of the company to enrich',
|
||||
},
|
||||
domain: {
|
||||
type: 'string',
|
||||
description: 'The company website domain (optional)',
|
||||
},
|
||||
},
|
||||
required: ['companyName'],
|
||||
},
|
||||
});
|
||||
```
|
||||
|
||||
Hauptpunkte:
|
||||
|
||||
* **`isTool`** (`boolean`, Standard: `false`): Wenn auf `true` gesetzt, wird die Funktion als Tool registriert und steht KI-Agenten und Workflow-Automatisierungen zur Verfügung.
|
||||
* **`toolInputSchema`** (`object`, optional): Ein JSON-Schema-Objekt, das die Parameter beschreibt, die Ihre Funktion akzeptiert. KI-Agenten verwenden dieses Schema, um zu verstehen, welche Eingaben das Tool erwartet, und um Aufrufe zu validieren. Falls weggelassen, lautet der Standardwert für das Schema `{ type: 'object', properties: {} }` (keine Parameter).
|
||||
* Funktionen mit `isTool: false` (oder nicht gesetzt) werden **nicht** als Tools bereitgestellt. Sie können weiterhin direkt ausgeführt oder von anderen Funktionen aufgerufen werden, erscheinen jedoch nicht in der Tool-Erkennung.
|
||||
* **Tool-Benennung**: Wenn als Tool bereitgestellt, wird der Funktionsname automatisch zu `logic_function_<name>` normalisiert (in Kleinbuchstaben umgewandelt, nicht alphanumerische Zeichen durch Unterstriche ersetzt). Beispielsweise wird `enrich-company` zu `logic_function_enrich_company`.
|
||||
* Sie können `isTool` mit Triggern kombinieren — eine Funktion kann gleichzeitig sowohl ein Tool (von KI-Agenten aufrufbar) als auch durch Ereignisse (Cron, Datenbankereignisse, Routen) ausgelöst werden.
|
||||
|
||||
<Note>
|
||||
**Schreiben Sie eine gute `description`.** KI-Agenten verlassen sich auf das `description`-Feld der Funktion, um zu entscheiden, wann das Tool verwendet werden soll. Seien Sie konkret darin, was das Tool tut und wann es aufgerufen werden soll.
|
||||
</Note>
|
||||
|
||||
### Frontend-Komponenten
|
||||
|
||||
Frontend-Komponenten ermöglichen es Ihnen, benutzerdefinierte React-Komponenten zu erstellen, die innerhalb der Twenty-UI gerendert werden. Verwenden Sie `defineFrontComponent()`, um Komponenten mit eingebauter Validierung zu definieren:
|
||||
@@ -593,7 +743,7 @@ Sie können neue Frontend-Komponenten auf zwei Arten erstellen:
|
||||
|
||||
### Generierter typisierter Client
|
||||
|
||||
Führen Sie `yarn twenty app:generate` aus, um einen lokalen typisierten Client in `generated/` basierend auf Ihrem Arbeitsbereichs-Schema zu erstellen. Verwenden Sie ihn in Ihren Funktionen:
|
||||
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:
|
||||
|
||||
```typescript
|
||||
import Twenty from '~/generated';
|
||||
@@ -602,7 +752,7 @@ const client = new Twenty();
|
||||
const { me } = await client.query({ me: { id: true, displayName: true } });
|
||||
```
|
||||
|
||||
Der Client wird durch `yarn twenty app:generate` erneut generiert. Führen Sie ihn nach Änderungen an Ihren Objekten oder beim Onboarding in einen neuen Workspace erneut aus.
|
||||
Der Client wird von `yarn twenty app:dev` automatisch neu generiert, sobald sich Ihre Objekte oder Felder ändern.
|
||||
|
||||
#### Laufzeit-Anmeldedaten in Logikfunktionen
|
||||
|
||||
@@ -639,13 +789,13 @@ Fügen Sie dann ein `twenty`-Skript hinzu:
|
||||
}
|
||||
```
|
||||
|
||||
Jetzt können Sie alle Befehle über `yarn twenty <command>` ausführen, z. B. `yarn twenty app:dev`, `yarn twenty app:generate`, `yarn twenty help` usw.
|
||||
Jetzt können Sie alle Befehle über `yarn twenty <command>` ausführen, z. B. `yarn twenty app:dev`, `yarn twenty help` usw.
|
||||
|
||||
## Fehlerbehebung
|
||||
|
||||
* Authentifizierungsfehler: Führen Sie `yarn twenty auth:login` aus und stellen Sie sicher, dass Ihr API-Schlüssel die erforderlichen Berechtigungen hat.
|
||||
* Verbindung zum Server nicht möglich: Überprüfen Sie die API-URL und dass der Twenty-Server erreichbar ist.
|
||||
* Typen oder Client fehlen/veraltet: Führen Sie `yarn twenty app:generate` aus.
|
||||
* Typen oder Client fehlen/veraltet: Starten Sie `yarn twenty app:dev` neu — der typisierte Client wird automatisch generiert.
|
||||
* Dev-Modus synchronisiert nicht: Stellen Sie sicher, dass `yarn twenty app:dev` läuft und dass Änderungen von Ihrer Umgebung nicht ignoriert werden.
|
||||
|
||||
Discord-Hilfekanal: https://discord.com/channels/1130383047699738754/1130386664812982322
|
||||
|
||||
@@ -52,9 +52,6 @@ Desde aquí usted puede:
|
||||
# Añade una nueva entidad a tu aplicación (guiado)
|
||||
yarn entity:add
|
||||
|
||||
# Genera un cliente tipado de Twenty y tipos de entidad del espacio de trabajo
|
||||
yarn app:generate
|
||||
|
||||
# Supervisa los registros de funciones de tu aplicación
|
||||
yarn function:logs
|
||||
|
||||
@@ -157,7 +154,7 @@ src/
|
||||
|
||||
A grandes rasgos:
|
||||
|
||||
* **package.json**: Declara el nombre de la aplicación, la versión, los entornos (Node 24+, Yarn 4) y agrega `twenty-sdk` además de scripts como `app:dev`, `app:generate`, `entity:add`, `function:logs`, `function:execute`, `app:uninstall` y `auth:login` que delegan en la CLI local `twenty`.
|
||||
* **package.json**: Declara el nombre de la aplicación, la versión, los entornos (Node 24+, Yarn 4) y agrega `twenty-sdk` además de scripts como `app:dev`, `entity:add`, `function:logs`, `function:execute`, `app:uninstall` y `auth:login` que delegan en la CLI local `twenty`.
|
||||
* **.gitignore**: Ignora artefactos comunes como `node_modules`, `.yarn`, `generated/` (cliente tipado), `dist/`, `build/`, carpetas de cobertura, archivos de registro y archivos `.env*`.
|
||||
* **yarn.lock**, **.yarnrc.yml**, **.yarn/**: Bloquean y configuran la cadena de herramientas Yarn 4 utilizada por el proyecto.
|
||||
* **.nvmrc**: Fija la versión de Node.js esperada por el proyecto.
|
||||
@@ -173,7 +170,7 @@ A grandes rasgos:
|
||||
|
||||
Comandos posteriores añadirán más archivos y carpetas:
|
||||
|
||||
* `yarn app:generate` creará una carpeta `generated/` (cliente tipado de Twenty + tipos del espacio de trabajo).
|
||||
* `yarn app:dev` genera automáticamente el cliente Twenty tipado en `node_modules/twenty-sdk/generated`.
|
||||
* `yarn entity:add` añadirá archivos de definición de entidades en `src/` para tus objetos, funciones, componentes de interfaz o roles personalizados.
|
||||
|
||||
## Autenticación
|
||||
@@ -585,7 +582,7 @@ Puedes crear funciones nuevas de dos maneras:
|
||||
|
||||
### Cliente tipado generado
|
||||
|
||||
Ejecuta yarn app:generate para crear un cliente tipado local en generated/ basado en el esquema de tu espacio de trabajo. Úsalo en tus funciones:
|
||||
`yarn app:dev` genera automáticamente el cliente Twenty tipado en `node_modules/twenty-sdk/generated`. Úsalo en tus funciones:
|
||||
|
||||
```typescript
|
||||
import Twenty from '~/generated';
|
||||
@@ -594,7 +591,7 @@ const client = new Twenty();
|
||||
const { me } = await client.query({ me: { id: true, displayName: true } });
|
||||
```
|
||||
|
||||
El cliente se vuelve a generar con `yarn app:generate`. Vuelve a ejecutarlo después de cambiar tus objetos o al incorporarte a un nuevo espacio de trabajo.
|
||||
El cliente se regenera automáticamente durante la ejecución de `app:dev`. Reinicia `app:dev` después de cambiar tus objetos o al incorporarte a un nuevo espacio de trabajo.
|
||||
|
||||
#### Credenciales en tiempo de ejecución en funciones de lógica
|
||||
|
||||
@@ -632,7 +629,6 @@ Luego agrega scripts como estos:
|
||||
"auth:switch": "twenty auth:switch",
|
||||
"auth:list": "twenty auth:list",
|
||||
"app:dev": "twenty app:dev",
|
||||
"app:generate": "twenty app:generate",
|
||||
"app:uninstall": "twenty app:uninstall",
|
||||
"entity:add": "twenty entity:add",
|
||||
"function:logs": "twenty function:logs",
|
||||
@@ -642,13 +638,13 @@ Luego agrega scripts como estos:
|
||||
}
|
||||
```
|
||||
|
||||
Ahora puedes ejecutar los mismos comandos mediante Yarn, p. ej., `yarn app:dev`, `yarn app:generate`, etc.
|
||||
Ahora puedes ejecutar los mismos comandos mediante Yarn, p. ej., `yarn app:dev`, etc.
|
||||
|
||||
## Solución de problemas
|
||||
|
||||
* Errores de autenticación: ejecuta `yarn auth:login` y asegúrate de que tu clave de API tenga los permisos necesarios.
|
||||
* No se puede conectar al servidor: verifica la URL de la API y que el servidor de Twenty sea accesible.
|
||||
* Tipos o cliente faltantes/obsoletos: ejecuta `yarn app:generate`.
|
||||
* Tipos o cliente faltantes/obsoletos: reinicia `yarn app:dev`.
|
||||
* El modo de desarrollo no sincroniza: asegúrate de que `yarn app:dev` esté ejecutándose y de que los cambios no sean ignorados por tu entorno.
|
||||
|
||||
Canal de ayuda en Discord: https://discord.com/channels/1130383047699738754/1130386664812982322
|
||||
|
||||
@@ -52,9 +52,6 @@ yarn app:dev
|
||||
# Ajouter une nouvelle entité à votre application (assisté)
|
||||
yarn entity:add
|
||||
|
||||
# Générer un client Twenty typé et les types d'entité de l'espace de travail
|
||||
yarn app:generate
|
||||
|
||||
# Surveiller les journaux des fonctions de votre application
|
||||
yarn function:logs
|
||||
|
||||
@@ -157,7 +154,7 @@ src/
|
||||
|
||||
Dans les grandes lignes :
|
||||
|
||||
* **package.json** : Déclare le nom de l’application, la version, les moteurs (Node 24+, Yarn 4), et ajoute `twenty-sdk` ainsi que des scripts comme `app:dev`, `app:generate`, `entity:add`, `function:logs`, `function:execute`, `app:uninstall` et `auth:login` qui délèguent à la CLI locale `twenty`.
|
||||
* **package.json** : Déclare le nom de l’application, la version, les moteurs (Node 24+, Yarn 4), et ajoute `twenty-sdk` ainsi que des scripts comme `app:dev`, `entity:add`, `function:logs`, `function:execute`, `app:uninstall` et `auth:login` qui délèguent à la CLI locale `twenty`.
|
||||
* **.gitignore** : Ignore les artefacts courants tels que `node_modules`, `.yarn`, `generated/` (client typé), `dist/`, `build/`, les dossiers de couverture, les fichiers journaux et les fichiers `.env*`.
|
||||
* **yarn.lock**, **.yarnrc.yml**, **.yarn/** : Verrouillent et configurent la chaîne d’outils Yarn 4 utilisée par le projet.
|
||||
* **.nvmrc** : Fige la version de Node.js attendue par le projet.
|
||||
@@ -173,7 +170,7 @@ Dans les grandes lignes :
|
||||
|
||||
Des commandes ultérieures ajouteront d’autres fichiers et dossiers :
|
||||
|
||||
* `yarn app:generate` créera un dossier `generated/` (client Twenty typé + types de l’espace de travail).
|
||||
* `yarn app:dev` génère automatiquement le client Twenty typé dans `node_modules/twenty-sdk/generated`.
|
||||
* `yarn entity:add` ajoutera des fichiers de définition d’entité sous `src/` pour vos objets, fonctions, composants front-end ou rôles personnalisés.
|
||||
|
||||
## Authentification
|
||||
@@ -585,7 +582,7 @@ Vous pouvez créer de nouvelles fonctions de deux façons :
|
||||
|
||||
### Client typé généré
|
||||
|
||||
Exécutez yarn app:generate pour créer un client typé local dans generated/ basé sur le schéma de votre espace de travail. Utilisez-le dans vos fonctions :
|
||||
`yarn app:dev` génère automatiquement le client Twenty typé dans `node_modules/twenty-sdk/generated`. Utilisez-le dans vos fonctions :
|
||||
|
||||
```typescript
|
||||
import Twenty from '~/generated';
|
||||
@@ -594,7 +591,7 @@ const client = new Twenty();
|
||||
const { me } = await client.query({ me: { id: true, displayName: true } });
|
||||
```
|
||||
|
||||
Le client est régénéré par `yarn app:generate`. Relancez après avoir modifié vos objets ou lors de l’intégration à un nouvel espace de travail.
|
||||
Le client est régénéré automatiquement pendant l'exécution de `app:dev`. Redémarrez `app:dev` après avoir modifié vos objets ou lors de l’intégration à un nouvel espace de travail.
|
||||
|
||||
#### Identifiants d’exécution dans les fonctions logiques
|
||||
|
||||
@@ -632,7 +629,6 @@ Ajoutez ensuite des scripts comme ceux-ci :
|
||||
"auth:switch": "twenty auth:switch",
|
||||
"auth:list": "twenty auth:list",
|
||||
"app:dev": "twenty app:dev",
|
||||
"app:generate": "twenty app:generate",
|
||||
"app:uninstall": "twenty app:uninstall",
|
||||
"entity:add": "twenty entity:add",
|
||||
"function:logs": "twenty function:logs",
|
||||
@@ -642,13 +638,13 @@ Ajoutez ensuite des scripts comme ceux-ci :
|
||||
}
|
||||
```
|
||||
|
||||
Vous pouvez désormais exécuter les mêmes commandes via Yarn, par exemple `yarn app:dev`, `yarn app:generate`, etc.
|
||||
Vous pouvez désormais exécuter les mêmes commandes via Yarn, par exemple `yarn app:dev`, etc.
|
||||
|
||||
## Résolution des problèmes
|
||||
|
||||
* Erreurs d’authentification : exécutez `yarn auth:login` et assurez-vous que votre clé API dispose des autorisations requises.
|
||||
* Impossible de se connecter au serveur : vérifiez l’URL de l’API et que le serveur Twenty est accessible.
|
||||
* Types ou client manquants/obsolètes : exécutez `yarn app:generate`.
|
||||
* Types ou client manquants/obsolètes : redémarrez `yarn app:dev`.
|
||||
* Le mode dev ne se synchronise pas : assurez-vous que `yarn app:dev` est en cours d’exécution et que les modifications ne sont pas ignorées par votre environnement.
|
||||
|
||||
Canal d’aide Discord : https://discord.com/channels/1130383047699738754/1130386664812982322
|
||||
|
||||
@@ -27,7 +27,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,20 +42,33 @@ 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"
|
||||
# Predefinita (esaustiva): tutti gli esempi (oggetto, campo, funzione logica, componente front-end, vista, voce del menu di navigazione)
|
||||
npx create-twenty-app@latest my-app
|
||||
|
||||
# Minimale: solo i file principali (application-config.ts e default-role.ts)
|
||||
npx create-twenty-app@latest my-app --minimal
|
||||
|
||||
# Interattiva: seleziona quali esempi includere
|
||||
npx create-twenty-app@latest my-app --interactive
|
||||
```
|
||||
|
||||
Da qui puoi:
|
||||
|
||||
```bash filename="Terminal"
|
||||
# Aggiungi una nuova entità alla tua applicazione (guidata)
|
||||
yarn twenty entity:add
|
||||
|
||||
# Genera un client Twenty tipizzato e i tipi di entità dell'area di lavoro
|
||||
yarn twenty app:generate
|
||||
|
||||
# Monitora i log delle funzioni della tua applicazione
|
||||
yarn twenty function:logs
|
||||
|
||||
# Esegui una funzione per nome
|
||||
yarn twenty function:execute -n my-function -p '{\"name\": \"test\"}'
|
||||
yarn twenty function:execute -n my-function -p '{"name": "test"}'
|
||||
|
||||
# Esegui la funzione post-installazione
|
||||
yarn twenty function:execute --postInstall
|
||||
|
||||
# Disinstalla l'applicazione dallo spazio di lavoro corrente
|
||||
yarn twenty app:uninstall
|
||||
@@ -73,9 +86,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 e un ruolo funzione predefinito
|
||||
* 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/
|
||||
@@ -94,12 +107,23 @@ my-twenty-app/
|
||||
├── application-config.ts # Obbligatorio - configurazione principale dell'applicazione
|
||||
├── roles/
|
||||
│ └── default-role.ts # Ruolo predefinito per le funzioni logiche
|
||||
├── objects/
|
||||
│ └── example-object.ts # Definizione di oggetto personalizzato di esempio
|
||||
├── fields/
|
||||
│ └── example-field.ts # Definizione di campo autonomo di esempio
|
||||
├── logic-functions/
|
||||
│ └── hello-world.ts # Funzione logica di esempio
|
||||
└── front-components/
|
||||
└── hello-world.tsx # Componente front-end di esempio
|
||||
│ ├── hello-world.ts # Funzione logica di esempio
|
||||
│ └── post-install.ts # Funzione logica post-installazione
|
||||
├── front-components/
|
||||
│ └── hello-world.tsx # Componente front-end di esempio
|
||||
├── views/
|
||||
│ └── example-view.ts # Definizione di vista salvata di esempio
|
||||
└── navigation-menu-items/
|
||||
└── example-navigation-menu-item.ts # Link di navigazione della barra laterale di esempio
|
||||
```
|
||||
|
||||
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.
|
||||
@@ -115,13 +139,15 @@ 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 |
|
||||
|
||||
<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.
|
||||
@@ -142,7 +168,7 @@ export default defineObject({
|
||||
|
||||
Comandi successivi aggiungeranno altri file e cartelle:
|
||||
|
||||
* `yarn twenty app:generate` creerà una cartella `generated/` (client Twenty tipizzato + tipi dello spazio di lavoro).
|
||||
* `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.
|
||||
|
||||
## Autenticazione
|
||||
@@ -186,14 +212,16 @@ 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 |
|
||||
|
||||
Queste funzioni convalidano la configurazione in fase di build e offrono il completamento automatico nell'IDE e la sicurezza dei tipi.
|
||||
|
||||
@@ -279,7 +307,11 @@ Punti chiave:
|
||||
* Puoi generare nuovi oggetti con `yarn twenty entity:add`, che ti guida nella denominazione, nei campi e nelle relazioni.
|
||||
|
||||
<Note>
|
||||
**I campi base vengono creati automaticamente.** Quando definisci un oggetto personalizzato, Twenty aggiunge automaticamente i campi standard come `name`, `createdAt`, `updatedAt`, `createdBy`, `position` e `deletedAt`. Non è necessario definirli nel tuo array `fields` — aggiungi solo i tuoi campi personalizzati.
|
||||
**I campi base vengono creati automaticamente.** Quando definisci un oggetto personalizzato, Twenty aggiunge automaticamente i campi standard
|
||||
come `id`, `name`, `createdAt`, `updatedAt`, `createdBy`, `updatedBy` e `deletedAt`.
|
||||
Non è necessario definirli nel tuo array `fields` — aggiungi solo i tuoi campi personalizzati.
|
||||
Puoi sovrascrivere i campi predefiniti definendo un campo con lo stesso nome nel tuo array `fields`,
|
||||
ma non è consigliato.
|
||||
</Note>
|
||||
|
||||
### Configurazione dell'applicazione (application-config.ts)
|
||||
@@ -289,6 +321,7 @@ Ogni app ha un singolo file `application-config.ts` che descrive:
|
||||
* **Identità dell'app**: identificatori, nome visualizzato e descrizione.
|
||||
* **Come vengono eseguite le sue funzioni**: quale ruolo usano per i permessi.
|
||||
* **Variabili (opzionali)**: coppie chiave–valore esposte alle funzioni come variabili d'ambiente.
|
||||
* **(Opzionale) funzione post-installazione**: una funzione logica che viene eseguita dopo l'installazione dell'app.
|
||||
|
||||
Usa `defineApplication()` per definire la configurazione della tua applicazione:
|
||||
|
||||
@@ -296,6 +329,7 @@ Usa `defineApplication()` per definire la configurazione della tua applicazione:
|
||||
// src/application-config.ts
|
||||
import { defineApplication } from 'twenty-sdk';
|
||||
import { DEFAULT_ROLE_UNIVERSAL_IDENTIFIER } from 'src/roles/default-role';
|
||||
import { POST_INSTALL_UNIVERSAL_IDENTIFIER } from 'src/logic-functions/post-install';
|
||||
|
||||
export default defineApplication({
|
||||
universalIdentifier: '4ec0391d-18d5-411c-b2f3-266ddc1c3ef7',
|
||||
@@ -311,6 +345,7 @@ export default defineApplication({
|
||||
},
|
||||
},
|
||||
defaultRoleUniversalIdentifier: DEFAULT_ROLE_UNIVERSAL_IDENTIFIER,
|
||||
postInstallLogicFunctionUniversalIdentifier: POST_INSTALL_UNIVERSAL_IDENTIFIER,
|
||||
});
|
||||
```
|
||||
|
||||
@@ -319,6 +354,7 @@ Note:
|
||||
* I campi `universalIdentifier` sono ID deterministici sotto il tuo controllo; generali una volta e mantienili stabili tra le sincronizzazioni.
|
||||
* `applicationVariables` diventano variabili d'ambiente per le tue funzioni (ad esempio, `DEFAULT_RECIPIENT_NAME` è disponibile come `process.env.DEFAULT_RECIPIENT_NAME`).
|
||||
* `defaultRoleUniversalIdentifier` deve corrispondere al file del ruolo (vedi sotto).
|
||||
* `postInstallLogicFunctionUniversalIdentifier` (opzionale) fa riferimento a una funzione logica che viene eseguita automaticamente dopo l'installazione dell'app. Vedi [Funzioni post-installazione](#post-install-functions).
|
||||
|
||||
#### Ruoli e permessi
|
||||
|
||||
@@ -457,6 +493,55 @@ Note:
|
||||
* L'array `triggers` è facoltativo. Le funzioni senza trigger possono essere utilizzate come funzioni di utilità richiamate da altre funzioni.
|
||||
* Puoi combinare più tipi di trigger in un'unica funzione.
|
||||
|
||||
### Funzioni post-installazione
|
||||
|
||||
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.
|
||||
|
||||
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
|
||||
import { defineLogicFunction } from 'twenty-sdk';
|
||||
|
||||
export const POST_INSTALL_UNIVERSAL_IDENTIFIER = '<generated-uuid>';
|
||||
|
||||
const handler = async (): Promise<void> => {
|
||||
console.log('Post install logic function executed successfully!');
|
||||
};
|
||||
|
||||
export default defineLogicFunction({
|
||||
universalIdentifier: POST_INSTALL_UNIVERSAL_IDENTIFIER,
|
||||
name: 'post-install',
|
||||
description: 'Runs after installation to set up the application.',
|
||||
timeoutSeconds: 300,
|
||||
handler,
|
||||
});
|
||||
```
|
||||
|
||||
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';
|
||||
|
||||
export default defineApplication({
|
||||
// ...
|
||||
postInstallLogicFunctionUniversalIdentifier: POST_INSTALL_UNIVERSAL_IDENTIFIER,
|
||||
});
|
||||
```
|
||||
|
||||
Puoi anche eseguire manualmente la funzione di post-installazione in qualsiasi momento utilizzando la CLI:
|
||||
|
||||
```bash filename="Terminal"
|
||||
yarn twenty function:execute --postInstall
|
||||
```
|
||||
|
||||
Punti chiave:
|
||||
|
||||
* 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
|
||||
|
||||
<Warning>
|
||||
@@ -554,6 +639,71 @@ Puoi creare nuove funzioni in due modi:
|
||||
* **Generata dallo scaffolder**: Esegui `yarn twenty entity:add` e scegli l'opzione per aggiungere una nuova funzione logica. Questo genera un file iniziale con un handler e una configurazione.
|
||||
* **Manuale**: Crea un nuovo file `*.logic-function.ts` e usa `defineLogicFunction()`, seguendo lo stesso schema.
|
||||
|
||||
### Contrassegnare una funzione logica come strumento
|
||||
|
||||
Le funzioni logiche possono essere esposte come **strumenti** per gli agenti di IA e i flussi di lavoro. Quando una funzione è contrassegnata come strumento, diventa individuabile dalle funzionalità di IA di Twenty e può essere selezionata come passaggio nelle automazioni dei flussi di lavoro.
|
||||
|
||||
Per contrassegnare una funzione logica come strumento, imposta `isTool: true` e fornisci un `toolInputSchema` che descriva i parametri di input attesi utilizzando [JSON Schema](https://json-schema.org/):
|
||||
|
||||
```typescript
|
||||
// src/logic-functions/enrich-company.logic-function.ts
|
||||
import { defineLogicFunction } from 'twenty-sdk';
|
||||
import Twenty from '~/generated';
|
||||
|
||||
const handler = async (params: { companyName: string; domain?: string }) => {
|
||||
const client = new Twenty();
|
||||
|
||||
const result = await client.mutation({
|
||||
createTask: {
|
||||
__args: {
|
||||
data: {
|
||||
title: `Enrich data for ${params.companyName}`,
|
||||
body: `Domain: ${params.domain ?? 'unknown'}`,
|
||||
},
|
||||
},
|
||||
id: true,
|
||||
},
|
||||
});
|
||||
|
||||
return { taskId: result.createTask.id };
|
||||
};
|
||||
|
||||
export default defineLogicFunction({
|
||||
universalIdentifier: 'f47ac10b-58cc-4372-a567-0e02b2c3d479',
|
||||
name: 'enrich-company',
|
||||
description: 'Enrich a company record with external data',
|
||||
timeoutSeconds: 10,
|
||||
handler,
|
||||
isTool: true,
|
||||
toolInputSchema: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
companyName: {
|
||||
type: 'string',
|
||||
description: 'The name of the company to enrich',
|
||||
},
|
||||
domain: {
|
||||
type: 'string',
|
||||
description: 'The company website domain (optional)',
|
||||
},
|
||||
},
|
||||
required: ['companyName'],
|
||||
},
|
||||
});
|
||||
```
|
||||
|
||||
Punti chiave:
|
||||
|
||||
* **`isTool`** (`boolean`, predefinito: `false`): Quando impostato su `true`, la funzione viene registrata come strumento e diventa disponibile per gli agenti IA e le automazioni dei flussi di lavoro.
|
||||
* **`toolInputSchema`** (`object`, opzionale): Un oggetto JSON Schema che descrive i parametri accettati dalla funzione. Gli agenti IA utilizzano questo schema per capire quali input si aspetta lo strumento e per convalidare le chiamate. Se omesso, lo schema assume il valore predefinito `{ type: 'object', properties: {} }` (nessun parametro).
|
||||
* Le funzioni con `isTool: false` (o non impostato) **non** vengono esposte come strumenti. Possono comunque essere eseguite direttamente o chiamate da altre funzioni, ma non compariranno nell'individuazione degli strumenti.
|
||||
* **Denominazione dello strumento**: Quando esposta come strumento, il nome della funzione viene normalizzato automaticamente in `logic_function_<name>` (in minuscolo, i caratteri non alfanumerici vengono sostituiti da trattini bassi). Ad esempio, `enrich-company` diventa `logic_function_enrich_company`.
|
||||
* È possibile combinare `isTool` con i trigger — una funzione può essere sia uno strumento (invocabile dagli agenti IA) sia attivata da eventi (cron, eventi del database, routes) contemporaneamente.
|
||||
|
||||
<Note>
|
||||
**Scrivi una buona `description`.** Gli agenti IA fanno affidamento sul campo `description` della funzione per decidere quando usare lo strumento. Sii specifico su cosa fa lo strumento e quando dovrebbe essere invocato.
|
||||
</Note>
|
||||
|
||||
### Componenti front-end
|
||||
|
||||
I componenti front-end ti consentono di creare componenti React personalizzati che vengono renderizzati all'interno dell'interfaccia di Twenty. Usa `defineFrontComponent()` per definire componenti con convalida integrata:
|
||||
@@ -593,7 +743,7 @@ Puoi creare nuovi componenti front-end in due modi:
|
||||
|
||||
### Client tipizzato generato
|
||||
|
||||
Esegui `yarn twenty app:generate` per creare un client tipizzato locale in `generated/` basato sullo schema del tuo spazio di lavoro. Usalo nelle tue funzioni:
|
||||
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:
|
||||
|
||||
```typescript
|
||||
import Twenty from '~/generated';
|
||||
@@ -602,7 +752,7 @@ const client = new Twenty();
|
||||
const { me } = await client.query({ me: { id: true, displayName: true } });
|
||||
```
|
||||
|
||||
Il client viene rigenerato da `yarn twenty app:generate`. Eseguilo nuovamente dopo aver modificato i tuoi oggetti oppure quando effettui l'onboarding su un nuovo spazio di lavoro.
|
||||
Il client viene rigenerato automaticamente da `yarn twenty app:dev` ogni volta che i tuoi oggetti o campi cambiano.
|
||||
|
||||
#### Credenziali di runtime nelle funzioni logiche
|
||||
|
||||
@@ -639,13 +789,13 @@ Quindi aggiungi uno script `twenty`:
|
||||
}
|
||||
```
|
||||
|
||||
Ora puoi eseguire tutti i comandi tramite `yarn twenty <command>`, ad es. `yarn twenty app:dev`, `yarn twenty app:generate`, `yarn twenty help`, ecc.
|
||||
Ora puoi eseguire tutti i comandi tramite `yarn twenty <command>`, ad es. `yarn twenty app:dev`, `yarn twenty help`, ecc.
|
||||
|
||||
## Risoluzione dei problemi
|
||||
|
||||
* Errori di autenticazione: esegui `yarn twenty auth:login` e assicurati che la tua chiave API abbia i permessi richiesti.
|
||||
* Impossibile connettersi al server: verifica l'URL dell'API e che il server Twenty sia raggiungibile.
|
||||
* Tipi o client mancanti/obsoleti: esegui `yarn twenty app:generate`.
|
||||
* Types or client missing/outdated: restart `yarn twenty app:dev` — it auto-generates the typed client.
|
||||
* Modalità di sviluppo non sincronizzata: assicurati che `yarn twenty app:dev` sia in esecuzione e che le modifiche non vengano ignorate dal tuo ambiente.
|
||||
|
||||
Canale di supporto su Discord: https://discord.com/channels/1130383047699738754/1130386664812982322
|
||||
|
||||
@@ -52,9 +52,6 @@ yarn app:dev
|
||||
# アプリケーションに新しいエンティティを追加(ガイド付き)
|
||||
yarn entity:add
|
||||
|
||||
# 型付きの Twenty クライアントとワークスペースのエンティティ型を生成
|
||||
yarn app:generate
|
||||
|
||||
# アプリケーションの関数のログを監視
|
||||
yarn function:logs
|
||||
|
||||
@@ -156,7 +153,7 @@ src/
|
||||
|
||||
概要:
|
||||
|
||||
* **package.json**: Declares the app name, version, engines (Node 24+, Yarn 4), and adds `twenty-sdk` plus scripts like `app:dev`, `app:generate`, `entity:add`, `function:logs`, `function:execute`, `app:uninstall`, and `auth:login` that delegate to the local `twenty` CLI.
|
||||
* **package.json**: Declares the app name, version, engines (Node 24+, Yarn 4), and adds `twenty-sdk` plus scripts like `app:dev`, `entity:add`, `function:logs`, `function:execute`, `app:uninstall`, and `auth:login` that delegate to the local `twenty` CLI.
|
||||
* **.gitignore**: `node_modules`、`.yarn`、`generated/`(型付きクライアント)、`dist/`、`build/`、カバレッジ用フォルダー、ログファイル、`.env*` ファイルなどの一般的な生成物を無視します。
|
||||
* **yarn.lock**、**.yarnrc.yml**、**.yarn/**: プロジェクトで使用する Yarn 4 ツールチェーンをロックおよび構成します。
|
||||
* **.nvmrc**: プロジェクトで想定する Node.js バージョンを固定します。
|
||||
@@ -171,7 +168,7 @@ src/
|
||||
|
||||
後続のコマンドにより、さらにファイルやフォルダーが追加されます:
|
||||
|
||||
* `yarn app:generate` は `generated/` フォルダー(型付きの Twenty クライアント + ワークスペースの型)を作成します。
|
||||
* `yarn app:dev` は `node_modules/twenty-sdk/generated` に型付き Twenty クライアントを自動生成します。
|
||||
* `yarn entity:add` will add entity definition files under `src/` for your custom objects, functions, front components, or roles.
|
||||
|
||||
## 認証
|
||||
@@ -583,7 +580,7 @@ const handler = async (event: RoutePayload) => {
|
||||
|
||||
### 生成された型付きクライアント
|
||||
|
||||
ワークスペースのスキーマに基づき、generated/ にローカルの型付きクライアントを作成するには yarn app:generate を実行します。 関数内で使用します:
|
||||
`yarn app:dev` は `node_modules/twenty-sdk/generated` に型付き Twenty クライアントを自動生成します。 関数内で使用します:
|
||||
|
||||
```typescript
|
||||
import Twenty from '~/generated';
|
||||
@@ -592,7 +589,7 @@ const client = new Twenty();
|
||||
const { me } = await client.query({ me: { id: true, displayName: true } });
|
||||
```
|
||||
|
||||
このクライアントは `yarn app:generate` によって再生成されます。 Re-run after changing your objects or when onboarding to a new workspace.
|
||||
このクライアントは `app:dev` 実行中に自動的に再生成されます。 オブジェクトを変更した後、または新しいワークスペースにオンボーディングする際は、`app:dev` を再起動してください。
|
||||
|
||||
#### Runtime credentials in logic functions
|
||||
|
||||
@@ -630,7 +627,6 @@ yarn add -D twenty-sdk
|
||||
"auth:switch": "twenty auth:switch",
|
||||
"auth:list": "twenty auth:list",
|
||||
"app:dev": "twenty app:dev",
|
||||
"app:generate": "twenty app:generate",
|
||||
"app:uninstall": "twenty app:uninstall",
|
||||
"entity:add": "twenty entity:add",
|
||||
"function:logs": "twenty function:logs",
|
||||
@@ -640,13 +636,13 @@ yarn add -D twenty-sdk
|
||||
}
|
||||
```
|
||||
|
||||
Now you can run the same commands via Yarn, e.g. `yarn app:dev`, `yarn app:generate`, etc.
|
||||
Now you can run the same commands via Yarn, e.g. `yarn app:dev`, etc.
|
||||
|
||||
## トラブルシューティング
|
||||
|
||||
* 認証エラー: `yarn auth:login` を実行し、API キーに必要な権限があることを確認してください。
|
||||
* サーバーに接続できません: API URL と、Twenty サーバーに到達可能であることを確認してください。
|
||||
* Types or client missing/outdated: run `yarn app:generate`.
|
||||
* Types or client missing/outdated: restart `yarn app:dev`.
|
||||
* 開発モードで同期されない: `yarn app:dev` が実行中であり、環境によって変更が無視されていないことを確認してください。
|
||||
|
||||
Discord ヘルプチャンネル: https://discord.com/channels/1130383047699738754/1130386664812982322
|
||||
|
||||
@@ -52,9 +52,6 @@ yarn app:dev
|
||||
# Add a new entity to your application (guided)
|
||||
yarn entity:add
|
||||
|
||||
# Generate a typed Twenty client and workspace entity types
|
||||
yarn app:generate
|
||||
|
||||
# Watch your application's function logs
|
||||
yarn function:logs
|
||||
|
||||
@@ -157,7 +154,7 @@ src/
|
||||
|
||||
개요:
|
||||
|
||||
* **package.json**: 앱 이름, 버전, 엔진(Node 24+, Yarn 4)을 선언하고, `twenty-sdk`와 함께 `app:dev`, `app:generate`, `entity:add`, `function:logs`, `function:execute`, `app:uninstall`, `auth:login` 같은 스크립트를 추가합니다. 이 스크립트들은 로컬 `twenty` CLI에 위임됩니다.
|
||||
* **package.json**: 앱 이름, 버전, 엔진(Node 24+, Yarn 4)을 선언하고, `twenty-sdk`와 함께 `app:dev`, `entity:add`, `function:logs`, `function:execute`, `app:uninstall`, `auth:login` 같은 스크립트를 추가합니다. 이 스크립트들은 로컬 `twenty` CLI에 위임됩니다.
|
||||
* **.gitignore**: `node_modules`, `.yarn`, `generated/`(타입드 클라이언트), `dist/`, `build/`, 커버리지 폴더, 로그 파일, `.env*` 파일 등의 일반 산출물을 무시합니다.
|
||||
* **yarn.lock**, **.yarnrc.yml**, **.yarn/**: 프로젝트에서 사용하는 Yarn 4 툴체인을 고정하고 구성합니다.
|
||||
* **.nvmrc**: 프로젝트에서 예상하는 Node.js 버전을 고정합니다.
|
||||
@@ -173,7 +170,7 @@ src/
|
||||
|
||||
이후 명령을 실행하면 더 많은 파일과 폴더가 추가됩니다:
|
||||
|
||||
* `yarn app:generate`는 `generated/` 폴더를 생성합니다(타입드 Twenty 클라이언트 + 워크스페이스 타입).
|
||||
* `yarn app:dev`는 `node_modules/twenty-sdk/generated`에 타입드 Twenty 클라이언트를 자동으로 생성합니다.
|
||||
* `yarn entity:add`는 사용자 정의 객체, 함수, 프런트 컴포넌트 또는 역할에 대한 엔티티 정의 파일을 `src/` 아래에 추가합니다.
|
||||
|
||||
## 인증
|
||||
@@ -585,7 +582,7 @@ const handler = async (event: RoutePayload) => {
|
||||
|
||||
### 생성된 타입드 클라이언트
|
||||
|
||||
워크스페이스 스키마를 기반으로 generated/에 로컬 타입드 클라이언트를 생성하려면 yarn app:generate를 실행하세요. 함수에서 사용하세요:
|
||||
`yarn app:dev`는 `node_modules/twenty-sdk/generated`에 타입드 Twenty 클라이언트를 자동으로 생성합니다. 함수에서 사용하세요:
|
||||
|
||||
```typescript
|
||||
import Twenty from '~/generated';
|
||||
@@ -594,7 +591,7 @@ const client = new Twenty();
|
||||
const { me } = await client.query({ me: { id: true, displayName: true } });
|
||||
```
|
||||
|
||||
클라이언트는 `yarn app:generate`로 다시 생성됩니다. 객체를 변경한 후 또는 새 워크스페이스에 온보딩할 때 다시 실행하세요.
|
||||
클라이언트는 `app:dev` 실행 중 자동으로 다시 생성됩니다. 객체를 변경한 후 또는 새 워크스페이스에 온보딩할 때 `app:dev`를 다시 시작하세요.
|
||||
|
||||
#### 로직 함수의 런타임 자격 증명
|
||||
|
||||
@@ -632,7 +629,6 @@ yarn add -D twenty-sdk
|
||||
"auth:switch": "twenty auth:switch",
|
||||
"auth:list": "twenty auth:list",
|
||||
"app:dev": "twenty app:dev",
|
||||
"app:generate": "twenty app:generate",
|
||||
"app:uninstall": "twenty app:uninstall",
|
||||
"entity:add": "twenty entity:add",
|
||||
"function:logs": "twenty function:logs",
|
||||
@@ -642,13 +638,13 @@ yarn add -D twenty-sdk
|
||||
}
|
||||
```
|
||||
|
||||
이제 Yarn을 통해 동일한 명령을 실행할 수 있습니다. 예: `yarn app:dev`, `yarn app:generate` 등.
|
||||
이제 Yarn을 통해 동일한 명령을 실행할 수 있습니다. 예: `yarn app:dev` 등.
|
||||
|
||||
## 문제 해결
|
||||
|
||||
* 인증 오류: `yarn auth:login`를 실행하고 API 키에 필요한 권한이 있는지 확인하세요.
|
||||
* 서버에 연결할 수 없음: API URL과 Twenty 서버에 접근 가능한지 확인하세요.
|
||||
* 타입 또는 클라이언트가 없거나 오래된 경우: `yarn app:generate`를 실행하세요.
|
||||
* 타입 또는 클라이언트가 없거나 오래된 경우: `yarn app:dev`를 다시 시작하세요.
|
||||
* 개발 모드가 동기화되지 않음: `yarn app:dev`가 실행 중인지, 환경에서 변경 사항을 무시하지 않는지 확인하세요.
|
||||
|
||||
Discord 도움말 채널: https://discord.com/channels/1130383047699738754/1130386664812982322
|
||||
|
||||
@@ -27,35 +27,48 @@ 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"
|
||||
# Padrão (exhaustivo): todos os exemplos (objeto, campo, função de lógica, componente de front-end, visualização, item do menu de navegação)
|
||||
npx create-twenty-app@latest my-app
|
||||
|
||||
# Mínimo: apenas arquivos principais (application-config.ts e default-role.ts)
|
||||
npx create-twenty-app@latest my-app --minimal
|
||||
|
||||
# Interativo: selecione quais exemplos incluir
|
||||
npx create-twenty-app@latest my-app --interactive
|
||||
```
|
||||
|
||||
A partir daqui você pode:
|
||||
|
||||
```bash filename="Terminal"
|
||||
# Adicionar uma nova entidade à sua aplicação (assistido)
|
||||
yarn twenty entity:add
|
||||
|
||||
# Gerar um cliente Twenty tipado e tipos de entidades do espaço de trabalho
|
||||
yarn twenty app:generate
|
||||
|
||||
# Acompanhar os logs das funções da sua aplicação
|
||||
yarn twenty function:logs
|
||||
|
||||
# Executar uma função pelo nome
|
||||
yarn twenty function:execute -n my-function -p '{"name": "test"}'
|
||||
yarn twenty function:execute -n my-function -p '{\"name\": \"test\"}'
|
||||
|
||||
# Executar a função de pós-instalação
|
||||
yarn twenty function:execute --postInstall
|
||||
|
||||
# Desinstalar a aplicação do espaço de trabalho atual
|
||||
yarn twenty app:uninstall
|
||||
@@ -73,9 +86,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`
|
||||
* Gera uma configuração de aplicativo padrão e um papel padrão para as funções
|
||||
* 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,12 +107,23 @@ my-twenty-app/
|
||||
├── application-config.ts # Obrigatório - configuração principal da aplicação
|
||||
├── roles/
|
||||
│ └── default-role.ts # Papel padrão para funções de lógica
|
||||
├── objects/
|
||||
│ └── example-object.ts # Exemplo de definição de objeto personalizado
|
||||
├── fields/
|
||||
│ └── example-field.ts # Exemplo de definição de campo independente
|
||||
├── logic-functions/
|
||||
│ └── hello-world.ts # Exemplo de função de lógica
|
||||
└── front-components/
|
||||
└── hello-world.tsx # Exemplo de componente de front-end
|
||||
│ ├── hello-world.ts # Exemplo de função de lógica
|
||||
│ └── post-install.ts # Função de lógica de pós-instalação
|
||||
├── front-components/
|
||||
│ └── hello-world.tsx # Exemplo de componente de front-end
|
||||
├── views/
|
||||
│ └── example-view.ts # Exemplo de definição de visualização salva
|
||||
└── navigation-menu-items/
|
||||
└── example-navigation-menu-item.ts # Exemplo de link de navegação da barra lateral
|
||||
```
|
||||
|
||||
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.
|
||||
@@ -115,13 +139,15 @@ 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 |
|
||||
|
||||
<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.
|
||||
@@ -142,7 +168,7 @@ export default defineObject({
|
||||
|
||||
Comandos posteriores adicionarão mais arquivos e pastas:
|
||||
|
||||
* `yarn twenty app:generate` criará uma pasta `generated/` (cliente tipado do Twenty + tipos do espaço de trabalho).
|
||||
* `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.
|
||||
|
||||
## Autenticação
|
||||
@@ -186,14 +212,16 @@ 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 |
|
||||
|
||||
Essas funções validam sua configuração em tempo de compilação e oferecem autocompletar na IDE e segurança de tipos.
|
||||
|
||||
@@ -279,7 +307,11 @@ Pontos-chave:
|
||||
* Você pode criar novos objetos usando `yarn twenty entity:add`, que orienta você sobre nomeação, campos e relacionamentos.
|
||||
|
||||
<Note>
|
||||
**Os campos base são criados automaticamente.** Quando você define um objeto personalizado, o Twenty adiciona automaticamente campos padrão como `name`, `createdAt`, `updatedAt`, `createdBy`, `position` e `deletedAt`. Você não precisa definir esses no seu array `fields` — adicione apenas seus campos personalizados.
|
||||
**Os campos base são criados automaticamente.** Quando você define um objeto personalizado, o Twenty adiciona automaticamente campos padrão
|
||||
como `id`, `name`, `createdAt`, `updatedAt`, `createdBy`, `updatedBy` e `deletedAt`.
|
||||
Você não precisa definir esses no seu array `fields` — adicione apenas seus campos personalizados.
|
||||
Você pode substituir os campos padrão definindo um campo com o mesmo nome no seu array `fields`,
|
||||
mas isso não é recomendado.
|
||||
</Note>
|
||||
|
||||
### Configuração do aplicativo (application-config.ts)
|
||||
@@ -289,6 +321,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.
|
||||
* **(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:
|
||||
|
||||
@@ -296,6 +329,7 @@ Use `defineApplication()` to define your application configuration:
|
||||
// src/application-config.ts
|
||||
import { defineApplication } from 'twenty-sdk';
|
||||
import { DEFAULT_ROLE_UNIVERSAL_IDENTIFIER } from 'src/roles/default-role';
|
||||
import { POST_INSTALL_UNIVERSAL_IDENTIFIER } from 'src/logic-functions/post-install';
|
||||
|
||||
export default defineApplication({
|
||||
universalIdentifier: '4ec0391d-18d5-411c-b2f3-266ddc1c3ef7',
|
||||
@@ -311,6 +345,7 @@ export default defineApplication({
|
||||
},
|
||||
},
|
||||
defaultRoleUniversalIdentifier: DEFAULT_ROLE_UNIVERSAL_IDENTIFIER,
|
||||
postInstallLogicFunctionUniversalIdentifier: POST_INSTALL_UNIVERSAL_IDENTIFIER,
|
||||
});
|
||||
```
|
||||
|
||||
@@ -319,6 +354,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` (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
|
||||
|
||||
@@ -457,6 +493,55 @@ 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.
|
||||
|
||||
### Funções de pós-instalação
|
||||
|
||||
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.
|
||||
|
||||
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
|
||||
import { defineLogicFunction } from 'twenty-sdk';
|
||||
|
||||
export const POST_INSTALL_UNIVERSAL_IDENTIFIER = '<generated-uuid>';
|
||||
|
||||
const handler = async (): Promise<void> => {
|
||||
console.log('Post install logic function executed successfully!');
|
||||
};
|
||||
|
||||
export default defineLogicFunction({
|
||||
universalIdentifier: POST_INSTALL_UNIVERSAL_IDENTIFIER,
|
||||
name: 'post-install',
|
||||
description: 'Runs after installation to set up the application.',
|
||||
timeoutSeconds: 300,
|
||||
handler,
|
||||
});
|
||||
```
|
||||
|
||||
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';
|
||||
|
||||
export default defineApplication({
|
||||
// ...
|
||||
postInstallLogicFunctionUniversalIdentifier: POST_INSTALL_UNIVERSAL_IDENTIFIER,
|
||||
});
|
||||
```
|
||||
|
||||
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
|
||||
```
|
||||
|
||||
Pontos-chave:
|
||||
|
||||
* 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
|
||||
|
||||
<Warning>
|
||||
@@ -554,6 +639,71 @@ Você pode criar novas funções de duas formas:
|
||||
* **Gerado automaticamente**: Execute `yarn twenty entity:add` e escolha a opção para adicionar uma nova função de lógica. Isso gera um arquivo inicial com um handler e configuração.
|
||||
* **Manual**: Crie um novo arquivo `*.logic-function.ts` e use `defineLogicFunction()`, seguindo o mesmo padrão.
|
||||
|
||||
### Marcar uma função lógica como ferramenta
|
||||
|
||||
Funções lógicas podem ser expostas como **ferramentas** para agentes de IA e fluxos de trabalho. Quando uma função é marcada como ferramenta, ela fica disponível para os recursos de IA do Twenty e pode ser selecionada como uma etapa em automações de fluxos de trabalho.
|
||||
|
||||
Para marcar uma função lógica como ferramenta, defina `isTool: true` e forneça um `toolInputSchema` descrevendo os parâmetros de entrada esperados usando [JSON Schema](https://json-schema.org/):
|
||||
|
||||
```typescript
|
||||
// src/logic-functions/enrich-company.logic-function.ts
|
||||
import { defineLogicFunction } from 'twenty-sdk';
|
||||
import Twenty from '~/generated';
|
||||
|
||||
const handler = async (params: { companyName: string; domain?: string }) => {
|
||||
const client = new Twenty();
|
||||
|
||||
const result = await client.mutation({
|
||||
createTask: {
|
||||
__args: {
|
||||
data: {
|
||||
title: `Enrich data for ${params.companyName}`,
|
||||
body: `Domain: ${params.domain ?? 'unknown'}`,
|
||||
},
|
||||
},
|
||||
id: true,
|
||||
},
|
||||
});
|
||||
|
||||
return { taskId: result.createTask.id };
|
||||
};
|
||||
|
||||
export default defineLogicFunction({
|
||||
universalIdentifier: 'f47ac10b-58cc-4372-a567-0e02b2c3d479',
|
||||
name: 'enrich-company',
|
||||
description: 'Enrich a company record with external data',
|
||||
timeoutSeconds: 10,
|
||||
handler,
|
||||
isTool: true,
|
||||
toolInputSchema: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
companyName: {
|
||||
type: 'string',
|
||||
description: 'The name of the company to enrich',
|
||||
},
|
||||
domain: {
|
||||
type: 'string',
|
||||
description: 'The company website domain (optional)',
|
||||
},
|
||||
},
|
||||
required: ['companyName'],
|
||||
},
|
||||
});
|
||||
```
|
||||
|
||||
Pontos-chave:
|
||||
|
||||
* **`isTool`** (`boolean`, padrão: `false`): Quando definido como `true`, a função é registrada como uma ferramenta e fica disponível para agentes de IA e automações de fluxos de trabalho.
|
||||
* **`toolInputSchema`** (`object`, opcional): Um objeto JSON Schema que descreve os parâmetros que sua função aceita. Os agentes de IA usam esse esquema para entender quais entradas a ferramenta espera e para validar as chamadas. Se omitido, o esquema tem como padrão `{ type: 'object', properties: {} }` (sem parâmetros).
|
||||
* Funções com `isTool: false` (ou não definido) **não** são expostas como ferramentas. Elas ainda podem ser executadas diretamente ou chamadas por outras funções, mas não aparecerão na descoberta de ferramentas.
|
||||
* **Nomenclatura de ferramentas**: Quando exposta como uma ferramenta, o nome da função é automaticamente normalizado para `logic_function_<name>` (em minúsculas, caracteres não alfanuméricos substituídos por sublinhados). Por exemplo, `enrich-company` torna-se `logic_function_enrich_company`.
|
||||
* Você pode combinar `isTool` com gatilhos — uma função pode ser ao mesmo tempo uma ferramenta (chamável por agentes de IA) e acionada por eventos (cron, eventos de banco de dados, rotas) simultaneamente.
|
||||
|
||||
<Note>
|
||||
**Escreva uma boa `description`.** Os agentes de IA dependem do campo `description` da função para decidir quando usar a ferramenta. Seja específico sobre o que a ferramenta faz e quando ela deve ser chamada.
|
||||
</Note>
|
||||
|
||||
### Componentes de front-end
|
||||
|
||||
Componentes de front-end permitem criar componentes React personalizados que são renderizados na UI do Twenty. Use `defineFrontComponent()` para definir componentes com validação integrada:
|
||||
@@ -593,7 +743,7 @@ Você pode criar novos componentes de front-end de duas formas:
|
||||
|
||||
### Cliente tipado gerado
|
||||
|
||||
Execute `yarn twenty app:generate` para criar um cliente tipado local em `generated/` com base no esquema do seu espaço de trabalho. Use-o em suas funções:
|
||||
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:
|
||||
|
||||
```typescript
|
||||
import Twenty from '~/generated';
|
||||
@@ -602,7 +752,7 @@ const client = new Twenty();
|
||||
const { me } = await client.query({ me: { id: true, displayName: true } });
|
||||
```
|
||||
|
||||
O cliente é regenerado pelo `yarn twenty app:generate`. Execute novamente após alterar seus objetos ou ao ingressar em um novo workspace.
|
||||
O cliente é regenerado automaticamente pelo `yarn twenty app:dev` sempre que seus objetos ou campos forem alterados.
|
||||
|
||||
#### Credenciais em tempo de execução em funções de lógica
|
||||
|
||||
@@ -639,13 +789,13 @@ Em seguida, adicione um script `twenty`:
|
||||
}
|
||||
```
|
||||
|
||||
Agora você pode executar todos os comandos via `yarn twenty <command>`, por exemplo, `yarn twenty app:dev`, `yarn twenty app:generate`, `yarn twenty help`, etc.
|
||||
Agora você pode executar todos os comandos via `yarn twenty <command>`, por exemplo, `yarn twenty app:dev`, `yarn twenty help`, etc.
|
||||
|
||||
## Resolução de Problemas
|
||||
|
||||
* Erros de autenticação: execute `yarn twenty auth:login` e certifique-se de que sua chave de API tenha as permissões necessárias.
|
||||
* Não é possível conectar ao servidor: verifique a URL da API e se o servidor do Twenty está acessível.
|
||||
* Tipos ou cliente ausentes/desatualizados: execute `yarn twenty app:generate`.
|
||||
* Tipos ou cliente ausentes/desatualizados: reinicie `yarn twenty app:dev` — ele gera automaticamente o cliente tipado.
|
||||
* Modo de desenvolvimento não sincronizando: certifique-se de que `yarn twenty app:dev` esteja em execução e de que as alterações não estejam sendo ignoradas pelo seu ambiente.
|
||||
|
||||
Canal de ajuda no Discord: https://discord.com/channels/1130383047699738754/1130386664812982322
|
||||
|
||||
@@ -27,7 +27,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,21 +42,34 @@ 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)
|
||||
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"
|
||||
# Adaugă o entitate nouă în aplicația ta (ghidat)
|
||||
yarn twenty entity:add
|
||||
|
||||
# Generează un client Twenty tipizat și tipurile de entități ale spațiului de lucru
|
||||
yarn twenty app:generate
|
||||
|
||||
# Urmărește jurnalele funcțiilor aplicației tale
|
||||
yarn twenty function:logs
|
||||
|
||||
# Execută o funcție după nume
|
||||
yarn twenty function:execute -n my-function -p '{"name": "test"}'
|
||||
|
||||
# Execută funcția post-instalare
|
||||
yarn twenty function:execute --postInstall
|
||||
|
||||
# Dezinstalează aplicația din spațiul de lucru curent
|
||||
yarn twenty app:uninstall
|
||||
|
||||
@@ -73,9 +86,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 și un rol implicit pentru funcții
|
||||
* 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/
|
||||
@@ -89,17 +102,28 @@ my-twenty-app/
|
||||
eslint.config.mjs
|
||||
tsconfig.json
|
||||
README.md
|
||||
public/ # Public assets folder (images, fonts, etc.)
|
||||
public/ # Director pentru resurse publice (imagini, fonturi etc.)
|
||||
src/
|
||||
├── application-config.ts # Required - main application configuration
|
||||
├── application-config.ts # Obligatoriu - configurația principală a aplicației
|
||||
├── roles/
|
||||
│ └── default-role.ts # Default role for logic functions
|
||||
│ └── 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 # Example logic function
|
||||
└── front-components/
|
||||
└── hello-world.tsx # Example front component
|
||||
│ ├── 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ță
|
||||
├── 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ă
|
||||
```
|
||||
|
||||
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.
|
||||
@@ -115,13 +139,15 @@ 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 |
|
||||
|
||||
<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ță.
|
||||
@@ -142,7 +168,7 @@ export default defineObject({
|
||||
|
||||
Comenzile ulterioare vor adăuga mai multe fișiere și foldere:
|
||||
|
||||
* `yarn twenty app:generate` va crea un folder `generated/` (client Twenty tipizat + tipuri pentru spațiul de lucru).
|
||||
* `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.
|
||||
|
||||
## Autentificare
|
||||
@@ -186,14 +212,16 @@ 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ă |
|
||||
|
||||
Aceste funcții validează configurația în timpul build-ului și oferă completare automată în IDE și siguranța tipurilor.
|
||||
|
||||
@@ -279,7 +307,11 @@ Puncte cheie:
|
||||
* Puteți genera obiecte noi folosind `yarn twenty entity:add`, care vă ghidează prin denumire, câmpuri și relații.
|
||||
|
||||
<Note>
|
||||
**Câmpurile de bază sunt create automat.** Când definiți un obiect personalizat, Twenty adaugă automat câmpuri standard precum `name`, `createdAt`, `updatedAt`, `createdBy`, `position` și `deletedAt`. Nu trebuie să le definiți în tabloul `fields` — adăugați doar câmpurile personalizate proprii.
|
||||
**Câmpurile de bază sunt create automat.** Când definiți un obiect personalizat, Twenty adaugă automat câmpuri standard
|
||||
precum `id`, `name`, `createdAt`, `updatedAt`, `createdBy`, `updatedBy` și `deletedAt`.
|
||||
Nu trebuie să le definiți în tabloul `fields` — adăugați doar câmpurile personalizate proprii.
|
||||
Puteți suprascrie câmpurile implicite definind un câmp cu același nume în tabloul `fields`,
|
||||
dar acest lucru nu este recomandat.
|
||||
</Note>
|
||||
|
||||
### Configurația aplicației (application-config.ts)
|
||||
@@ -289,6 +321,7 @@ Fiecare aplicație are un singur fișier `application-config.ts` care descrie:
|
||||
* **Cine este aplicația**: identificatori, nume de afișare și descriere.
|
||||
* **Cum rulează funcțiile**: ce rol folosesc pentru permisiuni.
|
||||
* **(Opțional) variabile**: perechi cheie–valoare expuse funcțiilor ca variabile de mediu.
|
||||
* **(Opțional) funcție post-instalare**: o funcție logică care rulează după instalarea aplicației.
|
||||
|
||||
Folosiți `defineApplication()` pentru a defini configurația aplicației:
|
||||
|
||||
@@ -296,6 +329,7 @@ Folosiți `defineApplication()` pentru a defini configurația aplicației:
|
||||
// src/application-config.ts
|
||||
import { defineApplication } from 'twenty-sdk';
|
||||
import { DEFAULT_ROLE_UNIVERSAL_IDENTIFIER } from 'src/roles/default-role';
|
||||
import { POST_INSTALL_UNIVERSAL_IDENTIFIER } from 'src/logic-functions/post-install';
|
||||
|
||||
export default defineApplication({
|
||||
universalIdentifier: '4ec0391d-18d5-411c-b2f3-266ddc1c3ef7',
|
||||
@@ -311,6 +345,7 @@ export default defineApplication({
|
||||
},
|
||||
},
|
||||
defaultRoleUniversalIdentifier: DEFAULT_ROLE_UNIVERSAL_IDENTIFIER,
|
||||
postInstallLogicFunctionUniversalIdentifier: POST_INSTALL_UNIVERSAL_IDENTIFIER,
|
||||
});
|
||||
```
|
||||
|
||||
@@ -319,6 +354,7 @@ Notițe:
|
||||
* Câmpurile `universalIdentifier` sunt ID-uri deterministe pe care le dețineți; generați-le o singură dată și păstrați-le stabile între sincronizări.
|
||||
* `applicationVariables` devin variabile de mediu pentru funcțiile dvs. (de exemplu, `DEFAULT_RECIPIENT_NAME` este disponibil ca `process.env.DEFAULT_RECIPIENT_NAME`).
|
||||
* `defaultRoleUniversalIdentifier` trebuie să corespundă fișierului de rol (vedeți mai jos).
|
||||
* `postInstallLogicFunctionUniversalIdentifier` (opțional) indică o funcție logică care rulează automat după instalarea aplicației. Vezi [Funcții post-instalare](#post-install-functions).
|
||||
|
||||
#### Roluri și permisiuni
|
||||
|
||||
@@ -457,6 +493,55 @@ Notițe:
|
||||
* Matricea `triggers` este opțională. Funcțiile fără declanșatoare pot fi folosite ca funcții utilitare apelate de alte funcții.
|
||||
* Puteți combina mai multe tipuri de declanșatoare într-o singură funcție.
|
||||
|
||||
### Funcții post-instalare
|
||||
|
||||
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.
|
||||
|
||||
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
|
||||
import { defineLogicFunction } from 'twenty-sdk';
|
||||
|
||||
export const POST_INSTALL_UNIVERSAL_IDENTIFIER = '<generated-uuid>';
|
||||
|
||||
const handler = async (): Promise<void> => {
|
||||
console.log('Post install logic function executed successfully!');
|
||||
};
|
||||
|
||||
export default defineLogicFunction({
|
||||
universalIdentifier: POST_INSTALL_UNIVERSAL_IDENTIFIER,
|
||||
name: 'post-install',
|
||||
description: 'Runs after installation to set up the application.',
|
||||
timeoutSeconds: 300,
|
||||
handler,
|
||||
});
|
||||
```
|
||||
|
||||
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';
|
||||
|
||||
export default defineApplication({
|
||||
// ...
|
||||
postInstallLogicFunctionUniversalIdentifier: POST_INSTALL_UNIVERSAL_IDENTIFIER,
|
||||
});
|
||||
```
|
||||
|
||||
Poți, de asemenea, să execuți manual funcția post-instalare oricând folosind CLI:
|
||||
|
||||
```bash filename="Terminal"
|
||||
yarn twenty function:execute --postInstall
|
||||
```
|
||||
|
||||
Puncte cheie:
|
||||
|
||||
* 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ă
|
||||
|
||||
<Warning>
|
||||
@@ -554,6 +639,71 @@ Puteți crea funcții noi în două moduri:
|
||||
* **Generat**: Rulați `yarn twenty entity:add` și alegeți opțiunea de a adăuga o funcție logică nouă. Aceasta generează un fișier inițial cu un handler și o configurație.
|
||||
* **Manual**: Creați un fișier nou `*.logic-function.ts` și folosiți `defineLogicFunction()`, urmând același model.
|
||||
|
||||
### Marcarea unei funcții logice drept instrument
|
||||
|
||||
Funcțiile logice pot fi expuse ca **instrumente** pentru agenți de IA și fluxuri de lucru. Când o funcție este marcată ca instrument, poate fi descoperită de funcționalitățile de IA ale Twenty și poate fi selectată ca pas în automatizări ale fluxurilor de lucru.
|
||||
|
||||
Pentru a marca o funcție logică drept instrument, setați `isTool: true` și furnizați un `toolInputSchema` care descrie parametrii de intrare așteptați folosind [JSON Schema](https://json-schema.org/):
|
||||
|
||||
```typescript
|
||||
// src/logic-functions/enrich-company.logic-function.ts
|
||||
import { defineLogicFunction } from 'twenty-sdk';
|
||||
import Twenty from '~/generated';
|
||||
|
||||
const handler = async (params: { companyName: string; domain?: string }) => {
|
||||
const client = new Twenty();
|
||||
|
||||
const result = await client.mutation({
|
||||
createTask: {
|
||||
__args: {
|
||||
data: {
|
||||
title: `Enrich data for ${params.companyName}`,
|
||||
body: `Domain: ${params.domain ?? 'unknown'}`,
|
||||
},
|
||||
},
|
||||
id: true,
|
||||
},
|
||||
});
|
||||
|
||||
return { taskId: result.createTask.id };
|
||||
};
|
||||
|
||||
export default defineLogicFunction({
|
||||
universalIdentifier: 'f47ac10b-58cc-4372-a567-0e02b2c3d479',
|
||||
name: 'enrich-company',
|
||||
description: 'Enrich a company record with external data',
|
||||
timeoutSeconds: 10,
|
||||
handler,
|
||||
isTool: true,
|
||||
toolInputSchema: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
companyName: {
|
||||
type: 'string',
|
||||
description: 'The name of the company to enrich',
|
||||
},
|
||||
domain: {
|
||||
type: 'string',
|
||||
description: 'The company website domain (optional)',
|
||||
},
|
||||
},
|
||||
required: ['companyName'],
|
||||
},
|
||||
});
|
||||
```
|
||||
|
||||
Puncte cheie:
|
||||
|
||||
* **`isTool`** (`boolean`, implicit: `false`): Când este setat la `true`, funcția este înregistrată ca instrument și devine disponibilă pentru agenții AI și automatizările de fluxuri de lucru.
|
||||
* **`toolInputSchema`** (`object`, opțional): Un obiect JSON Schema care descrie parametrii pe care îi acceptă funcția dvs. Agenții AI folosesc această schemă pentru a înțelege ce intrări așteaptă instrumentul și pentru a valida apelurile. Dacă este omisă, schema are implicit valoarea `{ type: 'object', properties: {} }` (fără parametri).
|
||||
* Funcțiile cu `isTool: false` (sau nedefinit) **nu** sunt expuse ca instrumente. Pot totuși fi executate direct sau apelate de alte funcții, dar nu vor apărea în descoperirea instrumentelor.
|
||||
* **Denumierea instrumentelor**: Când este expusă ca instrument, denumirea funcției este normalizată automat la `logic_function_<name>` (convertită la litere mici, iar caracterele non-alfanumerice sunt înlocuite cu caractere de subliniere). De exemplu, `enrich-company` devine `logic_function_enrich_company`.
|
||||
* Puteți combina `isTool` cu declanșatoare — o funcție poate fi atât un instrument (apelabilă de agenții AI), cât și declanșată de evenimente (cron, evenimente de bază de date, rute) în același timp.
|
||||
|
||||
<Note>
|
||||
**Scrieți o `description` bună.** Agenții AI se bazează pe câmpul `description` al funcției pentru a decide când să folosească instrumentul. Fiți specifici cu privire la ceea ce face instrumentul și când ar trebui apelat.
|
||||
</Note>
|
||||
|
||||
### Componente Front
|
||||
|
||||
Componentele Front vă permit să construiți componente React personalizate care sunt randate în interfața Twenty. Utilizați `defineFrontComponent()` pentru a defini componente cu validare încorporată:
|
||||
@@ -593,7 +743,7 @@ Puteți crea componente Front noi în două moduri:
|
||||
|
||||
### Client tipizat generat
|
||||
|
||||
Rulați `yarn twenty app:generate` pentru a crea un client tipizat local în `generated/`, pe baza schemei spațiului de lucru. Folosiți-l în funcțiile dvs.:
|
||||
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.:
|
||||
|
||||
```typescript
|
||||
import Twenty from '~/generated';
|
||||
@@ -602,7 +752,7 @@ const client = new Twenty();
|
||||
const { me } = await client.query({ me: { id: true, displayName: true } });
|
||||
```
|
||||
|
||||
Clientul este regenerat de `yarn twenty app:generate`. Rulați din nou după ce vă modificați obiectele sau când vă integrați într-un spațiu de lucru nou.
|
||||
Clientul este regenerat automat de `yarn twenty app:dev` ori de câte ori obiectele sau câmpurile tale se schimbă.
|
||||
|
||||
#### Acreditări la runtime în funcțiile de logică
|
||||
|
||||
@@ -639,13 +789,13 @@ Apoi adăugați un script `twenty`:
|
||||
}
|
||||
```
|
||||
|
||||
Acum puteți rula toate comenzile prin `yarn twenty <command>`, de ex. `yarn twenty app:dev`, `yarn twenty app:generate`, `yarn twenty help`, etc.
|
||||
Acum poți rula toate comenzile prin `yarn twenty <command>`, de ex. `yarn twenty app:dev`, `yarn twenty help`, etc.
|
||||
|
||||
## Depanare
|
||||
|
||||
* Erori de autentificare: rulați `yarn twenty auth:login` și asigurați-vă că cheia API are permisiunile necesare.
|
||||
* Nu se poate conecta la server: verificați URL-ul API și că serverul Twenty este accesibil.
|
||||
* Tipuri sau client lipsă/învechite: rulați `yarn twenty app:generate`.
|
||||
* Types or client missing/outdated: restart `yarn twenty app:dev` — it auto-generates the typed client.
|
||||
* Modul dev nu sincronizează: asigurați-vă că `yarn twenty app:dev` rulează și că modificările nu sunt ignorate de mediul dvs.
|
||||
|
||||
Canal de ajutor pe Discord: https://discord.com/channels/1130383047699738754/1130386664812982322
|
||||
|
||||
@@ -27,7 +27,7 @@ description: Создавайте и управляйте настройками
|
||||
Создайте новое приложение с помощью официального генератора, затем выполните аутентификацию и начните разработку:
|
||||
|
||||
```bash filename="Terminal"
|
||||
# Создать каркас нового приложения
|
||||
# Создать каркас нового приложения (по умолчанию включает все примеры)
|
||||
npx create-twenty-app@latest my-twenty-app
|
||||
cd my-twenty-app
|
||||
|
||||
@@ -42,21 +42,34 @@ yarn twenty auth:login
|
||||
yarn twenty app:dev
|
||||
```
|
||||
|
||||
Генератор каркаса поддерживает три режима для управления тем, какие примерные файлы включаются:
|
||||
|
||||
```bash filename="Terminal"
|
||||
# По умолчанию (полный набор): все примеры (объект, поле, логическая функция, фронтенд-компонент, представление, пункт меню навигации)
|
||||
npx create-twenty-app@latest my-app
|
||||
|
||||
# Минимальный: только основные файлы (application-config.ts и default-role.ts)
|
||||
npx create-twenty-app@latest my-app --minimal
|
||||
|
||||
# Интерактивный: выбрать, какие примеры включить
|
||||
npx create-twenty-app@latest my-app --interactive
|
||||
```
|
||||
|
||||
Отсюда вы можете:
|
||||
|
||||
```bash filename="Terminal"
|
||||
# Добавить новую сущность в ваше приложение (с мастером)
|
||||
yarn twenty entity:add
|
||||
|
||||
# Сгенерировать типизированный клиент Twenty и типы сущностей рабочего пространства
|
||||
yarn twenty app:generate
|
||||
|
||||
# Просматривать логи функций вашего приложения
|
||||
yarn twenty function:logs
|
||||
|
||||
# Выполнить функцию по имени
|
||||
yarn twenty function:execute -n my-function -p '{\"name\": \"test\"}'
|
||||
|
||||
# Выполнить послеустановочную функцию
|
||||
yarn twenty function:execute --postInstall
|
||||
|
||||
# Удалить приложение из текущего рабочего пространства
|
||||
yarn twenty app:uninstall
|
||||
|
||||
@@ -73,9 +86,9 @@ yarn twenty help
|
||||
* Копирует минимальное базовое приложение в `my-twenty-app/`
|
||||
* Добавляет локальную зависимость `twenty-sdk` и конфигурацию Yarn 4
|
||||
* Создаёт файлы конфигурации и скрипты, подключённые к CLI `twenty`
|
||||
* Генерирует конфигурацию приложения по умолчанию и роль функции по умолчанию
|
||||
* Генерирует основные файлы (конфигурацию приложения, роль функций по умолчанию, постустановочную функцию), а также примерные файлы в зависимости от выбранного режима создания каркаса
|
||||
|
||||
Свежесгенерированное приложение выглядит так:
|
||||
Сгенерированное с помощью каркаса приложение с режимом по умолчанию `--exhaustive` выглядит так:
|
||||
|
||||
```text filename="my-twenty-app/"
|
||||
my-twenty-app/
|
||||
@@ -89,17 +102,28 @@ my-twenty-app/
|
||||
eslint.config.mjs
|
||||
tsconfig.json
|
||||
README.md
|
||||
public/ # Папка общедоступных ресурсов (изображения, шрифты и т. п.)
|
||||
public/ # Папка публичных ресурсов (изображения, шрифты и т. д.)
|
||||
src/
|
||||
├── application-config.ts # Обязательный — основная конфигурация приложения
|
||||
├── roles/
|
||||
│ └── default-role.ts # Роль по умолчанию для логических функций
|
||||
├── objects/
|
||||
│ └── example-object.ts # Пример определения пользовательского объекта
|
||||
├── fields/
|
||||
│ └── example-field.ts # Пример определения отдельного поля
|
||||
├── logic-functions/
|
||||
│ └── hello-world.ts # Пример логической функции
|
||||
└── front-components/
|
||||
└── hello-world.tsx # Пример фронтенд-компонента
|
||||
│ ├── hello-world.ts # Пример логической функции
|
||||
│ └── post-install.ts # Постустановочная логическая функция
|
||||
├── front-components/
|
||||
│ └── hello-world.tsx # Пример фронтенд-компонента
|
||||
├── views/
|
||||
│ └── example-view.ts # Пример определения сохранённого представления
|
||||
└── navigation-menu-items/
|
||||
└── example-navigation-menu-item.ts # Пример ссылки боковой панели навигации
|
||||
```
|
||||
|
||||
С `--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`, чтобы вывести список всех доступных команд.
|
||||
@@ -115,13 +139,15 @@ my-twenty-app/
|
||||
|
||||
SDK обнаруживает сущности, разбирая ваши файлы TypeScript в поисках вызовов **`export default define<Entity>({...})`**. Для каждого типа сущности существует соответствующая вспомогательная функция, экспортируемая из `twenty-sdk`:
|
||||
|
||||
| Вспомогательная функция | Тип сущности |
|
||||
| ------------------------ | ------------------------------------------ |
|
||||
| `defineObject()` | Определения пользовательских объектов |
|
||||
| `defineLogicFunction()` | Определения логических функций |
|
||||
| `defineFrontComponent()` | Определения компонентов фронтенда |
|
||||
| `defineRole()` | Определения ролей |
|
||||
| `defineField()` | Расширения полей для существующих объектов |
|
||||
| Вспомогательная функция | Тип сущности |
|
||||
| ---------------------------- | ------------------------------------------ |
|
||||
| `defineObject()` | Определения пользовательских объектов |
|
||||
| `defineLogicFunction()` | Определения логических функций |
|
||||
| `defineFrontComponent()` | Определения компонентов фронтенда |
|
||||
| `defineRole()` | Определения ролей |
|
||||
| `defineField()` | Расширения полей для существующих объектов |
|
||||
| `defineView()` | Определения сохранённых представлений |
|
||||
| `defineNavigationMenuItem()` | Определения пунктов меню навигации |
|
||||
|
||||
<Note>
|
||||
**Имена файлов заданы гибко.** Обнаружение сущностей основано на AST — SDK сканирует ваши исходные файлы в поисках шаблона `export default define<Entity>({...})`. Вы можете организовывать файлы и папки как угодно. Группировка по типу сущности (например, `logic-functions/`, `roles/`) — это лишь соглашение для организации кода, а не требование.
|
||||
@@ -142,7 +168,7 @@ export default defineObject({
|
||||
|
||||
Позднее команды добавят больше файлов и папок:
|
||||
|
||||
* `yarn twenty app:generate` создаст папку `generated/` (типизированный клиент Twenty + типы рабочего пространства).
|
||||
* `yarn twenty app:dev` автоматически сгенерирует типизированный клиент API в `node_modules/twenty-sdk/generated` (типизированный клиент Twenty + типы рабочего пространства).
|
||||
* `yarn twenty entity:add` добавит файлы определений сущностей в `src/` для ваших пользовательских объектов, функций, фронтенд-компонентов или ролей.
|
||||
|
||||
## Аутентификация
|
||||
@@ -186,14 +212,16 @@ 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()` | Определяйте ссылки боковой панели навигации |
|
||||
|
||||
Эти функции проверяют вашу конфигурацию на этапе сборки и обеспечивают автодополнение в IDE и безопасность типов.
|
||||
|
||||
@@ -279,7 +307,11 @@ export default defineObject({
|
||||
* Вы можете сгенерировать новые объекты с помощью `yarn twenty entity:add`, который проведёт вас через настройку имени, полей и связей.
|
||||
|
||||
<Note>
|
||||
**Базовые поля создаются автоматически.** Когда вы определяете пользовательский объект, Twenty автоматически добавляет стандартные поля, такие как `name`, `createdAt`, `updatedAt`, `createdBy`, `position` и `deletedAt`. Вам не нужно определять их в массиве `fields` — добавляйте только свои пользовательские поля.
|
||||
**Базовые поля создаются автоматически.** Когда вы определяете пользовательский объект, Twenty автоматически добавляет стандартные поля,
|
||||
такие как `id`, `name`, `createdAt`, `updatedAt`, `createdBy`, `updatedBy` и `deletedAt`.
|
||||
Вам не нужно определять их в массиве `fields` — добавляйте только свои пользовательские поля.
|
||||
Вы можете переопределить поля по умолчанию, определив поле с тем же именем в массиве `fields`,
|
||||
но это не рекомендуется.
|
||||
</Note>
|
||||
|
||||
### Конфигурация приложения (application-config.ts)
|
||||
@@ -289,6 +321,7 @@ export default defineObject({
|
||||
* **Что это за приложение**: идентификаторы, отображаемое имя и описание.
|
||||
* **Как запускаются его функции**: какую роль они используют для прав доступа.
|
||||
* **(Необязательно) переменные**: пары ключ-значение, предоставляемые вашим функциям как переменные окружения.
|
||||
* **(Необязательно) послеустановочная функция**: функция логики, которая запускается после установки приложения.
|
||||
|
||||
Используйте `defineApplication()` для определения конфигурации вашего приложения:
|
||||
|
||||
@@ -296,6 +329,7 @@ export default defineObject({
|
||||
// src/application-config.ts
|
||||
import { defineApplication } from 'twenty-sdk';
|
||||
import { DEFAULT_ROLE_UNIVERSAL_IDENTIFIER } from 'src/roles/default-role';
|
||||
import { POST_INSTALL_UNIVERSAL_IDENTIFIER } from 'src/logic-functions/post-install';
|
||||
|
||||
export default defineApplication({
|
||||
universalIdentifier: '4ec0391d-18d5-411c-b2f3-266ddc1c3ef7',
|
||||
@@ -311,6 +345,7 @@ export default defineApplication({
|
||||
},
|
||||
},
|
||||
defaultRoleUniversalIdentifier: DEFAULT_ROLE_UNIVERSAL_IDENTIFIER,
|
||||
postInstallLogicFunctionUniversalIdentifier: POST_INSTALL_UNIVERSAL_IDENTIFIER,
|
||||
});
|
||||
```
|
||||
|
||||
@@ -319,6 +354,7 @@ export default defineApplication({
|
||||
* `universalIdentifier` — это детерминированные идентификаторы, которыми вы управляете; сгенерируйте их один раз и сохраняйте стабильными между синхронизациями.
|
||||
* `applicationVariables` становятся переменными окружения для ваших функций (например, `DEFAULT_RECIPIENT_NAME` доступна как `process.env.DEFAULT_RECIPIENT_NAME`).
|
||||
* `defaultRoleUniversalIdentifier` должен соответствовать файлу роли (см. ниже).
|
||||
* `postInstallLogicFunctionUniversalIdentifier` (необязательно) указывает на логическую функцию, которая автоматически выполняется после установки приложения. См. [Послеустановочные функции](#post-install-functions).
|
||||
|
||||
#### Роли и разрешения
|
||||
|
||||
@@ -457,6 +493,55 @@ export default defineLogicFunction({
|
||||
* Массив `triggers` необязателен. Функции без триггеров можно использовать как вспомогательные, вызываемые другими функциями.
|
||||
* Вы можете сочетать несколько типов триггеров в одной функции.
|
||||
|
||||
### Послеустановочные функции
|
||||
|
||||
Послеустановочная функция — это функция логики, которая автоматически выполняется после установки вашего приложения в рабочем пространстве. Это полезно для одноразовых задач настройки, таких как инициализация данных по умолчанию, создание начальных записей или настройка параметров рабочего пространства.
|
||||
|
||||
Когда вы создаёте каркас нового приложения с помощью `create-twenty-app`, для вас генерируется постустановочная функция по пути `src/logic-functions/post-install.ts`:
|
||||
|
||||
```typescript
|
||||
// src/logic-functions/post-install.ts
|
||||
import { defineLogicFunction } from 'twenty-sdk';
|
||||
|
||||
export const POST_INSTALL_UNIVERSAL_IDENTIFIER = '<generated-uuid>';
|
||||
|
||||
const handler = async (): Promise<void> => {
|
||||
console.log('Post install logic function executed successfully!');
|
||||
};
|
||||
|
||||
export default defineLogicFunction({
|
||||
universalIdentifier: POST_INSTALL_UNIVERSAL_IDENTIFIER,
|
||||
name: 'post-install',
|
||||
description: 'Runs after installation to set up the application.',
|
||||
timeoutSeconds: 300,
|
||||
handler,
|
||||
});
|
||||
```
|
||||
|
||||
Функция подключается к вашему приложению посредством ссылки на её универсальный идентификатор в `application-config.ts`:
|
||||
|
||||
```typescript
|
||||
import { POST_INSTALL_UNIVERSAL_IDENTIFIER } from 'src/logic-functions/post-install';
|
||||
|
||||
export default defineApplication({
|
||||
// ...
|
||||
postInstallLogicFunctionUniversalIdentifier: POST_INSTALL_UNIVERSAL_IDENTIFIER,
|
||||
});
|
||||
```
|
||||
|
||||
Вы также можете вручную выполнить постустановочную функцию в любое время с помощью CLI:
|
||||
|
||||
```bash filename="Terminal"
|
||||
yarn twenty function:execute --postInstall
|
||||
```
|
||||
|
||||
Основные моменты:
|
||||
|
||||
* Постустановочные функции — это стандартные логические функции: они используют `defineLogicFunction()` как и любые другие функции.
|
||||
* Поле `postInstallLogicFunctionUniversalIdentifier` в `defineApplication()` является необязательным. Если его опустить, после установки никакая функция выполняться не будет.
|
||||
* Тайм-аут по умолчанию установлен на 300 секунд (5 минут), чтобы позволить выполнять более длительные задачи настройки, такие как инициализация данных.
|
||||
* Постустановочным функциям не нужны триггеры — платформа вызывает их во время установки или вручную через `function:execute --postInstall`.
|
||||
|
||||
### Полезная нагрузка триггера маршрута
|
||||
|
||||
<Warning>
|
||||
@@ -554,6 +639,71 @@ const handler = async (event: RoutePayload) => {
|
||||
* **Сгенерировано**: Запустите `yarn twenty entity:add` и выберите опцию добавления новой функции логики. Это создаёт стартовый файл с обработчиком и конфигурацией.
|
||||
* **Вручную**: Создайте новый файл `*.logic-function.ts` и используйте `defineLogicFunction()`, следуя тому же шаблону.
|
||||
|
||||
### Пометка логической функции как инструмента
|
||||
|
||||
Логические функции можно предоставлять как **инструменты** для ИИ-агентов и рабочих процессов. Когда функция помечена как инструмент, она становится доступной для ИИ Twenty и может быть выбрана в качестве шага в автоматизациях рабочих процессов.
|
||||
|
||||
Чтобы пометить логическую функцию как инструмент, установите `isTool: true` и укажите `toolInputSchema` для описания ожидаемых входных параметров с помощью [схемы JSON](https://json-schema.org/):
|
||||
|
||||
```typescript
|
||||
// src/logic-functions/enrich-company.logic-function.ts
|
||||
import { defineLogicFunction } from 'twenty-sdk';
|
||||
import Twenty from '~/generated';
|
||||
|
||||
const handler = async (params: { companyName: string; domain?: string }) => {
|
||||
const client = new Twenty();
|
||||
|
||||
const result = await client.mutation({
|
||||
createTask: {
|
||||
__args: {
|
||||
data: {
|
||||
title: `Enrich data for ${params.companyName}`,
|
||||
body: `Domain: ${params.domain ?? 'unknown'}`,
|
||||
},
|
||||
},
|
||||
id: true,
|
||||
},
|
||||
});
|
||||
|
||||
return { taskId: result.createTask.id };
|
||||
};
|
||||
|
||||
export default defineLogicFunction({
|
||||
universalIdentifier: 'f47ac10b-58cc-4372-a567-0e02b2c3d479',
|
||||
name: 'enrich-company',
|
||||
description: 'Enrich a company record with external data',
|
||||
timeoutSeconds: 10,
|
||||
handler,
|
||||
isTool: true,
|
||||
toolInputSchema: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
companyName: {
|
||||
type: 'string',
|
||||
description: 'The name of the company to enrich',
|
||||
},
|
||||
domain: {
|
||||
type: 'string',
|
||||
description: 'The company website domain (optional)',
|
||||
},
|
||||
},
|
||||
required: ['companyName'],
|
||||
},
|
||||
});
|
||||
```
|
||||
|
||||
Основные моменты:
|
||||
|
||||
* **`isTool`** (`boolean`, по умолчанию: `false`): Если значение равно `true`, функция регистрируется как инструмент и становится доступной агентам ИИ и автоматизациям рабочих процессов.
|
||||
* **`toolInputSchema`** (`object`, необязательно): Объект JSON Schema, который описывает параметры, которые принимает ваша функция. Агенты ИИ используют эту схему, чтобы понять, какие входные данные ожидает инструмент, и проверять корректность вызовов. Если опущено, по умолчанию используется схема `{ type: 'object', properties: {} }` (без параметров).
|
||||
* Функции с `isTool: false` (или без указания) **не** выставляются как инструменты. Их по-прежнему можно выполнять напрямую или вызывать из других функций, но они не будут отображаться при обнаружении инструментов.
|
||||
* **Именование инструмента**: При публикации как инструмента имя функции автоматически нормализуется до `logic_function_<name>` (в нижнем регистре, небуквенно-цифровые символы заменяются на подчёркивания). Например, `enrich-company` становится `logic_function_enrich_company`.
|
||||
* Вы можете комбинировать `isTool` с триггерами — функция может одновременно быть инструментом (вызываемым агентами ИИ) и запускаться событиями (cron, события базы данных, маршруты).
|
||||
|
||||
<Note>
|
||||
**Напишите хорошее описание в поле `description`.** Агенты ИИ опираются на поле `description` функции, чтобы решить, когда использовать инструмент. Чётко опишите, что делает инструмент и когда его следует вызывать.
|
||||
</Note>
|
||||
|
||||
### Фронт-компоненты
|
||||
|
||||
Фронт-компоненты позволяют создавать пользовательские компоненты React, которые рендерятся внутри интерфейса Twenty. Используйте `defineFrontComponent()` для определения компонентов со встроенной валидацией:
|
||||
@@ -593,7 +743,7 @@ export default defineFrontComponent({
|
||||
|
||||
### Сгенерированный типизированный клиент
|
||||
|
||||
Запустите `yarn twenty app:generate`, чтобы создать локальный типизированный клиент в `generated/` на основе схемы вашего рабочего пространства. Используйте его в своих функциях:
|
||||
Типизированный клиент автоматически генерируется с помощью `yarn twenty app:dev` и сохраняется в `node_modules/twenty-sdk/generated` на основе схемы вашего рабочего пространства. Используйте его в своих функциях:
|
||||
|
||||
```typescript
|
||||
import Twenty from '~/generated';
|
||||
@@ -602,7 +752,7 @@ const client = new Twenty();
|
||||
const { me } = await client.query({ me: { id: true, displayName: true } });
|
||||
```
|
||||
|
||||
Клиент повторно генерируется командой `yarn twenty app:generate`. Запускайте повторно после изменения ваших объектов или при подключении к новому рабочему пространству.
|
||||
Клиент автоматически перегенерируется с помощью `yarn twenty app:dev` при изменении ваших объектов или полей.
|
||||
|
||||
#### Учётные данные времени выполнения в логических функциях
|
||||
|
||||
@@ -639,13 +789,13 @@ yarn add -D twenty-sdk
|
||||
}
|
||||
```
|
||||
|
||||
Теперь вы можете запускать все команды через `yarn twenty <command>`, например, `yarn twenty app:dev`, `yarn twenty app:generate`, `yarn twenty help` и т. д.
|
||||
Теперь вы можете запускать все команды через `yarn twenty <command>`, например, `yarn twenty app:dev`, `yarn twenty help` и т. д.
|
||||
|
||||
## Устранение неполадок
|
||||
|
||||
* Ошибки аутентификации: выполните `yarn twenty auth:login` и убедитесь, что у вашего ключа API есть необходимые права.
|
||||
* Не удаётся подключиться к серверу: проверьте URL API и доступность сервера Twenty.
|
||||
* Типы или клиент отсутствуют/устарели: выполните `yarn twenty app:generate`.
|
||||
* Types or client missing/outdated: restart `yarn twenty app:dev` — it auto-generates the typed client.
|
||||
* Режим разработки не синхронизируется: убедитесь, что запущен `yarn twenty app:dev`, и что ваша среда не игнорирует изменения.
|
||||
|
||||
Канал помощи в Discord: https://discord.com/channels/1130383047699738754/1130386664812982322
|
||||
|
||||
@@ -27,7 +27,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,21 +42,34 @@ 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)
|
||||
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"
|
||||
# Add a new entity to your application (guided)
|
||||
yarn twenty entity:add
|
||||
|
||||
# Generate a typed Twenty client and workspace entity types
|
||||
yarn twenty app:generate
|
||||
|
||||
# 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"}'
|
||||
|
||||
# Execute the post-install function
|
||||
yarn twenty function:execute --postInstall
|
||||
|
||||
# Uninstall the application from the current workspace
|
||||
yarn twenty app:uninstall
|
||||
|
||||
@@ -73,9 +86,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
|
||||
* Varsayılan bir uygulama yapılandırması ve varsayılan bir fonksiyon rolü üretir
|
||||
* İ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/
|
||||
@@ -89,17 +102,28 @@ my-twenty-app/
|
||||
eslint.config.mjs
|
||||
tsconfig.json
|
||||
README.md
|
||||
public/ # Genel varlıklar klasörü (görseller, yazı tipleri vb.)
|
||||
public/ # Public assets folder (images, fonts, etc.)
|
||||
src/
|
||||
├── application-config.ts # Gerekli - ana uygulama yapılandırması
|
||||
├── application-config.ts # Required - main application configuration
|
||||
├── roles/
|
||||
│ └── default-role.ts # Mantık işlevleri için varsayılan rol
|
||||
│ └── 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 # Örnek mantık işlevi
|
||||
└── front-components/
|
||||
└── hello-world.tsx # Örnek ön uç bileşeni
|
||||
│ ├── 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
|
||||
```
|
||||
|
||||
`--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.
|
||||
@@ -115,13 +139,15 @@ 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ı |
|
||||
|
||||
<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.
|
||||
@@ -142,7 +168,7 @@ export default defineObject({
|
||||
|
||||
İlerideki komutlar daha fazla dosya ve klasör ekleyecektir:
|
||||
|
||||
* `yarn twenty app:generate`, `generated/` klasörünü oluşturur (türlendirilmiş Twenty istemcisi + çalışma alanı türleri).
|
||||
* `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.
|
||||
|
||||
## Kimlik Doğrulama
|
||||
@@ -186,14 +212,16 @@ 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 |
|
||||
|
||||
Bu fonksiyonlar, derleme zamanında yapılandırmanızı doğrular ve IDE otomatik tamamlama ile tür güvenliği sağlar.
|
||||
|
||||
@@ -279,7 +307,11 @@ export default defineObject({
|
||||
* `yarn twenty entity:add` kullanarak, adlandırma, alanlar ve ilişkiler konusunda sizi yönlendirerek yeni nesneler oluşturabilirsiniz.
|
||||
|
||||
<Note>
|
||||
**Temel alanlar otomatik olarak oluşturulur.** Özel bir nesne tanımladığınızda Twenty, `name`, `createdAt`, `updatedAt`, `createdBy`, `position` ve `deletedAt` gibi standart alanları otomatik olarak ekler. Bunları `fields` dizinizde tanımlamanız gerekmez — yalnızca özel alanlarınızı ekleyin.
|
||||
**Temel alanlar otomatik olarak oluşturulur.** Özel bir nesne tanımladığınızda Twenty, standart alanları otomatik olarak ekler
|
||||
örneğin `id`, `name`, `createdAt`, `updatedAt`, `createdBy`, `updatedBy` ve `deletedAt`.
|
||||
Bunları `fields` dizinizde tanımlamanız gerekmez — yalnızca özel alanlarınızı ekleyin.
|
||||
`fields` dizinizde aynı ada sahip bir alan tanımlayarak varsayılan alanları geçersiz kılabilirsiniz,
|
||||
ancak bu önerilmez.
|
||||
</Note>
|
||||
|
||||
### Uygulama yapılandırması (application-config.ts)
|
||||
@@ -289,6 +321,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.
|
||||
* **(İ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:
|
||||
|
||||
@@ -296,6 +329,7 @@ Uygulama yapılandırmanızı tanımlamak için `defineApplication()` kullanın:
|
||||
// src/application-config.ts
|
||||
import { defineApplication } from 'twenty-sdk';
|
||||
import { DEFAULT_ROLE_UNIVERSAL_IDENTIFIER } from 'src/roles/default-role';
|
||||
import { POST_INSTALL_UNIVERSAL_IDENTIFIER } from 'src/logic-functions/post-install';
|
||||
|
||||
export default defineApplication({
|
||||
universalIdentifier: '4ec0391d-18d5-411c-b2f3-266ddc1c3ef7',
|
||||
@@ -311,6 +345,7 @@ export default defineApplication({
|
||||
},
|
||||
},
|
||||
defaultRoleUniversalIdentifier: DEFAULT_ROLE_UNIVERSAL_IDENTIFIER,
|
||||
postInstallLogicFunctionUniversalIdentifier: POST_INSTALL_UNIVERSAL_IDENTIFIER,
|
||||
});
|
||||
```
|
||||
|
||||
@@ -319,6 +354,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` (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
|
||||
|
||||
@@ -457,6 +493,55 @@ 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.
|
||||
|
||||
### Kurulum sonrası işlevler
|
||||
|
||||
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.
|
||||
|
||||
`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
|
||||
import { defineLogicFunction } from 'twenty-sdk';
|
||||
|
||||
export const POST_INSTALL_UNIVERSAL_IDENTIFIER = '<generated-uuid>';
|
||||
|
||||
const handler = async (): Promise<void> => {
|
||||
console.log('Post install logic function executed successfully!');
|
||||
};
|
||||
|
||||
export default defineLogicFunction({
|
||||
universalIdentifier: POST_INSTALL_UNIVERSAL_IDENTIFIER,
|
||||
name: 'post-install',
|
||||
description: 'Runs after installation to set up the application.',
|
||||
timeoutSeconds: 300,
|
||||
handler,
|
||||
});
|
||||
```
|
||||
|
||||
İş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';
|
||||
|
||||
export default defineApplication({
|
||||
// ...
|
||||
postInstallLogicFunctionUniversalIdentifier: POST_INSTALL_UNIVERSAL_IDENTIFIER,
|
||||
});
|
||||
```
|
||||
|
||||
Ayrıca kurulum sonrası işlevi istediğiniz zaman CLI kullanarak manuel olarak çalıştırabilirsiniz:
|
||||
|
||||
```bash filename="Terminal"
|
||||
yarn twenty function:execute --postInstall
|
||||
```
|
||||
|
||||
Önemli noktalar:
|
||||
|
||||
* 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ü
|
||||
|
||||
<Warning>
|
||||
@@ -554,6 +639,71 @@ Yeni fonksiyonları iki şekilde oluşturabilirsiniz:
|
||||
* **Şablondan**: `yarn twenty entity:add` çalıştırın ve yeni bir mantık fonksiyonu ekleme seçeneğini seçin. Bu, bir işleyici ve yapılandırma içeren bir başlangıç dosyası oluşturur.
|
||||
* **Manuel**: Yeni bir `*.logic-function.ts` dosyası oluşturun ve aynı deseni izleyerek `defineLogicFunction()` kullanın.
|
||||
|
||||
### Bir mantık işlevini araç olarak işaretleme
|
||||
|
||||
Mantık işlevleri, yapay zeka ajanları ve iş akışları için **araçlar** olarak sunulabilir. Bir işlev bir araç olarak işaretlendiğinde, Twenty'nin yapay zeka özellikleri tarafından keşfedilebilir hâle gelir ve iş akışı otomasyonlarında bir adım olarak seçilebilir.
|
||||
|
||||
Bir mantık işlevini bir araç olarak işaretlemek için `isTool: true` olarak ayarlayın ve beklenen giriş parametrelerini açıklayan bir `toolInputSchema`yı [JSON Şeması](https://json-schema.org/) kullanarak sağlayın:
|
||||
|
||||
```typescript
|
||||
// src/logic-functions/enrich-company.logic-function.ts
|
||||
import { defineLogicFunction } from 'twenty-sdk';
|
||||
import Twenty from '~/generated';
|
||||
|
||||
const handler = async (params: { companyName: string; domain?: string }) => {
|
||||
const client = new Twenty();
|
||||
|
||||
const result = await client.mutation({
|
||||
createTask: {
|
||||
__args: {
|
||||
data: {
|
||||
title: `Enrich data for ${params.companyName}`,
|
||||
body: `Domain: ${params.domain ?? 'unknown'}`,
|
||||
},
|
||||
},
|
||||
id: true,
|
||||
},
|
||||
});
|
||||
|
||||
return { taskId: result.createTask.id };
|
||||
};
|
||||
|
||||
export default defineLogicFunction({
|
||||
universalIdentifier: 'f47ac10b-58cc-4372-a567-0e02b2c3d479',
|
||||
name: 'enrich-company',
|
||||
description: 'Enrich a company record with external data',
|
||||
timeoutSeconds: 10,
|
||||
handler,
|
||||
isTool: true,
|
||||
toolInputSchema: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
companyName: {
|
||||
type: 'string',
|
||||
description: 'The name of the company to enrich',
|
||||
},
|
||||
domain: {
|
||||
type: 'string',
|
||||
description: 'The company website domain (optional)',
|
||||
},
|
||||
},
|
||||
required: ['companyName'],
|
||||
},
|
||||
});
|
||||
```
|
||||
|
||||
Önemli noktalar:
|
||||
|
||||
* **`isTool`** (`boolean`, varsayılan: `false`): `true` olarak ayarlandığında, işlev bir araç olarak kaydedilir ve AI ajanları ile iş akışı otomasyonları tarafından kullanılabilir hale gelir.
|
||||
* **`toolInputSchema`** (`object`, isteğe bağlı): İşlevinizin kabul ettiği parametreleri tanımlayan bir JSON Schema nesnesi. AI ajanları, aracın hangi girdileri beklediğini anlamak ve çağrıları doğrulamak için bu şemayı kullanır. Atlanırsa, şema varsayılan olarak `{ type: 'object', properties: {} }` olur (parametre yok).
|
||||
* `isTool: false` (veya ayarlanmamış) olan işlevler araç olarak **sunulmaz**. Yine de doğrudan yürütülebilir veya diğer işlevler tarafından çağrılabilirler, ancak araç keşfinde görünmezler.
|
||||
* **Araç adlandırma**: Bir araç olarak sunulduğunda, işlev adı otomatik olarak `logic_function_<name>` biçimine dönüştürülür (küçük harfe çevrilir, alfasayısal olmayan karakterler alt çizgi ile değiştirilir). Örneğin, `enrich-company` `logic_function_enrich_company` haline gelir.
|
||||
* `isTool` özelliğini tetikleyicilerle birleştirebilirsiniz — bir işlev aynı anda hem bir araç (AI ajanları tarafından çağrılabilir) olabilir hem de olaylar tarafından tetiklenebilir (cron, veritabanı olayları, routes).
|
||||
|
||||
<Note>
|
||||
**İyi bir `description` yazın.** AI ajanları, aracı ne zaman kullanacaklarına karar vermek için işlevin `description` alanına güvenir. Aracın ne yaptığını ve ne zaman çağrılması gerektiğini açıkça belirtin.
|
||||
</Note>
|
||||
|
||||
### Ön uç bileşenleri
|
||||
|
||||
Ön uç bileşenleri, Twenty'nin kullanıcı arayüzünde görüntülenen özel React bileşenleri oluşturmanıza olanak tanır. Yerleşik doğrulamayla bileşenleri tanımlamak için `defineFrontComponent()` kullanın:
|
||||
@@ -593,7 +743,7 @@ Yeni ön uç bileşenlerini iki şekilde oluşturabilirsiniz:
|
||||
|
||||
### Oluşturulmuş türlendirilmiş istemci
|
||||
|
||||
Çalışma alanı şemanıza göre `generated/` içinde yerel bir türlendirilmiş istemci oluşturmak için `yarn twenty app:generate` çalıştırın. Fonksiyonlarınızda kullanın:
|
||||
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:
|
||||
|
||||
```typescript
|
||||
import Twenty from '~/generated';
|
||||
@@ -602,7 +752,7 @@ const client = new Twenty();
|
||||
const { me } = await client.query({ me: { id: true, displayName: true } });
|
||||
```
|
||||
|
||||
İstemci `yarn twenty app:generate` tarafından yeniden oluşturulur. Nesnelerinizi değiştirdikten sonra veya yeni bir çalışma alanına katılırken yeniden çalıştırın.
|
||||
Nesneleriniz veya alanlarınız değiştiğinde, istemci `yarn twenty app:dev` tarafından otomatik olarak yeniden oluşturulur.
|
||||
|
||||
#### Mantık fonksiyonlarında çalışma zamanı kimlik bilgileri
|
||||
|
||||
@@ -639,13 +789,13 @@ Ardından bir `twenty` betiği ekleyin:
|
||||
}
|
||||
```
|
||||
|
||||
Artık tüm komutları `yarn twenty <command>` üzerinden çalıştırabilirsiniz; örn. `yarn twenty app:dev`, `yarn twenty app:generate`, `yarn twenty help` vb.
|
||||
Artık tüm komutları `yarn twenty <command>` üzerinden çalıştırabilirsiniz; örn. `yarn twenty app:dev`, `yarn twenty help` vb.
|
||||
|
||||
## Sorun Giderme
|
||||
|
||||
* Kimlik doğrulama hataları: `yarn twenty auth:login` çalıştırın ve API anahtarınızın gerekli izinlere sahip olduğundan emin olun.
|
||||
* Sunucuya bağlanılamıyor: API URL’sini ve Twenty sunucusunun erişilebilir olduğunu doğrulayın.
|
||||
* Türler veya istemci eksik/eski: `yarn twenty app:generate` çalıştırın.
|
||||
* Türler veya istemci eksik/eski: `yarn twenty app:dev` komutunu yeniden çalıştırın — tip tanımlı istemciyi otomatik olarak oluşturur.
|
||||
* Geliştirme modu eşitlenmiyor: `yarn twenty app:dev`'in çalıştığından ve değişikliklerin ortamınız tarafından yok sayılmadığından emin olun.
|
||||
|
||||
Discord Yardım Kanalı: https://discord.com/channels/1130383047699738754/1130386664812982322
|
||||
|
||||
@@ -27,35 +27,48 @@ 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)
|
||||
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"
|
||||
# 向你的应用添加一个新实体(引导式)
|
||||
yarn twenty entity:add
|
||||
|
||||
# 生成类型化的 Twenty 客户端和工作区实体类型
|
||||
yarn twenty app:generate
|
||||
|
||||
# 监听你的应用函数日志
|
||||
yarn twenty function:logs
|
||||
|
||||
# 按名称执行一个函数
|
||||
yarn twenty function:execute -n my-function -p '{"name": "test"}'
|
||||
yarn twenty function:execute -n my-function -p '{\"name\": \"test\"}'
|
||||
|
||||
# 执行安装后函数
|
||||
yarn twenty function:execute --postInstall
|
||||
|
||||
# 从当前工作区卸载该应用
|
||||
yarn twenty app:uninstall
|
||||
@@ -73,9 +86,9 @@ yarn twenty help
|
||||
* 将一个最小的基础应用复制到 `my-twenty-app/` 中
|
||||
* 添加本地 `twenty-sdk` 依赖和 Yarn 4 配置
|
||||
* 创建与 `twenty` CLI 关联的配置文件和脚本
|
||||
* 生成默认的应用配置和默认的函数角色
|
||||
* 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/
|
||||
@@ -89,17 +102,28 @@ my-twenty-app/
|
||||
eslint.config.mjs
|
||||
tsconfig.json
|
||||
README.md
|
||||
public/ # 公共资源文件夹(图像、字体等)
|
||||
public/ # Public assets folder (images, fonts, etc.)
|
||||
src/
|
||||
├── application-config.ts # 必需 - 主应用程序配置
|
||||
├── application-config.ts # Required - main application configuration
|
||||
├── roles/
|
||||
│ └── default-role.ts # 用于逻辑函数的默认角色
|
||||
│ └── 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 # 示例逻辑函数
|
||||
└── front-components/
|
||||
└── hello-world.tsx # 示例前端组件
|
||||
│ ├── 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
|
||||
```
|
||||
|
||||
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` 以列出所有可用命令。
|
||||
@@ -115,13 +139,15 @@ 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 |
|
||||
|
||||
<Note>
|
||||
**文件命名是灵活的。** 实体检测基于 AST — SDK 会扫描你的源文件以查找 `export default define<Entity>({...})` 模式。 你可以按照自己的喜好组织文件和文件夹。 按实体类型分组(例如 `logic-functions/`、`roles/`)只是代码组织的一种约定,并非必需。
|
||||
@@ -142,7 +168,7 @@ export default defineObject({
|
||||
|
||||
后续命令将添加更多文件和文件夹:
|
||||
|
||||
* `yarn twenty app:generate` 将创建一个 `generated/` 文件夹(类型化 Twenty 客户端 + 工作空间类型)。
|
||||
* `yarn twenty app:dev` 将在 `node_modules/twenty-sdk/generated` 中自动生成一个类型化的 API 客户端(类型化的 Twenty 客户端 + 工作区类型)。
|
||||
* `yarn twenty entity:add` 会在 `src/` 下为你的自定义对象、函数、前端组件或角色添加实体定义文件。
|
||||
|
||||
## 身份验证
|
||||
@@ -186,14 +212,16 @@ 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 |
|
||||
|
||||
这些函数会在构建时校验你的配置,并提供 IDE 自动补全和类型安全。
|
||||
|
||||
@@ -279,7 +307,11 @@ export default defineObject({
|
||||
* 你可以使用 `yarn twenty entity:add` 脚手架创建新对象,它会引导你完成命名、字段和关系。
|
||||
|
||||
<Note>
|
||||
**基础字段会自动创建。** 当你定义自定义对象时,Twenty 会自动添加 `name`、`createdAt`、`updatedAt`、`createdBy`、`position`、`deletedAt` 等标准字段。 你无需在 `fields` 数组中定义这些字段——只需添加你的自定义字段。
|
||||
**基础字段会自动创建。** 当你定义自定义对象时,Twenty 会自动添加标准字段
|
||||
例如 `id`、`name`、`createdAt`、`updatedAt`、`createdBy`、`updatedBy` 和 `deletedAt`。
|
||||
你无需在 `fields` 数组中定义这些字段——只需添加你的自定义字段。
|
||||
你可以通过在你的 `fields` 数组中定义一个同名字段来覆盖默认字段,
|
||||
但不建议这样做。
|
||||
</Note>
|
||||
|
||||
### 应用配置(application-config.ts)
|
||||
@@ -289,6 +321,7 @@ export default defineObject({
|
||||
* **应用的身份**:标识符、显示名称和描述。
|
||||
* **函数如何运行**:它们用于权限的角色。
|
||||
* **(可选)变量**:以环境变量形式提供给函数的键值对。
|
||||
* **(可选)安装后函数**:在应用安装后运行的逻辑函数。
|
||||
|
||||
使用 `defineApplication()` 定义你的应用配置:
|
||||
|
||||
@@ -296,6 +329,7 @@ export default defineObject({
|
||||
// src/application-config.ts
|
||||
import { defineApplication } from 'twenty-sdk';
|
||||
import { DEFAULT_ROLE_UNIVERSAL_IDENTIFIER } from 'src/roles/default-role';
|
||||
import { POST_INSTALL_UNIVERSAL_IDENTIFIER } from 'src/logic-functions/post-install';
|
||||
|
||||
export default defineApplication({
|
||||
universalIdentifier: '4ec0391d-18d5-411c-b2f3-266ddc1c3ef7',
|
||||
@@ -311,6 +345,7 @@ export default defineApplication({
|
||||
},
|
||||
},
|
||||
defaultRoleUniversalIdentifier: DEFAULT_ROLE_UNIVERSAL_IDENTIFIER,
|
||||
postInstallLogicFunctionUniversalIdentifier: POST_INSTALL_UNIVERSAL_IDENTIFIER,
|
||||
});
|
||||
```
|
||||
|
||||
@@ -319,6 +354,7 @@ export default defineApplication({
|
||||
* `universalIdentifier` 字段是你拥有的确定性 ID;生成一次并在多次同步中保持稳定。
|
||||
* `applicationVariables` 会变成函数可用的环境变量(例如,`DEFAULT_RECIPIENT_NAME` 可作为 `process.env.DEFAULT_RECIPIENT_NAME` 使用)。
|
||||
* `defaultRoleUniversalIdentifier` 必须与角色文件一致(见下文)。
|
||||
* `postInstallLogicFunctionUniversalIdentifier`(可选)指向一个在应用安装后自动运行的逻辑函数。 参见 [安装后函数](#post-install-functions)。
|
||||
|
||||
#### 角色和权限
|
||||
|
||||
@@ -457,6 +493,55 @@ export default defineLogicFunction({
|
||||
* `triggers` 数组是可选的。 没有触发器的函数可作为实用函数,被其他函数调用。
|
||||
* 你可以在单个函数中混用多种触发器类型。
|
||||
|
||||
### 安装后函数
|
||||
|
||||
安装后函数是在你的应用安装到工作区后自动运行的逻辑函数。 这对于一次性设置任务很有用,例如填充默认数据、创建初始记录或配置工作区设置。
|
||||
|
||||
当你使用 `create-twenty-app` 脚手架创建一个新应用时,会在 `src/logic-functions/post-install.ts` 为你生成一个安装后函数:
|
||||
|
||||
```typescript
|
||||
// src/logic-functions/post-install.ts
|
||||
import { defineLogicFunction } from 'twenty-sdk';
|
||||
|
||||
export const POST_INSTALL_UNIVERSAL_IDENTIFIER = '<generated-uuid>';
|
||||
|
||||
const handler = async (): Promise<void> => {
|
||||
console.log('Post install logic function executed successfully!');
|
||||
};
|
||||
|
||||
export default defineLogicFunction({
|
||||
universalIdentifier: POST_INSTALL_UNIVERSAL_IDENTIFIER,
|
||||
name: 'post-install',
|
||||
description: 'Runs after installation to set up the application.',
|
||||
timeoutSeconds: 300,
|
||||
handler,
|
||||
});
|
||||
```
|
||||
|
||||
通过在 `application-config.ts` 中引用其通用标识符,可将该函数接入你的应用:
|
||||
|
||||
```typescript
|
||||
import { POST_INSTALL_UNIVERSAL_IDENTIFIER } from 'src/logic-functions/post-install';
|
||||
|
||||
export default defineApplication({
|
||||
// ...
|
||||
postInstallLogicFunctionUniversalIdentifier: POST_INSTALL_UNIVERSAL_IDENTIFIER,
|
||||
});
|
||||
```
|
||||
|
||||
You can also manually execute the post-install function at any time using the CLI:
|
||||
|
||||
```bash filename="Terminal"
|
||||
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`.
|
||||
|
||||
### 路由触发器负载
|
||||
|
||||
<Warning>
|
||||
@@ -554,6 +639,71 @@ const handler = async (event: RoutePayload) => {
|
||||
* **脚手架生成**:运行 `yarn twenty entity:add` 并选择添加新逻辑函数的选项。 这将生成一个包含处理程序和配置的入门文件。
|
||||
* **手动**:创建一个新的 `*.logic-function.ts` 文件,并使用 `defineLogicFunction()`,遵循相同的模式。
|
||||
|
||||
### 将逻辑函数标记为工具
|
||||
|
||||
逻辑函数可以作为供 AI 智能体和工作流使用的**工具**对外提供。 当函数被标记为工具时,Twenty 的 AI 功能即可发现它,并可在工作流自动化中将其选作一个步骤。
|
||||
|
||||
要将逻辑函数标记为工具,请设置 `isTool: true`,并提供 `toolInputSchema`,使用 [JSON Schema](https://json-schema.org/) 描述预期的输入参数:
|
||||
|
||||
```typescript
|
||||
// src/logic-functions/enrich-company.logic-function.ts
|
||||
import { defineLogicFunction } from 'twenty-sdk';
|
||||
import Twenty from '~/generated';
|
||||
|
||||
const handler = async (params: { companyName: string; domain?: string }) => {
|
||||
const client = new Twenty();
|
||||
|
||||
const result = await client.mutation({
|
||||
createTask: {
|
||||
__args: {
|
||||
data: {
|
||||
title: `Enrich data for ${params.companyName}`,
|
||||
body: `Domain: ${params.domain ?? 'unknown'}`,
|
||||
},
|
||||
},
|
||||
id: true,
|
||||
},
|
||||
});
|
||||
|
||||
return { taskId: result.createTask.id };
|
||||
};
|
||||
|
||||
export default defineLogicFunction({
|
||||
universalIdentifier: 'f47ac10b-58cc-4372-a567-0e02b2c3d479',
|
||||
name: 'enrich-company',
|
||||
description: 'Enrich a company record with external data',
|
||||
timeoutSeconds: 10,
|
||||
handler,
|
||||
isTool: true,
|
||||
toolInputSchema: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
companyName: {
|
||||
type: 'string',
|
||||
description: 'The name of the company to enrich',
|
||||
},
|
||||
domain: {
|
||||
type: 'string',
|
||||
description: 'The company website domain (optional)',
|
||||
},
|
||||
},
|
||||
required: ['companyName'],
|
||||
},
|
||||
});
|
||||
```
|
||||
|
||||
关键点:
|
||||
|
||||
* **`isTool`** (`boolean`, 默认: `false`): 当设置为 `true` 时,该函数会被注册为工具,并可供 AI 代理和工作流自动化使用。
|
||||
* **`toolInputSchema`** (`object`, 可选): 描述函数可接受参数的 JSON Schema 对象。 AI 代理使用此架构来理解该工具期望的输入并验证调用。 如果省略,架构将默认为 `{ type: 'object', properties: {} }`(无参数)。
|
||||
* 设置为 `isTool: false`(或未设置)的函数**不会**被暴露为工具。 它们仍可直接执行或被其他函数调用,但不会出现在工具发现中。
|
||||
* **工具命名**: 当作为工具对外暴露时,函数名会被自动规范化为 `logic_function_<name>`(转换为小写,非字母数字字符替换为下划线)。 例如,`enrich-company` 将变为 `logic_function_enrich_company`。
|
||||
* 你可以将 `isTool` 与触发器结合使用——一个函数既可以作为工具(由 AI 代理调用),也可以同时由事件(cron、数据库事件、路由)触发。
|
||||
|
||||
<Note>
|
||||
**写一个好的 `description`。** AI 代理会依赖该函数的 `description` 字段来决定何时使用该工具。 明确说明该工具的作用以及应在何时调用。
|
||||
</Note>
|
||||
|
||||
### 前端组件
|
||||
|
||||
前端组件使你可以构建在 Twenty 的 UI 中渲染的自定义 React 组件。 使用 `defineFrontComponent()` 以内置校验定义组件:
|
||||
@@ -593,7 +743,7 @@ export default defineFrontComponent({
|
||||
|
||||
### 生成的类型化客户端
|
||||
|
||||
运行 `yarn twenty app:generate`,根据你的工作空间模式在 `generated/` 中创建本地类型化客户端。 在你的函数中使用它:
|
||||
类型化客户端由 `yarn twenty app:dev` 自动生成,并基于你的工作区架构存放在 `node_modules/twenty-sdk/generated`。 在你的函数中使用它:
|
||||
|
||||
```typescript
|
||||
import Twenty from '~/generated';
|
||||
@@ -602,7 +752,7 @@ const client = new Twenty();
|
||||
const { me } = await client.query({ me: { id: true, displayName: true } });
|
||||
```
|
||||
|
||||
客户端会通过 `yarn twenty app:generate` 重新生成。 在更改对象之后或接入新工作空间时,请重新运行。
|
||||
每当你的对象或字段发生变化时,`yarn twenty app:dev` 都会自动重新生成该客户端。
|
||||
|
||||
#### 逻辑函数中的运行时凭据
|
||||
|
||||
@@ -639,13 +789,13 @@ yarn add -D twenty-sdk
|
||||
}
|
||||
```
|
||||
|
||||
现在你可以通过 `yarn twenty <command>` 运行所有命令,例如 `yarn twenty app:dev`、`yarn twenty app:generate`、`yarn twenty help` 等。
|
||||
现在你可以通过 `yarn twenty <command>` 运行所有命令,例如 `yarn twenty app:dev`、`yarn twenty help` 等。
|
||||
|
||||
## 故障排除
|
||||
|
||||
* 身份验证错误:运行 `yarn twenty auth:login`,并确保你的 API 密钥具有所需权限。
|
||||
* 无法连接到服务器:请验证 API URL,并确保 Twenty 服务器可达。
|
||||
* 类型或客户端缺失/过期:运行 `yarn twenty app:generate`。
|
||||
* 类型或客户端缺失/过期:重启 `yarn twenty app:dev` — 它会自动生成类型化客户端。
|
||||
* 开发模式未同步:确保 `yarn twenty app:dev` 正在运行,并且你的环境不会忽略变更。
|
||||
|
||||
Discord 帮助频道:https://discord.com/channels/1130383047699738754/1130386664812982322
|
||||
|
||||
@@ -111,8 +111,8 @@ test('Create and update record', async ({ page }) => {
|
||||
|
||||
await companyRelationWidget.hover();
|
||||
await companyRelationWidget.locator('.tabler-icon-pencil').click();
|
||||
await page.getByRole('textbox', { name: 'Search' }).fill('Goog');
|
||||
await expect(page.getByRole('option', { name: 'Google' })).toBeVisible();
|
||||
await page.getByRole('textbox', { name: 'Search' }).fill('VMw');
|
||||
await expect(page.getByRole('option', { name: 'VMware' })).toBeVisible();
|
||||
const [updatePersonResponse] = await Promise.all([
|
||||
page.waitForResponse(async (response) => {
|
||||
if (!response.url().endsWith('/graphql')) {
|
||||
@@ -123,7 +123,7 @@ test('Create and update record', async ({ page }) => {
|
||||
|
||||
return requestBody.operationName === 'UpdateOnePerson';
|
||||
}),
|
||||
await page.getByRole('option', { name: 'Google' }).click({force: true})
|
||||
await page.getByRole('option', { name: 'VMware' }).click({force: true})
|
||||
]);
|
||||
|
||||
const body = await updatePersonResponse.json()
|
||||
@@ -153,6 +153,6 @@ test('Create and update record', async ({ page }) => {
|
||||
expect(findOnePersonReponseBody.data.person.linkedinLink.primaryLinkUrl).toBe('linkedin.com/johndoe');
|
||||
expect(findOnePersonReponseBody.data.person.phones.primaryPhoneNumber).toBe('611223344');
|
||||
expect(findOnePersonReponseBody.data.person.workPreference).toEqual(['HYBRID']);
|
||||
expect(findOnePersonReponseBody.data.person.company.name).toBe('Google');
|
||||
expect(findOnePersonReponseBody.data.person.company.name).toBe('VMware');
|
||||
|
||||
});
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -52,11 +52,11 @@ export const rule = createRule<[], 'restApiMethodsShouldBeGuarded'>({
|
||||
meta: {
|
||||
docs: {
|
||||
description:
|
||||
'REST API endpoints should have authentication guards (UserAuthGuard, WorkspaceAuthGuard, FilePathGuard, or FilesFieldGuard) or be explicitly marked as public (PublicEndpointGuard) and permission guards (SettingsPermissionsGuard or CustomPermissionGuard) to maintain our security model.',
|
||||
'REST API endpoints should have authentication guards (UserAuthGuard, WorkspaceAuthGuard, FilePathGuard, FileByIdGuard) or be explicitly marked as public (PublicEndpointGuard) and permission guards (SettingsPermissionsGuard or CustomPermissionGuard) to maintain our security model.',
|
||||
},
|
||||
messages: {
|
||||
restApiMethodsShouldBeGuarded:
|
||||
'All REST API controller endpoints must have authentication guards (@UseGuards(UserAuthGuard/WorkspaceAuthGuard/FilePathGuard/FileIdGuard/FilesFieldGuard/PublicEndpointGuard)) and permission guards (@UseGuards(..., SettingsPermissionsGuard(PermissionFlagType.XXX)), CustomPermissionGuard for custom logic, or NoPermissionGuard for special cases).',
|
||||
'All REST API controller endpoints must have authentication guards (@UseGuards(UserAuthGuard/WorkspaceAuthGuard/FilePathGuard/FileByIdGuard/PublicEndpointGuard)) and permission guards (@UseGuards(..., SettingsPermissionsGuard(PermissionFlagType.XXX)), CustomPermissionGuard for custom logic, or NoPermissionGuard for special cases).',
|
||||
},
|
||||
schema: [],
|
||||
hasSuggestions: false,
|
||||
|
||||
@@ -42,7 +42,7 @@ export const typedTokenHelpers = {
|
||||
TSESTree.AST_NODE_TYPES.Identifier &&
|
||||
decorator.expression.callee.name === 'UseGuards'
|
||||
) {
|
||||
// Check the arguments for UserAuthGuard, WorkspaceAuthGuard, PublicEndpoint, FilePathGuard, or FilesFieldGuard
|
||||
// Check the arguments for UserAuthGuard, WorkspaceAuthGuard, PublicEndpoint, FilePathGuard or FileByIdGuard
|
||||
return decorator.expression.arguments.some((arg) => {
|
||||
if (arg.type === TSESTree.AST_NODE_TYPES.Identifier) {
|
||||
return (
|
||||
@@ -50,7 +50,7 @@ export const typedTokenHelpers = {
|
||||
arg.name === 'WorkspaceAuthGuard' ||
|
||||
arg.name === 'PublicEndpointGuard' ||
|
||||
arg.name === 'FilePathGuard' ||
|
||||
arg.name === 'FilesFieldGuard'
|
||||
arg.name === 'FileByIdGuard'
|
||||
);
|
||||
}
|
||||
return false;
|
||||
|
||||
@@ -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: {
|
||||
|
||||
@@ -14,7 +14,6 @@ process.env.TZ = 'GMT';
|
||||
// eslint-disable-next-line no-undef
|
||||
process.env.LC_ALL = 'en_US.UTF-8';
|
||||
const jestConfig = {
|
||||
silent: true,
|
||||
// For more information please have a look to official docs https://jestjs.io/docs/configuration/#prettierpath-string
|
||||
// Prettier v3 will should be supported in jest v30 https://github.com/jestjs/jest/releases/tag/v30.0.0-alpha.1
|
||||
prettierPath: null,
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -3,6 +3,11 @@
|
||||
// expect(element).toHaveTextContent(/react/i)
|
||||
// learn more: https://github.com/testing-library/jest-dom
|
||||
import '@testing-library/jest-dom';
|
||||
import {
|
||||
ReadableStream as NodeReadableStream,
|
||||
TransformStream as NodeTransformStream,
|
||||
WritableStream as NodeWritableStream,
|
||||
} from 'node:stream/web';
|
||||
|
||||
import { i18n } from '@lingui/core';
|
||||
import { SOURCE_LOCALE } from 'twenty-shared/translations';
|
||||
@@ -12,6 +17,27 @@ import { messages as enMessages } from '~/locales/generated/en';
|
||||
i18n.load({ [SOURCE_LOCALE]: enMessages });
|
||||
i18n.activate(SOURCE_LOCALE);
|
||||
|
||||
const globalWithWebStreams = globalThis as Record<string, unknown>;
|
||||
|
||||
if (globalWithWebStreams.TransformStream === undefined) {
|
||||
globalWithWebStreams.TransformStream = NodeTransformStream;
|
||||
}
|
||||
|
||||
if (globalWithWebStreams.ReadableStream === undefined) {
|
||||
globalWithWebStreams.ReadableStream = NodeReadableStream;
|
||||
}
|
||||
|
||||
if (globalWithWebStreams.WritableStream === undefined) {
|
||||
globalWithWebStreams.WritableStream = NodeWritableStream;
|
||||
}
|
||||
|
||||
if (typeof window !== 'undefined') {
|
||||
Object.defineProperty(window, 'scrollTo', {
|
||||
value: () => {},
|
||||
writable: true,
|
||||
});
|
||||
}
|
||||
|
||||
// Add Jest matchers for toThrowError and other missing methods
|
||||
declare global {
|
||||
namespace jest {
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -9,6 +9,18 @@ export const useCopyToClipboard = () => {
|
||||
const { t } = useLingui();
|
||||
|
||||
const copyToClipboard = async (valueAsString: string, message?: string) => {
|
||||
if (!window.isSecureContext) {
|
||||
enqueueErrorSnackBar({
|
||||
message: t`Clipboard requires a secure connection (HTTPS). Please access this app over HTTPS to enable copying.`,
|
||||
options: {
|
||||
icon: <IconExclamationCircle size={16} color="red" />,
|
||||
duration: 6000,
|
||||
},
|
||||
});
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
await navigator.clipboard.writeText(valueAsString);
|
||||
|
||||
|
||||
@@ -106,6 +106,7 @@ msgstr "(gekies: {selectedIconKey})"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "[empty string]"
|
||||
@@ -310,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})"
|
||||
@@ -381,6 +387,11 @@ msgstr "{selectedCount} brontipes"
|
||||
msgid "{serviceLabel} service is unreachable"
|
||||
msgstr "{serviceLabel}-diens is onbereikbaar"
|
||||
|
||||
#. js-lingui-id: 8vJ+2V
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "{stepCount, plural, one {# step} other {# steps}}"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Bzjg0/
|
||||
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepCalendar.tsx
|
||||
msgid "{stepNumber}. Calendar"
|
||||
@@ -1829,6 +1840,7 @@ msgstr "Oplopend"
|
||||
#: src/modules/settings/roles/role-permissions/permission-flags/hooks/useActionRolePermissionFlagConfig.ts
|
||||
#: src/modules/navigation/components/MainNavigationDrawerFixedItems.tsx
|
||||
#: src/modules/command-menu/hooks/useOpenAskAIPageInCommandMenu.ts
|
||||
#: src/modules/command-menu/components/CommandMenuAskAIInfo.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
@@ -1967,7 +1979,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 ""
|
||||
@@ -2068,6 +2079,11 @@ msgstr "Beskikbaarheid"
|
||||
msgid "Available"
|
||||
msgstr "Beskikbaar"
|
||||
|
||||
#. js-lingui-id: 06gA3L
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Available as tool"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: oD38t2
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Available tools"
|
||||
@@ -2239,9 +2255,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
|
||||
@@ -2312,6 +2328,7 @@ msgstr "caldav.example.com"
|
||||
#. js-lingui-id: AjVXBS
|
||||
#: src/modules/views/view-picker/constants/ViewPickerTypeSelectOptions.ts
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
|
||||
msgid "Calendar"
|
||||
msgstr "Kalender"
|
||||
@@ -2364,6 +2381,11 @@ msgstr "Kalender aansig"
|
||||
msgid "Calendars"
|
||||
msgstr "Kalenders"
|
||||
|
||||
#. js-lingui-id: qIlodj
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormPhoneFieldInput.tsx
|
||||
msgid "Calling Code"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: msssZq
|
||||
#: src/modules/settings/data-model/objects/forms/components/SettingsDataModelObjectAboutForm.tsx
|
||||
msgid "Can't change API names for standard objects"
|
||||
@@ -2500,11 +2522,6 @@ msgstr "Verander nodustipe"
|
||||
msgid "Change Password"
|
||||
msgstr "Verander Wagwoord"
|
||||
|
||||
#. js-lingui-id: wRtBJP
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Change Plan"
|
||||
msgstr "Verander Plan"
|
||||
|
||||
#. js-lingui-id: EYSFEW
|
||||
#: src/pages/settings/domains/SettingsDomain.tsx
|
||||
msgid "Change subdomain?"
|
||||
@@ -2602,7 +2619,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"
|
||||
|
||||
@@ -2705,6 +2722,11 @@ msgstr "Kliënt geheime"
|
||||
msgid "Client Settings"
|
||||
msgstr "Kliëntinstellings"
|
||||
|
||||
#. js-lingui-id: mekEJ5
|
||||
#: src/hooks/useCopyToClipboard.tsx
|
||||
msgid "Clipboard requires a secure connection (HTTPS). Please access this app over HTTPS to enable copying."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yz7wBu
|
||||
#: src/modules/ui/feedback/snack-bar-manager/components/SnackBar.tsx
|
||||
msgid "Close"
|
||||
@@ -2747,6 +2769,7 @@ msgstr "Kodeer jou funksie"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Collapse"
|
||||
@@ -3301,11 +3324,6 @@ msgstr "Tel unieke waardes"
|
||||
msgid "Country"
|
||||
msgstr "Land"
|
||||
|
||||
#. js-lingui-id: j2OqfX
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormPhoneFieldInput.tsx
|
||||
msgid "Country Code"
|
||||
msgstr "Landkode"
|
||||
|
||||
#. js-lingui-id: gJdfqX
|
||||
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
|
||||
msgid "create"
|
||||
@@ -4826,6 +4844,7 @@ msgstr "E-posdomeine"
|
||||
#: src/pages/settings/accounts/SettingsAccountsEmails.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Emails"
|
||||
msgstr "E-posse"
|
||||
|
||||
@@ -4877,6 +4896,7 @@ msgstr "Leeg"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Empty Array"
|
||||
@@ -4897,6 +4917,7 @@ msgstr "Leë Inboks"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Empty Object"
|
||||
@@ -5024,10 +5045,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
|
||||
@@ -5092,6 +5113,11 @@ msgstr "Voer toetswaarde in"
|
||||
msgid "Enter text"
|
||||
msgstr "Voer teks in"
|
||||
|
||||
#. js-lingui-id: +rrO69
|
||||
#: src/modules/page-layout/widgets/standalone-rich-text/components/StandaloneRichTextEditorContent.tsx
|
||||
msgid "Enter text or type '/' for commands"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yZMXC2
|
||||
#: src/modules/advanced-text-editor/hooks/useAdvancedTextEditor.ts
|
||||
msgid "Enter text or Type '/' for commands"
|
||||
@@ -5488,6 +5514,7 @@ msgstr "Verlaat Instellings"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Expand"
|
||||
@@ -6018,6 +6045,11 @@ msgstr ""
|
||||
msgid "File URL is not defined"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: sER+bs
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Files"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: o7J4JM
|
||||
#: src/pages/settings/data-model/SettingsObjectFieldTable.tsx
|
||||
#: src/pages/settings/ai/components/SettingsSkillsTable.tsx
|
||||
@@ -6121,6 +6153,7 @@ msgstr "Voornaam kan nie leeg wees nie"
|
||||
|
||||
#. js-lingui-id: ylQd2j
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/utils/getActionHeaderTypeOrThrow.ts
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/command-menu/pages/workflow/action/components/CommandMenuWorkflowSelectAction.tsx
|
||||
msgid "Flow"
|
||||
msgstr "Vloei"
|
||||
@@ -6586,6 +6619,11 @@ msgstr "Versteek groep {groupValue}"
|
||||
msgid "Hide hidden groups"
|
||||
msgstr "Versteek versteekte groepe"
|
||||
|
||||
#. js-lingui-id: i0qMbr
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Home"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Xkd22/
|
||||
#: src/modules/page-layout/utils/getWidgetTitle.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/GraphTypeInformation.ts
|
||||
@@ -6897,6 +6935,7 @@ msgstr "Inligting"
|
||||
#: src/modules/settings/logic-functions/components/tabs/SettingsLogicFunctionTestTab.tsx
|
||||
#: src/modules/command-menu/pages/workflow/step/view-run/components/CommandMenuWorkflowRunViewStepContent.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Input"
|
||||
msgstr "Invoer"
|
||||
|
||||
@@ -7954,6 +7993,11 @@ msgstr "Maksimum reeks"
|
||||
msgid "Maximum email addresses"
|
||||
msgstr "Maksimum e-posadresse"
|
||||
|
||||
#. js-lingui-id: 9UHNQc
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Maximum execution time in seconds (1-900)"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: PAhTVY
|
||||
#: src/modules/settings/data-model/fields/forms/components/SettingsDataModelFieldMaxValuesForm.tsx
|
||||
msgid "Maximum files"
|
||||
@@ -8656,6 +8700,11 @@ msgstr "Geen beskikbare velde om te kies nie"
|
||||
msgid "No body"
|
||||
msgstr "Geen inhoud"
|
||||
|
||||
#. js-lingui-id: c3+z7H
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCallingCodeSelectInput.tsx
|
||||
msgid "No calling code"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: OTe3RI
|
||||
#: src/pages/settings/domains/SettingsDomain.tsx
|
||||
msgid "No change detected"
|
||||
@@ -8686,7 +8735,6 @@ msgstr "Geen konteks is vir hierdie versoek voorsien nie"
|
||||
#: src/modules/settings/data-model/fields/forms/phones/components/SettingsDataModelFieldPhonesForm.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/address/components/SettingsDataModelFieldAddressForm.tsx
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCountrySelectInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCountryCodeSelectInput.tsx
|
||||
msgid "No country"
|
||||
msgstr "Geen land nie"
|
||||
|
||||
@@ -9124,7 +9172,13 @@ msgstr "Nie gedeel deur {notSharedByFullName} nie"
|
||||
msgid "Not synced"
|
||||
msgstr "Nie gesinkroniseer nie"
|
||||
|
||||
#. js-lingui-id: KiJn9B
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Note"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 1DBGsz
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/action-menu/actions/record-actions/constants/DefaultRecordActionsConfig.tsx
|
||||
msgid "Notes"
|
||||
msgstr "Notas"
|
||||
@@ -9502,6 +9556,11 @@ msgstr ""
|
||||
msgid "Organization"
|
||||
msgstr "Organisasie"
|
||||
|
||||
#. js-lingui-id: zi/p7n
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Organization plan"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: nV6twc
|
||||
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuEditOrganizeActions.tsx
|
||||
msgid "Organize"
|
||||
@@ -9560,6 +9619,7 @@ msgstr "Onderbreking"
|
||||
#: src/modules/logic-functions/components/LogicFunctionExecutionResult.tsx
|
||||
#: src/modules/command-menu/pages/workflow/step/view-run/components/CommandMenuWorkflowRunViewStepContent.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/TerminalOutput.tsx
|
||||
#: src/modules/ai/components/CodeExecutionDisplay.tsx
|
||||
msgid "Output"
|
||||
@@ -10061,6 +10121,11 @@ msgstr "Privaatheidsbeleid"
|
||||
msgid "Pro"
|
||||
msgstr "Pro"
|
||||
|
||||
#. js-lingui-id: r5je1s
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Pro plan"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: k1ifdL
|
||||
#: src/modules/workflow/components/WorkflowStepExecutionResult.tsx
|
||||
#: src/modules/spreadsheet-import/steps/components/UploadStep/components/DropZone.tsx
|
||||
@@ -11920,6 +11985,14 @@ msgstr "Spasies en komma - {spacesAndCommaExample}"
|
||||
msgid "Spanish"
|
||||
msgstr "Spaans"
|
||||
|
||||
#. js-lingui-id: gsifzp
|
||||
#: src/modules/command-menu/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
|
||||
#: src/modules/command-menu/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
msgid "Split multiple values"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: vnS6Rf
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
msgid "SSO"
|
||||
@@ -12398,6 +12471,7 @@ msgid "Task Title"
|
||||
msgstr "Taaktitel"
|
||||
|
||||
#. js-lingui-id: GtycJ/
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/action-menu/actions/record-actions/constants/DefaultRecordActionsConfig.tsx
|
||||
msgid "Tasks"
|
||||
msgstr "Take"
|
||||
@@ -12597,6 +12671,11 @@ msgstr "Daar is geen gekoppelde aktiwiteit by hierdie rekord nie."
|
||||
msgid "There was an error while updating password."
|
||||
msgstr "Daar was 'n fout terwyl die wagwoord opgedateer is."
|
||||
|
||||
#. js-lingui-id: AUV+TY
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Thinking"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Ed99mE
|
||||
#: src/modules/ai/components/ReasoningSummaryDisplay.tsx
|
||||
msgid "Thinking..."
|
||||
@@ -12784,6 +12863,11 @@ msgstr "Dit sal jou twee-faktor-verifikasiemetode permanent uitvee.<0/>Aangesien
|
||||
msgid "This will revert the database value to environment/default value. The database override will be removed and the system will use the environment settings."
|
||||
msgstr "Dit sal die databasiswaarde na omgewing/verstekwaarde herstel. Die databasis oorskryding sal verwyder word en die stelsel sal die omgewingsinstellings gebruik."
|
||||
|
||||
#. js-lingui-id: f8HOUp
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Thought"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 5g/sE8
|
||||
#: src/modules/action-menu/actions/record-actions/constants/WorkflowActionsConfig.tsx
|
||||
msgid "Tidy up"
|
||||
@@ -12815,10 +12899,16 @@ msgid "Time zone"
|
||||
msgstr "Tydsone"
|
||||
|
||||
#. js-lingui-id: cklVjM
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCalendarViewContent.tsx
|
||||
msgid "Timeline"
|
||||
msgstr "Tydlyn"
|
||||
|
||||
#. js-lingui-id: xY9s5E
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Timeout"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8TMaZI
|
||||
#: src/pages/settings/security/event-logs/components/EventLogResultsTable.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogResultsTable.tsx
|
||||
@@ -13131,7 +13221,6 @@ msgid "Type"
|
||||
msgstr "Tipe"
|
||||
|
||||
#. js-lingui-id: SKD2e4
|
||||
#: src/modules/page-layout/widgets/standalone-rich-text/components/StandaloneRichTextEditorContent.tsx
|
||||
#: src/modules/activities/components/ActivityRichTextEditor.tsx
|
||||
msgid "Type '/' for commands, '@' for mentions"
|
||||
msgstr ""
|
||||
@@ -13735,8 +13824,6 @@ msgid "View Logs"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: ecVcAx
|
||||
#: src/modules/ai/components/AIChatTab.tsx
|
||||
#: src/modules/ai/components/AIChatTab.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
msgid "View Previous AI Chats"
|
||||
@@ -13992,6 +14079,11 @@ msgstr ""
|
||||
msgid "When any deal with amount over $100,000 has its stage or amount updated, send a notification to the sales channel with the deal name, company, new stage, amount and owner."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8jc/Xn
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "When enabled, AI agents and workflow automations can discover and call this function"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: C51ilI
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
|
||||
msgid "When the API key will expire."
|
||||
@@ -14124,6 +14216,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 ""
|
||||
|
||||
@@ -106,6 +106,7 @@ msgstr "(المحدد: {selectedIconKey})"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "[empty string]"
|
||||
@@ -310,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})"
|
||||
@@ -381,6 +387,11 @@ msgstr "{selectedCount, plural, zero {لا أنواع مصادر} one {نوع م
|
||||
msgid "{serviceLabel} service is unreachable"
|
||||
msgstr "خدمة {serviceLabel} غير قابلة للوصول"
|
||||
|
||||
#. js-lingui-id: 8vJ+2V
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "{stepCount, plural, one {# step} other {# steps}}"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Bzjg0/
|
||||
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepCalendar.tsx
|
||||
msgid "{stepNumber}. Calendar"
|
||||
@@ -1829,6 +1840,7 @@ msgstr "تصاعدي"
|
||||
#: src/modules/settings/roles/role-permissions/permission-flags/hooks/useActionRolePermissionFlagConfig.ts
|
||||
#: src/modules/navigation/components/MainNavigationDrawerFixedItems.tsx
|
||||
#: src/modules/command-menu/hooks/useOpenAskAIPageInCommandMenu.ts
|
||||
#: src/modules/command-menu/components/CommandMenuAskAIInfo.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
@@ -1967,7 +1979,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 ""
|
||||
@@ -2068,6 +2079,11 @@ msgstr "التوفر"
|
||||
msgid "Available"
|
||||
msgstr "متاح"
|
||||
|
||||
#. js-lingui-id: 06gA3L
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Available as tool"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: oD38t2
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Available tools"
|
||||
@@ -2239,9 +2255,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
|
||||
@@ -2312,6 +2328,7 @@ msgstr "caldav.example.com"
|
||||
#. js-lingui-id: AjVXBS
|
||||
#: src/modules/views/view-picker/constants/ViewPickerTypeSelectOptions.ts
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
|
||||
msgid "Calendar"
|
||||
msgstr "تقويم"
|
||||
@@ -2364,6 +2381,11 @@ msgstr "عرض التقويم"
|
||||
msgid "Calendars"
|
||||
msgstr "التقاويم"
|
||||
|
||||
#. js-lingui-id: qIlodj
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormPhoneFieldInput.tsx
|
||||
msgid "Calling Code"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: msssZq
|
||||
#: src/modules/settings/data-model/objects/forms/components/SettingsDataModelObjectAboutForm.tsx
|
||||
msgid "Can't change API names for standard objects"
|
||||
@@ -2500,11 +2522,6 @@ msgstr "تغيير نوع العقدة"
|
||||
msgid "Change Password"
|
||||
msgstr "تغيير كلمة السر"
|
||||
|
||||
#. js-lingui-id: wRtBJP
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Change Plan"
|
||||
msgstr "تغيير الخطة"
|
||||
|
||||
#. js-lingui-id: EYSFEW
|
||||
#: src/pages/settings/domains/SettingsDomain.tsx
|
||||
msgid "Change subdomain?"
|
||||
@@ -2602,7 +2619,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 "اختر التنسيق المستخدم لعرض قيمة التاريخ"
|
||||
|
||||
@@ -2705,6 +2722,11 @@ msgstr "سر العميل"
|
||||
msgid "Client Settings"
|
||||
msgstr "إعدادات العميل"
|
||||
|
||||
#. js-lingui-id: mekEJ5
|
||||
#: src/hooks/useCopyToClipboard.tsx
|
||||
msgid "Clipboard requires a secure connection (HTTPS). Please access this app over HTTPS to enable copying."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yz7wBu
|
||||
#: src/modules/ui/feedback/snack-bar-manager/components/SnackBar.tsx
|
||||
msgid "Close"
|
||||
@@ -2747,6 +2769,7 @@ msgstr "برمج الوظيفة الخاصة بك"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Collapse"
|
||||
@@ -3301,11 +3324,6 @@ msgstr "عدّ القيم الفريدة"
|
||||
msgid "Country"
|
||||
msgstr "البلد"
|
||||
|
||||
#. js-lingui-id: j2OqfX
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormPhoneFieldInput.tsx
|
||||
msgid "Country Code"
|
||||
msgstr "رمز البلد"
|
||||
|
||||
#. js-lingui-id: gJdfqX
|
||||
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
|
||||
msgid "create"
|
||||
@@ -4826,6 +4844,7 @@ msgstr "نطاقات البريد الإلكتروني"
|
||||
#: src/pages/settings/accounts/SettingsAccountsEmails.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Emails"
|
||||
msgstr "رسائل البريد الإلكتروني"
|
||||
|
||||
@@ -4877,6 +4896,7 @@ msgstr "فارغ"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Empty Array"
|
||||
@@ -4897,6 +4917,7 @@ msgstr "صندوق الوارد فارغ"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Empty Object"
|
||||
@@ -5024,10 +5045,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
|
||||
@@ -5092,6 +5113,11 @@ msgstr "أدخل قيمة الاختبار"
|
||||
msgid "Enter text"
|
||||
msgstr "أدخل نصًا"
|
||||
|
||||
#. js-lingui-id: +rrO69
|
||||
#: src/modules/page-layout/widgets/standalone-rich-text/components/StandaloneRichTextEditorContent.tsx
|
||||
msgid "Enter text or type '/' for commands"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yZMXC2
|
||||
#: src/modules/advanced-text-editor/hooks/useAdvancedTextEditor.ts
|
||||
msgid "Enter text or Type '/' for commands"
|
||||
@@ -5488,6 +5514,7 @@ msgstr "خروج من الإعدادات"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Expand"
|
||||
@@ -6018,6 +6045,11 @@ msgstr ""
|
||||
msgid "File URL is not defined"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: sER+bs
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Files"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: o7J4JM
|
||||
#: src/pages/settings/data-model/SettingsObjectFieldTable.tsx
|
||||
#: src/pages/settings/ai/components/SettingsSkillsTable.tsx
|
||||
@@ -6121,6 +6153,7 @@ msgstr "لا يمكن أن يكون الاسم الأول فارغًا"
|
||||
|
||||
#. js-lingui-id: ylQd2j
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/utils/getActionHeaderTypeOrThrow.ts
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/command-menu/pages/workflow/action/components/CommandMenuWorkflowSelectAction.tsx
|
||||
msgid "Flow"
|
||||
msgstr "تدفق"
|
||||
@@ -6586,6 +6619,11 @@ msgstr "إخفاء المجموعة {groupValue}"
|
||||
msgid "Hide hidden groups"
|
||||
msgstr "إخفاء المجموعات المخفية"
|
||||
|
||||
#. js-lingui-id: i0qMbr
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Home"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Xkd22/
|
||||
#: src/modules/page-layout/utils/getWidgetTitle.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/GraphTypeInformation.ts
|
||||
@@ -6897,6 +6935,7 @@ msgstr "معلومات"
|
||||
#: src/modules/settings/logic-functions/components/tabs/SettingsLogicFunctionTestTab.tsx
|
||||
#: src/modules/command-menu/pages/workflow/step/view-run/components/CommandMenuWorkflowRunViewStepContent.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Input"
|
||||
msgstr "إدخال"
|
||||
|
||||
@@ -7954,6 +7993,11 @@ msgstr "المدى الأقصى"
|
||||
msgid "Maximum email addresses"
|
||||
msgstr "الحد الأقصى لعناوين البريد الإلكتروني"
|
||||
|
||||
#. js-lingui-id: 9UHNQc
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Maximum execution time in seconds (1-900)"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: PAhTVY
|
||||
#: src/modules/settings/data-model/fields/forms/components/SettingsDataModelFieldMaxValuesForm.tsx
|
||||
msgid "Maximum files"
|
||||
@@ -8656,6 +8700,11 @@ msgstr "لا توجد حقول متاحة للاختيار"
|
||||
msgid "No body"
|
||||
msgstr "لا يوجد متن"
|
||||
|
||||
#. js-lingui-id: c3+z7H
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCallingCodeSelectInput.tsx
|
||||
msgid "No calling code"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: OTe3RI
|
||||
#: src/pages/settings/domains/SettingsDomain.tsx
|
||||
msgid "No change detected"
|
||||
@@ -8686,7 +8735,6 @@ msgstr "لم يتم توفير سياق لهذا الطلب"
|
||||
#: src/modules/settings/data-model/fields/forms/phones/components/SettingsDataModelFieldPhonesForm.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/address/components/SettingsDataModelFieldAddressForm.tsx
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCountrySelectInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCountryCodeSelectInput.tsx
|
||||
msgid "No country"
|
||||
msgstr "لا دولة"
|
||||
|
||||
@@ -9124,7 +9172,13 @@ msgstr "لم تتم المشاركة من قِبَل {notSharedByFullName}"
|
||||
msgid "Not synced"
|
||||
msgstr "غير متزامن"
|
||||
|
||||
#. js-lingui-id: KiJn9B
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Note"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 1DBGsz
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/action-menu/actions/record-actions/constants/DefaultRecordActionsConfig.tsx
|
||||
msgid "Notes"
|
||||
msgstr "الملاحظات"
|
||||
@@ -9502,6 +9556,11 @@ msgstr ""
|
||||
msgid "Organization"
|
||||
msgstr "المؤسسة"
|
||||
|
||||
#. js-lingui-id: zi/p7n
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Organization plan"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: nV6twc
|
||||
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuEditOrganizeActions.tsx
|
||||
msgid "Organize"
|
||||
@@ -9560,6 +9619,7 @@ msgstr "انقطاع"
|
||||
#: src/modules/logic-functions/components/LogicFunctionExecutionResult.tsx
|
||||
#: src/modules/command-menu/pages/workflow/step/view-run/components/CommandMenuWorkflowRunViewStepContent.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/TerminalOutput.tsx
|
||||
#: src/modules/ai/components/CodeExecutionDisplay.tsx
|
||||
msgid "Output"
|
||||
@@ -10061,6 +10121,11 @@ msgstr "\\\\"
|
||||
msgid "Pro"
|
||||
msgstr "محترف"
|
||||
|
||||
#. js-lingui-id: r5je1s
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Pro plan"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: k1ifdL
|
||||
#: src/modules/workflow/components/WorkflowStepExecutionResult.tsx
|
||||
#: src/modules/spreadsheet-import/steps/components/UploadStep/components/DropZone.tsx
|
||||
@@ -11920,6 +11985,14 @@ msgstr "المسافات والفاصلة - {spacesAndCommaExample}"
|
||||
msgid "Spanish"
|
||||
msgstr "الإسبانية"
|
||||
|
||||
#. js-lingui-id: gsifzp
|
||||
#: src/modules/command-menu/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
|
||||
#: src/modules/command-menu/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
msgid "Split multiple values"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: vnS6Rf
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
msgid "SSO"
|
||||
@@ -12398,6 +12471,7 @@ msgid "Task Title"
|
||||
msgstr "عنوان المهمة"
|
||||
|
||||
#. js-lingui-id: GtycJ/
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/action-menu/actions/record-actions/constants/DefaultRecordActionsConfig.tsx
|
||||
msgid "Tasks"
|
||||
msgstr "المهام"
|
||||
@@ -12597,6 +12671,11 @@ msgstr "لا توجد أنشطة مرتبطة بهذا السجل."
|
||||
msgid "There was an error while updating password."
|
||||
msgstr "حدث خطأ أثناء تحديث كلمة المرور."
|
||||
|
||||
#. js-lingui-id: AUV+TY
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Thinking"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Ed99mE
|
||||
#: src/modules/ai/components/ReasoningSummaryDisplay.tsx
|
||||
msgid "Thinking..."
|
||||
@@ -12784,6 +12863,11 @@ msgstr "سيؤدي ذلك إلى حذف طريقة المصادقة الثنائ
|
||||
msgid "This will revert the database value to environment/default value. The database override will be removed and the system will use the environment settings."
|
||||
msgstr "سيؤدي هذا إلى إعادة قيمة قاعدة البيانات إلى البيئة/القيمة الافتراضية. سيتم إزالة تجاوز قاعدة البيانات وسيستخدم النظام إعدادات البيئة."
|
||||
|
||||
#. js-lingui-id: f8HOUp
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Thought"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 5g/sE8
|
||||
#: src/modules/action-menu/actions/record-actions/constants/WorkflowActionsConfig.tsx
|
||||
msgid "Tidy up"
|
||||
@@ -12815,10 +12899,16 @@ msgid "Time zone"
|
||||
msgstr "المنطقة الزمنية"
|
||||
|
||||
#. js-lingui-id: cklVjM
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCalendarViewContent.tsx
|
||||
msgid "Timeline"
|
||||
msgstr "الجدول الزمني"
|
||||
|
||||
#. js-lingui-id: xY9s5E
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Timeout"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8TMaZI
|
||||
#: src/pages/settings/security/event-logs/components/EventLogResultsTable.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogResultsTable.tsx
|
||||
@@ -13131,7 +13221,6 @@ msgid "Type"
|
||||
msgstr "النوع"
|
||||
|
||||
#. js-lingui-id: SKD2e4
|
||||
#: src/modules/page-layout/widgets/standalone-rich-text/components/StandaloneRichTextEditorContent.tsx
|
||||
#: src/modules/activities/components/ActivityRichTextEditor.tsx
|
||||
msgid "Type '/' for commands, '@' for mentions"
|
||||
msgstr ""
|
||||
@@ -13735,8 +13824,6 @@ msgid "View Logs"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: ecVcAx
|
||||
#: src/modules/ai/components/AIChatTab.tsx
|
||||
#: src/modules/ai/components/AIChatTab.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
msgid "View Previous AI Chats"
|
||||
@@ -13990,6 +14077,11 @@ msgstr ""
|
||||
msgid "When any deal with amount over $100,000 has its stage or amount updated, send a notification to the sales channel with the deal name, company, new stage, amount and owner."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8jc/Xn
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "When enabled, AI agents and workflow automations can discover and call this function"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: C51ilI
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
|
||||
msgid "When the API key will expire."
|
||||
@@ -14122,6 +14214,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 ""
|
||||
|
||||
@@ -106,6 +106,7 @@ msgstr "(seleccionada: {selectedIconKey})"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "[empty string]"
|
||||
@@ -310,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})"
|
||||
@@ -381,6 +387,11 @@ msgstr "{selectedCount} tipus d'origen"
|
||||
msgid "{serviceLabel} service is unreachable"
|
||||
msgstr "El servei {serviceLabel} és inaccessible"
|
||||
|
||||
#. js-lingui-id: 8vJ+2V
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "{stepCount, plural, one {# step} other {# steps}}"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Bzjg0/
|
||||
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepCalendar.tsx
|
||||
msgid "{stepNumber}. Calendar"
|
||||
@@ -1829,6 +1840,7 @@ msgstr "Ascendent"
|
||||
#: src/modules/settings/roles/role-permissions/permission-flags/hooks/useActionRolePermissionFlagConfig.ts
|
||||
#: src/modules/navigation/components/MainNavigationDrawerFixedItems.tsx
|
||||
#: src/modules/command-menu/hooks/useOpenAskAIPageInCommandMenu.ts
|
||||
#: src/modules/command-menu/components/CommandMenuAskAIInfo.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
@@ -1967,7 +1979,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 ""
|
||||
@@ -2068,6 +2079,11 @@ msgstr "Disponibilitat"
|
||||
msgid "Available"
|
||||
msgstr "Disponible"
|
||||
|
||||
#. js-lingui-id: 06gA3L
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Available as tool"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: oD38t2
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Available tools"
|
||||
@@ -2239,9 +2255,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
|
||||
@@ -2312,6 +2328,7 @@ msgstr "caldav.example.com"
|
||||
#. js-lingui-id: AjVXBS
|
||||
#: src/modules/views/view-picker/constants/ViewPickerTypeSelectOptions.ts
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
|
||||
msgid "Calendar"
|
||||
msgstr "Calendari"
|
||||
@@ -2364,6 +2381,11 @@ msgstr "Vista de calendari"
|
||||
msgid "Calendars"
|
||||
msgstr "Calendaris"
|
||||
|
||||
#. js-lingui-id: qIlodj
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormPhoneFieldInput.tsx
|
||||
msgid "Calling Code"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: msssZq
|
||||
#: src/modules/settings/data-model/objects/forms/components/SettingsDataModelObjectAboutForm.tsx
|
||||
msgid "Can't change API names for standard objects"
|
||||
@@ -2500,11 +2522,6 @@ msgstr "Canvia el tipus de node"
|
||||
msgid "Change Password"
|
||||
msgstr "Canvia la contrasenya"
|
||||
|
||||
#. js-lingui-id: wRtBJP
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Change Plan"
|
||||
msgstr "Canviar Pla"
|
||||
|
||||
#. js-lingui-id: EYSFEW
|
||||
#: src/pages/settings/domains/SettingsDomain.tsx
|
||||
msgid "Change subdomain?"
|
||||
@@ -2602,7 +2619,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"
|
||||
|
||||
@@ -2705,6 +2722,11 @@ msgstr "Secret del client"
|
||||
msgid "Client Settings"
|
||||
msgstr "Configuració del client"
|
||||
|
||||
#. js-lingui-id: mekEJ5
|
||||
#: src/hooks/useCopyToClipboard.tsx
|
||||
msgid "Clipboard requires a secure connection (HTTPS). Please access this app over HTTPS to enable copying."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yz7wBu
|
||||
#: src/modules/ui/feedback/snack-bar-manager/components/SnackBar.tsx
|
||||
msgid "Close"
|
||||
@@ -2747,6 +2769,7 @@ msgstr "Programar la teva funció"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Collapse"
|
||||
@@ -3301,11 +3324,6 @@ msgstr "Compta valors únics"
|
||||
msgid "Country"
|
||||
msgstr "País"
|
||||
|
||||
#. js-lingui-id: j2OqfX
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormPhoneFieldInput.tsx
|
||||
msgid "Country Code"
|
||||
msgstr "Codi de país"
|
||||
|
||||
#. js-lingui-id: gJdfqX
|
||||
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
|
||||
msgid "create"
|
||||
@@ -4826,6 +4844,7 @@ msgstr "Dominis de correu"
|
||||
#: src/pages/settings/accounts/SettingsAccountsEmails.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Emails"
|
||||
msgstr "Correus electrònics"
|
||||
|
||||
@@ -4877,6 +4896,7 @@ msgstr "Buit"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Empty Array"
|
||||
@@ -4897,6 +4917,7 @@ msgstr "Bústia buida"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Empty Object"
|
||||
@@ -5024,10 +5045,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
|
||||
@@ -5092,6 +5113,11 @@ msgstr "Introdueix el valor de prova"
|
||||
msgid "Enter text"
|
||||
msgstr "Introdueix el text"
|
||||
|
||||
#. js-lingui-id: +rrO69
|
||||
#: src/modules/page-layout/widgets/standalone-rich-text/components/StandaloneRichTextEditorContent.tsx
|
||||
msgid "Enter text or type '/' for commands"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yZMXC2
|
||||
#: src/modules/advanced-text-editor/hooks/useAdvancedTextEditor.ts
|
||||
msgid "Enter text or Type '/' for commands"
|
||||
@@ -5488,6 +5514,7 @@ msgstr "Sortir de la configuració"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Expand"
|
||||
@@ -6018,6 +6045,11 @@ msgstr ""
|
||||
msgid "File URL is not defined"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: sER+bs
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Files"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: o7J4JM
|
||||
#: src/pages/settings/data-model/SettingsObjectFieldTable.tsx
|
||||
#: src/pages/settings/ai/components/SettingsSkillsTable.tsx
|
||||
@@ -6121,6 +6153,7 @@ msgstr "El nom no pot estar buit"
|
||||
|
||||
#. js-lingui-id: ylQd2j
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/utils/getActionHeaderTypeOrThrow.ts
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/command-menu/pages/workflow/action/components/CommandMenuWorkflowSelectAction.tsx
|
||||
msgid "Flow"
|
||||
msgstr "Flux"
|
||||
@@ -6586,6 +6619,11 @@ msgstr "Amaga el grup {groupValue}"
|
||||
msgid "Hide hidden groups"
|
||||
msgstr "Amaga grups ocults"
|
||||
|
||||
#. js-lingui-id: i0qMbr
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Home"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Xkd22/
|
||||
#: src/modules/page-layout/utils/getWidgetTitle.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/GraphTypeInformation.ts
|
||||
@@ -6897,6 +6935,7 @@ msgstr "Informació"
|
||||
#: src/modules/settings/logic-functions/components/tabs/SettingsLogicFunctionTestTab.tsx
|
||||
#: src/modules/command-menu/pages/workflow/step/view-run/components/CommandMenuWorkflowRunViewStepContent.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Input"
|
||||
msgstr "Entrada"
|
||||
|
||||
@@ -7954,6 +7993,11 @@ msgstr "Rang màxim"
|
||||
msgid "Maximum email addresses"
|
||||
msgstr "Quantitat màxima de correus electrònics"
|
||||
|
||||
#. js-lingui-id: 9UHNQc
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Maximum execution time in seconds (1-900)"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: PAhTVY
|
||||
#: src/modules/settings/data-model/fields/forms/components/SettingsDataModelFieldMaxValuesForm.tsx
|
||||
msgid "Maximum files"
|
||||
@@ -8656,6 +8700,11 @@ msgstr "No hi ha camps disponibles per seleccionar"
|
||||
msgid "No body"
|
||||
msgstr "Sense cos"
|
||||
|
||||
#. js-lingui-id: c3+z7H
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCallingCodeSelectInput.tsx
|
||||
msgid "No calling code"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: OTe3RI
|
||||
#: src/pages/settings/domains/SettingsDomain.tsx
|
||||
msgid "No change detected"
|
||||
@@ -8686,7 +8735,6 @@ msgstr "No s'ha proporcionat cap context per a aquesta sol·licitud"
|
||||
#: src/modules/settings/data-model/fields/forms/phones/components/SettingsDataModelFieldPhonesForm.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/address/components/SettingsDataModelFieldAddressForm.tsx
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCountrySelectInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCountryCodeSelectInput.tsx
|
||||
msgid "No country"
|
||||
msgstr "Sense país"
|
||||
|
||||
@@ -9124,7 +9172,13 @@ msgstr "No compartit per {notSharedByFullName}"
|
||||
msgid "Not synced"
|
||||
msgstr "No sincronitzat"
|
||||
|
||||
#. js-lingui-id: KiJn9B
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Note"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 1DBGsz
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/action-menu/actions/record-actions/constants/DefaultRecordActionsConfig.tsx
|
||||
msgid "Notes"
|
||||
msgstr "Notes"
|
||||
@@ -9502,6 +9556,11 @@ msgstr ""
|
||||
msgid "Organization"
|
||||
msgstr "Organització"
|
||||
|
||||
#. js-lingui-id: zi/p7n
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Organization plan"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: nV6twc
|
||||
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuEditOrganizeActions.tsx
|
||||
msgid "Organize"
|
||||
@@ -9560,6 +9619,7 @@ msgstr "Interrupció"
|
||||
#: src/modules/logic-functions/components/LogicFunctionExecutionResult.tsx
|
||||
#: src/modules/command-menu/pages/workflow/step/view-run/components/CommandMenuWorkflowRunViewStepContent.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/TerminalOutput.tsx
|
||||
#: src/modules/ai/components/CodeExecutionDisplay.tsx
|
||||
msgid "Output"
|
||||
@@ -10061,6 +10121,11 @@ msgstr "Política de Privacitat"
|
||||
msgid "Pro"
|
||||
msgstr "Pro"
|
||||
|
||||
#. js-lingui-id: r5je1s
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Pro plan"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: k1ifdL
|
||||
#: src/modules/workflow/components/WorkflowStepExecutionResult.tsx
|
||||
#: src/modules/spreadsheet-import/steps/components/UploadStep/components/DropZone.tsx
|
||||
@@ -11920,6 +11985,14 @@ msgstr "Espais i coma - {spacesAndCommaExample}"
|
||||
msgid "Spanish"
|
||||
msgstr "Espanyol"
|
||||
|
||||
#. js-lingui-id: gsifzp
|
||||
#: src/modules/command-menu/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
|
||||
#: src/modules/command-menu/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
msgid "Split multiple values"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: vnS6Rf
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
msgid "SSO"
|
||||
@@ -12398,6 +12471,7 @@ msgid "Task Title"
|
||||
msgstr "Títol de la tasca"
|
||||
|
||||
#. js-lingui-id: GtycJ/
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/action-menu/actions/record-actions/constants/DefaultRecordActionsConfig.tsx
|
||||
msgid "Tasks"
|
||||
msgstr "Tasques"
|
||||
@@ -12597,6 +12671,11 @@ msgstr "No hi ha cap activitat associada amb aquest registre."
|
||||
msgid "There was an error while updating password."
|
||||
msgstr "S'ha produït un error en actualitzar la contrasenya."
|
||||
|
||||
#. js-lingui-id: AUV+TY
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Thinking"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Ed99mE
|
||||
#: src/modules/ai/components/ReasoningSummaryDisplay.tsx
|
||||
msgid "Thinking..."
|
||||
@@ -12784,6 +12863,11 @@ msgstr "Això suprimirà permanentment el teu mètode d'autenticació de dos fac
|
||||
msgid "This will revert the database value to environment/default value. The database override will be removed and the system will use the environment settings."
|
||||
msgstr "Això revertirà el valor de la base de dades al valor d'entorn/predeterminat. L'anul·lació de la base de dades serà eliminada i el sistema utilitzarà la configuració de l'entorn."
|
||||
|
||||
#. js-lingui-id: f8HOUp
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Thought"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 5g/sE8
|
||||
#: src/modules/action-menu/actions/record-actions/constants/WorkflowActionsConfig.tsx
|
||||
msgid "Tidy up"
|
||||
@@ -12815,10 +12899,16 @@ msgid "Time zone"
|
||||
msgstr "Zona horària"
|
||||
|
||||
#. js-lingui-id: cklVjM
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCalendarViewContent.tsx
|
||||
msgid "Timeline"
|
||||
msgstr "Cronologia"
|
||||
|
||||
#. js-lingui-id: xY9s5E
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Timeout"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8TMaZI
|
||||
#: src/pages/settings/security/event-logs/components/EventLogResultsTable.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogResultsTable.tsx
|
||||
@@ -13131,7 +13221,6 @@ msgid "Type"
|
||||
msgstr "Tipus"
|
||||
|
||||
#. js-lingui-id: SKD2e4
|
||||
#: src/modules/page-layout/widgets/standalone-rich-text/components/StandaloneRichTextEditorContent.tsx
|
||||
#: src/modules/activities/components/ActivityRichTextEditor.tsx
|
||||
msgid "Type '/' for commands, '@' for mentions"
|
||||
msgstr ""
|
||||
@@ -13735,8 +13824,6 @@ msgid "View Logs"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: ecVcAx
|
||||
#: src/modules/ai/components/AIChatTab.tsx
|
||||
#: src/modules/ai/components/AIChatTab.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
msgid "View Previous AI Chats"
|
||||
@@ -13992,6 +14079,11 @@ msgstr ""
|
||||
msgid "When any deal with amount over $100,000 has its stage or amount updated, send a notification to the sales channel with the deal name, company, new stage, amount and owner."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8jc/Xn
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "When enabled, AI agents and workflow automations can discover and call this function"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: C51ilI
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
|
||||
msgid "When the API key will expire."
|
||||
@@ -14124,6 +14216,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 ""
|
||||
|
||||
@@ -106,6 +106,7 @@ msgstr "(vybráno: {selectedIconKey})"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "[empty string]"
|
||||
@@ -310,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})"
|
||||
@@ -381,6 +387,11 @@ msgstr "{selectedCount} typů zdrojů"
|
||||
msgid "{serviceLabel} service is unreachable"
|
||||
msgstr "Služba {serviceLabel} je nedostupná"
|
||||
|
||||
#. js-lingui-id: 8vJ+2V
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "{stepCount, plural, one {# step} other {# steps}}"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Bzjg0/
|
||||
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepCalendar.tsx
|
||||
msgid "{stepNumber}. Calendar"
|
||||
@@ -1829,6 +1840,7 @@ msgstr "Vzestupně"
|
||||
#: src/modules/settings/roles/role-permissions/permission-flags/hooks/useActionRolePermissionFlagConfig.ts
|
||||
#: src/modules/navigation/components/MainNavigationDrawerFixedItems.tsx
|
||||
#: src/modules/command-menu/hooks/useOpenAskAIPageInCommandMenu.ts
|
||||
#: src/modules/command-menu/components/CommandMenuAskAIInfo.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
@@ -1967,7 +1979,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 ""
|
||||
@@ -2068,6 +2079,11 @@ msgstr "Dostupnost"
|
||||
msgid "Available"
|
||||
msgstr "Dostupný"
|
||||
|
||||
#. js-lingui-id: 06gA3L
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Available as tool"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: oD38t2
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Available tools"
|
||||
@@ -2239,9 +2255,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
|
||||
@@ -2312,6 +2328,7 @@ msgstr "caldav.example.com"
|
||||
#. js-lingui-id: AjVXBS
|
||||
#: src/modules/views/view-picker/constants/ViewPickerTypeSelectOptions.ts
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
|
||||
msgid "Calendar"
|
||||
msgstr "Kalendář"
|
||||
@@ -2364,6 +2381,11 @@ msgstr "Kalendářní zobrazení"
|
||||
msgid "Calendars"
|
||||
msgstr "Kalendáře"
|
||||
|
||||
#. js-lingui-id: qIlodj
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormPhoneFieldInput.tsx
|
||||
msgid "Calling Code"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: msssZq
|
||||
#: src/modules/settings/data-model/objects/forms/components/SettingsDataModelObjectAboutForm.tsx
|
||||
msgid "Can't change API names for standard objects"
|
||||
@@ -2500,11 +2522,6 @@ msgstr "Změnit typ uzlu"
|
||||
msgid "Change Password"
|
||||
msgstr "Změnit heslo"
|
||||
|
||||
#. js-lingui-id: wRtBJP
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Change Plan"
|
||||
msgstr "Změnit plán"
|
||||
|
||||
#. js-lingui-id: EYSFEW
|
||||
#: src/pages/settings/domains/SettingsDomain.tsx
|
||||
msgid "Change subdomain?"
|
||||
@@ -2602,7 +2619,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"
|
||||
|
||||
@@ -2705,6 +2722,11 @@ msgstr "Klientský tajný klíč"
|
||||
msgid "Client Settings"
|
||||
msgstr "Nastavení klienta"
|
||||
|
||||
#. js-lingui-id: mekEJ5
|
||||
#: src/hooks/useCopyToClipboard.tsx
|
||||
msgid "Clipboard requires a secure connection (HTTPS). Please access this app over HTTPS to enable copying."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yz7wBu
|
||||
#: src/modules/ui/feedback/snack-bar-manager/components/SnackBar.tsx
|
||||
msgid "Close"
|
||||
@@ -2747,6 +2769,7 @@ msgstr "Naprogramujte svou funkci"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Collapse"
|
||||
@@ -3301,11 +3324,6 @@ msgstr "Počet unikátních hodnot"
|
||||
msgid "Country"
|
||||
msgstr "Země"
|
||||
|
||||
#. js-lingui-id: j2OqfX
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormPhoneFieldInput.tsx
|
||||
msgid "Country Code"
|
||||
msgstr "Kód země"
|
||||
|
||||
#. js-lingui-id: gJdfqX
|
||||
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
|
||||
msgid "create"
|
||||
@@ -4826,6 +4844,7 @@ msgstr "E-mailové domény"
|
||||
#: src/pages/settings/accounts/SettingsAccountsEmails.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Emails"
|
||||
msgstr "E-maily"
|
||||
|
||||
@@ -4877,6 +4896,7 @@ msgstr "Prázdné"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Empty Array"
|
||||
@@ -4897,6 +4917,7 @@ msgstr "Prázdná schránka"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Empty Object"
|
||||
@@ -5024,10 +5045,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
|
||||
@@ -5092,6 +5113,11 @@ msgstr "Zadejte testovací hodnotu"
|
||||
msgid "Enter text"
|
||||
msgstr "Zadejte text"
|
||||
|
||||
#. js-lingui-id: +rrO69
|
||||
#: src/modules/page-layout/widgets/standalone-rich-text/components/StandaloneRichTextEditorContent.tsx
|
||||
msgid "Enter text or type '/' for commands"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yZMXC2
|
||||
#: src/modules/advanced-text-editor/hooks/useAdvancedTextEditor.ts
|
||||
msgid "Enter text or Type '/' for commands"
|
||||
@@ -5488,6 +5514,7 @@ msgstr "Opustit nastavení"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Expand"
|
||||
@@ -6018,6 +6045,11 @@ msgstr ""
|
||||
msgid "File URL is not defined"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: sER+bs
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Files"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: o7J4JM
|
||||
#: src/pages/settings/data-model/SettingsObjectFieldTable.tsx
|
||||
#: src/pages/settings/ai/components/SettingsSkillsTable.tsx
|
||||
@@ -6121,6 +6153,7 @@ msgstr "Křestní jméno nesmí být prázdné"
|
||||
|
||||
#. js-lingui-id: ylQd2j
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/utils/getActionHeaderTypeOrThrow.ts
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/command-menu/pages/workflow/action/components/CommandMenuWorkflowSelectAction.tsx
|
||||
msgid "Flow"
|
||||
msgstr "Tok"
|
||||
@@ -6586,6 +6619,11 @@ msgstr "Skrýt skupinu {groupValue}"
|
||||
msgid "Hide hidden groups"
|
||||
msgstr "Skrýt skryté skupiny"
|
||||
|
||||
#. js-lingui-id: i0qMbr
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Home"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Xkd22/
|
||||
#: src/modules/page-layout/utils/getWidgetTitle.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/GraphTypeInformation.ts
|
||||
@@ -6897,6 +6935,7 @@ msgstr "Informace"
|
||||
#: src/modules/settings/logic-functions/components/tabs/SettingsLogicFunctionTestTab.tsx
|
||||
#: src/modules/command-menu/pages/workflow/step/view-run/components/CommandMenuWorkflowRunViewStepContent.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Input"
|
||||
msgstr "Vstup"
|
||||
|
||||
@@ -7954,6 +7993,11 @@ msgstr "Maximální rozsah"
|
||||
msgid "Maximum email addresses"
|
||||
msgstr "Maximální počet emailových adres"
|
||||
|
||||
#. js-lingui-id: 9UHNQc
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Maximum execution time in seconds (1-900)"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: PAhTVY
|
||||
#: src/modules/settings/data-model/fields/forms/components/SettingsDataModelFieldMaxValuesForm.tsx
|
||||
msgid "Maximum files"
|
||||
@@ -8656,6 +8700,11 @@ msgstr "Žádná dostupná pole k výběru"
|
||||
msgid "No body"
|
||||
msgstr "Žádné tělo"
|
||||
|
||||
#. js-lingui-id: c3+z7H
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCallingCodeSelectInput.tsx
|
||||
msgid "No calling code"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: OTe3RI
|
||||
#: src/pages/settings/domains/SettingsDomain.tsx
|
||||
msgid "No change detected"
|
||||
@@ -8686,7 +8735,6 @@ msgstr "Pro tento požadavek nebyl poskytnut žádný kontext"
|
||||
#: src/modules/settings/data-model/fields/forms/phones/components/SettingsDataModelFieldPhonesForm.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/address/components/SettingsDataModelFieldAddressForm.tsx
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCountrySelectInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCountryCodeSelectInput.tsx
|
||||
msgid "No country"
|
||||
msgstr "Žádná země"
|
||||
|
||||
@@ -9124,7 +9172,13 @@ msgstr "Nesdíleno uživatelem {notSharedByFullName}"
|
||||
msgid "Not synced"
|
||||
msgstr "Nesynchronizováno"
|
||||
|
||||
#. js-lingui-id: KiJn9B
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Note"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 1DBGsz
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/action-menu/actions/record-actions/constants/DefaultRecordActionsConfig.tsx
|
||||
msgid "Notes"
|
||||
msgstr "Poznámky"
|
||||
@@ -9502,6 +9556,11 @@ msgstr ""
|
||||
msgid "Organization"
|
||||
msgstr "Organizace"
|
||||
|
||||
#. js-lingui-id: zi/p7n
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Organization plan"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: nV6twc
|
||||
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuEditOrganizeActions.tsx
|
||||
msgid "Organize"
|
||||
@@ -9560,6 +9619,7 @@ msgstr "Výpadek"
|
||||
#: src/modules/logic-functions/components/LogicFunctionExecutionResult.tsx
|
||||
#: src/modules/command-menu/pages/workflow/step/view-run/components/CommandMenuWorkflowRunViewStepContent.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/TerminalOutput.tsx
|
||||
#: src/modules/ai/components/CodeExecutionDisplay.tsx
|
||||
msgid "Output"
|
||||
@@ -10061,6 +10121,11 @@ msgstr "Zásady ochrany osobních údajů"
|
||||
msgid "Pro"
|
||||
msgstr "Pro"
|
||||
|
||||
#. js-lingui-id: r5je1s
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Pro plan"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: k1ifdL
|
||||
#: src/modules/workflow/components/WorkflowStepExecutionResult.tsx
|
||||
#: src/modules/spreadsheet-import/steps/components/UploadStep/components/DropZone.tsx
|
||||
@@ -11920,6 +11985,14 @@ msgstr "Mezery a čárka - {spacesAndCommaExample}"
|
||||
msgid "Spanish"
|
||||
msgstr "Španělština"
|
||||
|
||||
#. js-lingui-id: gsifzp
|
||||
#: src/modules/command-menu/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
|
||||
#: src/modules/command-menu/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
msgid "Split multiple values"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: vnS6Rf
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
msgid "SSO"
|
||||
@@ -12398,6 +12471,7 @@ msgid "Task Title"
|
||||
msgstr "Název úkolu"
|
||||
|
||||
#. js-lingui-id: GtycJ/
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/action-menu/actions/record-actions/constants/DefaultRecordActionsConfig.tsx
|
||||
msgid "Tasks"
|
||||
msgstr "Úkoly"
|
||||
@@ -12597,6 +12671,11 @@ msgstr "S tímto záznamem není spojena žádná aktivita."
|
||||
msgid "There was an error while updating password."
|
||||
msgstr "Během aktualizace hesla došlo k chybě."
|
||||
|
||||
#. js-lingui-id: AUV+TY
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Thinking"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Ed99mE
|
||||
#: src/modules/ai/components/ReasoningSummaryDisplay.tsx
|
||||
msgid "Thinking..."
|
||||
@@ -12784,6 +12863,11 @@ msgstr "Tímto bude vaše metoda dvoufaktorového ověřování trvale odstraně
|
||||
msgid "This will revert the database value to environment/default value. The database override will be removed and the system will use the environment settings."
|
||||
msgstr "Toto obnoví hodnotu databáze na hodnotu prostředí/výchozí hodnotu. Přepis databáze bude odstraněn a systém použije nastavení prostředí."
|
||||
|
||||
#. js-lingui-id: f8HOUp
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Thought"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 5g/sE8
|
||||
#: src/modules/action-menu/actions/record-actions/constants/WorkflowActionsConfig.tsx
|
||||
msgid "Tidy up"
|
||||
@@ -12815,10 +12899,16 @@ msgid "Time zone"
|
||||
msgstr "Časové pásmo"
|
||||
|
||||
#. js-lingui-id: cklVjM
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCalendarViewContent.tsx
|
||||
msgid "Timeline"
|
||||
msgstr "Časová osa"
|
||||
|
||||
#. js-lingui-id: xY9s5E
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Timeout"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8TMaZI
|
||||
#: src/pages/settings/security/event-logs/components/EventLogResultsTable.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogResultsTable.tsx
|
||||
@@ -13131,7 +13221,6 @@ msgid "Type"
|
||||
msgstr "Typ"
|
||||
|
||||
#. js-lingui-id: SKD2e4
|
||||
#: src/modules/page-layout/widgets/standalone-rich-text/components/StandaloneRichTextEditorContent.tsx
|
||||
#: src/modules/activities/components/ActivityRichTextEditor.tsx
|
||||
msgid "Type '/' for commands, '@' for mentions"
|
||||
msgstr ""
|
||||
@@ -13735,8 +13824,6 @@ msgid "View Logs"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: ecVcAx
|
||||
#: src/modules/ai/components/AIChatTab.tsx
|
||||
#: src/modules/ai/components/AIChatTab.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
msgid "View Previous AI Chats"
|
||||
@@ -13992,6 +14079,11 @@ msgstr ""
|
||||
msgid "When any deal with amount over $100,000 has its stage or amount updated, send a notification to the sales channel with the deal name, company, new stage, amount and owner."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8jc/Xn
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "When enabled, AI agents and workflow automations can discover and call this function"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: C51ilI
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
|
||||
msgid "When the API key will expire."
|
||||
@@ -14124,6 +14216,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 ""
|
||||
|
||||
@@ -106,6 +106,7 @@ msgstr "(valgt: {selectedIconKey})"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "[empty string]"
|
||||
@@ -310,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})"
|
||||
@@ -381,6 +387,11 @@ msgstr "{selectedCount} kildetyper"
|
||||
msgid "{serviceLabel} service is unreachable"
|
||||
msgstr "Tjenesten {serviceLabel} kan ikke nås"
|
||||
|
||||
#. js-lingui-id: 8vJ+2V
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "{stepCount, plural, one {# step} other {# steps}}"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Bzjg0/
|
||||
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepCalendar.tsx
|
||||
msgid "{stepNumber}. Calendar"
|
||||
@@ -1829,6 +1840,7 @@ msgstr "Stigende"
|
||||
#: src/modules/settings/roles/role-permissions/permission-flags/hooks/useActionRolePermissionFlagConfig.ts
|
||||
#: src/modules/navigation/components/MainNavigationDrawerFixedItems.tsx
|
||||
#: src/modules/command-menu/hooks/useOpenAskAIPageInCommandMenu.ts
|
||||
#: src/modules/command-menu/components/CommandMenuAskAIInfo.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
@@ -1967,7 +1979,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 ""
|
||||
@@ -2068,6 +2079,11 @@ msgstr "Tilgængelighed"
|
||||
msgid "Available"
|
||||
msgstr "Tilgængelig"
|
||||
|
||||
#. js-lingui-id: 06gA3L
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Available as tool"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: oD38t2
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Available tools"
|
||||
@@ -2239,9 +2255,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
|
||||
@@ -2312,6 +2328,7 @@ msgstr "caldav.example.com"
|
||||
#. js-lingui-id: AjVXBS
|
||||
#: src/modules/views/view-picker/constants/ViewPickerTypeSelectOptions.ts
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
|
||||
msgid "Calendar"
|
||||
msgstr "Kalender"
|
||||
@@ -2364,6 +2381,11 @@ msgstr "Kalendervisning"
|
||||
msgid "Calendars"
|
||||
msgstr "Kalendere"
|
||||
|
||||
#. js-lingui-id: qIlodj
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormPhoneFieldInput.tsx
|
||||
msgid "Calling Code"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: msssZq
|
||||
#: src/modules/settings/data-model/objects/forms/components/SettingsDataModelObjectAboutForm.tsx
|
||||
msgid "Can't change API names for standard objects"
|
||||
@@ -2500,11 +2522,6 @@ msgstr "Skift nodetype"
|
||||
msgid "Change Password"
|
||||
msgstr "Skift kodeord"
|
||||
|
||||
#. js-lingui-id: wRtBJP
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Change Plan"
|
||||
msgstr "Ændre Pakke"
|
||||
|
||||
#. js-lingui-id: EYSFEW
|
||||
#: src/pages/settings/domains/SettingsDomain.tsx
|
||||
msgid "Change subdomain?"
|
||||
@@ -2602,7 +2619,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"
|
||||
|
||||
@@ -2705,6 +2722,11 @@ msgstr "Klienthemmelighed"
|
||||
msgid "Client Settings"
|
||||
msgstr "Klientindstillinger"
|
||||
|
||||
#. js-lingui-id: mekEJ5
|
||||
#: src/hooks/useCopyToClipboard.tsx
|
||||
msgid "Clipboard requires a secure connection (HTTPS). Please access this app over HTTPS to enable copying."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yz7wBu
|
||||
#: src/modules/ui/feedback/snack-bar-manager/components/SnackBar.tsx
|
||||
msgid "Close"
|
||||
@@ -2747,6 +2769,7 @@ msgstr "Kodedin funktion"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Collapse"
|
||||
@@ -3301,11 +3324,6 @@ msgstr "Tæl unikke værdier"
|
||||
msgid "Country"
|
||||
msgstr "Land"
|
||||
|
||||
#. js-lingui-id: j2OqfX
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormPhoneFieldInput.tsx
|
||||
msgid "Country Code"
|
||||
msgstr "Landekode"
|
||||
|
||||
#. js-lingui-id: gJdfqX
|
||||
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
|
||||
msgid "create"
|
||||
@@ -4826,6 +4844,7 @@ msgstr "E-mail-domæner"
|
||||
#: src/pages/settings/accounts/SettingsAccountsEmails.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Emails"
|
||||
msgstr "E-mails"
|
||||
|
||||
@@ -4877,6 +4896,7 @@ msgstr "Tom"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Empty Array"
|
||||
@@ -4897,6 +4917,7 @@ msgstr "Tom Indbakke"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Empty Object"
|
||||
@@ -5024,10 +5045,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
|
||||
@@ -5092,6 +5113,11 @@ msgstr "Indtast testværdi"
|
||||
msgid "Enter text"
|
||||
msgstr "Indtast tekst"
|
||||
|
||||
#. js-lingui-id: +rrO69
|
||||
#: src/modules/page-layout/widgets/standalone-rich-text/components/StandaloneRichTextEditorContent.tsx
|
||||
msgid "Enter text or type '/' for commands"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yZMXC2
|
||||
#: src/modules/advanced-text-editor/hooks/useAdvancedTextEditor.ts
|
||||
msgid "Enter text or Type '/' for commands"
|
||||
@@ -5488,6 +5514,7 @@ msgstr "Forlad indstillinger"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Expand"
|
||||
@@ -6018,6 +6045,11 @@ msgstr ""
|
||||
msgid "File URL is not defined"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: sER+bs
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Files"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: o7J4JM
|
||||
#: src/pages/settings/data-model/SettingsObjectFieldTable.tsx
|
||||
#: src/pages/settings/ai/components/SettingsSkillsTable.tsx
|
||||
@@ -6121,6 +6153,7 @@ msgstr "Fornavn må ikke være tomt"
|
||||
|
||||
#. js-lingui-id: ylQd2j
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/utils/getActionHeaderTypeOrThrow.ts
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/command-menu/pages/workflow/action/components/CommandMenuWorkflowSelectAction.tsx
|
||||
msgid "Flow"
|
||||
msgstr "Strøm"
|
||||
@@ -6586,6 +6619,11 @@ msgstr "Skjul gruppe {groupValue}"
|
||||
msgid "Hide hidden groups"
|
||||
msgstr "Skjul skjulte grupper"
|
||||
|
||||
#. js-lingui-id: i0qMbr
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Home"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Xkd22/
|
||||
#: src/modules/page-layout/utils/getWidgetTitle.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/GraphTypeInformation.ts
|
||||
@@ -6897,6 +6935,7 @@ msgstr "Info"
|
||||
#: src/modules/settings/logic-functions/components/tabs/SettingsLogicFunctionTestTab.tsx
|
||||
#: src/modules/command-menu/pages/workflow/step/view-run/components/CommandMenuWorkflowRunViewStepContent.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Input"
|
||||
msgstr "Input"
|
||||
|
||||
@@ -7954,6 +7993,11 @@ msgstr "Maksimumsgrænse"
|
||||
msgid "Maximum email addresses"
|
||||
msgstr "Maksimalt antal e-mailadresser"
|
||||
|
||||
#. js-lingui-id: 9UHNQc
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Maximum execution time in seconds (1-900)"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: PAhTVY
|
||||
#: src/modules/settings/data-model/fields/forms/components/SettingsDataModelFieldMaxValuesForm.tsx
|
||||
msgid "Maximum files"
|
||||
@@ -8656,6 +8700,11 @@ msgstr "Ingen tilgængelige felter for at vælge"
|
||||
msgid "No body"
|
||||
msgstr "Ingen body"
|
||||
|
||||
#. js-lingui-id: c3+z7H
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCallingCodeSelectInput.tsx
|
||||
msgid "No calling code"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: OTe3RI
|
||||
#: src/pages/settings/domains/SettingsDomain.tsx
|
||||
msgid "No change detected"
|
||||
@@ -8686,7 +8735,6 @@ msgstr "Der blev ikke angivet nogen kontekst for denne anmodning"
|
||||
#: src/modules/settings/data-model/fields/forms/phones/components/SettingsDataModelFieldPhonesForm.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/address/components/SettingsDataModelFieldAddressForm.tsx
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCountrySelectInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCountryCodeSelectInput.tsx
|
||||
msgid "No country"
|
||||
msgstr "Intet land"
|
||||
|
||||
@@ -9124,7 +9172,13 @@ msgstr "Ikke delt af {notSharedByFullName}"
|
||||
msgid "Not synced"
|
||||
msgstr "Ikke synkroniseret"
|
||||
|
||||
#. js-lingui-id: KiJn9B
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Note"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 1DBGsz
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/action-menu/actions/record-actions/constants/DefaultRecordActionsConfig.tsx
|
||||
msgid "Notes"
|
||||
msgstr "Noter"
|
||||
@@ -9502,6 +9556,11 @@ msgstr ""
|
||||
msgid "Organization"
|
||||
msgstr "Organisation"
|
||||
|
||||
#. js-lingui-id: zi/p7n
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Organization plan"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: nV6twc
|
||||
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuEditOrganizeActions.tsx
|
||||
msgid "Organize"
|
||||
@@ -9560,6 +9619,7 @@ msgstr "Nedetid"
|
||||
#: src/modules/logic-functions/components/LogicFunctionExecutionResult.tsx
|
||||
#: src/modules/command-menu/pages/workflow/step/view-run/components/CommandMenuWorkflowRunViewStepContent.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/TerminalOutput.tsx
|
||||
#: src/modules/ai/components/CodeExecutionDisplay.tsx
|
||||
msgid "Output"
|
||||
@@ -10061,6 +10121,11 @@ msgstr "Privatlivspolitik"
|
||||
msgid "Pro"
|
||||
msgstr "Pro"
|
||||
|
||||
#. js-lingui-id: r5je1s
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Pro plan"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: k1ifdL
|
||||
#: src/modules/workflow/components/WorkflowStepExecutionResult.tsx
|
||||
#: src/modules/spreadsheet-import/steps/components/UploadStep/components/DropZone.tsx
|
||||
@@ -11920,6 +11985,14 @@ msgstr "Mellemrum og komma - {spacesAndCommaExample}"
|
||||
msgid "Spanish"
|
||||
msgstr "Spansk"
|
||||
|
||||
#. js-lingui-id: gsifzp
|
||||
#: src/modules/command-menu/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
|
||||
#: src/modules/command-menu/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
msgid "Split multiple values"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: vnS6Rf
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
msgid "SSO"
|
||||
@@ -12398,6 +12471,7 @@ msgid "Task Title"
|
||||
msgstr "Opgavetitel"
|
||||
|
||||
#. js-lingui-id: GtycJ/
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/action-menu/actions/record-actions/constants/DefaultRecordActionsConfig.tsx
|
||||
msgid "Tasks"
|
||||
msgstr "Opgaver"
|
||||
@@ -12597,6 +12671,11 @@ msgstr "Der er ingen aktivitet tilknyttet denne post."
|
||||
msgid "There was an error while updating password."
|
||||
msgstr "Der opstod en fejl under opdatering af adgangskoden."
|
||||
|
||||
#. js-lingui-id: AUV+TY
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Thinking"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Ed99mE
|
||||
#: src/modules/ai/components/ReasoningSummaryDisplay.tsx
|
||||
msgid "Thinking..."
|
||||
@@ -12786,6 +12865,11 @@ msgstr "Dette vil permanent slette din tofaktorgodkendelsesmetode.<0/>Da 2FA er
|
||||
msgid "This will revert the database value to environment/default value. The database override will be removed and the system will use the environment settings."
|
||||
msgstr "Dette vil gendanne databaseværdien til miljø/standardværdi. Databasetilsidesættelsen vil blive fjernet, og systemet vil bruge miljøindstillingerne."
|
||||
|
||||
#. js-lingui-id: f8HOUp
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Thought"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 5g/sE8
|
||||
#: src/modules/action-menu/actions/record-actions/constants/WorkflowActionsConfig.tsx
|
||||
msgid "Tidy up"
|
||||
@@ -12817,10 +12901,16 @@ msgid "Time zone"
|
||||
msgstr "Tidszone"
|
||||
|
||||
#. js-lingui-id: cklVjM
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCalendarViewContent.tsx
|
||||
msgid "Timeline"
|
||||
msgstr "Tidslinje"
|
||||
|
||||
#. js-lingui-id: xY9s5E
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Timeout"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8TMaZI
|
||||
#: src/pages/settings/security/event-logs/components/EventLogResultsTable.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogResultsTable.tsx
|
||||
@@ -13133,7 +13223,6 @@ msgid "Type"
|
||||
msgstr "Type"
|
||||
|
||||
#. js-lingui-id: SKD2e4
|
||||
#: src/modules/page-layout/widgets/standalone-rich-text/components/StandaloneRichTextEditorContent.tsx
|
||||
#: src/modules/activities/components/ActivityRichTextEditor.tsx
|
||||
msgid "Type '/' for commands, '@' for mentions"
|
||||
msgstr ""
|
||||
@@ -13737,8 +13826,6 @@ msgid "View Logs"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: ecVcAx
|
||||
#: src/modules/ai/components/AIChatTab.tsx
|
||||
#: src/modules/ai/components/AIChatTab.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
msgid "View Previous AI Chats"
|
||||
@@ -13994,6 +14081,11 @@ msgstr ""
|
||||
msgid "When any deal with amount over $100,000 has its stage or amount updated, send a notification to the sales channel with the deal name, company, new stage, amount and owner."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8jc/Xn
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "When enabled, AI agents and workflow automations can discover and call this function"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: C51ilI
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
|
||||
msgid "When the API key will expire."
|
||||
@@ -14126,6 +14218,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 ""
|
||||
|
||||
@@ -106,6 +106,7 @@ msgstr "(ausgewählt: {selectedIconKey})"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "[empty string]"
|
||||
@@ -310,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})"
|
||||
@@ -381,6 +387,11 @@ msgstr "{selectedCount} Quelltypen"
|
||||
msgid "{serviceLabel} service is unreachable"
|
||||
msgstr "{serviceLabel}-Dienst ist nicht erreichbar"
|
||||
|
||||
#. js-lingui-id: 8vJ+2V
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "{stepCount, plural, one {# step} other {# steps}}"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Bzjg0/
|
||||
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepCalendar.tsx
|
||||
msgid "{stepNumber}. Calendar"
|
||||
@@ -1829,6 +1840,7 @@ msgstr "Aufsteigend"
|
||||
#: src/modules/settings/roles/role-permissions/permission-flags/hooks/useActionRolePermissionFlagConfig.ts
|
||||
#: src/modules/navigation/components/MainNavigationDrawerFixedItems.tsx
|
||||
#: src/modules/command-menu/hooks/useOpenAskAIPageInCommandMenu.ts
|
||||
#: src/modules/command-menu/components/CommandMenuAskAIInfo.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
@@ -1967,7 +1979,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 ""
|
||||
@@ -2068,6 +2079,11 @@ msgstr "Verfügbarkeit"
|
||||
msgid "Available"
|
||||
msgstr "Verfügbar"
|
||||
|
||||
#. js-lingui-id: 06gA3L
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Available as tool"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: oD38t2
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Available tools"
|
||||
@@ -2239,9 +2255,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
|
||||
@@ -2312,6 +2328,7 @@ msgstr "caldav.example.com"
|
||||
#. js-lingui-id: AjVXBS
|
||||
#: src/modules/views/view-picker/constants/ViewPickerTypeSelectOptions.ts
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
|
||||
msgid "Calendar"
|
||||
msgstr "Kalender"
|
||||
@@ -2364,6 +2381,11 @@ msgstr "Kalenderansicht"
|
||||
msgid "Calendars"
|
||||
msgstr "Kalender"
|
||||
|
||||
#. js-lingui-id: qIlodj
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormPhoneFieldInput.tsx
|
||||
msgid "Calling Code"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: msssZq
|
||||
#: src/modules/settings/data-model/objects/forms/components/SettingsDataModelObjectAboutForm.tsx
|
||||
msgid "Can't change API names for standard objects"
|
||||
@@ -2500,11 +2522,6 @@ msgstr "Knotentyp ändern"
|
||||
msgid "Change Password"
|
||||
msgstr "Passwort ändern"
|
||||
|
||||
#. js-lingui-id: wRtBJP
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Change Plan"
|
||||
msgstr "Plan ändern"
|
||||
|
||||
#. js-lingui-id: EYSFEW
|
||||
#: src/pages/settings/domains/SettingsDomain.tsx
|
||||
msgid "Change subdomain?"
|
||||
@@ -2602,7 +2619,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"
|
||||
|
||||
@@ -2705,6 +2722,11 @@ msgstr "Client-Geheimnis"
|
||||
msgid "Client Settings"
|
||||
msgstr "Client-Einstellungen"
|
||||
|
||||
#. js-lingui-id: mekEJ5
|
||||
#: src/hooks/useCopyToClipboard.tsx
|
||||
msgid "Clipboard requires a secure connection (HTTPS). Please access this app over HTTPS to enable copying."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yz7wBu
|
||||
#: src/modules/ui/feedback/snack-bar-manager/components/SnackBar.tsx
|
||||
msgid "Close"
|
||||
@@ -2747,6 +2769,7 @@ msgstr "Funktion programmieren"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Collapse"
|
||||
@@ -3301,11 +3324,6 @@ msgstr "Eindeutige Werte zählen"
|
||||
msgid "Country"
|
||||
msgstr "Land"
|
||||
|
||||
#. js-lingui-id: j2OqfX
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormPhoneFieldInput.tsx
|
||||
msgid "Country Code"
|
||||
msgstr "Ländercode"
|
||||
|
||||
#. js-lingui-id: gJdfqX
|
||||
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
|
||||
msgid "create"
|
||||
@@ -4826,6 +4844,7 @@ msgstr "E-Mail-Domänen"
|
||||
#: src/pages/settings/accounts/SettingsAccountsEmails.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Emails"
|
||||
msgstr "E-Mails"
|
||||
|
||||
@@ -4877,6 +4896,7 @@ msgstr "Leer"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Empty Array"
|
||||
@@ -4897,6 +4917,7 @@ msgstr "Leerer Posteingang"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Empty Object"
|
||||
@@ -5024,10 +5045,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
|
||||
@@ -5092,6 +5113,11 @@ msgstr "Testwert eingeben"
|
||||
msgid "Enter text"
|
||||
msgstr "Text eingeben"
|
||||
|
||||
#. js-lingui-id: +rrO69
|
||||
#: src/modules/page-layout/widgets/standalone-rich-text/components/StandaloneRichTextEditorContent.tsx
|
||||
msgid "Enter text or type '/' for commands"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yZMXC2
|
||||
#: src/modules/advanced-text-editor/hooks/useAdvancedTextEditor.ts
|
||||
msgid "Enter text or Type '/' for commands"
|
||||
@@ -5488,6 +5514,7 @@ msgstr "Einstellungen verlassen"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Expand"
|
||||
@@ -6018,6 +6045,11 @@ msgstr ""
|
||||
msgid "File URL is not defined"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: sER+bs
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Files"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: o7J4JM
|
||||
#: src/pages/settings/data-model/SettingsObjectFieldTable.tsx
|
||||
#: src/pages/settings/ai/components/SettingsSkillsTable.tsx
|
||||
@@ -6121,6 +6153,7 @@ msgstr "Vorname darf nicht leer sein"
|
||||
|
||||
#. js-lingui-id: ylQd2j
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/utils/getActionHeaderTypeOrThrow.ts
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/command-menu/pages/workflow/action/components/CommandMenuWorkflowSelectAction.tsx
|
||||
msgid "Flow"
|
||||
msgstr "Fluss"
|
||||
@@ -6586,6 +6619,11 @@ msgstr "Gruppe {groupValue} ausblenden"
|
||||
msgid "Hide hidden groups"
|
||||
msgstr "Verborgene Gruppen ausblenden"
|
||||
|
||||
#. js-lingui-id: i0qMbr
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Home"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Xkd22/
|
||||
#: src/modules/page-layout/utils/getWidgetTitle.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/GraphTypeInformation.ts
|
||||
@@ -6897,6 +6935,7 @@ msgstr "Informationen"
|
||||
#: src/modules/settings/logic-functions/components/tabs/SettingsLogicFunctionTestTab.tsx
|
||||
#: src/modules/command-menu/pages/workflow/step/view-run/components/CommandMenuWorkflowRunViewStepContent.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Input"
|
||||
msgstr "Eingabe"
|
||||
|
||||
@@ -7954,6 +7993,11 @@ msgstr "Maximaler Bereich"
|
||||
msgid "Maximum email addresses"
|
||||
msgstr "Maximale E-Mail-Adressen"
|
||||
|
||||
#. js-lingui-id: 9UHNQc
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Maximum execution time in seconds (1-900)"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: PAhTVY
|
||||
#: src/modules/settings/data-model/fields/forms/components/SettingsDataModelFieldMaxValuesForm.tsx
|
||||
msgid "Maximum files"
|
||||
@@ -8656,6 +8700,11 @@ msgstr "Keine verfügbaren Felder zur Auswahl"
|
||||
msgid "No body"
|
||||
msgstr "Kein Body"
|
||||
|
||||
#. js-lingui-id: c3+z7H
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCallingCodeSelectInput.tsx
|
||||
msgid "No calling code"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: OTe3RI
|
||||
#: src/pages/settings/domains/SettingsDomain.tsx
|
||||
msgid "No change detected"
|
||||
@@ -8686,7 +8735,6 @@ msgstr "Für diese Anfrage wurde kein Kontext bereitgestellt"
|
||||
#: src/modules/settings/data-model/fields/forms/phones/components/SettingsDataModelFieldPhonesForm.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/address/components/SettingsDataModelFieldAddressForm.tsx
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCountrySelectInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCountryCodeSelectInput.tsx
|
||||
msgid "No country"
|
||||
msgstr "Kein Land"
|
||||
|
||||
@@ -9124,7 +9172,13 @@ msgstr "Nicht geteilt von {notSharedByFullName}"
|
||||
msgid "Not synced"
|
||||
msgstr "Nicht synchronisiert"
|
||||
|
||||
#. js-lingui-id: KiJn9B
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Note"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 1DBGsz
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/action-menu/actions/record-actions/constants/DefaultRecordActionsConfig.tsx
|
||||
msgid "Notes"
|
||||
msgstr "Notizen"
|
||||
@@ -9502,6 +9556,11 @@ msgstr ""
|
||||
msgid "Organization"
|
||||
msgstr "Organisation"
|
||||
|
||||
#. js-lingui-id: zi/p7n
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Organization plan"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: nV6twc
|
||||
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuEditOrganizeActions.tsx
|
||||
msgid "Organize"
|
||||
@@ -9560,6 +9619,7 @@ msgstr "Ausfall"
|
||||
#: src/modules/logic-functions/components/LogicFunctionExecutionResult.tsx
|
||||
#: src/modules/command-menu/pages/workflow/step/view-run/components/CommandMenuWorkflowRunViewStepContent.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/TerminalOutput.tsx
|
||||
#: src/modules/ai/components/CodeExecutionDisplay.tsx
|
||||
msgid "Output"
|
||||
@@ -10061,6 +10121,11 @@ msgstr "Datenschutzrichtlinie"
|
||||
msgid "Pro"
|
||||
msgstr "Pro"
|
||||
|
||||
#. js-lingui-id: r5je1s
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Pro plan"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: k1ifdL
|
||||
#: src/modules/workflow/components/WorkflowStepExecutionResult.tsx
|
||||
#: src/modules/spreadsheet-import/steps/components/UploadStep/components/DropZone.tsx
|
||||
@@ -11920,6 +11985,14 @@ msgstr "Leerzeichen und Komma - {spacesAndCommaExample}"
|
||||
msgid "Spanish"
|
||||
msgstr "Spanisch"
|
||||
|
||||
#. js-lingui-id: gsifzp
|
||||
#: src/modules/command-menu/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
|
||||
#: src/modules/command-menu/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
msgid "Split multiple values"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: vnS6Rf
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
msgid "SSO"
|
||||
@@ -12398,6 +12471,7 @@ msgid "Task Title"
|
||||
msgstr "Aufgabentitel"
|
||||
|
||||
#. js-lingui-id: GtycJ/
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/action-menu/actions/record-actions/constants/DefaultRecordActionsConfig.tsx
|
||||
msgid "Tasks"
|
||||
msgstr "Aufgaben"
|
||||
@@ -12597,6 +12671,11 @@ msgstr "Mit diesem Datensatz ist keine Aktivität verknüpft."
|
||||
msgid "There was an error while updating password."
|
||||
msgstr "Beim Aktualisieren des Passworts ist ein Fehler aufgetreten."
|
||||
|
||||
#. js-lingui-id: AUV+TY
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Thinking"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Ed99mE
|
||||
#: src/modules/ai/components/ReasoningSummaryDisplay.tsx
|
||||
msgid "Thinking..."
|
||||
@@ -12784,6 +12863,11 @@ msgstr "Dies wird Ihre Zwei-Faktor-Authentifizierung dauerhaft löschen.<0/>Da 2
|
||||
msgid "This will revert the database value to environment/default value. The database override will be removed and the system will use the environment settings."
|
||||
msgstr "Dies wird den Datenbankwert auf den Umwelt-/Standardwert zurücksetzen. Der Datenbanküberschreibung wird entfernt und das System wird die Umgebungsanstellungen verwenden."
|
||||
|
||||
#. js-lingui-id: f8HOUp
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Thought"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 5g/sE8
|
||||
#: src/modules/action-menu/actions/record-actions/constants/WorkflowActionsConfig.tsx
|
||||
msgid "Tidy up"
|
||||
@@ -12815,10 +12899,16 @@ msgid "Time zone"
|
||||
msgstr "Zeitzone"
|
||||
|
||||
#. js-lingui-id: cklVjM
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCalendarViewContent.tsx
|
||||
msgid "Timeline"
|
||||
msgstr "Zeitleiste"
|
||||
|
||||
#. js-lingui-id: xY9s5E
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Timeout"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8TMaZI
|
||||
#: src/pages/settings/security/event-logs/components/EventLogResultsTable.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogResultsTable.tsx
|
||||
@@ -13131,7 +13221,6 @@ msgid "Type"
|
||||
msgstr "Typ"
|
||||
|
||||
#. js-lingui-id: SKD2e4
|
||||
#: src/modules/page-layout/widgets/standalone-rich-text/components/StandaloneRichTextEditorContent.tsx
|
||||
#: src/modules/activities/components/ActivityRichTextEditor.tsx
|
||||
msgid "Type '/' for commands, '@' for mentions"
|
||||
msgstr ""
|
||||
@@ -13735,8 +13824,6 @@ msgid "View Logs"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: ecVcAx
|
||||
#: src/modules/ai/components/AIChatTab.tsx
|
||||
#: src/modules/ai/components/AIChatTab.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
msgid "View Previous AI Chats"
|
||||
@@ -13992,6 +14079,11 @@ msgstr ""
|
||||
msgid "When any deal with amount over $100,000 has its stage or amount updated, send a notification to the sales channel with the deal name, company, new stage, amount and owner."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8jc/Xn
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "When enabled, AI agents and workflow automations can discover and call this function"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: C51ilI
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
|
||||
msgid "When the API key will expire."
|
||||
@@ -14124,6 +14216,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 ""
|
||||
|
||||
@@ -106,6 +106,7 @@ msgstr "(επιλεγμένο: {selectedIconKey})"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "[empty string]"
|
||||
@@ -310,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})"
|
||||
@@ -381,6 +387,11 @@ msgstr "{selectedCount} τύποι πηγής"
|
||||
msgid "{serviceLabel} service is unreachable"
|
||||
msgstr "Η υπηρεσία {serviceLabel} είναι απρόσιτη"
|
||||
|
||||
#. js-lingui-id: 8vJ+2V
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "{stepCount, plural, one {# step} other {# steps}}"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Bzjg0/
|
||||
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepCalendar.tsx
|
||||
msgid "{stepNumber}. Calendar"
|
||||
@@ -1829,6 +1840,7 @@ msgstr "Αύξουσα"
|
||||
#: src/modules/settings/roles/role-permissions/permission-flags/hooks/useActionRolePermissionFlagConfig.ts
|
||||
#: src/modules/navigation/components/MainNavigationDrawerFixedItems.tsx
|
||||
#: src/modules/command-menu/hooks/useOpenAskAIPageInCommandMenu.ts
|
||||
#: src/modules/command-menu/components/CommandMenuAskAIInfo.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
@@ -1967,7 +1979,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 ""
|
||||
@@ -2068,6 +2079,11 @@ msgstr "Διαθεσιμότητα"
|
||||
msgid "Available"
|
||||
msgstr "Διαθέσιμο"
|
||||
|
||||
#. js-lingui-id: 06gA3L
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Available as tool"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: oD38t2
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Available tools"
|
||||
@@ -2239,9 +2255,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
|
||||
@@ -2312,6 +2328,7 @@ msgstr "caldav.example.com"
|
||||
#. js-lingui-id: AjVXBS
|
||||
#: src/modules/views/view-picker/constants/ViewPickerTypeSelectOptions.ts
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
|
||||
msgid "Calendar"
|
||||
msgstr "Ημερολόγιο"
|
||||
@@ -2364,6 +2381,11 @@ msgstr "Προβολή Ημερολογίου"
|
||||
msgid "Calendars"
|
||||
msgstr "Ημερολόγια"
|
||||
|
||||
#. js-lingui-id: qIlodj
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormPhoneFieldInput.tsx
|
||||
msgid "Calling Code"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: msssZq
|
||||
#: src/modules/settings/data-model/objects/forms/components/SettingsDataModelObjectAboutForm.tsx
|
||||
msgid "Can't change API names for standard objects"
|
||||
@@ -2500,11 +2522,6 @@ msgstr "Αλλαγή τύπου κόμβου"
|
||||
msgid "Change Password"
|
||||
msgstr "Αλλαγή Κωδικού"
|
||||
|
||||
#. js-lingui-id: wRtBJP
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Change Plan"
|
||||
msgstr "Αλλαγή σχεδίου"
|
||||
|
||||
#. js-lingui-id: EYSFEW
|
||||
#: src/pages/settings/domains/SettingsDomain.tsx
|
||||
msgid "Change subdomain?"
|
||||
@@ -2602,7 +2619,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 "Επιλέξτε τη μορφή που χρησιμοποιείται για την εμφάνιση της τιμής ημερομηνίας"
|
||||
|
||||
@@ -2705,6 +2722,11 @@ msgstr "Μυστικό Πελάτη"
|
||||
msgid "Client Settings"
|
||||
msgstr "Ρυθμίσεις Πελάτη"
|
||||
|
||||
#. js-lingui-id: mekEJ5
|
||||
#: src/hooks/useCopyToClipboard.tsx
|
||||
msgid "Clipboard requires a secure connection (HTTPS). Please access this app over HTTPS to enable copying."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yz7wBu
|
||||
#: src/modules/ui/feedback/snack-bar-manager/components/SnackBar.tsx
|
||||
msgid "Close"
|
||||
@@ -2747,6 +2769,7 @@ msgstr "Κωδικοποιήστε τη λειτουργία σας"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Collapse"
|
||||
@@ -3301,11 +3324,6 @@ msgstr "Καταμέτρηση μοναδικών τιμών"
|
||||
msgid "Country"
|
||||
msgstr "Χώρα"
|
||||
|
||||
#. js-lingui-id: j2OqfX
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormPhoneFieldInput.tsx
|
||||
msgid "Country Code"
|
||||
msgstr "Κωδικός χώρας"
|
||||
|
||||
#. js-lingui-id: gJdfqX
|
||||
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
|
||||
msgid "create"
|
||||
@@ -4826,6 +4844,7 @@ msgstr "Περιοχές Email"
|
||||
#: src/pages/settings/accounts/SettingsAccountsEmails.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Emails"
|
||||
msgstr "Ηλεκτρονικά ταχυδρομεία"
|
||||
|
||||
@@ -4877,6 +4896,7 @@ msgstr "Κενό"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Empty Array"
|
||||
@@ -4897,6 +4917,7 @@ msgstr "Άδειο Γραμματοκιβώτιο"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Empty Object"
|
||||
@@ -5024,10 +5045,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
|
||||
@@ -5092,6 +5113,11 @@ msgstr "Εισάγετε δοκιμαστική τιμή"
|
||||
msgid "Enter text"
|
||||
msgstr "Εισάγετε κείμενο"
|
||||
|
||||
#. js-lingui-id: +rrO69
|
||||
#: src/modules/page-layout/widgets/standalone-rich-text/components/StandaloneRichTextEditorContent.tsx
|
||||
msgid "Enter text or type '/' for commands"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yZMXC2
|
||||
#: src/modules/advanced-text-editor/hooks/useAdvancedTextEditor.ts
|
||||
msgid "Enter text or Type '/' for commands"
|
||||
@@ -5488,6 +5514,7 @@ msgstr "Έξοδος από Ρυθμίσεις"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Expand"
|
||||
@@ -6018,6 +6045,11 @@ msgstr ""
|
||||
msgid "File URL is not defined"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: sER+bs
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Files"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: o7J4JM
|
||||
#: src/pages/settings/data-model/SettingsObjectFieldTable.tsx
|
||||
#: src/pages/settings/ai/components/SettingsSkillsTable.tsx
|
||||
@@ -6121,6 +6153,7 @@ msgstr "Το μικρό όνομα δεν μπορεί να είναι κενό"
|
||||
|
||||
#. js-lingui-id: ylQd2j
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/utils/getActionHeaderTypeOrThrow.ts
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/command-menu/pages/workflow/action/components/CommandMenuWorkflowSelectAction.tsx
|
||||
msgid "Flow"
|
||||
msgstr "Ροή"
|
||||
@@ -6586,6 +6619,11 @@ msgstr "Απόκρυψη ομάδας {groupValue}"
|
||||
msgid "Hide hidden groups"
|
||||
msgstr "Απόκρυψη κρυφών ομάδων"
|
||||
|
||||
#. js-lingui-id: i0qMbr
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Home"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Xkd22/
|
||||
#: src/modules/page-layout/utils/getWidgetTitle.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/GraphTypeInformation.ts
|
||||
@@ -6897,6 +6935,7 @@ msgstr "Πληροφορίες"
|
||||
#: src/modules/settings/logic-functions/components/tabs/SettingsLogicFunctionTestTab.tsx
|
||||
#: src/modules/command-menu/pages/workflow/step/view-run/components/CommandMenuWorkflowRunViewStepContent.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Input"
|
||||
msgstr "Εισαγωγή"
|
||||
|
||||
@@ -7954,6 +7993,11 @@ msgstr "Μέγιστο εύρος"
|
||||
msgid "Maximum email addresses"
|
||||
msgstr "Μέγιστος αριθμός διευθύνσεων email"
|
||||
|
||||
#. js-lingui-id: 9UHNQc
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Maximum execution time in seconds (1-900)"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: PAhTVY
|
||||
#: src/modules/settings/data-model/fields/forms/components/SettingsDataModelFieldMaxValuesForm.tsx
|
||||
msgid "Maximum files"
|
||||
@@ -8656,6 +8700,11 @@ msgstr "Δεν υπάρχουν διαθέσιμα πεδία για επιλο
|
||||
msgid "No body"
|
||||
msgstr "Χωρίς σώμα"
|
||||
|
||||
#. js-lingui-id: c3+z7H
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCallingCodeSelectInput.tsx
|
||||
msgid "No calling code"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: OTe3RI
|
||||
#: src/pages/settings/domains/SettingsDomain.tsx
|
||||
msgid "No change detected"
|
||||
@@ -8686,7 +8735,6 @@ msgstr "Δεν παρέχεται πλαίσιο για αυτό το αίτημ
|
||||
#: src/modules/settings/data-model/fields/forms/phones/components/SettingsDataModelFieldPhonesForm.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/address/components/SettingsDataModelFieldAddressForm.tsx
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCountrySelectInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCountryCodeSelectInput.tsx
|
||||
msgid "No country"
|
||||
msgstr "Χωρίς χώρα"
|
||||
|
||||
@@ -9124,7 +9172,13 @@ msgstr "Δεν κοινοποιήθηκε από τον/την {notSharedByFullN
|
||||
msgid "Not synced"
|
||||
msgstr "Δεν συγχρονίζεται"
|
||||
|
||||
#. js-lingui-id: KiJn9B
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Note"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 1DBGsz
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/action-menu/actions/record-actions/constants/DefaultRecordActionsConfig.tsx
|
||||
msgid "Notes"
|
||||
msgstr "Σημειώματα"
|
||||
@@ -9502,6 +9556,11 @@ msgstr ""
|
||||
msgid "Organization"
|
||||
msgstr "Οργανωτικός"
|
||||
|
||||
#. js-lingui-id: zi/p7n
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Organization plan"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: nV6twc
|
||||
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuEditOrganizeActions.tsx
|
||||
msgid "Organize"
|
||||
@@ -9560,6 +9619,7 @@ msgstr "Διακοπή λειτουργίας"
|
||||
#: src/modules/logic-functions/components/LogicFunctionExecutionResult.tsx
|
||||
#: src/modules/command-menu/pages/workflow/step/view-run/components/CommandMenuWorkflowRunViewStepContent.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/TerminalOutput.tsx
|
||||
#: src/modules/ai/components/CodeExecutionDisplay.tsx
|
||||
msgid "Output"
|
||||
@@ -10061,6 +10121,11 @@ msgstr "Πολιτική Απορρήτου"
|
||||
msgid "Pro"
|
||||
msgstr "Pro"
|
||||
|
||||
#. js-lingui-id: r5je1s
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Pro plan"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: k1ifdL
|
||||
#: src/modules/workflow/components/WorkflowStepExecutionResult.tsx
|
||||
#: src/modules/spreadsheet-import/steps/components/UploadStep/components/DropZone.tsx
|
||||
@@ -11922,6 +11987,14 @@ msgstr "Κενά και κόμμα - {spacesAndCommaExample}"
|
||||
msgid "Spanish"
|
||||
msgstr "Ισπανικά"
|
||||
|
||||
#. js-lingui-id: gsifzp
|
||||
#: src/modules/command-menu/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
|
||||
#: src/modules/command-menu/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
msgid "Split multiple values"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: vnS6Rf
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
msgid "SSO"
|
||||
@@ -12400,6 +12473,7 @@ msgid "Task Title"
|
||||
msgstr "Τίτλος εργασίας"
|
||||
|
||||
#. js-lingui-id: GtycJ/
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/action-menu/actions/record-actions/constants/DefaultRecordActionsConfig.tsx
|
||||
msgid "Tasks"
|
||||
msgstr "Εργασίες"
|
||||
@@ -12599,6 +12673,11 @@ msgstr "Δεν υπάρχει δραστηριότητα που να σχετί
|
||||
msgid "There was an error while updating password."
|
||||
msgstr "Παρουσιάστηκε σφάλμα κατά την ενημέρωση του κωδικού πρόσβασης."
|
||||
|
||||
#. js-lingui-id: AUV+TY
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Thinking"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Ed99mE
|
||||
#: src/modules/ai/components/ReasoningSummaryDisplay.tsx
|
||||
msgid "Thinking..."
|
||||
@@ -12788,6 +12867,11 @@ msgstr "Αυτό θα διαγράψει μόνιμα τη μέθοδο ελέγ
|
||||
msgid "This will revert the database value to environment/default value. The database override will be removed and the system will use the environment settings."
|
||||
msgstr "Αυτό θα επαναφέρει την τιμή της βάσης δεδομένων στην προεπιλεγμένη/τιμή περιβάλλοντος. Η υπερισχύ του περιβάλλοντος βάσης δεδομένων θα αφαιρεθεί και το σύστημα θα χρησιμοποιήσει τις ρυθμίσεις περιβάλλοντος."
|
||||
|
||||
#. js-lingui-id: f8HOUp
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Thought"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 5g/sE8
|
||||
#: src/modules/action-menu/actions/record-actions/constants/WorkflowActionsConfig.tsx
|
||||
msgid "Tidy up"
|
||||
@@ -12819,10 +12903,16 @@ msgid "Time zone"
|
||||
msgstr "Ζώνη ώρας"
|
||||
|
||||
#. js-lingui-id: cklVjM
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCalendarViewContent.tsx
|
||||
msgid "Timeline"
|
||||
msgstr "Χρονολόγιο"
|
||||
|
||||
#. js-lingui-id: xY9s5E
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Timeout"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8TMaZI
|
||||
#: src/pages/settings/security/event-logs/components/EventLogResultsTable.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogResultsTable.tsx
|
||||
@@ -13135,7 +13225,6 @@ msgid "Type"
|
||||
msgstr "Τύπος"
|
||||
|
||||
#. js-lingui-id: SKD2e4
|
||||
#: src/modules/page-layout/widgets/standalone-rich-text/components/StandaloneRichTextEditorContent.tsx
|
||||
#: src/modules/activities/components/ActivityRichTextEditor.tsx
|
||||
msgid "Type '/' for commands, '@' for mentions"
|
||||
msgstr ""
|
||||
@@ -13739,8 +13828,6 @@ msgid "View Logs"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: ecVcAx
|
||||
#: src/modules/ai/components/AIChatTab.tsx
|
||||
#: src/modules/ai/components/AIChatTab.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
msgid "View Previous AI Chats"
|
||||
@@ -13996,6 +14083,11 @@ msgstr ""
|
||||
msgid "When any deal with amount over $100,000 has its stage or amount updated, send a notification to the sales channel with the deal name, company, new stage, amount and owner."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8jc/Xn
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "When enabled, AI agents and workflow automations can discover and call this function"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: C51ilI
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
|
||||
msgid "When the API key will expire."
|
||||
@@ -14128,6 +14220,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 ""
|
||||
|
||||
@@ -101,6 +101,7 @@ msgstr "(selected: {selectedIconKey})"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "[empty string]"
|
||||
@@ -305,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})"
|
||||
@@ -376,6 +382,11 @@ msgstr "{selectedCount} source types"
|
||||
msgid "{serviceLabel} service is unreachable"
|
||||
msgstr "{serviceLabel} service is unreachable"
|
||||
|
||||
#. js-lingui-id: 8vJ+2V
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "{stepCount, plural, one {# step} other {# steps}}"
|
||||
msgstr "{stepCount, plural, one {# step} other {# steps}}"
|
||||
|
||||
#. js-lingui-id: Bzjg0/
|
||||
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepCalendar.tsx
|
||||
msgid "{stepNumber}. Calendar"
|
||||
@@ -1824,6 +1835,7 @@ msgstr "Ascending"
|
||||
#: src/modules/settings/roles/role-permissions/permission-flags/hooks/useActionRolePermissionFlagConfig.ts
|
||||
#: src/modules/navigation/components/MainNavigationDrawerFixedItems.tsx
|
||||
#: src/modules/command-menu/hooks/useOpenAskAIPageInCommandMenu.ts
|
||||
#: src/modules/command-menu/components/CommandMenuAskAIInfo.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
@@ -1962,7 +1974,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"
|
||||
@@ -2063,6 +2074,11 @@ msgstr "Availability"
|
||||
msgid "Available"
|
||||
msgstr "Available"
|
||||
|
||||
#. js-lingui-id: 06gA3L
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Available as tool"
|
||||
msgstr "Available as tool"
|
||||
|
||||
#. js-lingui-id: oD38t2
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Available tools"
|
||||
@@ -2234,10 +2250,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
|
||||
@@ -2307,6 +2323,7 @@ msgstr "caldav.example.com"
|
||||
#. js-lingui-id: AjVXBS
|
||||
#: src/modules/views/view-picker/constants/ViewPickerTypeSelectOptions.ts
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
|
||||
msgid "Calendar"
|
||||
msgstr "Calendar"
|
||||
@@ -2359,6 +2376,11 @@ msgstr "Calendar View"
|
||||
msgid "Calendars"
|
||||
msgstr "Calendars"
|
||||
|
||||
#. js-lingui-id: qIlodj
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormPhoneFieldInput.tsx
|
||||
msgid "Calling Code"
|
||||
msgstr "Calling Code"
|
||||
|
||||
#. js-lingui-id: msssZq
|
||||
#: src/modules/settings/data-model/objects/forms/components/SettingsDataModelObjectAboutForm.tsx
|
||||
msgid "Can't change API names for standard objects"
|
||||
@@ -2495,11 +2517,6 @@ msgstr "Change node type"
|
||||
msgid "Change Password"
|
||||
msgstr "Change Password"
|
||||
|
||||
#. js-lingui-id: wRtBJP
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Change Plan"
|
||||
msgstr "Change Plan"
|
||||
|
||||
#. js-lingui-id: EYSFEW
|
||||
#: src/pages/settings/domains/SettingsDomain.tsx
|
||||
msgid "Change subdomain?"
|
||||
@@ -2597,7 +2614,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"
|
||||
|
||||
@@ -2700,6 +2717,11 @@ msgstr "Client Secret"
|
||||
msgid "Client Settings"
|
||||
msgstr "Client Settings"
|
||||
|
||||
#. js-lingui-id: mekEJ5
|
||||
#: src/hooks/useCopyToClipboard.tsx
|
||||
msgid "Clipboard requires a secure connection (HTTPS). Please access this app over HTTPS to enable copying."
|
||||
msgstr "Clipboard requires a secure connection (HTTPS). Please access this app over HTTPS to enable copying."
|
||||
|
||||
#. js-lingui-id: yz7wBu
|
||||
#: src/modules/ui/feedback/snack-bar-manager/components/SnackBar.tsx
|
||||
msgid "Close"
|
||||
@@ -2742,6 +2764,7 @@ msgstr "Code your function"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Collapse"
|
||||
@@ -3296,11 +3319,6 @@ msgstr "Count unique values"
|
||||
msgid "Country"
|
||||
msgstr "Country"
|
||||
|
||||
#. js-lingui-id: j2OqfX
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormPhoneFieldInput.tsx
|
||||
msgid "Country Code"
|
||||
msgstr "Country Code"
|
||||
|
||||
#. js-lingui-id: gJdfqX
|
||||
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
|
||||
msgid "create"
|
||||
@@ -4821,6 +4839,7 @@ msgstr "Emailing Domains"
|
||||
#: src/pages/settings/accounts/SettingsAccountsEmails.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Emails"
|
||||
msgstr "Emails"
|
||||
|
||||
@@ -4872,6 +4891,7 @@ msgstr "Empty"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Empty Array"
|
||||
@@ -4892,6 +4912,7 @@ msgstr "Empty Inbox"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Empty Object"
|
||||
@@ -5019,10 +5040,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
|
||||
@@ -5087,6 +5108,11 @@ msgstr "Enter test value"
|
||||
msgid "Enter text"
|
||||
msgstr "Enter text"
|
||||
|
||||
#. js-lingui-id: +rrO69
|
||||
#: src/modules/page-layout/widgets/standalone-rich-text/components/StandaloneRichTextEditorContent.tsx
|
||||
msgid "Enter text or type '/' for commands"
|
||||
msgstr "Enter text or type '/' for commands"
|
||||
|
||||
#. js-lingui-id: yZMXC2
|
||||
#: src/modules/advanced-text-editor/hooks/useAdvancedTextEditor.ts
|
||||
msgid "Enter text or Type '/' for commands"
|
||||
@@ -5483,6 +5509,7 @@ msgstr "Exit Settings"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Expand"
|
||||
@@ -6013,6 +6040,11 @@ msgstr "File upload failed"
|
||||
msgid "File URL is not defined"
|
||||
msgstr "File URL is not defined"
|
||||
|
||||
#. js-lingui-id: sER+bs
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Files"
|
||||
msgstr "Files"
|
||||
|
||||
#. js-lingui-id: o7J4JM
|
||||
#: src/pages/settings/data-model/SettingsObjectFieldTable.tsx
|
||||
#: src/pages/settings/ai/components/SettingsSkillsTable.tsx
|
||||
@@ -6116,6 +6148,7 @@ msgstr "First name can not be empty"
|
||||
|
||||
#. js-lingui-id: ylQd2j
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/utils/getActionHeaderTypeOrThrow.ts
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/command-menu/pages/workflow/action/components/CommandMenuWorkflowSelectAction.tsx
|
||||
msgid "Flow"
|
||||
msgstr "Flow"
|
||||
@@ -6581,6 +6614,11 @@ msgstr "Hide group {groupValue}"
|
||||
msgid "Hide hidden groups"
|
||||
msgstr "Hide hidden groups"
|
||||
|
||||
#. js-lingui-id: i0qMbr
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Home"
|
||||
msgstr "Home"
|
||||
|
||||
#. js-lingui-id: Xkd22/
|
||||
#: src/modules/page-layout/utils/getWidgetTitle.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/GraphTypeInformation.ts
|
||||
@@ -6892,6 +6930,7 @@ msgstr "Infos"
|
||||
#: src/modules/settings/logic-functions/components/tabs/SettingsLogicFunctionTestTab.tsx
|
||||
#: src/modules/command-menu/pages/workflow/step/view-run/components/CommandMenuWorkflowRunViewStepContent.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Input"
|
||||
msgstr "Input"
|
||||
|
||||
@@ -7949,6 +7988,11 @@ msgstr "Max range"
|
||||
msgid "Maximum email addresses"
|
||||
msgstr "Maximum email addresses"
|
||||
|
||||
#. js-lingui-id: 9UHNQc
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Maximum execution time in seconds (1-900)"
|
||||
msgstr "Maximum execution time in seconds (1-900)"
|
||||
|
||||
#. js-lingui-id: PAhTVY
|
||||
#: src/modules/settings/data-model/fields/forms/components/SettingsDataModelFieldMaxValuesForm.tsx
|
||||
msgid "Maximum files"
|
||||
@@ -8651,6 +8695,11 @@ msgstr "No available fields to select"
|
||||
msgid "No body"
|
||||
msgstr "No body"
|
||||
|
||||
#. js-lingui-id: c3+z7H
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCallingCodeSelectInput.tsx
|
||||
msgid "No calling code"
|
||||
msgstr "No calling code"
|
||||
|
||||
#. js-lingui-id: OTe3RI
|
||||
#: src/pages/settings/domains/SettingsDomain.tsx
|
||||
msgid "No change detected"
|
||||
@@ -8681,7 +8730,6 @@ msgstr "No context was provided for this request"
|
||||
#: src/modules/settings/data-model/fields/forms/phones/components/SettingsDataModelFieldPhonesForm.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/address/components/SettingsDataModelFieldAddressForm.tsx
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCountrySelectInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCountryCodeSelectInput.tsx
|
||||
msgid "No country"
|
||||
msgstr "No country"
|
||||
|
||||
@@ -9119,7 +9167,13 @@ msgstr "Not shared by {notSharedByFullName}"
|
||||
msgid "Not synced"
|
||||
msgstr "Not synced"
|
||||
|
||||
#. js-lingui-id: KiJn9B
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Note"
|
||||
msgstr "Note"
|
||||
|
||||
#. js-lingui-id: 1DBGsz
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/action-menu/actions/record-actions/constants/DefaultRecordActionsConfig.tsx
|
||||
msgid "Notes"
|
||||
msgstr "Notes"
|
||||
@@ -9497,6 +9551,11 @@ msgstr "Ordered List"
|
||||
msgid "Organization"
|
||||
msgstr "Organization"
|
||||
|
||||
#. js-lingui-id: zi/p7n
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Organization plan"
|
||||
msgstr "Organization plan"
|
||||
|
||||
#. js-lingui-id: nV6twc
|
||||
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuEditOrganizeActions.tsx
|
||||
msgid "Organize"
|
||||
@@ -9555,6 +9614,7 @@ msgstr "Outage"
|
||||
#: src/modules/logic-functions/components/LogicFunctionExecutionResult.tsx
|
||||
#: src/modules/command-menu/pages/workflow/step/view-run/components/CommandMenuWorkflowRunViewStepContent.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/TerminalOutput.tsx
|
||||
#: src/modules/ai/components/CodeExecutionDisplay.tsx
|
||||
msgid "Output"
|
||||
@@ -10056,6 +10116,11 @@ msgstr "Privacy Policy"
|
||||
msgid "Pro"
|
||||
msgstr "Pro"
|
||||
|
||||
#. js-lingui-id: r5je1s
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Pro plan"
|
||||
msgstr "Pro plan"
|
||||
|
||||
#. js-lingui-id: k1ifdL
|
||||
#: src/modules/workflow/components/WorkflowStepExecutionResult.tsx
|
||||
#: src/modules/spreadsheet-import/steps/components/UploadStep/components/DropZone.tsx
|
||||
@@ -11915,6 +11980,14 @@ msgstr "Spaces and comma - {spacesAndCommaExample}"
|
||||
msgid "Spanish"
|
||||
msgstr "Spanish"
|
||||
|
||||
#. js-lingui-id: gsifzp
|
||||
#: src/modules/command-menu/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
|
||||
#: src/modules/command-menu/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
msgid "Split multiple values"
|
||||
msgstr "Split multiple values"
|
||||
|
||||
#. js-lingui-id: vnS6Rf
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
msgid "SSO"
|
||||
@@ -12393,6 +12466,7 @@ msgid "Task Title"
|
||||
msgstr "Task Title"
|
||||
|
||||
#. js-lingui-id: GtycJ/
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/action-menu/actions/record-actions/constants/DefaultRecordActionsConfig.tsx
|
||||
msgid "Tasks"
|
||||
msgstr "Tasks"
|
||||
@@ -12592,6 +12666,11 @@ msgstr "There is no activity associated with this record."
|
||||
msgid "There was an error while updating password."
|
||||
msgstr "There was an error while updating password."
|
||||
|
||||
#. js-lingui-id: AUV+TY
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Thinking"
|
||||
msgstr "Thinking"
|
||||
|
||||
#. js-lingui-id: Ed99mE
|
||||
#: src/modules/ai/components/ReasoningSummaryDisplay.tsx
|
||||
msgid "Thinking..."
|
||||
@@ -12781,6 +12860,11 @@ msgstr "This will permanently delete your two factor authentication method.<0/>S
|
||||
msgid "This will revert the database value to environment/default value. The database override will be removed and the system will use the environment settings."
|
||||
msgstr "This will revert the database value to environment/default value. The database override will be removed and the system will use the environment settings."
|
||||
|
||||
#. js-lingui-id: f8HOUp
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Thought"
|
||||
msgstr "Thought"
|
||||
|
||||
#. js-lingui-id: 5g/sE8
|
||||
#: src/modules/action-menu/actions/record-actions/constants/WorkflowActionsConfig.tsx
|
||||
msgid "Tidy up"
|
||||
@@ -12812,10 +12896,16 @@ msgid "Time zone"
|
||||
msgstr "Time zone"
|
||||
|
||||
#. js-lingui-id: cklVjM
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCalendarViewContent.tsx
|
||||
msgid "Timeline"
|
||||
msgstr "Timeline"
|
||||
|
||||
#. js-lingui-id: xY9s5E
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Timeout"
|
||||
msgstr "Timeout"
|
||||
|
||||
#. js-lingui-id: 8TMaZI
|
||||
#: src/pages/settings/security/event-logs/components/EventLogResultsTable.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogResultsTable.tsx
|
||||
@@ -13128,7 +13218,6 @@ msgid "Type"
|
||||
msgstr "Type"
|
||||
|
||||
#. js-lingui-id: SKD2e4
|
||||
#: src/modules/page-layout/widgets/standalone-rich-text/components/StandaloneRichTextEditorContent.tsx
|
||||
#: src/modules/activities/components/ActivityRichTextEditor.tsx
|
||||
msgid "Type '/' for commands, '@' for mentions"
|
||||
msgstr "Type '/' for commands, '@' for mentions"
|
||||
@@ -13732,8 +13821,6 @@ msgid "View Logs"
|
||||
msgstr "View Logs"
|
||||
|
||||
#. js-lingui-id: ecVcAx
|
||||
#: src/modules/ai/components/AIChatTab.tsx
|
||||
#: src/modules/ai/components/AIChatTab.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
msgid "View Previous AI Chats"
|
||||
@@ -13989,6 +14076,11 @@ msgstr "When a new lead is created with source \"Website\", assign it to the sal
|
||||
msgid "When any deal with amount over $100,000 has its stage or amount updated, send a notification to the sales channel with the deal name, company, new stage, amount and owner."
|
||||
msgstr "When any deal with amount over $100,000 has its stage or amount updated, send a notification to the sales channel with the deal name, company, new stage, amount and owner."
|
||||
|
||||
#. js-lingui-id: 8jc/Xn
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "When enabled, AI agents and workflow automations can discover and call this function"
|
||||
msgstr "When enabled, AI agents and workflow automations can discover and call this function"
|
||||
|
||||
#. js-lingui-id: C51ilI
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
|
||||
msgid "When the API key will expire."
|
||||
@@ -14121,6 +14213,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"
|
||||
|
||||
@@ -106,6 +106,7 @@ msgstr "(seleccionado: {selectedIconKey})"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "[empty string]"
|
||||
@@ -310,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})"
|
||||
@@ -381,6 +387,11 @@ msgstr "{selectedCount} tipos de origen"
|
||||
msgid "{serviceLabel} service is unreachable"
|
||||
msgstr "El servicio {serviceLabel} no es accesible"
|
||||
|
||||
#. js-lingui-id: 8vJ+2V
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "{stepCount, plural, one {# step} other {# steps}}"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Bzjg0/
|
||||
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepCalendar.tsx
|
||||
msgid "{stepNumber}. Calendar"
|
||||
@@ -1829,6 +1840,7 @@ msgstr "Ascendente"
|
||||
#: src/modules/settings/roles/role-permissions/permission-flags/hooks/useActionRolePermissionFlagConfig.ts
|
||||
#: src/modules/navigation/components/MainNavigationDrawerFixedItems.tsx
|
||||
#: src/modules/command-menu/hooks/useOpenAskAIPageInCommandMenu.ts
|
||||
#: src/modules/command-menu/components/CommandMenuAskAIInfo.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
@@ -1967,7 +1979,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 ""
|
||||
@@ -2068,6 +2079,11 @@ msgstr "Disponibilidad"
|
||||
msgid "Available"
|
||||
msgstr "Disponible"
|
||||
|
||||
#. js-lingui-id: 06gA3L
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Available as tool"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: oD38t2
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Available tools"
|
||||
@@ -2239,9 +2255,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
|
||||
@@ -2312,6 +2328,7 @@ msgstr "caldav.example.com"
|
||||
#. js-lingui-id: AjVXBS
|
||||
#: src/modules/views/view-picker/constants/ViewPickerTypeSelectOptions.ts
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
|
||||
msgid "Calendar"
|
||||
msgstr "Calendario"
|
||||
@@ -2364,6 +2381,11 @@ msgstr "Vista del calendario"
|
||||
msgid "Calendars"
|
||||
msgstr "Calendarios"
|
||||
|
||||
#. js-lingui-id: qIlodj
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormPhoneFieldInput.tsx
|
||||
msgid "Calling Code"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: msssZq
|
||||
#: src/modules/settings/data-model/objects/forms/components/SettingsDataModelObjectAboutForm.tsx
|
||||
msgid "Can't change API names for standard objects"
|
||||
@@ -2500,11 +2522,6 @@ msgstr "Cambiar tipo de nodo"
|
||||
msgid "Change Password"
|
||||
msgstr "Cambiar contraseña"
|
||||
|
||||
#. js-lingui-id: wRtBJP
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Change Plan"
|
||||
msgstr "Cambiar plan"
|
||||
|
||||
#. js-lingui-id: EYSFEW
|
||||
#: src/pages/settings/domains/SettingsDomain.tsx
|
||||
msgid "Change subdomain?"
|
||||
@@ -2602,7 +2619,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"
|
||||
|
||||
@@ -2705,6 +2722,11 @@ msgstr "Secreto del cliente"
|
||||
msgid "Client Settings"
|
||||
msgstr "Configuración de Cliente"
|
||||
|
||||
#. js-lingui-id: mekEJ5
|
||||
#: src/hooks/useCopyToClipboard.tsx
|
||||
msgid "Clipboard requires a secure connection (HTTPS). Please access this app over HTTPS to enable copying."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yz7wBu
|
||||
#: src/modules/ui/feedback/snack-bar-manager/components/SnackBar.tsx
|
||||
msgid "Close"
|
||||
@@ -2747,6 +2769,7 @@ msgstr "Codificar su función"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Collapse"
|
||||
@@ -3301,11 +3324,6 @@ msgstr "Contar valores únicos"
|
||||
msgid "Country"
|
||||
msgstr "País"
|
||||
|
||||
#. js-lingui-id: j2OqfX
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormPhoneFieldInput.tsx
|
||||
msgid "Country Code"
|
||||
msgstr "Código de país"
|
||||
|
||||
#. js-lingui-id: gJdfqX
|
||||
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
|
||||
msgid "create"
|
||||
@@ -4826,6 +4844,7 @@ msgstr "Dominios de correo electrónico"
|
||||
#: src/pages/settings/accounts/SettingsAccountsEmails.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Emails"
|
||||
msgstr "Correos electrónicos"
|
||||
|
||||
@@ -4877,6 +4896,7 @@ msgstr "Vacío"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Empty Array"
|
||||
@@ -4897,6 +4917,7 @@ msgstr "Bandeja de entrada vacía"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Empty Object"
|
||||
@@ -5024,10 +5045,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
|
||||
@@ -5092,6 +5113,11 @@ msgstr "Introduce el valor de prueba"
|
||||
msgid "Enter text"
|
||||
msgstr "Introduce texto"
|
||||
|
||||
#. js-lingui-id: +rrO69
|
||||
#: src/modules/page-layout/widgets/standalone-rich-text/components/StandaloneRichTextEditorContent.tsx
|
||||
msgid "Enter text or type '/' for commands"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yZMXC2
|
||||
#: src/modules/advanced-text-editor/hooks/useAdvancedTextEditor.ts
|
||||
msgid "Enter text or Type '/' for commands"
|
||||
@@ -5488,6 +5514,7 @@ msgstr "Salir de Configuración"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Expand"
|
||||
@@ -6018,6 +6045,11 @@ msgstr ""
|
||||
msgid "File URL is not defined"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: sER+bs
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Files"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: o7J4JM
|
||||
#: src/pages/settings/data-model/SettingsObjectFieldTable.tsx
|
||||
#: src/pages/settings/ai/components/SettingsSkillsTable.tsx
|
||||
@@ -6121,6 +6153,7 @@ msgstr "El nombre no puede estar vacío"
|
||||
|
||||
#. js-lingui-id: ylQd2j
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/utils/getActionHeaderTypeOrThrow.ts
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/command-menu/pages/workflow/action/components/CommandMenuWorkflowSelectAction.tsx
|
||||
msgid "Flow"
|
||||
msgstr "Flujo"
|
||||
@@ -6586,6 +6619,11 @@ msgstr "Ocultar grupo {groupValue}"
|
||||
msgid "Hide hidden groups"
|
||||
msgstr "Ocultar grupos ocultos"
|
||||
|
||||
#. js-lingui-id: i0qMbr
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Home"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Xkd22/
|
||||
#: src/modules/page-layout/utils/getWidgetTitle.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/GraphTypeInformation.ts
|
||||
@@ -6897,6 +6935,7 @@ msgstr "Información"
|
||||
#: src/modules/settings/logic-functions/components/tabs/SettingsLogicFunctionTestTab.tsx
|
||||
#: src/modules/command-menu/pages/workflow/step/view-run/components/CommandMenuWorkflowRunViewStepContent.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Input"
|
||||
msgstr "Entrada"
|
||||
|
||||
@@ -7954,6 +7993,11 @@ msgstr "Rango máximo"
|
||||
msgid "Maximum email addresses"
|
||||
msgstr "Máximo de direcciones de correo electrónico"
|
||||
|
||||
#. js-lingui-id: 9UHNQc
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Maximum execution time in seconds (1-900)"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: PAhTVY
|
||||
#: src/modules/settings/data-model/fields/forms/components/SettingsDataModelFieldMaxValuesForm.tsx
|
||||
msgid "Maximum files"
|
||||
@@ -8656,6 +8700,11 @@ msgstr "No hay campos disponibles para seleccionar"
|
||||
msgid "No body"
|
||||
msgstr "Sin cuerpo"
|
||||
|
||||
#. js-lingui-id: c3+z7H
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCallingCodeSelectInput.tsx
|
||||
msgid "No calling code"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: OTe3RI
|
||||
#: src/pages/settings/domains/SettingsDomain.tsx
|
||||
msgid "No change detected"
|
||||
@@ -8686,7 +8735,6 @@ msgstr "No se proporcionó contexto para esta solicitud"
|
||||
#: src/modules/settings/data-model/fields/forms/phones/components/SettingsDataModelFieldPhonesForm.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/address/components/SettingsDataModelFieldAddressForm.tsx
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCountrySelectInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCountryCodeSelectInput.tsx
|
||||
msgid "No country"
|
||||
msgstr "Sin país"
|
||||
|
||||
@@ -9124,7 +9172,13 @@ msgstr "No compartido por {notSharedByFullName}"
|
||||
msgid "Not synced"
|
||||
msgstr "No sincronizado"
|
||||
|
||||
#. js-lingui-id: KiJn9B
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Note"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 1DBGsz
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/action-menu/actions/record-actions/constants/DefaultRecordActionsConfig.tsx
|
||||
msgid "Notes"
|
||||
msgstr "Notas"
|
||||
@@ -9502,6 +9556,11 @@ msgstr "Lista ordenada"
|
||||
msgid "Organization"
|
||||
msgstr "Organización"
|
||||
|
||||
#. js-lingui-id: zi/p7n
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Organization plan"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: nV6twc
|
||||
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuEditOrganizeActions.tsx
|
||||
msgid "Organize"
|
||||
@@ -9560,6 +9619,7 @@ msgstr "Interrupción"
|
||||
#: src/modules/logic-functions/components/LogicFunctionExecutionResult.tsx
|
||||
#: src/modules/command-menu/pages/workflow/step/view-run/components/CommandMenuWorkflowRunViewStepContent.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/TerminalOutput.tsx
|
||||
#: src/modules/ai/components/CodeExecutionDisplay.tsx
|
||||
msgid "Output"
|
||||
@@ -10061,6 +10121,11 @@ msgstr "Política de privacidad"
|
||||
msgid "Pro"
|
||||
msgstr "Pro"
|
||||
|
||||
#. js-lingui-id: r5je1s
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Pro plan"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: k1ifdL
|
||||
#: src/modules/workflow/components/WorkflowStepExecutionResult.tsx
|
||||
#: src/modules/spreadsheet-import/steps/components/UploadStep/components/DropZone.tsx
|
||||
@@ -11920,6 +11985,14 @@ msgstr "Espacios y coma - {spacesAndCommaExample}"
|
||||
msgid "Spanish"
|
||||
msgstr "Español"
|
||||
|
||||
#. js-lingui-id: gsifzp
|
||||
#: src/modules/command-menu/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
|
||||
#: src/modules/command-menu/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
msgid "Split multiple values"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: vnS6Rf
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
msgid "SSO"
|
||||
@@ -12398,6 +12471,7 @@ msgid "Task Title"
|
||||
msgstr "Título de la tarea"
|
||||
|
||||
#. js-lingui-id: GtycJ/
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/action-menu/actions/record-actions/constants/DefaultRecordActionsConfig.tsx
|
||||
msgid "Tasks"
|
||||
msgstr "Tareas"
|
||||
@@ -12597,6 +12671,11 @@ msgstr "No hay actividad asociada con este registro."
|
||||
msgid "There was an error while updating password."
|
||||
msgstr "Hubo un error al actualizar la contraseña."
|
||||
|
||||
#. js-lingui-id: AUV+TY
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Thinking"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Ed99mE
|
||||
#: src/modules/ai/components/ReasoningSummaryDisplay.tsx
|
||||
msgid "Thinking..."
|
||||
@@ -12786,6 +12865,11 @@ msgstr "Esto eliminará permanentemente tu método de autenticación de dos fact
|
||||
msgid "This will revert the database value to environment/default value. The database override will be removed and the system will use the environment settings."
|
||||
msgstr "Esto revertirá el valor de la base de datos al valor de entorno/predeterminado. Se eliminará la anulación de la base de datos y el sistema utilizará la configuración del entorno."
|
||||
|
||||
#. js-lingui-id: f8HOUp
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Thought"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 5g/sE8
|
||||
#: src/modules/action-menu/actions/record-actions/constants/WorkflowActionsConfig.tsx
|
||||
msgid "Tidy up"
|
||||
@@ -12817,10 +12901,16 @@ msgid "Time zone"
|
||||
msgstr "Zona horaria"
|
||||
|
||||
#. js-lingui-id: cklVjM
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCalendarViewContent.tsx
|
||||
msgid "Timeline"
|
||||
msgstr "Cronología"
|
||||
|
||||
#. js-lingui-id: xY9s5E
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Timeout"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8TMaZI
|
||||
#: src/pages/settings/security/event-logs/components/EventLogResultsTable.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogResultsTable.tsx
|
||||
@@ -13133,7 +13223,6 @@ msgid "Type"
|
||||
msgstr "Tipo"
|
||||
|
||||
#. js-lingui-id: SKD2e4
|
||||
#: src/modules/page-layout/widgets/standalone-rich-text/components/StandaloneRichTextEditorContent.tsx
|
||||
#: src/modules/activities/components/ActivityRichTextEditor.tsx
|
||||
msgid "Type '/' for commands, '@' for mentions"
|
||||
msgstr ""
|
||||
@@ -13737,8 +13826,6 @@ msgid "View Logs"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: ecVcAx
|
||||
#: src/modules/ai/components/AIChatTab.tsx
|
||||
#: src/modules/ai/components/AIChatTab.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
msgid "View Previous AI Chats"
|
||||
@@ -13994,6 +14081,11 @@ msgstr ""
|
||||
msgid "When any deal with amount over $100,000 has its stage or amount updated, send a notification to the sales channel with the deal name, company, new stage, amount and owner."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8jc/Xn
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "When enabled, AI agents and workflow automations can discover and call this function"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: C51ilI
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
|
||||
msgid "When the API key will expire."
|
||||
@@ -14126,6 +14218,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 ""
|
||||
|
||||
@@ -106,6 +106,7 @@ msgstr "(valittu: {selectedIconKey})"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "[empty string]"
|
||||
@@ -310,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})"
|
||||
@@ -381,6 +387,11 @@ msgstr "{selectedCount} lähdetyyppiä"
|
||||
msgid "{serviceLabel} service is unreachable"
|
||||
msgstr "Palveluun {serviceLabel} ei saada yhteyttä"
|
||||
|
||||
#. js-lingui-id: 8vJ+2V
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "{stepCount, plural, one {# step} other {# steps}}"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Bzjg0/
|
||||
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepCalendar.tsx
|
||||
msgid "{stepNumber}. Calendar"
|
||||
@@ -1829,6 +1840,7 @@ msgstr "Nouseva"
|
||||
#: src/modules/settings/roles/role-permissions/permission-flags/hooks/useActionRolePermissionFlagConfig.ts
|
||||
#: src/modules/navigation/components/MainNavigationDrawerFixedItems.tsx
|
||||
#: src/modules/command-menu/hooks/useOpenAskAIPageInCommandMenu.ts
|
||||
#: src/modules/command-menu/components/CommandMenuAskAIInfo.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
@@ -1967,7 +1979,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 ""
|
||||
@@ -2068,6 +2079,11 @@ msgstr "Saatavuus"
|
||||
msgid "Available"
|
||||
msgstr "Saatavilla"
|
||||
|
||||
#. js-lingui-id: 06gA3L
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Available as tool"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: oD38t2
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Available tools"
|
||||
@@ -2239,9 +2255,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
|
||||
@@ -2312,6 +2328,7 @@ msgstr "caldav.example.com"
|
||||
#. js-lingui-id: AjVXBS
|
||||
#: src/modules/views/view-picker/constants/ViewPickerTypeSelectOptions.ts
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
|
||||
msgid "Calendar"
|
||||
msgstr "Kalenteri"
|
||||
@@ -2364,6 +2381,11 @@ msgstr "Kalenterinäkymä"
|
||||
msgid "Calendars"
|
||||
msgstr "Kalenterit"
|
||||
|
||||
#. js-lingui-id: qIlodj
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormPhoneFieldInput.tsx
|
||||
msgid "Calling Code"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: msssZq
|
||||
#: src/modules/settings/data-model/objects/forms/components/SettingsDataModelObjectAboutForm.tsx
|
||||
msgid "Can't change API names for standard objects"
|
||||
@@ -2500,11 +2522,6 @@ msgstr "Vaihda solmun tyyppi"
|
||||
msgid "Change Password"
|
||||
msgstr "Vaihda salasana"
|
||||
|
||||
#. js-lingui-id: wRtBJP
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Change Plan"
|
||||
msgstr "Muuta suunnitelmaa"
|
||||
|
||||
#. js-lingui-id: EYSFEW
|
||||
#: src/pages/settings/domains/SettingsDomain.tsx
|
||||
msgid "Change subdomain?"
|
||||
@@ -2602,7 +2619,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"
|
||||
|
||||
@@ -2705,6 +2722,11 @@ msgstr "Asiakkaan salaisuus"
|
||||
msgid "Client Settings"
|
||||
msgstr "Asiakasasetukset"
|
||||
|
||||
#. js-lingui-id: mekEJ5
|
||||
#: src/hooks/useCopyToClipboard.tsx
|
||||
msgid "Clipboard requires a secure connection (HTTPS). Please access this app over HTTPS to enable copying."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yz7wBu
|
||||
#: src/modules/ui/feedback/snack-bar-manager/components/SnackBar.tsx
|
||||
msgid "Close"
|
||||
@@ -2747,6 +2769,7 @@ msgstr "Koodaa funktiosi"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Collapse"
|
||||
@@ -3301,11 +3324,6 @@ msgstr "Laske yksilölliset arvot"
|
||||
msgid "Country"
|
||||
msgstr "Maa"
|
||||
|
||||
#. js-lingui-id: j2OqfX
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormPhoneFieldInput.tsx
|
||||
msgid "Country Code"
|
||||
msgstr "Maakoodi"
|
||||
|
||||
#. js-lingui-id: gJdfqX
|
||||
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
|
||||
msgid "create"
|
||||
@@ -4826,6 +4844,7 @@ msgstr "Sähköpostitoimialueet"
|
||||
#: src/pages/settings/accounts/SettingsAccountsEmails.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Emails"
|
||||
msgstr "Sähköpostit"
|
||||
|
||||
@@ -4877,6 +4896,7 @@ msgstr "Tyhjä"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Empty Array"
|
||||
@@ -4897,6 +4917,7 @@ msgstr "Tyhjä Saapuneet"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Empty Object"
|
||||
@@ -5024,10 +5045,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
|
||||
@@ -5092,6 +5113,11 @@ msgstr "Syötä testiarvo"
|
||||
msgid "Enter text"
|
||||
msgstr "Syötä teksti"
|
||||
|
||||
#. js-lingui-id: +rrO69
|
||||
#: src/modules/page-layout/widgets/standalone-rich-text/components/StandaloneRichTextEditorContent.tsx
|
||||
msgid "Enter text or type '/' for commands"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yZMXC2
|
||||
#: src/modules/advanced-text-editor/hooks/useAdvancedTextEditor.ts
|
||||
msgid "Enter text or Type '/' for commands"
|
||||
@@ -5488,6 +5514,7 @@ msgstr "Poistu asetuksista"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Expand"
|
||||
@@ -6018,6 +6045,11 @@ msgstr ""
|
||||
msgid "File URL is not defined"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: sER+bs
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Files"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: o7J4JM
|
||||
#: src/pages/settings/data-model/SettingsObjectFieldTable.tsx
|
||||
#: src/pages/settings/ai/components/SettingsSkillsTable.tsx
|
||||
@@ -6121,6 +6153,7 @@ msgstr "Etunimi ei saa olla tyhjä"
|
||||
|
||||
#. js-lingui-id: ylQd2j
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/utils/getActionHeaderTypeOrThrow.ts
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/command-menu/pages/workflow/action/components/CommandMenuWorkflowSelectAction.tsx
|
||||
msgid "Flow"
|
||||
msgstr "Virtaus"
|
||||
@@ -6586,6 +6619,11 @@ msgstr "Piilota ryhmä {groupValue}"
|
||||
msgid "Hide hidden groups"
|
||||
msgstr "Piilota piilotetut ryhmät"
|
||||
|
||||
#. js-lingui-id: i0qMbr
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Home"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Xkd22/
|
||||
#: src/modules/page-layout/utils/getWidgetTitle.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/GraphTypeInformation.ts
|
||||
@@ -6897,6 +6935,7 @@ msgstr "Tiedot"
|
||||
#: src/modules/settings/logic-functions/components/tabs/SettingsLogicFunctionTestTab.tsx
|
||||
#: src/modules/command-menu/pages/workflow/step/view-run/components/CommandMenuWorkflowRunViewStepContent.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Input"
|
||||
msgstr "Syöttö"
|
||||
|
||||
@@ -7954,6 +7993,11 @@ msgstr "Maksimirajoitus"
|
||||
msgid "Maximum email addresses"
|
||||
msgstr "Sähköpostiosoitteiden enimmäismäärä"
|
||||
|
||||
#. js-lingui-id: 9UHNQc
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Maximum execution time in seconds (1-900)"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: PAhTVY
|
||||
#: src/modules/settings/data-model/fields/forms/components/SettingsDataModelFieldMaxValuesForm.tsx
|
||||
msgid "Maximum files"
|
||||
@@ -8656,6 +8700,11 @@ msgstr "Ei valittavissa olevia kenttiä"
|
||||
msgid "No body"
|
||||
msgstr "Ei viestirunkoa"
|
||||
|
||||
#. js-lingui-id: c3+z7H
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCallingCodeSelectInput.tsx
|
||||
msgid "No calling code"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: OTe3RI
|
||||
#: src/pages/settings/domains/SettingsDomain.tsx
|
||||
msgid "No change detected"
|
||||
@@ -8686,7 +8735,6 @@ msgstr "Tälle pyynnölle ei annettu kontekstia"
|
||||
#: src/modules/settings/data-model/fields/forms/phones/components/SettingsDataModelFieldPhonesForm.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/address/components/SettingsDataModelFieldAddressForm.tsx
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCountrySelectInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCountryCodeSelectInput.tsx
|
||||
msgid "No country"
|
||||
msgstr "Ei maata"
|
||||
|
||||
@@ -9124,7 +9172,13 @@ msgstr "Ei jaettu käyttäjän {notSharedByFullName} toimesta"
|
||||
msgid "Not synced"
|
||||
msgstr "Ei synkronoitu"
|
||||
|
||||
#. js-lingui-id: KiJn9B
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Note"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 1DBGsz
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/action-menu/actions/record-actions/constants/DefaultRecordActionsConfig.tsx
|
||||
msgid "Notes"
|
||||
msgstr "Muistiinpanot"
|
||||
@@ -9502,6 +9556,11 @@ msgstr ""
|
||||
msgid "Organization"
|
||||
msgstr "Organisaatio"
|
||||
|
||||
#. js-lingui-id: zi/p7n
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Organization plan"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: nV6twc
|
||||
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuEditOrganizeActions.tsx
|
||||
msgid "Organize"
|
||||
@@ -9560,6 +9619,7 @@ msgstr "Katkos"
|
||||
#: src/modules/logic-functions/components/LogicFunctionExecutionResult.tsx
|
||||
#: src/modules/command-menu/pages/workflow/step/view-run/components/CommandMenuWorkflowRunViewStepContent.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/TerminalOutput.tsx
|
||||
#: src/modules/ai/components/CodeExecutionDisplay.tsx
|
||||
msgid "Output"
|
||||
@@ -10061,6 +10121,11 @@ msgstr "Tietosuojakäytäntö"
|
||||
msgid "Pro"
|
||||
msgstr "Pro"
|
||||
|
||||
#. js-lingui-id: r5je1s
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Pro plan"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: k1ifdL
|
||||
#: src/modules/workflow/components/WorkflowStepExecutionResult.tsx
|
||||
#: src/modules/spreadsheet-import/steps/components/UploadStep/components/DropZone.tsx
|
||||
@@ -11920,6 +11985,14 @@ msgstr "Välilyöntejä ja pilkku - {spacesAndCommaExample}"
|
||||
msgid "Spanish"
|
||||
msgstr "Espanja"
|
||||
|
||||
#. js-lingui-id: gsifzp
|
||||
#: src/modules/command-menu/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
|
||||
#: src/modules/command-menu/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
msgid "Split multiple values"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: vnS6Rf
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
msgid "SSO"
|
||||
@@ -12398,6 +12471,7 @@ msgid "Task Title"
|
||||
msgstr "Tehtävän otsikko"
|
||||
|
||||
#. js-lingui-id: GtycJ/
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/action-menu/actions/record-actions/constants/DefaultRecordActionsConfig.tsx
|
||||
msgid "Tasks"
|
||||
msgstr "Tehtävät"
|
||||
@@ -12597,6 +12671,11 @@ msgstr "Tähän tietueeseen ei liity aktiivisuutta."
|
||||
msgid "There was an error while updating password."
|
||||
msgstr "Salasanan päivityksessä tapahtui virhe."
|
||||
|
||||
#. js-lingui-id: AUV+TY
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Thinking"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Ed99mE
|
||||
#: src/modules/ai/components/ReasoningSummaryDisplay.tsx
|
||||
msgid "Thinking..."
|
||||
@@ -12784,6 +12863,11 @@ msgstr "Tämä poistaa pysyvästi kaksivaiheisen todennustapasi.<0/>Koska 2FA on
|
||||
msgid "This will revert the database value to environment/default value. The database override will be removed and the system will use the environment settings."
|
||||
msgstr "Tämä palauttaa tietokannan arvon ympäristö/oletusarvoksi. Tietokannan ohitus poistetaan ja järjestelmä käyttää ympäristöasetuksia."
|
||||
|
||||
#. js-lingui-id: f8HOUp
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Thought"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 5g/sE8
|
||||
#: src/modules/action-menu/actions/record-actions/constants/WorkflowActionsConfig.tsx
|
||||
msgid "Tidy up"
|
||||
@@ -12815,10 +12899,16 @@ msgid "Time zone"
|
||||
msgstr "Aikavyöhyke"
|
||||
|
||||
#. js-lingui-id: cklVjM
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCalendarViewContent.tsx
|
||||
msgid "Timeline"
|
||||
msgstr "Aikajana"
|
||||
|
||||
#. js-lingui-id: xY9s5E
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Timeout"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8TMaZI
|
||||
#: src/pages/settings/security/event-logs/components/EventLogResultsTable.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogResultsTable.tsx
|
||||
@@ -13131,7 +13221,6 @@ msgid "Type"
|
||||
msgstr "Tyyppi"
|
||||
|
||||
#. js-lingui-id: SKD2e4
|
||||
#: src/modules/page-layout/widgets/standalone-rich-text/components/StandaloneRichTextEditorContent.tsx
|
||||
#: src/modules/activities/components/ActivityRichTextEditor.tsx
|
||||
msgid "Type '/' for commands, '@' for mentions"
|
||||
msgstr ""
|
||||
@@ -13735,8 +13824,6 @@ msgid "View Logs"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: ecVcAx
|
||||
#: src/modules/ai/components/AIChatTab.tsx
|
||||
#: src/modules/ai/components/AIChatTab.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
msgid "View Previous AI Chats"
|
||||
@@ -13992,6 +14079,11 @@ msgstr ""
|
||||
msgid "When any deal with amount over $100,000 has its stage or amount updated, send a notification to the sales channel with the deal name, company, new stage, amount and owner."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8jc/Xn
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "When enabled, AI agents and workflow automations can discover and call this function"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: C51ilI
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
|
||||
msgid "When the API key will expire."
|
||||
@@ -14124,6 +14216,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 ""
|
||||
|
||||
@@ -106,6 +106,7 @@ msgstr "(sélectionné : {selectedIconKey})"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "[empty string]"
|
||||
@@ -310,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})"
|
||||
@@ -381,6 +387,11 @@ msgstr "{selectedCount} types de source"
|
||||
msgid "{serviceLabel} service is unreachable"
|
||||
msgstr "Le service {serviceLabel} est inaccessible"
|
||||
|
||||
#. js-lingui-id: 8vJ+2V
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "{stepCount, plural, one {# step} other {# steps}}"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Bzjg0/
|
||||
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepCalendar.tsx
|
||||
msgid "{stepNumber}. Calendar"
|
||||
@@ -1829,6 +1840,7 @@ msgstr "Ascendant"
|
||||
#: src/modules/settings/roles/role-permissions/permission-flags/hooks/useActionRolePermissionFlagConfig.ts
|
||||
#: src/modules/navigation/components/MainNavigationDrawerFixedItems.tsx
|
||||
#: src/modules/command-menu/hooks/useOpenAskAIPageInCommandMenu.ts
|
||||
#: src/modules/command-menu/components/CommandMenuAskAIInfo.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
@@ -1967,7 +1979,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 ""
|
||||
@@ -2068,6 +2079,11 @@ msgstr "Disponibilité"
|
||||
msgid "Available"
|
||||
msgstr "Disponible"
|
||||
|
||||
#. js-lingui-id: 06gA3L
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Available as tool"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: oD38t2
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Available tools"
|
||||
@@ -2239,9 +2255,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
|
||||
@@ -2312,6 +2328,7 @@ msgstr "caldav.example.com"
|
||||
#. js-lingui-id: AjVXBS
|
||||
#: src/modules/views/view-picker/constants/ViewPickerTypeSelectOptions.ts
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
|
||||
msgid "Calendar"
|
||||
msgstr "Calendrier"
|
||||
@@ -2364,6 +2381,11 @@ msgstr "Vue Calendrier"
|
||||
msgid "Calendars"
|
||||
msgstr "Calendriers"
|
||||
|
||||
#. js-lingui-id: qIlodj
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormPhoneFieldInput.tsx
|
||||
msgid "Calling Code"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: msssZq
|
||||
#: src/modules/settings/data-model/objects/forms/components/SettingsDataModelObjectAboutForm.tsx
|
||||
msgid "Can't change API names for standard objects"
|
||||
@@ -2500,11 +2522,6 @@ msgstr "Changer le type de nœud"
|
||||
msgid "Change Password"
|
||||
msgstr "Changer le mot de passe"
|
||||
|
||||
#. js-lingui-id: wRtBJP
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Change Plan"
|
||||
msgstr "Changer de plan"
|
||||
|
||||
#. js-lingui-id: EYSFEW
|
||||
#: src/pages/settings/domains/SettingsDomain.tsx
|
||||
msgid "Change subdomain?"
|
||||
@@ -2602,7 +2619,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"
|
||||
|
||||
@@ -2705,6 +2722,11 @@ msgstr "Secret client"
|
||||
msgid "Client Settings"
|
||||
msgstr "Paramètres du client"
|
||||
|
||||
#. js-lingui-id: mekEJ5
|
||||
#: src/hooks/useCopyToClipboard.tsx
|
||||
msgid "Clipboard requires a secure connection (HTTPS). Please access this app over HTTPS to enable copying."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yz7wBu
|
||||
#: src/modules/ui/feedback/snack-bar-manager/components/SnackBar.tsx
|
||||
msgid "Close"
|
||||
@@ -2747,6 +2769,7 @@ msgstr "Coder votre fonction"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Collapse"
|
||||
@@ -3301,11 +3324,6 @@ msgstr "Compter les valeurs uniques"
|
||||
msgid "Country"
|
||||
msgstr "Pays"
|
||||
|
||||
#. js-lingui-id: j2OqfX
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormPhoneFieldInput.tsx
|
||||
msgid "Country Code"
|
||||
msgstr "Code du pays"
|
||||
|
||||
#. js-lingui-id: gJdfqX
|
||||
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
|
||||
msgid "create"
|
||||
@@ -4826,6 +4844,7 @@ msgstr "Domaines d'envoi d'e-mail"
|
||||
#: src/pages/settings/accounts/SettingsAccountsEmails.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Emails"
|
||||
msgstr "Courriels"
|
||||
|
||||
@@ -4877,6 +4896,7 @@ msgstr "Vide"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Empty Array"
|
||||
@@ -4897,6 +4917,7 @@ msgstr "Boîte de réception vide"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Empty Object"
|
||||
@@ -5024,10 +5045,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
|
||||
@@ -5092,6 +5113,11 @@ msgstr "Saisissez une valeur de test"
|
||||
msgid "Enter text"
|
||||
msgstr "Saisissez du texte"
|
||||
|
||||
#. js-lingui-id: +rrO69
|
||||
#: src/modules/page-layout/widgets/standalone-rich-text/components/StandaloneRichTextEditorContent.tsx
|
||||
msgid "Enter text or type '/' for commands"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yZMXC2
|
||||
#: src/modules/advanced-text-editor/hooks/useAdvancedTextEditor.ts
|
||||
msgid "Enter text or Type '/' for commands"
|
||||
@@ -5488,6 +5514,7 @@ msgstr "Quitter les paramètres"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Expand"
|
||||
@@ -6018,6 +6045,11 @@ msgstr ""
|
||||
msgid "File URL is not defined"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: sER+bs
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Files"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: o7J4JM
|
||||
#: src/pages/settings/data-model/SettingsObjectFieldTable.tsx
|
||||
#: src/pages/settings/ai/components/SettingsSkillsTable.tsx
|
||||
@@ -6121,6 +6153,7 @@ msgstr "Le prénom ne peut pas être vide"
|
||||
|
||||
#. js-lingui-id: ylQd2j
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/utils/getActionHeaderTypeOrThrow.ts
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/command-menu/pages/workflow/action/components/CommandMenuWorkflowSelectAction.tsx
|
||||
msgid "Flow"
|
||||
msgstr "Flux"
|
||||
@@ -6586,6 +6619,11 @@ msgstr "Masquer le groupe {groupValue}"
|
||||
msgid "Hide hidden groups"
|
||||
msgstr "Masquer les groupes cachés"
|
||||
|
||||
#. js-lingui-id: i0qMbr
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Home"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Xkd22/
|
||||
#: src/modules/page-layout/utils/getWidgetTitle.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/GraphTypeInformation.ts
|
||||
@@ -6897,6 +6935,7 @@ msgstr "Informations"
|
||||
#: src/modules/settings/logic-functions/components/tabs/SettingsLogicFunctionTestTab.tsx
|
||||
#: src/modules/command-menu/pages/workflow/step/view-run/components/CommandMenuWorkflowRunViewStepContent.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Input"
|
||||
msgstr "Entrée "
|
||||
|
||||
@@ -7954,6 +7993,11 @@ msgstr "Portée max"
|
||||
msgid "Maximum email addresses"
|
||||
msgstr "Adresses e-mail maximales"
|
||||
|
||||
#. js-lingui-id: 9UHNQc
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Maximum execution time in seconds (1-900)"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: PAhTVY
|
||||
#: src/modules/settings/data-model/fields/forms/components/SettingsDataModelFieldMaxValuesForm.tsx
|
||||
msgid "Maximum files"
|
||||
@@ -8656,6 +8700,11 @@ msgstr "Aucun champ disponible à sélectionner"
|
||||
msgid "No body"
|
||||
msgstr "Aucun corps"
|
||||
|
||||
#. js-lingui-id: c3+z7H
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCallingCodeSelectInput.tsx
|
||||
msgid "No calling code"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: OTe3RI
|
||||
#: src/pages/settings/domains/SettingsDomain.tsx
|
||||
msgid "No change detected"
|
||||
@@ -8686,7 +8735,6 @@ msgstr "Aucun contexte n'a été fourni pour cette requête"
|
||||
#: src/modules/settings/data-model/fields/forms/phones/components/SettingsDataModelFieldPhonesForm.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/address/components/SettingsDataModelFieldAddressForm.tsx
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCountrySelectInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCountryCodeSelectInput.tsx
|
||||
msgid "No country"
|
||||
msgstr "Aucun pays"
|
||||
|
||||
@@ -9124,7 +9172,13 @@ msgstr "Non partagé par {notSharedByFullName}"
|
||||
msgid "Not synced"
|
||||
msgstr "Non synchronisé"
|
||||
|
||||
#. js-lingui-id: KiJn9B
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Note"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 1DBGsz
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/action-menu/actions/record-actions/constants/DefaultRecordActionsConfig.tsx
|
||||
msgid "Notes"
|
||||
msgstr "Notes"
|
||||
@@ -9502,6 +9556,11 @@ msgstr ""
|
||||
msgid "Organization"
|
||||
msgstr "Organisation"
|
||||
|
||||
#. js-lingui-id: zi/p7n
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Organization plan"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: nV6twc
|
||||
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuEditOrganizeActions.tsx
|
||||
msgid "Organize"
|
||||
@@ -9560,6 +9619,7 @@ msgstr "Panne"
|
||||
#: src/modules/logic-functions/components/LogicFunctionExecutionResult.tsx
|
||||
#: src/modules/command-menu/pages/workflow/step/view-run/components/CommandMenuWorkflowRunViewStepContent.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/TerminalOutput.tsx
|
||||
#: src/modules/ai/components/CodeExecutionDisplay.tsx
|
||||
msgid "Output"
|
||||
@@ -10061,6 +10121,11 @@ msgstr "Politique de confidentialité"
|
||||
msgid "Pro"
|
||||
msgstr "Pro"
|
||||
|
||||
#. js-lingui-id: r5je1s
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Pro plan"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: k1ifdL
|
||||
#: src/modules/workflow/components/WorkflowStepExecutionResult.tsx
|
||||
#: src/modules/spreadsheet-import/steps/components/UploadStep/components/DropZone.tsx
|
||||
@@ -11920,6 +11985,14 @@ msgstr "Espaces et virgule - {spacesAndCommaExample}"
|
||||
msgid "Spanish"
|
||||
msgstr "Espagnol"
|
||||
|
||||
#. js-lingui-id: gsifzp
|
||||
#: src/modules/command-menu/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
|
||||
#: src/modules/command-menu/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
msgid "Split multiple values"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: vnS6Rf
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
msgid "SSO"
|
||||
@@ -12398,6 +12471,7 @@ msgid "Task Title"
|
||||
msgstr "Titre de la tâche"
|
||||
|
||||
#. js-lingui-id: GtycJ/
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/action-menu/actions/record-actions/constants/DefaultRecordActionsConfig.tsx
|
||||
msgid "Tasks"
|
||||
msgstr "Tâches"
|
||||
@@ -12597,6 +12671,11 @@ msgstr "Aucune activité n'est associée à cet enregistrement."
|
||||
msgid "There was an error while updating password."
|
||||
msgstr "Une erreur est survenue lors de la mise à jour du mot de passe."
|
||||
|
||||
#. js-lingui-id: AUV+TY
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Thinking"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Ed99mE
|
||||
#: src/modules/ai/components/ReasoningSummaryDisplay.tsx
|
||||
msgid "Thinking..."
|
||||
@@ -12786,6 +12865,11 @@ msgstr "Cela supprimera définitivement votre méthode d'authentification à deu
|
||||
msgid "This will revert the database value to environment/default value. The database override will be removed and the system will use the environment settings."
|
||||
msgstr "Cela restaurera la valeur de la base de données à la valeur d'environnement/ou par défaut. La surcharge de la base de données sera supprimée et le système utilisera les paramètres d'environnement."
|
||||
|
||||
#. js-lingui-id: f8HOUp
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Thought"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 5g/sE8
|
||||
#: src/modules/action-menu/actions/record-actions/constants/WorkflowActionsConfig.tsx
|
||||
msgid "Tidy up"
|
||||
@@ -12817,10 +12901,16 @@ msgid "Time zone"
|
||||
msgstr "Fuseau horaire"
|
||||
|
||||
#. js-lingui-id: cklVjM
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCalendarViewContent.tsx
|
||||
msgid "Timeline"
|
||||
msgstr "Chronologie"
|
||||
|
||||
#. js-lingui-id: xY9s5E
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Timeout"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8TMaZI
|
||||
#: src/pages/settings/security/event-logs/components/EventLogResultsTable.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogResultsTable.tsx
|
||||
@@ -13133,7 +13223,6 @@ msgid "Type"
|
||||
msgstr "Type"
|
||||
|
||||
#. js-lingui-id: SKD2e4
|
||||
#: src/modules/page-layout/widgets/standalone-rich-text/components/StandaloneRichTextEditorContent.tsx
|
||||
#: src/modules/activities/components/ActivityRichTextEditor.tsx
|
||||
msgid "Type '/' for commands, '@' for mentions"
|
||||
msgstr ""
|
||||
@@ -13737,8 +13826,6 @@ msgid "View Logs"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: ecVcAx
|
||||
#: src/modules/ai/components/AIChatTab.tsx
|
||||
#: src/modules/ai/components/AIChatTab.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
msgid "View Previous AI Chats"
|
||||
@@ -13994,6 +14081,11 @@ msgstr ""
|
||||
msgid "When any deal with amount over $100,000 has its stage or amount updated, send a notification to the sales channel with the deal name, company, new stage, amount and owner."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8jc/Xn
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "When enabled, AI agents and workflow automations can discover and call this function"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: C51ilI
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
|
||||
msgid "When the API key will expire."
|
||||
@@ -14126,6 +14218,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
@@ -106,6 +106,7 @@ msgstr "(נבחר: {selectedIconKey})"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "[empty string]"
|
||||
@@ -310,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})"
|
||||
@@ -381,6 +387,11 @@ msgstr "{selectedCount} סוגי מקורות"
|
||||
msgid "{serviceLabel} service is unreachable"
|
||||
msgstr "השירות {serviceLabel} אינו נגיש"
|
||||
|
||||
#. js-lingui-id: 8vJ+2V
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "{stepCount, plural, one {# step} other {# steps}}"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Bzjg0/
|
||||
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepCalendar.tsx
|
||||
msgid "{stepNumber}. Calendar"
|
||||
@@ -1829,6 +1840,7 @@ msgstr "עולה"
|
||||
#: src/modules/settings/roles/role-permissions/permission-flags/hooks/useActionRolePermissionFlagConfig.ts
|
||||
#: src/modules/navigation/components/MainNavigationDrawerFixedItems.tsx
|
||||
#: src/modules/command-menu/hooks/useOpenAskAIPageInCommandMenu.ts
|
||||
#: src/modules/command-menu/components/CommandMenuAskAIInfo.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
@@ -1967,7 +1979,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 ""
|
||||
@@ -2068,6 +2079,11 @@ msgstr "זמינות"
|
||||
msgid "Available"
|
||||
msgstr "זמין"
|
||||
|
||||
#. js-lingui-id: 06gA3L
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Available as tool"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: oD38t2
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Available tools"
|
||||
@@ -2239,9 +2255,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
|
||||
@@ -2312,6 +2328,7 @@ msgstr "caldav.example.com"
|
||||
#. js-lingui-id: AjVXBS
|
||||
#: src/modules/views/view-picker/constants/ViewPickerTypeSelectOptions.ts
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
|
||||
msgid "Calendar"
|
||||
msgstr "לוח שנה"
|
||||
@@ -2364,6 +2381,11 @@ msgstr "תצוגת לוח שנה"
|
||||
msgid "Calendars"
|
||||
msgstr "לוחות שנה"
|
||||
|
||||
#. js-lingui-id: qIlodj
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormPhoneFieldInput.tsx
|
||||
msgid "Calling Code"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: msssZq
|
||||
#: src/modules/settings/data-model/objects/forms/components/SettingsDataModelObjectAboutForm.tsx
|
||||
msgid "Can't change API names for standard objects"
|
||||
@@ -2500,11 +2522,6 @@ msgstr "שנה סוג צומת"
|
||||
msgid "Change Password"
|
||||
msgstr "שנה סיסמה"
|
||||
|
||||
#. js-lingui-id: wRtBJP
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Change Plan"
|
||||
msgstr "שנה תוכנית"
|
||||
|
||||
#. js-lingui-id: EYSFEW
|
||||
#: src/pages/settings/domains/SettingsDomain.tsx
|
||||
msgid "Change subdomain?"
|
||||
@@ -2602,7 +2619,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 "בחר את הפורמט להצגת תאריך"
|
||||
|
||||
@@ -2705,6 +2722,11 @@ msgstr "סוד של לקוח"
|
||||
msgid "Client Settings"
|
||||
msgstr "הגדרות לקוח"
|
||||
|
||||
#. js-lingui-id: mekEJ5
|
||||
#: src/hooks/useCopyToClipboard.tsx
|
||||
msgid "Clipboard requires a secure connection (HTTPS). Please access this app over HTTPS to enable copying."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yz7wBu
|
||||
#: src/modules/ui/feedback/snack-bar-manager/components/SnackBar.tsx
|
||||
msgid "Close"
|
||||
@@ -2747,6 +2769,7 @@ msgstr "קודד את הפונקציה שלך"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Collapse"
|
||||
@@ -3301,11 +3324,6 @@ msgstr "ספור ערכים ייחודיים"
|
||||
msgid "Country"
|
||||
msgstr "מדינה"
|
||||
|
||||
#. js-lingui-id: j2OqfX
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormPhoneFieldInput.tsx
|
||||
msgid "Country Code"
|
||||
msgstr "קוד מדינה"
|
||||
|
||||
#. js-lingui-id: gJdfqX
|
||||
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
|
||||
msgid "create"
|
||||
@@ -4826,6 +4844,7 @@ msgstr "<span dir=\"rtl\">דומיינים לשליחת מיילים</span>"
|
||||
#: src/pages/settings/accounts/SettingsAccountsEmails.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Emails"
|
||||
msgstr "דוא\"לים"
|
||||
|
||||
@@ -4877,6 +4896,7 @@ msgstr "ריק"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Empty Array"
|
||||
@@ -4897,6 +4917,7 @@ msgstr "תיבת דואר ריקה"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Empty Object"
|
||||
@@ -5024,10 +5045,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
|
||||
@@ -5092,6 +5113,11 @@ msgstr "הזן ערך בדיקה"
|
||||
msgid "Enter text"
|
||||
msgstr "הזן טקסט"
|
||||
|
||||
#. js-lingui-id: +rrO69
|
||||
#: src/modules/page-layout/widgets/standalone-rich-text/components/StandaloneRichTextEditorContent.tsx
|
||||
msgid "Enter text or type '/' for commands"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yZMXC2
|
||||
#: src/modules/advanced-text-editor/hooks/useAdvancedTextEditor.ts
|
||||
msgid "Enter text or Type '/' for commands"
|
||||
@@ -5488,6 +5514,7 @@ msgstr "יציאה מהגדרות"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Expand"
|
||||
@@ -6018,6 +6045,11 @@ msgstr ""
|
||||
msgid "File URL is not defined"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: sER+bs
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Files"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: o7J4JM
|
||||
#: src/pages/settings/data-model/SettingsObjectFieldTable.tsx
|
||||
#: src/pages/settings/ai/components/SettingsSkillsTable.tsx
|
||||
@@ -6121,6 +6153,7 @@ msgstr "שם פרטי לא יכול להיות ריק"
|
||||
|
||||
#. js-lingui-id: ylQd2j
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/utils/getActionHeaderTypeOrThrow.ts
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/command-menu/pages/workflow/action/components/CommandMenuWorkflowSelectAction.tsx
|
||||
msgid "Flow"
|
||||
msgstr "זרם"
|
||||
@@ -6586,6 +6619,11 @@ msgstr "הסתר קבוצה {groupValue}"
|
||||
msgid "Hide hidden groups"
|
||||
msgstr "הסתר קבוצות מוסתרות"
|
||||
|
||||
#. js-lingui-id: i0qMbr
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Home"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Xkd22/
|
||||
#: src/modules/page-layout/utils/getWidgetTitle.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/GraphTypeInformation.ts
|
||||
@@ -6897,6 +6935,7 @@ msgstr "מידע"
|
||||
#: src/modules/settings/logic-functions/components/tabs/SettingsLogicFunctionTestTab.tsx
|
||||
#: src/modules/command-menu/pages/workflow/step/view-run/components/CommandMenuWorkflowRunViewStepContent.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Input"
|
||||
msgstr "קלט"
|
||||
|
||||
@@ -7954,6 +7993,11 @@ msgstr "טווח מקסימלי"
|
||||
msgid "Maximum email addresses"
|
||||
msgstr "מקסימום כתובות דואר אלקטרוני"
|
||||
|
||||
#. js-lingui-id: 9UHNQc
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Maximum execution time in seconds (1-900)"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: PAhTVY
|
||||
#: src/modules/settings/data-model/fields/forms/components/SettingsDataModelFieldMaxValuesForm.tsx
|
||||
msgid "Maximum files"
|
||||
@@ -8656,6 +8700,11 @@ msgstr "אין שדות זמינים לבחירה"
|
||||
msgid "No body"
|
||||
msgstr "ללא גוף"
|
||||
|
||||
#. js-lingui-id: c3+z7H
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCallingCodeSelectInput.tsx
|
||||
msgid "No calling code"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: OTe3RI
|
||||
#: src/pages/settings/domains/SettingsDomain.tsx
|
||||
msgid "No change detected"
|
||||
@@ -8686,7 +8735,6 @@ msgstr "לא סופק הקשר לבקשה זו"
|
||||
#: src/modules/settings/data-model/fields/forms/phones/components/SettingsDataModelFieldPhonesForm.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/address/components/SettingsDataModelFieldAddressForm.tsx
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCountrySelectInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCountryCodeSelectInput.tsx
|
||||
msgid "No country"
|
||||
msgstr "אין מדינה"
|
||||
|
||||
@@ -9124,7 +9172,13 @@ msgstr "לא שותף על ידי {notSharedByFullName}"
|
||||
msgid "Not synced"
|
||||
msgstr "לא מסונכרן"
|
||||
|
||||
#. js-lingui-id: KiJn9B
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Note"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 1DBGsz
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/action-menu/actions/record-actions/constants/DefaultRecordActionsConfig.tsx
|
||||
msgid "Notes"
|
||||
msgstr "הערות"
|
||||
@@ -9502,6 +9556,11 @@ msgstr ""
|
||||
msgid "Organization"
|
||||
msgstr "ארגון"
|
||||
|
||||
#. js-lingui-id: zi/p7n
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Organization plan"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: nV6twc
|
||||
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuEditOrganizeActions.tsx
|
||||
msgid "Organize"
|
||||
@@ -9560,6 +9619,7 @@ msgstr "השבתה"
|
||||
#: src/modules/logic-functions/components/LogicFunctionExecutionResult.tsx
|
||||
#: src/modules/command-menu/pages/workflow/step/view-run/components/CommandMenuWorkflowRunViewStepContent.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/TerminalOutput.tsx
|
||||
#: src/modules/ai/components/CodeExecutionDisplay.tsx
|
||||
msgid "Output"
|
||||
@@ -10061,6 +10121,11 @@ msgstr "מדיניות הפרטיות"
|
||||
msgid "Pro"
|
||||
msgstr "מקצועי"
|
||||
|
||||
#. js-lingui-id: r5je1s
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Pro plan"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: k1ifdL
|
||||
#: src/modules/workflow/components/WorkflowStepExecutionResult.tsx
|
||||
#: src/modules/spreadsheet-import/steps/components/UploadStep/components/DropZone.tsx
|
||||
@@ -11920,6 +11985,14 @@ msgstr "רווחים ופסיק - {spacesAndCommaExample}"
|
||||
msgid "Spanish"
|
||||
msgstr "\\"
|
||||
|
||||
#. js-lingui-id: gsifzp
|
||||
#: src/modules/command-menu/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
|
||||
#: src/modules/command-menu/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
msgid "Split multiple values"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: vnS6Rf
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
msgid "SSO"
|
||||
@@ -12398,6 +12471,7 @@ msgid "Task Title"
|
||||
msgstr "כותרת המשימה"
|
||||
|
||||
#. js-lingui-id: GtycJ/
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/action-menu/actions/record-actions/constants/DefaultRecordActionsConfig.tsx
|
||||
msgid "Tasks"
|
||||
msgstr "משימות"
|
||||
@@ -12597,6 +12671,11 @@ msgstr "אין פעילות מקושרת לרשומה זו."
|
||||
msgid "There was an error while updating password."
|
||||
msgstr "אירעה תקלה בעדכון הסיסמה."
|
||||
|
||||
#. js-lingui-id: AUV+TY
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Thinking"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Ed99mE
|
||||
#: src/modules/ai/components/ReasoningSummaryDisplay.tsx
|
||||
msgid "Thinking..."
|
||||
@@ -12784,6 +12863,11 @@ msgstr "פעולה זו תמחק לצמיתות את שיטת האימות הד
|
||||
msgid "This will revert the database value to environment/default value. The database override will be removed and the system will use the environment settings."
|
||||
msgstr "פעולה זו תחזיר את הערך של בסיס הנתונים לערך הסביבה/ערך ברירת המחדל. המעקף של בסיס הנתונים יוסר והמערכת תשתמש בהגדרות הסביבה."
|
||||
|
||||
#. js-lingui-id: f8HOUp
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Thought"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 5g/sE8
|
||||
#: src/modules/action-menu/actions/record-actions/constants/WorkflowActionsConfig.tsx
|
||||
msgid "Tidy up"
|
||||
@@ -12815,10 +12899,16 @@ msgid "Time zone"
|
||||
msgstr "אזור זמן"
|
||||
|
||||
#. js-lingui-id: cklVjM
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCalendarViewContent.tsx
|
||||
msgid "Timeline"
|
||||
msgstr "ציר זמן"
|
||||
|
||||
#. js-lingui-id: xY9s5E
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Timeout"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8TMaZI
|
||||
#: src/pages/settings/security/event-logs/components/EventLogResultsTable.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogResultsTable.tsx
|
||||
@@ -13131,7 +13221,6 @@ msgid "Type"
|
||||
msgstr "סוג"
|
||||
|
||||
#. js-lingui-id: SKD2e4
|
||||
#: src/modules/page-layout/widgets/standalone-rich-text/components/StandaloneRichTextEditorContent.tsx
|
||||
#: src/modules/activities/components/ActivityRichTextEditor.tsx
|
||||
msgid "Type '/' for commands, '@' for mentions"
|
||||
msgstr ""
|
||||
@@ -13735,8 +13824,6 @@ msgid "View Logs"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: ecVcAx
|
||||
#: src/modules/ai/components/AIChatTab.tsx
|
||||
#: src/modules/ai/components/AIChatTab.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
msgid "View Previous AI Chats"
|
||||
@@ -13992,6 +14079,11 @@ msgstr ""
|
||||
msgid "When any deal with amount over $100,000 has its stage or amount updated, send a notification to the sales channel with the deal name, company, new stage, amount and owner."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8jc/Xn
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "When enabled, AI agents and workflow automations can discover and call this function"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: C51ilI
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
|
||||
msgid "When the API key will expire."
|
||||
@@ -14124,6 +14216,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 ""
|
||||
|
||||
@@ -106,6 +106,7 @@ msgstr "(kiválasztva: {selectedIconKey})"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "[empty string]"
|
||||
@@ -310,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})"
|
||||
@@ -381,6 +387,11 @@ msgstr "{selectedCount} forrástípus"
|
||||
msgid "{serviceLabel} service is unreachable"
|
||||
msgstr "A(z) {serviceLabel} szolgáltatás nem érhető el"
|
||||
|
||||
#. js-lingui-id: 8vJ+2V
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "{stepCount, plural, one {# step} other {# steps}}"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Bzjg0/
|
||||
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepCalendar.tsx
|
||||
msgid "{stepNumber}. Calendar"
|
||||
@@ -1829,6 +1840,7 @@ msgstr "Növekvő"
|
||||
#: src/modules/settings/roles/role-permissions/permission-flags/hooks/useActionRolePermissionFlagConfig.ts
|
||||
#: src/modules/navigation/components/MainNavigationDrawerFixedItems.tsx
|
||||
#: src/modules/command-menu/hooks/useOpenAskAIPageInCommandMenu.ts
|
||||
#: src/modules/command-menu/components/CommandMenuAskAIInfo.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
@@ -1967,7 +1979,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 ""
|
||||
@@ -2068,6 +2079,11 @@ msgstr "Elérhetőség"
|
||||
msgid "Available"
|
||||
msgstr "Elérhető"
|
||||
|
||||
#. js-lingui-id: 06gA3L
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Available as tool"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: oD38t2
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Available tools"
|
||||
@@ -2239,9 +2255,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
|
||||
@@ -2312,6 +2328,7 @@ msgstr "caldav.example.com"
|
||||
#. js-lingui-id: AjVXBS
|
||||
#: src/modules/views/view-picker/constants/ViewPickerTypeSelectOptions.ts
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
|
||||
msgid "Calendar"
|
||||
msgstr "Naptár"
|
||||
@@ -2364,6 +2381,11 @@ msgstr "Naptár nézet"
|
||||
msgid "Calendars"
|
||||
msgstr "Naptárak"
|
||||
|
||||
#. js-lingui-id: qIlodj
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormPhoneFieldInput.tsx
|
||||
msgid "Calling Code"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: msssZq
|
||||
#: src/modules/settings/data-model/objects/forms/components/SettingsDataModelObjectAboutForm.tsx
|
||||
msgid "Can't change API names for standard objects"
|
||||
@@ -2500,11 +2522,6 @@ msgstr "Csere csomópont típus"
|
||||
msgid "Change Password"
|
||||
msgstr "Jelszó megváltoztatása"
|
||||
|
||||
#. js-lingui-id: wRtBJP
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Change Plan"
|
||||
msgstr "Terv módosítása"
|
||||
|
||||
#. js-lingui-id: EYSFEW
|
||||
#: src/pages/settings/domains/SettingsDomain.tsx
|
||||
msgid "Change subdomain?"
|
||||
@@ -2602,7 +2619,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"
|
||||
|
||||
@@ -2705,6 +2722,11 @@ msgstr "Ügyféltitok"
|
||||
msgid "Client Settings"
|
||||
msgstr "Kliens beállítások"
|
||||
|
||||
#. js-lingui-id: mekEJ5
|
||||
#: src/hooks/useCopyToClipboard.tsx
|
||||
msgid "Clipboard requires a secure connection (HTTPS). Please access this app over HTTPS to enable copying."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yz7wBu
|
||||
#: src/modules/ui/feedback/snack-bar-manager/components/SnackBar.tsx
|
||||
msgid "Close"
|
||||
@@ -2747,6 +2769,7 @@ msgstr "Kódold a funkciódat"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Collapse"
|
||||
@@ -3301,11 +3324,6 @@ msgstr "Egyedi értékek számlálása"
|
||||
msgid "Country"
|
||||
msgstr "Ország"
|
||||
|
||||
#. js-lingui-id: j2OqfX
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormPhoneFieldInput.tsx
|
||||
msgid "Country Code"
|
||||
msgstr "Országkód"
|
||||
|
||||
#. js-lingui-id: gJdfqX
|
||||
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
|
||||
msgid "create"
|
||||
@@ -4826,6 +4844,7 @@ msgstr "Emailküldési Tartományok"
|
||||
#: src/pages/settings/accounts/SettingsAccountsEmails.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Emails"
|
||||
msgstr "Emailek"
|
||||
|
||||
@@ -4877,6 +4896,7 @@ msgstr "Üres"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Empty Array"
|
||||
@@ -4897,6 +4917,7 @@ msgstr "Üres Postafiók"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Empty Object"
|
||||
@@ -5024,10 +5045,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
|
||||
@@ -5092,6 +5113,11 @@ msgstr "Adja meg a tesztértéket"
|
||||
msgid "Enter text"
|
||||
msgstr "Írjon be szöveget"
|
||||
|
||||
#. js-lingui-id: +rrO69
|
||||
#: src/modules/page-layout/widgets/standalone-rich-text/components/StandaloneRichTextEditorContent.tsx
|
||||
msgid "Enter text or type '/' for commands"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yZMXC2
|
||||
#: src/modules/advanced-text-editor/hooks/useAdvancedTextEditor.ts
|
||||
msgid "Enter text or Type '/' for commands"
|
||||
@@ -5488,6 +5514,7 @@ msgstr "Kilépés a beállításokból"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Expand"
|
||||
@@ -6018,6 +6045,11 @@ msgstr ""
|
||||
msgid "File URL is not defined"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: sER+bs
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Files"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: o7J4JM
|
||||
#: src/pages/settings/data-model/SettingsObjectFieldTable.tsx
|
||||
#: src/pages/settings/ai/components/SettingsSkillsTable.tsx
|
||||
@@ -6121,6 +6153,7 @@ msgstr "A keresztnév nem lehet üres"
|
||||
|
||||
#. js-lingui-id: ylQd2j
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/utils/getActionHeaderTypeOrThrow.ts
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/command-menu/pages/workflow/action/components/CommandMenuWorkflowSelectAction.tsx
|
||||
msgid "Flow"
|
||||
msgstr "Folyamat"
|
||||
@@ -6586,6 +6619,11 @@ msgstr "Csoport elrejtése: {groupValue}"
|
||||
msgid "Hide hidden groups"
|
||||
msgstr "Rejtett csoportok elrejtése"
|
||||
|
||||
#. js-lingui-id: i0qMbr
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Home"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Xkd22/
|
||||
#: src/modules/page-layout/utils/getWidgetTitle.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/GraphTypeInformation.ts
|
||||
@@ -6897,6 +6935,7 @@ msgstr "Információk"
|
||||
#: src/modules/settings/logic-functions/components/tabs/SettingsLogicFunctionTestTab.tsx
|
||||
#: src/modules/command-menu/pages/workflow/step/view-run/components/CommandMenuWorkflowRunViewStepContent.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Input"
|
||||
msgstr "Bemenet"
|
||||
|
||||
@@ -7954,6 +7993,11 @@ msgstr "Maximális tartomány"
|
||||
msgid "Maximum email addresses"
|
||||
msgstr "Maximális email címek"
|
||||
|
||||
#. js-lingui-id: 9UHNQc
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Maximum execution time in seconds (1-900)"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: PAhTVY
|
||||
#: src/modules/settings/data-model/fields/forms/components/SettingsDataModelFieldMaxValuesForm.tsx
|
||||
msgid "Maximum files"
|
||||
@@ -8656,6 +8700,11 @@ msgstr "Nincsenek kiválasztható mezők"
|
||||
msgid "No body"
|
||||
msgstr "Nincs törzs"
|
||||
|
||||
#. js-lingui-id: c3+z7H
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCallingCodeSelectInput.tsx
|
||||
msgid "No calling code"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: OTe3RI
|
||||
#: src/pages/settings/domains/SettingsDomain.tsx
|
||||
msgid "No change detected"
|
||||
@@ -8686,7 +8735,6 @@ msgstr "Ehhez a kéréshez nem lett kontextus megadva"
|
||||
#: src/modules/settings/data-model/fields/forms/phones/components/SettingsDataModelFieldPhonesForm.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/address/components/SettingsDataModelFieldAddressForm.tsx
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCountrySelectInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCountryCodeSelectInput.tsx
|
||||
msgid "No country"
|
||||
msgstr "Nincs ország"
|
||||
|
||||
@@ -9124,7 +9172,13 @@ msgstr "Nem osztotta meg {notSharedByFullName}"
|
||||
msgid "Not synced"
|
||||
msgstr "Nincs szinkronizálva"
|
||||
|
||||
#. js-lingui-id: KiJn9B
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Note"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 1DBGsz
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/action-menu/actions/record-actions/constants/DefaultRecordActionsConfig.tsx
|
||||
msgid "Notes"
|
||||
msgstr "Jegyzetek"
|
||||
@@ -9502,6 +9556,11 @@ msgstr ""
|
||||
msgid "Organization"
|
||||
msgstr "Szervezet"
|
||||
|
||||
#. js-lingui-id: zi/p7n
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Organization plan"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: nV6twc
|
||||
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuEditOrganizeActions.tsx
|
||||
msgid "Organize"
|
||||
@@ -9560,6 +9619,7 @@ msgstr "Leállás"
|
||||
#: src/modules/logic-functions/components/LogicFunctionExecutionResult.tsx
|
||||
#: src/modules/command-menu/pages/workflow/step/view-run/components/CommandMenuWorkflowRunViewStepContent.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/TerminalOutput.tsx
|
||||
#: src/modules/ai/components/CodeExecutionDisplay.tsx
|
||||
msgid "Output"
|
||||
@@ -10061,6 +10121,11 @@ msgstr "Adatvédelmi irányelvek"
|
||||
msgid "Pro"
|
||||
msgstr "Pro"
|
||||
|
||||
#. js-lingui-id: r5je1s
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Pro plan"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: k1ifdL
|
||||
#: src/modules/workflow/components/WorkflowStepExecutionResult.tsx
|
||||
#: src/modules/spreadsheet-import/steps/components/UploadStep/components/DropZone.tsx
|
||||
@@ -11920,6 +11985,14 @@ msgstr "Szóközök és vessző - {spacesAndCommaExample}"
|
||||
msgid "Spanish"
|
||||
msgstr "Spanyol"
|
||||
|
||||
#. js-lingui-id: gsifzp
|
||||
#: src/modules/command-menu/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
|
||||
#: src/modules/command-menu/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
msgid "Split multiple values"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: vnS6Rf
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
msgid "SSO"
|
||||
@@ -12398,6 +12471,7 @@ msgid "Task Title"
|
||||
msgstr "Feladat címe"
|
||||
|
||||
#. js-lingui-id: GtycJ/
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/action-menu/actions/record-actions/constants/DefaultRecordActionsConfig.tsx
|
||||
msgid "Tasks"
|
||||
msgstr "Feladatok"
|
||||
@@ -12597,6 +12671,11 @@ msgstr "Ehhez a rekordhoz nem tartozik tevékenység."
|
||||
msgid "There was an error while updating password."
|
||||
msgstr "Hiba történt a jelszó frissítése közben."
|
||||
|
||||
#. js-lingui-id: AUV+TY
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Thinking"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Ed99mE
|
||||
#: src/modules/ai/components/ReasoningSummaryDisplay.tsx
|
||||
msgid "Thinking..."
|
||||
@@ -12784,6 +12863,11 @@ msgstr "Ez véglegesen törli a kétlépcsős hitelesítési módszerét.<0/>Miv
|
||||
msgid "This will revert the database value to environment/default value. The database override will be removed and the system will use the environment settings."
|
||||
msgstr "Ez visszaállítja az adatbázis értéket a környezet/alapértelmezett értékre. Az adatbázis felülbírálat eltávolításra kerül, a rendszer pedig a környezet beállításait fogja használni."
|
||||
|
||||
#. js-lingui-id: f8HOUp
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Thought"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 5g/sE8
|
||||
#: src/modules/action-menu/actions/record-actions/constants/WorkflowActionsConfig.tsx
|
||||
msgid "Tidy up"
|
||||
@@ -12815,10 +12899,16 @@ msgid "Time zone"
|
||||
msgstr "Időzóna"
|
||||
|
||||
#. js-lingui-id: cklVjM
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCalendarViewContent.tsx
|
||||
msgid "Timeline"
|
||||
msgstr "Idővonal"
|
||||
|
||||
#. js-lingui-id: xY9s5E
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Timeout"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8TMaZI
|
||||
#: src/pages/settings/security/event-logs/components/EventLogResultsTable.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogResultsTable.tsx
|
||||
@@ -13131,7 +13221,6 @@ msgid "Type"
|
||||
msgstr "Típus"
|
||||
|
||||
#. js-lingui-id: SKD2e4
|
||||
#: src/modules/page-layout/widgets/standalone-rich-text/components/StandaloneRichTextEditorContent.tsx
|
||||
#: src/modules/activities/components/ActivityRichTextEditor.tsx
|
||||
msgid "Type '/' for commands, '@' for mentions"
|
||||
msgstr ""
|
||||
@@ -13735,8 +13824,6 @@ msgid "View Logs"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: ecVcAx
|
||||
#: src/modules/ai/components/AIChatTab.tsx
|
||||
#: src/modules/ai/components/AIChatTab.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
msgid "View Previous AI Chats"
|
||||
@@ -13992,6 +14079,11 @@ msgstr ""
|
||||
msgid "When any deal with amount over $100,000 has its stage or amount updated, send a notification to the sales channel with the deal name, company, new stage, amount and owner."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8jc/Xn
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "When enabled, AI agents and workflow automations can discover and call this function"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: C51ilI
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
|
||||
msgid "When the API key will expire."
|
||||
@@ -14124,6 +14216,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 ""
|
||||
|
||||
@@ -106,6 +106,7 @@ msgstr "(selezionato: {selectedIconKey})"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "[empty string]"
|
||||
@@ -310,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})"
|
||||
@@ -381,6 +387,11 @@ msgstr "{selectedCount} tipi di origine"
|
||||
msgid "{serviceLabel} service is unreachable"
|
||||
msgstr "Il servizio {serviceLabel} non è raggiungibile"
|
||||
|
||||
#. js-lingui-id: 8vJ+2V
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "{stepCount, plural, one {# step} other {# steps}}"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Bzjg0/
|
||||
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepCalendar.tsx
|
||||
msgid "{stepNumber}. Calendar"
|
||||
@@ -1829,6 +1840,7 @@ msgstr "Ascendente"
|
||||
#: src/modules/settings/roles/role-permissions/permission-flags/hooks/useActionRolePermissionFlagConfig.ts
|
||||
#: src/modules/navigation/components/MainNavigationDrawerFixedItems.tsx
|
||||
#: src/modules/command-menu/hooks/useOpenAskAIPageInCommandMenu.ts
|
||||
#: src/modules/command-menu/components/CommandMenuAskAIInfo.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
@@ -1967,7 +1979,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 ""
|
||||
@@ -2068,6 +2079,11 @@ msgstr "Disponibilità"
|
||||
msgid "Available"
|
||||
msgstr "Disponibile"
|
||||
|
||||
#. js-lingui-id: 06gA3L
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Available as tool"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: oD38t2
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Available tools"
|
||||
@@ -2239,9 +2255,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
|
||||
@@ -2312,6 +2328,7 @@ msgstr "caldav.example.com"
|
||||
#. js-lingui-id: AjVXBS
|
||||
#: src/modules/views/view-picker/constants/ViewPickerTypeSelectOptions.ts
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
|
||||
msgid "Calendar"
|
||||
msgstr "Calendario"
|
||||
@@ -2364,6 +2381,11 @@ msgstr "Vista Calendario"
|
||||
msgid "Calendars"
|
||||
msgstr "Calendari"
|
||||
|
||||
#. js-lingui-id: qIlodj
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormPhoneFieldInput.tsx
|
||||
msgid "Calling Code"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: msssZq
|
||||
#: src/modules/settings/data-model/objects/forms/components/SettingsDataModelObjectAboutForm.tsx
|
||||
msgid "Can't change API names for standard objects"
|
||||
@@ -2500,11 +2522,6 @@ msgstr "Cambia il tipo di nodo"
|
||||
msgid "Change Password"
|
||||
msgstr "Cambia password"
|
||||
|
||||
#. js-lingui-id: wRtBJP
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Change Plan"
|
||||
msgstr "Cambia piano"
|
||||
|
||||
#. js-lingui-id: EYSFEW
|
||||
#: src/pages/settings/domains/SettingsDomain.tsx
|
||||
msgid "Change subdomain?"
|
||||
@@ -2602,7 +2619,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"
|
||||
|
||||
@@ -2705,6 +2722,11 @@ msgstr "Segreto del client"
|
||||
msgid "Client Settings"
|
||||
msgstr "Impostazioni client"
|
||||
|
||||
#. js-lingui-id: mekEJ5
|
||||
#: src/hooks/useCopyToClipboard.tsx
|
||||
msgid "Clipboard requires a secure connection (HTTPS). Please access this app over HTTPS to enable copying."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yz7wBu
|
||||
#: src/modules/ui/feedback/snack-bar-manager/components/SnackBar.tsx
|
||||
msgid "Close"
|
||||
@@ -2747,6 +2769,7 @@ msgstr "Codifica la tua funzione"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Collapse"
|
||||
@@ -3301,11 +3324,6 @@ msgstr "Conta valori unici"
|
||||
msgid "Country"
|
||||
msgstr "Paese"
|
||||
|
||||
#. js-lingui-id: j2OqfX
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormPhoneFieldInput.tsx
|
||||
msgid "Country Code"
|
||||
msgstr "Prefisso internazionale"
|
||||
|
||||
#. js-lingui-id: gJdfqX
|
||||
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
|
||||
msgid "create"
|
||||
@@ -4826,6 +4844,7 @@ msgstr "Domini di email"
|
||||
#: src/pages/settings/accounts/SettingsAccountsEmails.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Emails"
|
||||
msgstr "Email"
|
||||
|
||||
@@ -4877,6 +4896,7 @@ msgstr "Vuoto"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Empty Array"
|
||||
@@ -4897,6 +4917,7 @@ msgstr "Posta in arrivo vuota"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Empty Object"
|
||||
@@ -5024,10 +5045,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
|
||||
@@ -5092,6 +5113,11 @@ msgstr "Inserisci un valore di test"
|
||||
msgid "Enter text"
|
||||
msgstr "Inserisci il testo"
|
||||
|
||||
#. js-lingui-id: +rrO69
|
||||
#: src/modules/page-layout/widgets/standalone-rich-text/components/StandaloneRichTextEditorContent.tsx
|
||||
msgid "Enter text or type '/' for commands"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yZMXC2
|
||||
#: src/modules/advanced-text-editor/hooks/useAdvancedTextEditor.ts
|
||||
msgid "Enter text or Type '/' for commands"
|
||||
@@ -5488,6 +5514,7 @@ msgstr "Esci dalle impostazioni"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Expand"
|
||||
@@ -6018,6 +6045,11 @@ msgstr ""
|
||||
msgid "File URL is not defined"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: sER+bs
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Files"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: o7J4JM
|
||||
#: src/pages/settings/data-model/SettingsObjectFieldTable.tsx
|
||||
#: src/pages/settings/ai/components/SettingsSkillsTable.tsx
|
||||
@@ -6121,6 +6153,7 @@ msgstr "Il nome non può essere vuoto"
|
||||
|
||||
#. js-lingui-id: ylQd2j
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/utils/getActionHeaderTypeOrThrow.ts
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/command-menu/pages/workflow/action/components/CommandMenuWorkflowSelectAction.tsx
|
||||
msgid "Flow"
|
||||
msgstr "Flusso"
|
||||
@@ -6586,6 +6619,11 @@ msgstr "Nascondi gruppo {groupValue}"
|
||||
msgid "Hide hidden groups"
|
||||
msgstr "Nascondi gruppi nascosti"
|
||||
|
||||
#. js-lingui-id: i0qMbr
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Home"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Xkd22/
|
||||
#: src/modules/page-layout/utils/getWidgetTitle.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/GraphTypeInformation.ts
|
||||
@@ -6897,6 +6935,7 @@ msgstr "Informazioni"
|
||||
#: src/modules/settings/logic-functions/components/tabs/SettingsLogicFunctionTestTab.tsx
|
||||
#: src/modules/command-menu/pages/workflow/step/view-run/components/CommandMenuWorkflowRunViewStepContent.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Input"
|
||||
msgstr "Input"
|
||||
|
||||
@@ -7954,6 +7993,11 @@ msgstr "Intervallo massimo"
|
||||
msgid "Maximum email addresses"
|
||||
msgstr "Indirizzi email massimi"
|
||||
|
||||
#. js-lingui-id: 9UHNQc
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Maximum execution time in seconds (1-900)"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: PAhTVY
|
||||
#: src/modules/settings/data-model/fields/forms/components/SettingsDataModelFieldMaxValuesForm.tsx
|
||||
msgid "Maximum files"
|
||||
@@ -8656,6 +8700,11 @@ msgstr "Nessun campo disponibile da selezionare"
|
||||
msgid "No body"
|
||||
msgstr "Nessun corpo"
|
||||
|
||||
#. js-lingui-id: c3+z7H
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCallingCodeSelectInput.tsx
|
||||
msgid "No calling code"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: OTe3RI
|
||||
#: src/pages/settings/domains/SettingsDomain.tsx
|
||||
msgid "No change detected"
|
||||
@@ -8686,7 +8735,6 @@ msgstr "Nessun contesto è stato fornito per questa richiesta"
|
||||
#: src/modules/settings/data-model/fields/forms/phones/components/SettingsDataModelFieldPhonesForm.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/address/components/SettingsDataModelFieldAddressForm.tsx
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCountrySelectInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCountryCodeSelectInput.tsx
|
||||
msgid "No country"
|
||||
msgstr "Nessun paese"
|
||||
|
||||
@@ -9124,7 +9172,13 @@ msgstr "Non condiviso da {notSharedByFullName}"
|
||||
msgid "Not synced"
|
||||
msgstr "Non sincronizzato"
|
||||
|
||||
#. js-lingui-id: KiJn9B
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Note"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 1DBGsz
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/action-menu/actions/record-actions/constants/DefaultRecordActionsConfig.tsx
|
||||
msgid "Notes"
|
||||
msgstr "Note"
|
||||
@@ -9502,6 +9556,11 @@ msgstr ""
|
||||
msgid "Organization"
|
||||
msgstr "Organizzazione"
|
||||
|
||||
#. js-lingui-id: zi/p7n
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Organization plan"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: nV6twc
|
||||
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuEditOrganizeActions.tsx
|
||||
msgid "Organize"
|
||||
@@ -9560,6 +9619,7 @@ msgstr "Interruzione"
|
||||
#: src/modules/logic-functions/components/LogicFunctionExecutionResult.tsx
|
||||
#: src/modules/command-menu/pages/workflow/step/view-run/components/CommandMenuWorkflowRunViewStepContent.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/TerminalOutput.tsx
|
||||
#: src/modules/ai/components/CodeExecutionDisplay.tsx
|
||||
msgid "Output"
|
||||
@@ -10061,6 +10121,11 @@ msgstr "Informativa sulla privacy"
|
||||
msgid "Pro"
|
||||
msgstr "Pro"
|
||||
|
||||
#. js-lingui-id: r5je1s
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Pro plan"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: k1ifdL
|
||||
#: src/modules/workflow/components/WorkflowStepExecutionResult.tsx
|
||||
#: src/modules/spreadsheet-import/steps/components/UploadStep/components/DropZone.tsx
|
||||
@@ -11920,6 +11985,14 @@ msgstr "Spazi e virgola - {spacesAndCommaExample}"
|
||||
msgid "Spanish"
|
||||
msgstr "Spagnolo"
|
||||
|
||||
#. js-lingui-id: gsifzp
|
||||
#: src/modules/command-menu/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
|
||||
#: src/modules/command-menu/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
msgid "Split multiple values"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: vnS6Rf
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
msgid "SSO"
|
||||
@@ -12398,6 +12471,7 @@ msgid "Task Title"
|
||||
msgstr "Titolo dell'attività"
|
||||
|
||||
#. js-lingui-id: GtycJ/
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/action-menu/actions/record-actions/constants/DefaultRecordActionsConfig.tsx
|
||||
msgid "Tasks"
|
||||
msgstr "Attività"
|
||||
@@ -12597,6 +12671,11 @@ msgstr "Non ci sono attività associate a questo record."
|
||||
msgid "There was an error while updating password."
|
||||
msgstr "Errore durante l'aggiornamento della password."
|
||||
|
||||
#. js-lingui-id: AUV+TY
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Thinking"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Ed99mE
|
||||
#: src/modules/ai/components/ReasoningSummaryDisplay.tsx
|
||||
msgid "Thinking..."
|
||||
@@ -12786,6 +12865,11 @@ msgstr "Questo eliminerà definitivamente il tuo metodo di autenticazione a due
|
||||
msgid "This will revert the database value to environment/default value. The database override will be removed and the system will use the environment settings."
|
||||
msgstr "Ciò ripristinerà il valore del database al valore di ambiente/predefinito. L'override del database verrà rimosso e il sistema utilizzerà le impostazioni dell'ambiente."
|
||||
|
||||
#. js-lingui-id: f8HOUp
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Thought"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 5g/sE8
|
||||
#: src/modules/action-menu/actions/record-actions/constants/WorkflowActionsConfig.tsx
|
||||
msgid "Tidy up"
|
||||
@@ -12817,10 +12901,16 @@ msgid "Time zone"
|
||||
msgstr "Fuso orario"
|
||||
|
||||
#. js-lingui-id: cklVjM
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCalendarViewContent.tsx
|
||||
msgid "Timeline"
|
||||
msgstr "Sequenza temporale"
|
||||
|
||||
#. js-lingui-id: xY9s5E
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Timeout"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8TMaZI
|
||||
#: src/pages/settings/security/event-logs/components/EventLogResultsTable.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogResultsTable.tsx
|
||||
@@ -13133,7 +13223,6 @@ msgid "Type"
|
||||
msgstr "Tipo"
|
||||
|
||||
#. js-lingui-id: SKD2e4
|
||||
#: src/modules/page-layout/widgets/standalone-rich-text/components/StandaloneRichTextEditorContent.tsx
|
||||
#: src/modules/activities/components/ActivityRichTextEditor.tsx
|
||||
msgid "Type '/' for commands, '@' for mentions"
|
||||
msgstr ""
|
||||
@@ -13737,8 +13826,6 @@ msgid "View Logs"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: ecVcAx
|
||||
#: src/modules/ai/components/AIChatTab.tsx
|
||||
#: src/modules/ai/components/AIChatTab.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
msgid "View Previous AI Chats"
|
||||
@@ -13994,6 +14081,11 @@ msgstr ""
|
||||
msgid "When any deal with amount over $100,000 has its stage or amount updated, send a notification to the sales channel with the deal name, company, new stage, amount and owner."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8jc/Xn
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "When enabled, AI agents and workflow automations can discover and call this function"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: C51ilI
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
|
||||
msgid "When the API key will expire."
|
||||
@@ -14126,6 +14218,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 ""
|
||||
|
||||
@@ -106,6 +106,7 @@ msgstr "(選択済み: {selectedIconKey})"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "[empty string]"
|
||||
@@ -310,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})"
|
||||
@@ -381,6 +387,11 @@ msgstr "{selectedCount} 種類のソース"
|
||||
msgid "{serviceLabel} service is unreachable"
|
||||
msgstr "{serviceLabel} サービスに到達できません"
|
||||
|
||||
#. js-lingui-id: 8vJ+2V
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "{stepCount, plural, one {# step} other {# steps}}"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Bzjg0/
|
||||
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepCalendar.tsx
|
||||
msgid "{stepNumber}. Calendar"
|
||||
@@ -1829,6 +1840,7 @@ msgstr "昇順"
|
||||
#: src/modules/settings/roles/role-permissions/permission-flags/hooks/useActionRolePermissionFlagConfig.ts
|
||||
#: src/modules/navigation/components/MainNavigationDrawerFixedItems.tsx
|
||||
#: src/modules/command-menu/hooks/useOpenAskAIPageInCommandMenu.ts
|
||||
#: src/modules/command-menu/components/CommandMenuAskAIInfo.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
@@ -1967,7 +1979,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 ""
|
||||
@@ -2068,6 +2079,11 @@ msgstr "利用可能"
|
||||
msgid "Available"
|
||||
msgstr "利用可能"
|
||||
|
||||
#. js-lingui-id: 06gA3L
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Available as tool"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: oD38t2
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Available tools"
|
||||
@@ -2239,9 +2255,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
|
||||
@@ -2312,6 +2328,7 @@ msgstr "caldav.example.com"
|
||||
#. js-lingui-id: AjVXBS
|
||||
#: src/modules/views/view-picker/constants/ViewPickerTypeSelectOptions.ts
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
|
||||
msgid "Calendar"
|
||||
msgstr "カレンダー"
|
||||
@@ -2364,6 +2381,11 @@ msgstr "カレンダー表示"
|
||||
msgid "Calendars"
|
||||
msgstr "カレンダー"
|
||||
|
||||
#. js-lingui-id: qIlodj
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormPhoneFieldInput.tsx
|
||||
msgid "Calling Code"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: msssZq
|
||||
#: src/modules/settings/data-model/objects/forms/components/SettingsDataModelObjectAboutForm.tsx
|
||||
msgid "Can't change API names for standard objects"
|
||||
@@ -2500,11 +2522,6 @@ msgstr "ノードの種類を変更"
|
||||
msgid "Change Password"
|
||||
msgstr "パスワードを変更"
|
||||
|
||||
#. js-lingui-id: wRtBJP
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Change Plan"
|
||||
msgstr "プランを変更"
|
||||
|
||||
#. js-lingui-id: EYSFEW
|
||||
#: src/pages/settings/domains/SettingsDomain.tsx
|
||||
msgid "Change subdomain?"
|
||||
@@ -2602,7 +2619,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 "日付値を表示するために使用される形式を選択"
|
||||
|
||||
@@ -2705,6 +2722,11 @@ msgstr "クライアントシークレット"
|
||||
msgid "Client Settings"
|
||||
msgstr "クライアント設定"
|
||||
|
||||
#. js-lingui-id: mekEJ5
|
||||
#: src/hooks/useCopyToClipboard.tsx
|
||||
msgid "Clipboard requires a secure connection (HTTPS). Please access this app over HTTPS to enable copying."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yz7wBu
|
||||
#: src/modules/ui/feedback/snack-bar-manager/components/SnackBar.tsx
|
||||
msgid "Close"
|
||||
@@ -2747,6 +2769,7 @@ msgstr "関数をコーディング"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Collapse"
|
||||
@@ -3301,11 +3324,6 @@ msgstr "一意の値をカウント"
|
||||
msgid "Country"
|
||||
msgstr "国"
|
||||
|
||||
#. js-lingui-id: j2OqfX
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormPhoneFieldInput.tsx
|
||||
msgid "Country Code"
|
||||
msgstr "国コード"
|
||||
|
||||
#. js-lingui-id: gJdfqX
|
||||
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
|
||||
msgid "create"
|
||||
@@ -4826,6 +4844,7 @@ msgstr "メール送信用ドメイン"
|
||||
#: src/pages/settings/accounts/SettingsAccountsEmails.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Emails"
|
||||
msgstr "メール"
|
||||
|
||||
@@ -4877,6 +4896,7 @@ msgstr "空"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Empty Array"
|
||||
@@ -4897,6 +4917,7 @@ msgstr "受信トレイを空にする"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Empty Object"
|
||||
@@ -5024,10 +5045,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
|
||||
@@ -5092,6 +5113,11 @@ msgstr "テスト値を入力"
|
||||
msgid "Enter text"
|
||||
msgstr "テキストを入力"
|
||||
|
||||
#. js-lingui-id: +rrO69
|
||||
#: src/modules/page-layout/widgets/standalone-rich-text/components/StandaloneRichTextEditorContent.tsx
|
||||
msgid "Enter text or type '/' for commands"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yZMXC2
|
||||
#: src/modules/advanced-text-editor/hooks/useAdvancedTextEditor.ts
|
||||
msgid "Enter text or Type '/' for commands"
|
||||
@@ -5488,6 +5514,7 @@ msgstr "設定を終了"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Expand"
|
||||
@@ -6018,6 +6045,11 @@ msgstr ""
|
||||
msgid "File URL is not defined"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: sER+bs
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Files"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: o7J4JM
|
||||
#: src/pages/settings/data-model/SettingsObjectFieldTable.tsx
|
||||
#: src/pages/settings/ai/components/SettingsSkillsTable.tsx
|
||||
@@ -6121,6 +6153,7 @@ msgstr "名は空にできません"
|
||||
|
||||
#. js-lingui-id: ylQd2j
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/utils/getActionHeaderTypeOrThrow.ts
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/command-menu/pages/workflow/action/components/CommandMenuWorkflowSelectAction.tsx
|
||||
msgid "Flow"
|
||||
msgstr "フロー"
|
||||
@@ -6586,6 +6619,11 @@ msgstr "グループ {groupValue} を非表示"
|
||||
msgid "Hide hidden groups"
|
||||
msgstr "隠されたグループを非表示"
|
||||
|
||||
#. js-lingui-id: i0qMbr
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Home"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Xkd22/
|
||||
#: src/modules/page-layout/utils/getWidgetTitle.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/GraphTypeInformation.ts
|
||||
@@ -6897,6 +6935,7 @@ msgstr "情報"
|
||||
#: src/modules/settings/logic-functions/components/tabs/SettingsLogicFunctionTestTab.tsx
|
||||
#: src/modules/command-menu/pages/workflow/step/view-run/components/CommandMenuWorkflowRunViewStepContent.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Input"
|
||||
msgstr "入力"
|
||||
|
||||
@@ -7954,6 +7993,11 @@ msgstr "最大範囲"
|
||||
msgid "Maximum email addresses"
|
||||
msgstr "最大メールアドレス数"
|
||||
|
||||
#. js-lingui-id: 9UHNQc
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Maximum execution time in seconds (1-900)"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: PAhTVY
|
||||
#: src/modules/settings/data-model/fields/forms/components/SettingsDataModelFieldMaxValuesForm.tsx
|
||||
msgid "Maximum files"
|
||||
@@ -8656,6 +8700,11 @@ msgstr "選択可能なフィールドがありません"
|
||||
msgid "No body"
|
||||
msgstr "本文なし"
|
||||
|
||||
#. js-lingui-id: c3+z7H
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCallingCodeSelectInput.tsx
|
||||
msgid "No calling code"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: OTe3RI
|
||||
#: src/pages/settings/domains/SettingsDomain.tsx
|
||||
msgid "No change detected"
|
||||
@@ -8686,7 +8735,6 @@ msgstr "このリクエストにはコンテキストが提供されていませ
|
||||
#: src/modules/settings/data-model/fields/forms/phones/components/SettingsDataModelFieldPhonesForm.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/address/components/SettingsDataModelFieldAddressForm.tsx
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCountrySelectInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCountryCodeSelectInput.tsx
|
||||
msgid "No country"
|
||||
msgstr "国なし"
|
||||
|
||||
@@ -9124,7 +9172,13 @@ msgstr "{notSharedByFullName}によって共有されていません"
|
||||
msgid "Not synced"
|
||||
msgstr "同期されていません"
|
||||
|
||||
#. js-lingui-id: KiJn9B
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Note"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 1DBGsz
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/action-menu/actions/record-actions/constants/DefaultRecordActionsConfig.tsx
|
||||
msgid "Notes"
|
||||
msgstr "ノート"
|
||||
@@ -9502,6 +9556,11 @@ msgstr ""
|
||||
msgid "Organization"
|
||||
msgstr "組織"
|
||||
|
||||
#. js-lingui-id: zi/p7n
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Organization plan"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: nV6twc
|
||||
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuEditOrganizeActions.tsx
|
||||
msgid "Organize"
|
||||
@@ -9560,6 +9619,7 @@ msgstr "障害"
|
||||
#: src/modules/logic-functions/components/LogicFunctionExecutionResult.tsx
|
||||
#: src/modules/command-menu/pages/workflow/step/view-run/components/CommandMenuWorkflowRunViewStepContent.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/TerminalOutput.tsx
|
||||
#: src/modules/ai/components/CodeExecutionDisplay.tsx
|
||||
msgid "Output"
|
||||
@@ -10061,6 +10121,11 @@ msgstr "プライバシーポリシー"
|
||||
msgid "Pro"
|
||||
msgstr "プロ"
|
||||
|
||||
#. js-lingui-id: r5je1s
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Pro plan"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: k1ifdL
|
||||
#: src/modules/workflow/components/WorkflowStepExecutionResult.tsx
|
||||
#: src/modules/spreadsheet-import/steps/components/UploadStep/components/DropZone.tsx
|
||||
@@ -11920,6 +11985,14 @@ msgstr "スペースとコンマ - {spacesAndCommaExample}"
|
||||
msgid "Spanish"
|
||||
msgstr "スペイン語"
|
||||
|
||||
#. js-lingui-id: gsifzp
|
||||
#: src/modules/command-menu/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
|
||||
#: src/modules/command-menu/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
msgid "Split multiple values"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: vnS6Rf
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
msgid "SSO"
|
||||
@@ -12398,6 +12471,7 @@ msgid "Task Title"
|
||||
msgstr "タスクのタイトル"
|
||||
|
||||
#. js-lingui-id: GtycJ/
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/action-menu/actions/record-actions/constants/DefaultRecordActionsConfig.tsx
|
||||
msgid "Tasks"
|
||||
msgstr "タスク"
|
||||
@@ -12597,6 +12671,11 @@ msgstr "このレコードに関連付けられたアクティビティはあり
|
||||
msgid "There was an error while updating password."
|
||||
msgstr "パスワードの更新中にエラーが発生しました"
|
||||
|
||||
#. js-lingui-id: AUV+TY
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Thinking"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Ed99mE
|
||||
#: src/modules/ai/components/ReasoningSummaryDisplay.tsx
|
||||
msgid "Thinking..."
|
||||
@@ -12784,6 +12863,11 @@ msgstr "これにより、二要素認証の方法が完全に削除されます
|
||||
msgid "This will revert the database value to environment/default value. The database override will be removed and the system will use the environment settings."
|
||||
msgstr "これはデータベース値を環境/デフォルト値に戻します。データベースの上書きは削除され、システムは環境設定を使用します。"
|
||||
|
||||
#. js-lingui-id: f8HOUp
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Thought"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 5g/sE8
|
||||
#: src/modules/action-menu/actions/record-actions/constants/WorkflowActionsConfig.tsx
|
||||
msgid "Tidy up"
|
||||
@@ -12815,10 +12899,16 @@ msgid "Time zone"
|
||||
msgstr "タイムゾーン"
|
||||
|
||||
#. js-lingui-id: cklVjM
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCalendarViewContent.tsx
|
||||
msgid "Timeline"
|
||||
msgstr "タイムライン"
|
||||
|
||||
#. js-lingui-id: xY9s5E
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Timeout"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8TMaZI
|
||||
#: src/pages/settings/security/event-logs/components/EventLogResultsTable.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogResultsTable.tsx
|
||||
@@ -13131,7 +13221,6 @@ msgid "Type"
|
||||
msgstr "タイプ"
|
||||
|
||||
#. js-lingui-id: SKD2e4
|
||||
#: src/modules/page-layout/widgets/standalone-rich-text/components/StandaloneRichTextEditorContent.tsx
|
||||
#: src/modules/activities/components/ActivityRichTextEditor.tsx
|
||||
msgid "Type '/' for commands, '@' for mentions"
|
||||
msgstr ""
|
||||
@@ -13735,8 +13824,6 @@ msgid "View Logs"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: ecVcAx
|
||||
#: src/modules/ai/components/AIChatTab.tsx
|
||||
#: src/modules/ai/components/AIChatTab.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
msgid "View Previous AI Chats"
|
||||
@@ -13992,6 +14079,11 @@ msgstr ""
|
||||
msgid "When any deal with amount over $100,000 has its stage or amount updated, send a notification to the sales channel with the deal name, company, new stage, amount and owner."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8jc/Xn
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "When enabled, AI agents and workflow automations can discover and call this function"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: C51ilI
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
|
||||
msgid "When the API key will expire."
|
||||
@@ -14124,6 +14216,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 ""
|
||||
|
||||
@@ -106,6 +106,7 @@ msgstr "(선택됨: {selectedIconKey})"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "[empty string]"
|
||||
@@ -310,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})"
|
||||
@@ -381,6 +387,11 @@ msgstr "소스 유형 {selectedCount}개"
|
||||
msgid "{serviceLabel} service is unreachable"
|
||||
msgstr "{serviceLabel} 서비스에 연결할 수 없습니다"
|
||||
|
||||
#. js-lingui-id: 8vJ+2V
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "{stepCount, plural, one {# step} other {# steps}}"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Bzjg0/
|
||||
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepCalendar.tsx
|
||||
msgid "{stepNumber}. Calendar"
|
||||
@@ -1829,6 +1840,7 @@ msgstr "오름차순"
|
||||
#: src/modules/settings/roles/role-permissions/permission-flags/hooks/useActionRolePermissionFlagConfig.ts
|
||||
#: src/modules/navigation/components/MainNavigationDrawerFixedItems.tsx
|
||||
#: src/modules/command-menu/hooks/useOpenAskAIPageInCommandMenu.ts
|
||||
#: src/modules/command-menu/components/CommandMenuAskAIInfo.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
@@ -1967,7 +1979,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 ""
|
||||
@@ -2068,6 +2079,11 @@ msgstr "사용 가능성"
|
||||
msgid "Available"
|
||||
msgstr "사용 가능"
|
||||
|
||||
#. js-lingui-id: 06gA3L
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Available as tool"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: oD38t2
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Available tools"
|
||||
@@ -2239,9 +2255,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
|
||||
@@ -2312,6 +2328,7 @@ msgstr "caldav.example.com"
|
||||
#. js-lingui-id: AjVXBS
|
||||
#: src/modules/views/view-picker/constants/ViewPickerTypeSelectOptions.ts
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
|
||||
msgid "Calendar"
|
||||
msgstr "캘린더"
|
||||
@@ -2364,6 +2381,11 @@ msgstr "캘린더 보기"
|
||||
msgid "Calendars"
|
||||
msgstr "캘린더"
|
||||
|
||||
#. js-lingui-id: qIlodj
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormPhoneFieldInput.tsx
|
||||
msgid "Calling Code"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: msssZq
|
||||
#: src/modules/settings/data-model/objects/forms/components/SettingsDataModelObjectAboutForm.tsx
|
||||
msgid "Can't change API names for standard objects"
|
||||
@@ -2500,11 +2522,6 @@ msgstr "노드 유형 변경"
|
||||
msgid "Change Password"
|
||||
msgstr "비밀번호 변경"
|
||||
|
||||
#. js-lingui-id: wRtBJP
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Change Plan"
|
||||
msgstr "요금제 변경"
|
||||
|
||||
#. js-lingui-id: EYSFEW
|
||||
#: src/pages/settings/domains/SettingsDomain.tsx
|
||||
msgid "Change subdomain?"
|
||||
@@ -2602,7 +2619,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 "날짜 형식을 선택하세요"
|
||||
|
||||
@@ -2705,6 +2722,11 @@ msgstr "클라이언트 비밀"
|
||||
msgid "Client Settings"
|
||||
msgstr "클라이언트 설정"
|
||||
|
||||
#. js-lingui-id: mekEJ5
|
||||
#: src/hooks/useCopyToClipboard.tsx
|
||||
msgid "Clipboard requires a secure connection (HTTPS). Please access this app over HTTPS to enable copying."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yz7wBu
|
||||
#: src/modules/ui/feedback/snack-bar-manager/components/SnackBar.tsx
|
||||
msgid "Close"
|
||||
@@ -2747,6 +2769,7 @@ msgstr "함수 코딩하기"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Collapse"
|
||||
@@ -3301,11 +3324,6 @@ msgstr "고유 값 개수"
|
||||
msgid "Country"
|
||||
msgstr "국가"
|
||||
|
||||
#. js-lingui-id: j2OqfX
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormPhoneFieldInput.tsx
|
||||
msgid "Country Code"
|
||||
msgstr "국가 코드"
|
||||
|
||||
#. js-lingui-id: gJdfqX
|
||||
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
|
||||
msgid "create"
|
||||
@@ -4826,6 +4844,7 @@ msgstr "이메일 도메인"
|
||||
#: src/pages/settings/accounts/SettingsAccountsEmails.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Emails"
|
||||
msgstr "이메일"
|
||||
|
||||
@@ -4877,6 +4896,7 @@ msgstr "비어 있음"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Empty Array"
|
||||
@@ -4897,6 +4917,7 @@ msgstr "받은 편지함 비우기"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Empty Object"
|
||||
@@ -5024,10 +5045,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
|
||||
@@ -5092,6 +5113,11 @@ msgstr "테스트 값을 입력하세요"
|
||||
msgid "Enter text"
|
||||
msgstr "텍스트를 입력하세요"
|
||||
|
||||
#. js-lingui-id: +rrO69
|
||||
#: src/modules/page-layout/widgets/standalone-rich-text/components/StandaloneRichTextEditorContent.tsx
|
||||
msgid "Enter text or type '/' for commands"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yZMXC2
|
||||
#: src/modules/advanced-text-editor/hooks/useAdvancedTextEditor.ts
|
||||
msgid "Enter text or Type '/' for commands"
|
||||
@@ -5488,6 +5514,7 @@ msgstr "설정 종료"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Expand"
|
||||
@@ -6018,6 +6045,11 @@ msgstr ""
|
||||
msgid "File URL is not defined"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: sER+bs
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Files"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: o7J4JM
|
||||
#: src/pages/settings/data-model/SettingsObjectFieldTable.tsx
|
||||
#: src/pages/settings/ai/components/SettingsSkillsTable.tsx
|
||||
@@ -6121,6 +6153,7 @@ msgstr "이름은 비워 둘 수 없습니다"
|
||||
|
||||
#. js-lingui-id: ylQd2j
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/utils/getActionHeaderTypeOrThrow.ts
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/command-menu/pages/workflow/action/components/CommandMenuWorkflowSelectAction.tsx
|
||||
msgid "Flow"
|
||||
msgstr "흐름"
|
||||
@@ -6586,6 +6619,11 @@ msgstr "그룹 {groupValue} 숨기기"
|
||||
msgid "Hide hidden groups"
|
||||
msgstr "숨겨진 그룹 숨기기"
|
||||
|
||||
#. js-lingui-id: i0qMbr
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Home"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Xkd22/
|
||||
#: src/modules/page-layout/utils/getWidgetTitle.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/GraphTypeInformation.ts
|
||||
@@ -6897,6 +6935,7 @@ msgstr "정보"
|
||||
#: src/modules/settings/logic-functions/components/tabs/SettingsLogicFunctionTestTab.tsx
|
||||
#: src/modules/command-menu/pages/workflow/step/view-run/components/CommandMenuWorkflowRunViewStepContent.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Input"
|
||||
msgstr "입력"
|
||||
|
||||
@@ -7954,6 +7993,11 @@ msgstr "최대 범위"
|
||||
msgid "Maximum email addresses"
|
||||
msgstr "최대 이메일 주소"
|
||||
|
||||
#. js-lingui-id: 9UHNQc
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Maximum execution time in seconds (1-900)"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: PAhTVY
|
||||
#: src/modules/settings/data-model/fields/forms/components/SettingsDataModelFieldMaxValuesForm.tsx
|
||||
msgid "Maximum files"
|
||||
@@ -8656,6 +8700,11 @@ msgstr "선택할 수 있는 필드가 없습니다."
|
||||
msgid "No body"
|
||||
msgstr "본문 없음"
|
||||
|
||||
#. js-lingui-id: c3+z7H
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCallingCodeSelectInput.tsx
|
||||
msgid "No calling code"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: OTe3RI
|
||||
#: src/pages/settings/domains/SettingsDomain.tsx
|
||||
msgid "No change detected"
|
||||
@@ -8686,7 +8735,6 @@ msgstr "이 요청에 대한 컨텍스트가 제공되지 않았습니다"
|
||||
#: src/modules/settings/data-model/fields/forms/phones/components/SettingsDataModelFieldPhonesForm.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/address/components/SettingsDataModelFieldAddressForm.tsx
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCountrySelectInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCountryCodeSelectInput.tsx
|
||||
msgid "No country"
|
||||
msgstr "국가 없음"
|
||||
|
||||
@@ -9124,7 +9172,13 @@ msgstr "{notSharedByFullName}에 의해 공유되지 않음"
|
||||
msgid "Not synced"
|
||||
msgstr "동기화되지 않음"
|
||||
|
||||
#. js-lingui-id: KiJn9B
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Note"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 1DBGsz
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/action-menu/actions/record-actions/constants/DefaultRecordActionsConfig.tsx
|
||||
msgid "Notes"
|
||||
msgstr "노트"
|
||||
@@ -9502,6 +9556,11 @@ msgstr ""
|
||||
msgid "Organization"
|
||||
msgstr "조직"
|
||||
|
||||
#. js-lingui-id: zi/p7n
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Organization plan"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: nV6twc
|
||||
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuEditOrganizeActions.tsx
|
||||
msgid "Organize"
|
||||
@@ -9560,6 +9619,7 @@ msgstr "장애"
|
||||
#: src/modules/logic-functions/components/LogicFunctionExecutionResult.tsx
|
||||
#: src/modules/command-menu/pages/workflow/step/view-run/components/CommandMenuWorkflowRunViewStepContent.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/TerminalOutput.tsx
|
||||
#: src/modules/ai/components/CodeExecutionDisplay.tsx
|
||||
msgid "Output"
|
||||
@@ -10061,6 +10121,11 @@ msgstr "개인정보 보호정책"
|
||||
msgid "Pro"
|
||||
msgstr "프로"
|
||||
|
||||
#. js-lingui-id: r5je1s
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Pro plan"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: k1ifdL
|
||||
#: src/modules/workflow/components/WorkflowStepExecutionResult.tsx
|
||||
#: src/modules/spreadsheet-import/steps/components/UploadStep/components/DropZone.tsx
|
||||
@@ -11920,6 +11985,14 @@ msgstr "공백과 쉼표 - {spacesAndCommaExample}"
|
||||
msgid "Spanish"
|
||||
msgstr "스페인어"
|
||||
|
||||
#. js-lingui-id: gsifzp
|
||||
#: src/modules/command-menu/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
|
||||
#: src/modules/command-menu/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
msgid "Split multiple values"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: vnS6Rf
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
msgid "SSO"
|
||||
@@ -12398,6 +12471,7 @@ msgid "Task Title"
|
||||
msgstr "작업 제목"
|
||||
|
||||
#. js-lingui-id: GtycJ/
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/action-menu/actions/record-actions/constants/DefaultRecordActionsConfig.tsx
|
||||
msgid "Tasks"
|
||||
msgstr "작업"
|
||||
@@ -12597,6 +12671,11 @@ msgstr "이 레코드와 연결된 활동이 없습니다."
|
||||
msgid "There was an error while updating password."
|
||||
msgstr "비밀번호 업데이트 중 오류가 발생했습니다."
|
||||
|
||||
#. js-lingui-id: AUV+TY
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Thinking"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Ed99mE
|
||||
#: src/modules/ai/components/ReasoningSummaryDisplay.tsx
|
||||
msgid "Thinking..."
|
||||
@@ -12784,6 +12863,11 @@ msgstr "이 작업은 이중 인증 방법을 영구적으로 삭제합니다.<0
|
||||
msgid "This will revert the database value to environment/default value. The database override will be removed and the system will use the environment settings."
|
||||
msgstr "이 작업은 환경/기본값으로 데이터베이스 값을 되돌립니다. 데이터베이스 덮어쓰기가 제거되고 시스템이 환경 설정을 사용합니다."
|
||||
|
||||
#. js-lingui-id: f8HOUp
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Thought"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 5g/sE8
|
||||
#: src/modules/action-menu/actions/record-actions/constants/WorkflowActionsConfig.tsx
|
||||
msgid "Tidy up"
|
||||
@@ -12815,10 +12899,16 @@ msgid "Time zone"
|
||||
msgstr "시간대"
|
||||
|
||||
#. js-lingui-id: cklVjM
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCalendarViewContent.tsx
|
||||
msgid "Timeline"
|
||||
msgstr "타임라인"
|
||||
|
||||
#. js-lingui-id: xY9s5E
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Timeout"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8TMaZI
|
||||
#: src/pages/settings/security/event-logs/components/EventLogResultsTable.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogResultsTable.tsx
|
||||
@@ -13131,7 +13221,6 @@ msgid "Type"
|
||||
msgstr "유형"
|
||||
|
||||
#. js-lingui-id: SKD2e4
|
||||
#: src/modules/page-layout/widgets/standalone-rich-text/components/StandaloneRichTextEditorContent.tsx
|
||||
#: src/modules/activities/components/ActivityRichTextEditor.tsx
|
||||
msgid "Type '/' for commands, '@' for mentions"
|
||||
msgstr ""
|
||||
@@ -13735,8 +13824,6 @@ msgid "View Logs"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: ecVcAx
|
||||
#: src/modules/ai/components/AIChatTab.tsx
|
||||
#: src/modules/ai/components/AIChatTab.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
msgid "View Previous AI Chats"
|
||||
@@ -13992,6 +14079,11 @@ msgstr ""
|
||||
msgid "When any deal with amount over $100,000 has its stage or amount updated, send a notification to the sales channel with the deal name, company, new stage, amount and owner."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8jc/Xn
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "When enabled, AI agents and workflow automations can discover and call this function"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: C51ilI
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
|
||||
msgid "When the API key will expire."
|
||||
@@ -14124,6 +14216,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 ""
|
||||
|
||||
@@ -106,6 +106,7 @@ msgstr "(geselecteerd: {selectedIconKey})"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "[empty string]"
|
||||
@@ -310,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})"
|
||||
@@ -381,6 +387,11 @@ msgstr "{selectedCount} brontypen"
|
||||
msgid "{serviceLabel} service is unreachable"
|
||||
msgstr "{serviceLabel}-service is onbereikbaar"
|
||||
|
||||
#. js-lingui-id: 8vJ+2V
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "{stepCount, plural, one {# step} other {# steps}}"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Bzjg0/
|
||||
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepCalendar.tsx
|
||||
msgid "{stepNumber}. Calendar"
|
||||
@@ -1829,6 +1840,7 @@ msgstr "Oplopend"
|
||||
#: src/modules/settings/roles/role-permissions/permission-flags/hooks/useActionRolePermissionFlagConfig.ts
|
||||
#: src/modules/navigation/components/MainNavigationDrawerFixedItems.tsx
|
||||
#: src/modules/command-menu/hooks/useOpenAskAIPageInCommandMenu.ts
|
||||
#: src/modules/command-menu/components/CommandMenuAskAIInfo.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
@@ -1967,7 +1979,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 ""
|
||||
@@ -2068,6 +2079,11 @@ msgstr "Beschikbaarheid"
|
||||
msgid "Available"
|
||||
msgstr "Beschikbaar"
|
||||
|
||||
#. js-lingui-id: 06gA3L
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Available as tool"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: oD38t2
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Available tools"
|
||||
@@ -2239,9 +2255,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
|
||||
@@ -2312,6 +2328,7 @@ msgstr "caldav.example.com"
|
||||
#. js-lingui-id: AjVXBS
|
||||
#: src/modules/views/view-picker/constants/ViewPickerTypeSelectOptions.ts
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
|
||||
msgid "Calendar"
|
||||
msgstr "Kalender"
|
||||
@@ -2364,6 +2381,11 @@ msgstr "Kalenderweergave"
|
||||
msgid "Calendars"
|
||||
msgstr "Kalenders"
|
||||
|
||||
#. js-lingui-id: qIlodj
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormPhoneFieldInput.tsx
|
||||
msgid "Calling Code"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: msssZq
|
||||
#: src/modules/settings/data-model/objects/forms/components/SettingsDataModelObjectAboutForm.tsx
|
||||
msgid "Can't change API names for standard objects"
|
||||
@@ -2500,11 +2522,6 @@ msgstr "Wijzig node-type"
|
||||
msgid "Change Password"
|
||||
msgstr "Wachtwoord wijzigen"
|
||||
|
||||
#. js-lingui-id: wRtBJP
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Change Plan"
|
||||
msgstr "Plan wijzigen"
|
||||
|
||||
#. js-lingui-id: EYSFEW
|
||||
#: src/pages/settings/domains/SettingsDomain.tsx
|
||||
msgid "Change subdomain?"
|
||||
@@ -2602,7 +2619,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"
|
||||
|
||||
@@ -2705,6 +2722,11 @@ msgstr "Clientgeheim"
|
||||
msgid "Client Settings"
|
||||
msgstr "Clientinstellingen"
|
||||
|
||||
#. js-lingui-id: mekEJ5
|
||||
#: src/hooks/useCopyToClipboard.tsx
|
||||
msgid "Clipboard requires a secure connection (HTTPS). Please access this app over HTTPS to enable copying."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yz7wBu
|
||||
#: src/modules/ui/feedback/snack-bar-manager/components/SnackBar.tsx
|
||||
msgid "Close"
|
||||
@@ -2747,6 +2769,7 @@ msgstr "Codeer je functie"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Collapse"
|
||||
@@ -3301,11 +3324,6 @@ msgstr "Unieke waarden tellen"
|
||||
msgid "Country"
|
||||
msgstr "Land"
|
||||
|
||||
#. js-lingui-id: j2OqfX
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormPhoneFieldInput.tsx
|
||||
msgid "Country Code"
|
||||
msgstr "Landcode"
|
||||
|
||||
#. js-lingui-id: gJdfqX
|
||||
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
|
||||
msgid "create"
|
||||
@@ -4826,6 +4844,7 @@ msgstr "E-maildomeinen"
|
||||
#: src/pages/settings/accounts/SettingsAccountsEmails.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Emails"
|
||||
msgstr "E-mails"
|
||||
|
||||
@@ -4877,6 +4896,7 @@ msgstr "Leeg"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Empty Array"
|
||||
@@ -4897,6 +4917,7 @@ msgstr "Lege Inbox"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Empty Object"
|
||||
@@ -5024,10 +5045,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
|
||||
@@ -5092,6 +5113,11 @@ msgstr "Voer een testwaarde in"
|
||||
msgid "Enter text"
|
||||
msgstr "Voer tekst in"
|
||||
|
||||
#. js-lingui-id: +rrO69
|
||||
#: src/modules/page-layout/widgets/standalone-rich-text/components/StandaloneRichTextEditorContent.tsx
|
||||
msgid "Enter text or type '/' for commands"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yZMXC2
|
||||
#: src/modules/advanced-text-editor/hooks/useAdvancedTextEditor.ts
|
||||
msgid "Enter text or Type '/' for commands"
|
||||
@@ -5488,6 +5514,7 @@ msgstr "Verlaat instellingen"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Expand"
|
||||
@@ -6018,6 +6045,11 @@ msgstr ""
|
||||
msgid "File URL is not defined"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: sER+bs
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Files"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: o7J4JM
|
||||
#: src/pages/settings/data-model/SettingsObjectFieldTable.tsx
|
||||
#: src/pages/settings/ai/components/SettingsSkillsTable.tsx
|
||||
@@ -6121,6 +6153,7 @@ msgstr "Voornaam mag niet leeg zijn"
|
||||
|
||||
#. js-lingui-id: ylQd2j
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/utils/getActionHeaderTypeOrThrow.ts
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/command-menu/pages/workflow/action/components/CommandMenuWorkflowSelectAction.tsx
|
||||
msgid "Flow"
|
||||
msgstr "Stroom"
|
||||
@@ -6586,6 +6619,11 @@ msgstr "Groep {groupValue} verbergen"
|
||||
msgid "Hide hidden groups"
|
||||
msgstr "Verborgen groepen verbergen"
|
||||
|
||||
#. js-lingui-id: i0qMbr
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Home"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Xkd22/
|
||||
#: src/modules/page-layout/utils/getWidgetTitle.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/GraphTypeInformation.ts
|
||||
@@ -6897,6 +6935,7 @@ msgstr "Informatie"
|
||||
#: src/modules/settings/logic-functions/components/tabs/SettingsLogicFunctionTestTab.tsx
|
||||
#: src/modules/command-menu/pages/workflow/step/view-run/components/CommandMenuWorkflowRunViewStepContent.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Input"
|
||||
msgstr "Invoer"
|
||||
|
||||
@@ -7954,6 +7993,11 @@ msgstr "Max bereik"
|
||||
msgid "Maximum email addresses"
|
||||
msgstr "Maximaal aantal e-mailadressen"
|
||||
|
||||
#. js-lingui-id: 9UHNQc
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Maximum execution time in seconds (1-900)"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: PAhTVY
|
||||
#: src/modules/settings/data-model/fields/forms/components/SettingsDataModelFieldMaxValuesForm.tsx
|
||||
msgid "Maximum files"
|
||||
@@ -8656,6 +8700,11 @@ msgstr "Geen beschikbare velden om te selecteren"
|
||||
msgid "No body"
|
||||
msgstr "Geen body"
|
||||
|
||||
#. js-lingui-id: c3+z7H
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCallingCodeSelectInput.tsx
|
||||
msgid "No calling code"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: OTe3RI
|
||||
#: src/pages/settings/domains/SettingsDomain.tsx
|
||||
msgid "No change detected"
|
||||
@@ -8686,7 +8735,6 @@ msgstr "Er is geen context opgegeven voor dit verzoek"
|
||||
#: src/modules/settings/data-model/fields/forms/phones/components/SettingsDataModelFieldPhonesForm.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/address/components/SettingsDataModelFieldAddressForm.tsx
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCountrySelectInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCountryCodeSelectInput.tsx
|
||||
msgid "No country"
|
||||
msgstr "Geen land"
|
||||
|
||||
@@ -9124,7 +9172,13 @@ msgstr "Niet gedeeld door {notSharedByFullName}"
|
||||
msgid "Not synced"
|
||||
msgstr "Niet gesynchroniseerd"
|
||||
|
||||
#. js-lingui-id: KiJn9B
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Note"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 1DBGsz
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/action-menu/actions/record-actions/constants/DefaultRecordActionsConfig.tsx
|
||||
msgid "Notes"
|
||||
msgstr "Notities"
|
||||
@@ -9502,6 +9556,11 @@ msgstr ""
|
||||
msgid "Organization"
|
||||
msgstr "Organisatie"
|
||||
|
||||
#. js-lingui-id: zi/p7n
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Organization plan"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: nV6twc
|
||||
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuEditOrganizeActions.tsx
|
||||
msgid "Organize"
|
||||
@@ -9560,6 +9619,7 @@ msgstr "Storing"
|
||||
#: src/modules/logic-functions/components/LogicFunctionExecutionResult.tsx
|
||||
#: src/modules/command-menu/pages/workflow/step/view-run/components/CommandMenuWorkflowRunViewStepContent.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/TerminalOutput.tsx
|
||||
#: src/modules/ai/components/CodeExecutionDisplay.tsx
|
||||
msgid "Output"
|
||||
@@ -10061,6 +10121,11 @@ msgstr "Privacybeleid"
|
||||
msgid "Pro"
|
||||
msgstr "Pro"
|
||||
|
||||
#. js-lingui-id: r5je1s
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Pro plan"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: k1ifdL
|
||||
#: src/modules/workflow/components/WorkflowStepExecutionResult.tsx
|
||||
#: src/modules/spreadsheet-import/steps/components/UploadStep/components/DropZone.tsx
|
||||
@@ -11920,6 +11985,14 @@ msgstr "Spaties en komma - {spacesAndCommaExample}"
|
||||
msgid "Spanish"
|
||||
msgstr "Spaans"
|
||||
|
||||
#. js-lingui-id: gsifzp
|
||||
#: src/modules/command-menu/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
|
||||
#: src/modules/command-menu/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
msgid "Split multiple values"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: vnS6Rf
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
msgid "SSO"
|
||||
@@ -12398,6 +12471,7 @@ msgid "Task Title"
|
||||
msgstr "Taaktitel"
|
||||
|
||||
#. js-lingui-id: GtycJ/
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/action-menu/actions/record-actions/constants/DefaultRecordActionsConfig.tsx
|
||||
msgid "Tasks"
|
||||
msgstr "Taken"
|
||||
@@ -12597,6 +12671,11 @@ msgstr "Er is geen activiteit gekoppeld aan dit record."
|
||||
msgid "There was an error while updating password."
|
||||
msgstr "Er was een fout bij het bijwerken van het wachtwoord."
|
||||
|
||||
#. js-lingui-id: AUV+TY
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Thinking"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Ed99mE
|
||||
#: src/modules/ai/components/ReasoningSummaryDisplay.tsx
|
||||
msgid "Thinking..."
|
||||
@@ -12786,6 +12865,11 @@ msgstr "Hiermee wordt je methode voor tweefactorauthenticatie permanent verwijde
|
||||
msgid "This will revert the database value to environment/default value. The database override will be removed and the system will use the environment settings."
|
||||
msgstr "Dit zal de databasewaarde herstellen naar de omgeving/standaardwaarde. De database-overschrijving zal worden verwijderd en het systeem zal de omgevingsinstellingen gebruiken."
|
||||
|
||||
#. js-lingui-id: f8HOUp
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Thought"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 5g/sE8
|
||||
#: src/modules/action-menu/actions/record-actions/constants/WorkflowActionsConfig.tsx
|
||||
msgid "Tidy up"
|
||||
@@ -12817,10 +12901,16 @@ msgid "Time zone"
|
||||
msgstr "Tijdzone"
|
||||
|
||||
#. js-lingui-id: cklVjM
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCalendarViewContent.tsx
|
||||
msgid "Timeline"
|
||||
msgstr "Tijdlijn"
|
||||
|
||||
#. js-lingui-id: xY9s5E
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Timeout"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8TMaZI
|
||||
#: src/pages/settings/security/event-logs/components/EventLogResultsTable.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogResultsTable.tsx
|
||||
@@ -13133,7 +13223,6 @@ msgid "Type"
|
||||
msgstr "Soort"
|
||||
|
||||
#. js-lingui-id: SKD2e4
|
||||
#: src/modules/page-layout/widgets/standalone-rich-text/components/StandaloneRichTextEditorContent.tsx
|
||||
#: src/modules/activities/components/ActivityRichTextEditor.tsx
|
||||
msgid "Type '/' for commands, '@' for mentions"
|
||||
msgstr ""
|
||||
@@ -13737,8 +13826,6 @@ msgid "View Logs"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: ecVcAx
|
||||
#: src/modules/ai/components/AIChatTab.tsx
|
||||
#: src/modules/ai/components/AIChatTab.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
msgid "View Previous AI Chats"
|
||||
@@ -13994,6 +14081,11 @@ msgstr ""
|
||||
msgid "When any deal with amount over $100,000 has its stage or amount updated, send a notification to the sales channel with the deal name, company, new stage, amount and owner."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8jc/Xn
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "When enabled, AI agents and workflow automations can discover and call this function"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: C51ilI
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
|
||||
msgid "When the API key will expire."
|
||||
@@ -14126,6 +14218,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 ""
|
||||
|
||||
@@ -106,6 +106,7 @@ msgstr "(valgt: {selectedIconKey})"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "[empty string]"
|
||||
@@ -310,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})"
|
||||
@@ -381,6 +387,11 @@ msgstr "{selectedCount} kildetyper"
|
||||
msgid "{serviceLabel} service is unreachable"
|
||||
msgstr "{serviceLabel}-tjenesten er utilgjengelig"
|
||||
|
||||
#. js-lingui-id: 8vJ+2V
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "{stepCount, plural, one {# step} other {# steps}}"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Bzjg0/
|
||||
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepCalendar.tsx
|
||||
msgid "{stepNumber}. Calendar"
|
||||
@@ -1829,6 +1840,7 @@ msgstr "Stigende"
|
||||
#: src/modules/settings/roles/role-permissions/permission-flags/hooks/useActionRolePermissionFlagConfig.ts
|
||||
#: src/modules/navigation/components/MainNavigationDrawerFixedItems.tsx
|
||||
#: src/modules/command-menu/hooks/useOpenAskAIPageInCommandMenu.ts
|
||||
#: src/modules/command-menu/components/CommandMenuAskAIInfo.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
@@ -1967,7 +1979,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 ""
|
||||
@@ -2068,6 +2079,11 @@ msgstr "Tilgjengelighet"
|
||||
msgid "Available"
|
||||
msgstr "Tilgjengelig"
|
||||
|
||||
#. js-lingui-id: 06gA3L
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Available as tool"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: oD38t2
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Available tools"
|
||||
@@ -2239,9 +2255,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
|
||||
@@ -2312,6 +2328,7 @@ msgstr "caldav.example.com"
|
||||
#. js-lingui-id: AjVXBS
|
||||
#: src/modules/views/view-picker/constants/ViewPickerTypeSelectOptions.ts
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
|
||||
msgid "Calendar"
|
||||
msgstr "Kalender"
|
||||
@@ -2364,6 +2381,11 @@ msgstr "Kalendervisning"
|
||||
msgid "Calendars"
|
||||
msgstr "Kalendere"
|
||||
|
||||
#. js-lingui-id: qIlodj
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormPhoneFieldInput.tsx
|
||||
msgid "Calling Code"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: msssZq
|
||||
#: src/modules/settings/data-model/objects/forms/components/SettingsDataModelObjectAboutForm.tsx
|
||||
msgid "Can't change API names for standard objects"
|
||||
@@ -2500,11 +2522,6 @@ msgstr "Endre nodetype"
|
||||
msgid "Change Password"
|
||||
msgstr "Endre passord"
|
||||
|
||||
#. js-lingui-id: wRtBJP
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Change Plan"
|
||||
msgstr "Endre plan"
|
||||
|
||||
#. js-lingui-id: EYSFEW
|
||||
#: src/pages/settings/domains/SettingsDomain.tsx
|
||||
msgid "Change subdomain?"
|
||||
@@ -2602,7 +2619,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"
|
||||
|
||||
@@ -2705,6 +2722,11 @@ msgstr "Klienthemmelighet"
|
||||
msgid "Client Settings"
|
||||
msgstr "Klientinnstillinger"
|
||||
|
||||
#. js-lingui-id: mekEJ5
|
||||
#: src/hooks/useCopyToClipboard.tsx
|
||||
msgid "Clipboard requires a secure connection (HTTPS). Please access this app over HTTPS to enable copying."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yz7wBu
|
||||
#: src/modules/ui/feedback/snack-bar-manager/components/SnackBar.tsx
|
||||
msgid "Close"
|
||||
@@ -2747,6 +2769,7 @@ msgstr "Koder din funksjon"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Collapse"
|
||||
@@ -3301,11 +3324,6 @@ msgstr "Tell unike verdier"
|
||||
msgid "Country"
|
||||
msgstr "Land"
|
||||
|
||||
#. js-lingui-id: j2OqfX
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormPhoneFieldInput.tsx
|
||||
msgid "Country Code"
|
||||
msgstr "Landskode"
|
||||
|
||||
#. js-lingui-id: gJdfqX
|
||||
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
|
||||
msgid "create"
|
||||
@@ -4826,6 +4844,7 @@ msgstr "E-postdomener"
|
||||
#: src/pages/settings/accounts/SettingsAccountsEmails.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Emails"
|
||||
msgstr "E-poster"
|
||||
|
||||
@@ -4877,6 +4896,7 @@ msgstr "Tom"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Empty Array"
|
||||
@@ -4897,6 +4917,7 @@ msgstr "Tøm innboks"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Empty Object"
|
||||
@@ -5024,10 +5045,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
|
||||
@@ -5092,6 +5113,11 @@ msgstr "Skriv inn testverdi"
|
||||
msgid "Enter text"
|
||||
msgstr "Skriv inn tekst"
|
||||
|
||||
#. js-lingui-id: +rrO69
|
||||
#: src/modules/page-layout/widgets/standalone-rich-text/components/StandaloneRichTextEditorContent.tsx
|
||||
msgid "Enter text or type '/' for commands"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yZMXC2
|
||||
#: src/modules/advanced-text-editor/hooks/useAdvancedTextEditor.ts
|
||||
msgid "Enter text or Type '/' for commands"
|
||||
@@ -5488,6 +5514,7 @@ msgstr "Avslutt innstillinger"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Expand"
|
||||
@@ -6018,6 +6045,11 @@ msgstr ""
|
||||
msgid "File URL is not defined"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: sER+bs
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Files"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: o7J4JM
|
||||
#: src/pages/settings/data-model/SettingsObjectFieldTable.tsx
|
||||
#: src/pages/settings/ai/components/SettingsSkillsTable.tsx
|
||||
@@ -6121,6 +6153,7 @@ msgstr "Fornavn kan ikke være tomt"
|
||||
|
||||
#. js-lingui-id: ylQd2j
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/utils/getActionHeaderTypeOrThrow.ts
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/command-menu/pages/workflow/action/components/CommandMenuWorkflowSelectAction.tsx
|
||||
msgid "Flow"
|
||||
msgstr "Flyt"
|
||||
@@ -6586,6 +6619,11 @@ msgstr "Skjul gruppe {groupValue}"
|
||||
msgid "Hide hidden groups"
|
||||
msgstr "Skjul skjulte grupper"
|
||||
|
||||
#. js-lingui-id: i0qMbr
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Home"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Xkd22/
|
||||
#: src/modules/page-layout/utils/getWidgetTitle.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/GraphTypeInformation.ts
|
||||
@@ -6897,6 +6935,7 @@ msgstr "Info"
|
||||
#: src/modules/settings/logic-functions/components/tabs/SettingsLogicFunctionTestTab.tsx
|
||||
#: src/modules/command-menu/pages/workflow/step/view-run/components/CommandMenuWorkflowRunViewStepContent.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Input"
|
||||
msgstr "Inndata"
|
||||
|
||||
@@ -7954,6 +7993,11 @@ msgstr "Maks rekkevidde"
|
||||
msgid "Maximum email addresses"
|
||||
msgstr "Maksimalt antall e-postadresser"
|
||||
|
||||
#. js-lingui-id: 9UHNQc
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Maximum execution time in seconds (1-900)"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: PAhTVY
|
||||
#: src/modules/settings/data-model/fields/forms/components/SettingsDataModelFieldMaxValuesForm.tsx
|
||||
msgid "Maximum files"
|
||||
@@ -8656,6 +8700,11 @@ msgstr "Ingen tilgjengelige felter å velge"
|
||||
msgid "No body"
|
||||
msgstr "Ingen body"
|
||||
|
||||
#. js-lingui-id: c3+z7H
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCallingCodeSelectInput.tsx
|
||||
msgid "No calling code"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: OTe3RI
|
||||
#: src/pages/settings/domains/SettingsDomain.tsx
|
||||
msgid "No change detected"
|
||||
@@ -8686,7 +8735,6 @@ msgstr "Ingen kontekst ble oppgitt for denne forespørselen"
|
||||
#: src/modules/settings/data-model/fields/forms/phones/components/SettingsDataModelFieldPhonesForm.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/address/components/SettingsDataModelFieldAddressForm.tsx
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCountrySelectInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCountryCodeSelectInput.tsx
|
||||
msgid "No country"
|
||||
msgstr "Intet land"
|
||||
|
||||
@@ -9124,7 +9172,13 @@ msgstr "Ikke delt av {notSharedByFullName}"
|
||||
msgid "Not synced"
|
||||
msgstr "Ikke synkronisert"
|
||||
|
||||
#. js-lingui-id: KiJn9B
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Note"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 1DBGsz
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/action-menu/actions/record-actions/constants/DefaultRecordActionsConfig.tsx
|
||||
msgid "Notes"
|
||||
msgstr "Notater"
|
||||
@@ -9502,6 +9556,11 @@ msgstr ""
|
||||
msgid "Organization"
|
||||
msgstr "Organisasjon"
|
||||
|
||||
#. js-lingui-id: zi/p7n
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Organization plan"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: nV6twc
|
||||
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuEditOrganizeActions.tsx
|
||||
msgid "Organize"
|
||||
@@ -9560,6 +9619,7 @@ msgstr "Nedetid"
|
||||
#: src/modules/logic-functions/components/LogicFunctionExecutionResult.tsx
|
||||
#: src/modules/command-menu/pages/workflow/step/view-run/components/CommandMenuWorkflowRunViewStepContent.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/TerminalOutput.tsx
|
||||
#: src/modules/ai/components/CodeExecutionDisplay.tsx
|
||||
msgid "Output"
|
||||
@@ -10061,6 +10121,11 @@ msgstr "Personvernpolicy"
|
||||
msgid "Pro"
|
||||
msgstr "Proff"
|
||||
|
||||
#. js-lingui-id: r5je1s
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Pro plan"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: k1ifdL
|
||||
#: src/modules/workflow/components/WorkflowStepExecutionResult.tsx
|
||||
#: src/modules/spreadsheet-import/steps/components/UploadStep/components/DropZone.tsx
|
||||
@@ -11920,6 +11985,14 @@ msgstr "Mellomrom og komma - {spacesAndCommaExample}"
|
||||
msgid "Spanish"
|
||||
msgstr "Spansk"
|
||||
|
||||
#. js-lingui-id: gsifzp
|
||||
#: src/modules/command-menu/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
|
||||
#: src/modules/command-menu/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
msgid "Split multiple values"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: vnS6Rf
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
msgid "SSO"
|
||||
@@ -12398,6 +12471,7 @@ msgid "Task Title"
|
||||
msgstr "Oppgavetittel"
|
||||
|
||||
#. js-lingui-id: GtycJ/
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/action-menu/actions/record-actions/constants/DefaultRecordActionsConfig.tsx
|
||||
msgid "Tasks"
|
||||
msgstr "Oppgaver"
|
||||
@@ -12597,6 +12671,11 @@ msgstr "Det finnes ingen aktivitet knyttet til denne oppføringen."
|
||||
msgid "There was an error while updating password."
|
||||
msgstr "Det var en feil under oppdatering av passord."
|
||||
|
||||
#. js-lingui-id: AUV+TY
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Thinking"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Ed99mE
|
||||
#: src/modules/ai/components/ReasoningSummaryDisplay.tsx
|
||||
msgid "Thinking..."
|
||||
@@ -12784,6 +12863,11 @@ msgstr "Dette vil permanent slette tofaktorautentiseringsmetoden din.<0/>Siden 2
|
||||
msgid "This will revert the database value to environment/default value. The database override will be removed and the system will use the environment settings."
|
||||
msgstr "Dette vil tilbakestille databaseverdien til miljø-/standardverdi. Databaseoverstyringen vil fjernes og systemet vil bruke miljøinnstillingene."
|
||||
|
||||
#. js-lingui-id: f8HOUp
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Thought"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 5g/sE8
|
||||
#: src/modules/action-menu/actions/record-actions/constants/WorkflowActionsConfig.tsx
|
||||
msgid "Tidy up"
|
||||
@@ -12815,10 +12899,16 @@ msgid "Time zone"
|
||||
msgstr "Tidssone"
|
||||
|
||||
#. js-lingui-id: cklVjM
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCalendarViewContent.tsx
|
||||
msgid "Timeline"
|
||||
msgstr "Tidslinje"
|
||||
|
||||
#. js-lingui-id: xY9s5E
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Timeout"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8TMaZI
|
||||
#: src/pages/settings/security/event-logs/components/EventLogResultsTable.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogResultsTable.tsx
|
||||
@@ -13131,7 +13221,6 @@ msgid "Type"
|
||||
msgstr "Type"
|
||||
|
||||
#. js-lingui-id: SKD2e4
|
||||
#: src/modules/page-layout/widgets/standalone-rich-text/components/StandaloneRichTextEditorContent.tsx
|
||||
#: src/modules/activities/components/ActivityRichTextEditor.tsx
|
||||
msgid "Type '/' for commands, '@' for mentions"
|
||||
msgstr ""
|
||||
@@ -13735,8 +13824,6 @@ msgid "View Logs"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: ecVcAx
|
||||
#: src/modules/ai/components/AIChatTab.tsx
|
||||
#: src/modules/ai/components/AIChatTab.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
msgid "View Previous AI Chats"
|
||||
@@ -13992,6 +14079,11 @@ msgstr ""
|
||||
msgid "When any deal with amount over $100,000 has its stage or amount updated, send a notification to the sales channel with the deal name, company, new stage, amount and owner."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8jc/Xn
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "When enabled, AI agents and workflow automations can discover and call this function"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: C51ilI
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
|
||||
msgid "When the API key will expire."
|
||||
@@ -14124,6 +14216,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 ""
|
||||
|
||||
@@ -106,6 +106,7 @@ msgstr "(wybrano: {selectedIconKey})"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "[empty string]"
|
||||
@@ -310,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})"
|
||||
@@ -381,6 +387,11 @@ msgstr "{selectedCount, plural, one {# typ źródła} few {# typy źródła} man
|
||||
msgid "{serviceLabel} service is unreachable"
|
||||
msgstr "Usługa {serviceLabel} jest nieosiągalna"
|
||||
|
||||
#. js-lingui-id: 8vJ+2V
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "{stepCount, plural, one {# step} other {# steps}}"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Bzjg0/
|
||||
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepCalendar.tsx
|
||||
msgid "{stepNumber}. Calendar"
|
||||
@@ -1829,6 +1840,7 @@ msgstr "Rosnąco"
|
||||
#: src/modules/settings/roles/role-permissions/permission-flags/hooks/useActionRolePermissionFlagConfig.ts
|
||||
#: src/modules/navigation/components/MainNavigationDrawerFixedItems.tsx
|
||||
#: src/modules/command-menu/hooks/useOpenAskAIPageInCommandMenu.ts
|
||||
#: src/modules/command-menu/components/CommandMenuAskAIInfo.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
@@ -1967,7 +1979,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 ""
|
||||
@@ -2068,6 +2079,11 @@ msgstr "Dostępność"
|
||||
msgid "Available"
|
||||
msgstr "Dostępne"
|
||||
|
||||
#. js-lingui-id: 06gA3L
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Available as tool"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: oD38t2
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Available tools"
|
||||
@@ -2239,9 +2255,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
|
||||
@@ -2312,6 +2328,7 @@ msgstr "caldav.example.com"
|
||||
#. js-lingui-id: AjVXBS
|
||||
#: src/modules/views/view-picker/constants/ViewPickerTypeSelectOptions.ts
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
|
||||
msgid "Calendar"
|
||||
msgstr "Kalendarz"
|
||||
@@ -2364,6 +2381,11 @@ msgstr "Widok Kalendarza"
|
||||
msgid "Calendars"
|
||||
msgstr "Kalendarze"
|
||||
|
||||
#. js-lingui-id: qIlodj
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormPhoneFieldInput.tsx
|
||||
msgid "Calling Code"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: msssZq
|
||||
#: src/modules/settings/data-model/objects/forms/components/SettingsDataModelObjectAboutForm.tsx
|
||||
msgid "Can't change API names for standard objects"
|
||||
@@ -2500,11 +2522,6 @@ msgstr "Zmień typ węzła"
|
||||
msgid "Change Password"
|
||||
msgstr "Zmień hasło"
|
||||
|
||||
#. js-lingui-id: wRtBJP
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Change Plan"
|
||||
msgstr "Zmień plan"
|
||||
|
||||
#. js-lingui-id: EYSFEW
|
||||
#: src/pages/settings/domains/SettingsDomain.tsx
|
||||
msgid "Change subdomain?"
|
||||
@@ -2602,7 +2619,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"
|
||||
|
||||
@@ -2705,6 +2722,11 @@ msgstr "Sekret klienta"
|
||||
msgid "Client Settings"
|
||||
msgstr "Ustawienia klienta"
|
||||
|
||||
#. js-lingui-id: mekEJ5
|
||||
#: src/hooks/useCopyToClipboard.tsx
|
||||
msgid "Clipboard requires a secure connection (HTTPS). Please access this app over HTTPS to enable copying."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yz7wBu
|
||||
#: src/modules/ui/feedback/snack-bar-manager/components/SnackBar.tsx
|
||||
msgid "Close"
|
||||
@@ -2747,6 +2769,7 @@ msgstr "Koduj swoją funkcję"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Collapse"
|
||||
@@ -3301,11 +3324,6 @@ msgstr "Policz unikalne wartości"
|
||||
msgid "Country"
|
||||
msgstr "Kraj"
|
||||
|
||||
#. js-lingui-id: j2OqfX
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormPhoneFieldInput.tsx
|
||||
msgid "Country Code"
|
||||
msgstr "Kod kraju"
|
||||
|
||||
#. js-lingui-id: gJdfqX
|
||||
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
|
||||
msgid "create"
|
||||
@@ -4826,6 +4844,7 @@ msgstr "Domeny wysyłkowe"
|
||||
#: src/pages/settings/accounts/SettingsAccountsEmails.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Emails"
|
||||
msgstr "Emaile"
|
||||
|
||||
@@ -4877,6 +4896,7 @@ msgstr "Puste"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Empty Array"
|
||||
@@ -4897,6 +4917,7 @@ msgstr "Pusta skrzynka odbiorcza"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Empty Object"
|
||||
@@ -5024,10 +5045,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
|
||||
@@ -5092,6 +5113,11 @@ msgstr "Wprowadź wartość testową"
|
||||
msgid "Enter text"
|
||||
msgstr "Wprowadź tekst"
|
||||
|
||||
#. js-lingui-id: +rrO69
|
||||
#: src/modules/page-layout/widgets/standalone-rich-text/components/StandaloneRichTextEditorContent.tsx
|
||||
msgid "Enter text or type '/' for commands"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yZMXC2
|
||||
#: src/modules/advanced-text-editor/hooks/useAdvancedTextEditor.ts
|
||||
msgid "Enter text or Type '/' for commands"
|
||||
@@ -5488,6 +5514,7 @@ msgstr "Wyjdź z ustawień"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Expand"
|
||||
@@ -6018,6 +6045,11 @@ msgstr ""
|
||||
msgid "File URL is not defined"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: sER+bs
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Files"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: o7J4JM
|
||||
#: src/pages/settings/data-model/SettingsObjectFieldTable.tsx
|
||||
#: src/pages/settings/ai/components/SettingsSkillsTable.tsx
|
||||
@@ -6121,6 +6153,7 @@ msgstr "Imię nie może być puste"
|
||||
|
||||
#. js-lingui-id: ylQd2j
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/utils/getActionHeaderTypeOrThrow.ts
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/command-menu/pages/workflow/action/components/CommandMenuWorkflowSelectAction.tsx
|
||||
msgid "Flow"
|
||||
msgstr "Przepływ"
|
||||
@@ -6586,6 +6619,11 @@ msgstr "Ukryj grupę {groupValue}"
|
||||
msgid "Hide hidden groups"
|
||||
msgstr "Ukryj ukryte grupy"
|
||||
|
||||
#. js-lingui-id: i0qMbr
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Home"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Xkd22/
|
||||
#: src/modules/page-layout/utils/getWidgetTitle.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/GraphTypeInformation.ts
|
||||
@@ -6897,6 +6935,7 @@ msgstr "Informacje"
|
||||
#: src/modules/settings/logic-functions/components/tabs/SettingsLogicFunctionTestTab.tsx
|
||||
#: src/modules/command-menu/pages/workflow/step/view-run/components/CommandMenuWorkflowRunViewStepContent.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Input"
|
||||
msgstr "Dane wejściowe"
|
||||
|
||||
@@ -7954,6 +7993,11 @@ msgstr "Maksymalny zakres"
|
||||
msgid "Maximum email addresses"
|
||||
msgstr "Maksymalna liczba adresów e-mail"
|
||||
|
||||
#. js-lingui-id: 9UHNQc
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Maximum execution time in seconds (1-900)"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: PAhTVY
|
||||
#: src/modules/settings/data-model/fields/forms/components/SettingsDataModelFieldMaxValuesForm.tsx
|
||||
msgid "Maximum files"
|
||||
@@ -8656,6 +8700,11 @@ msgstr "Brak dostępnych pól do wyboru"
|
||||
msgid "No body"
|
||||
msgstr "Brak treści"
|
||||
|
||||
#. js-lingui-id: c3+z7H
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCallingCodeSelectInput.tsx
|
||||
msgid "No calling code"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: OTe3RI
|
||||
#: src/pages/settings/domains/SettingsDomain.tsx
|
||||
msgid "No change detected"
|
||||
@@ -8686,7 +8735,6 @@ msgstr "Nie podano kontekstu dla tego żądania"
|
||||
#: src/modules/settings/data-model/fields/forms/phones/components/SettingsDataModelFieldPhonesForm.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/address/components/SettingsDataModelFieldAddressForm.tsx
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCountrySelectInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCountryCodeSelectInput.tsx
|
||||
msgid "No country"
|
||||
msgstr "Brak kraju"
|
||||
|
||||
@@ -9124,7 +9172,13 @@ msgstr "Nie udostępnione przez {notSharedByFullName}"
|
||||
msgid "Not synced"
|
||||
msgstr "Niesynchronizowane"
|
||||
|
||||
#. js-lingui-id: KiJn9B
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Note"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 1DBGsz
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/action-menu/actions/record-actions/constants/DefaultRecordActionsConfig.tsx
|
||||
msgid "Notes"
|
||||
msgstr "\"Notatki\""
|
||||
@@ -9502,6 +9556,11 @@ msgstr ""
|
||||
msgid "Organization"
|
||||
msgstr "Organizacja"
|
||||
|
||||
#. js-lingui-id: zi/p7n
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Organization plan"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: nV6twc
|
||||
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuEditOrganizeActions.tsx
|
||||
msgid "Organize"
|
||||
@@ -9560,6 +9619,7 @@ msgstr "Awaria"
|
||||
#: src/modules/logic-functions/components/LogicFunctionExecutionResult.tsx
|
||||
#: src/modules/command-menu/pages/workflow/step/view-run/components/CommandMenuWorkflowRunViewStepContent.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/TerminalOutput.tsx
|
||||
#: src/modules/ai/components/CodeExecutionDisplay.tsx
|
||||
msgid "Output"
|
||||
@@ -10061,6 +10121,11 @@ msgstr "Polityka prywatności"
|
||||
msgid "Pro"
|
||||
msgstr "Pro"
|
||||
|
||||
#. js-lingui-id: r5je1s
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Pro plan"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: k1ifdL
|
||||
#: src/modules/workflow/components/WorkflowStepExecutionResult.tsx
|
||||
#: src/modules/spreadsheet-import/steps/components/UploadStep/components/DropZone.tsx
|
||||
@@ -11920,6 +11985,14 @@ msgstr "Spacje i przecinek - {spacesAndCommaExample}"
|
||||
msgid "Spanish"
|
||||
msgstr "Hiszpański"
|
||||
|
||||
#. js-lingui-id: gsifzp
|
||||
#: src/modules/command-menu/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
|
||||
#: src/modules/command-menu/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
msgid "Split multiple values"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: vnS6Rf
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
msgid "SSO"
|
||||
@@ -12398,6 +12471,7 @@ msgid "Task Title"
|
||||
msgstr "Tytuł zadania"
|
||||
|
||||
#. js-lingui-id: GtycJ/
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/action-menu/actions/record-actions/constants/DefaultRecordActionsConfig.tsx
|
||||
msgid "Tasks"
|
||||
msgstr "Zadania"
|
||||
@@ -12597,6 +12671,11 @@ msgstr "Z tym rekordem nie jest powiązana żadna aktywność."
|
||||
msgid "There was an error while updating password."
|
||||
msgstr "Wystąpił błąd podczas aktualizacji hasła."
|
||||
|
||||
#. js-lingui-id: AUV+TY
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Thinking"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Ed99mE
|
||||
#: src/modules/ai/components/ReasoningSummaryDisplay.tsx
|
||||
msgid "Thinking..."
|
||||
@@ -12784,6 +12863,11 @@ msgstr "Spowoduje to trwałe usunięcie Twojej metody uwierzytelniania dwuskład
|
||||
msgid "This will revert the database value to environment/default value. The database override will be removed and the system will use the environment settings."
|
||||
msgstr "Spowoduje to przywrócenie wartości bazy danych na wartość środowiskową/lub domyślną. Zastąpienie bazy danych zostanie usunięte, a system będzie korzystać z ustawień środowiska."
|
||||
|
||||
#. js-lingui-id: f8HOUp
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Thought"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 5g/sE8
|
||||
#: src/modules/action-menu/actions/record-actions/constants/WorkflowActionsConfig.tsx
|
||||
msgid "Tidy up"
|
||||
@@ -12815,10 +12899,16 @@ msgid "Time zone"
|
||||
msgstr "Strefa czasowa"
|
||||
|
||||
#. js-lingui-id: cklVjM
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCalendarViewContent.tsx
|
||||
msgid "Timeline"
|
||||
msgstr "Oś czasu"
|
||||
|
||||
#. js-lingui-id: xY9s5E
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Timeout"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8TMaZI
|
||||
#: src/pages/settings/security/event-logs/components/EventLogResultsTable.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogResultsTable.tsx
|
||||
@@ -13131,7 +13221,6 @@ msgid "Type"
|
||||
msgstr "Typ"
|
||||
|
||||
#. js-lingui-id: SKD2e4
|
||||
#: src/modules/page-layout/widgets/standalone-rich-text/components/StandaloneRichTextEditorContent.tsx
|
||||
#: src/modules/activities/components/ActivityRichTextEditor.tsx
|
||||
msgid "Type '/' for commands, '@' for mentions"
|
||||
msgstr ""
|
||||
@@ -13735,8 +13824,6 @@ msgid "View Logs"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: ecVcAx
|
||||
#: src/modules/ai/components/AIChatTab.tsx
|
||||
#: src/modules/ai/components/AIChatTab.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
msgid "View Previous AI Chats"
|
||||
@@ -13992,6 +14079,11 @@ msgstr ""
|
||||
msgid "When any deal with amount over $100,000 has its stage or amount updated, send a notification to the sales channel with the deal name, company, new stage, amount and owner."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8jc/Xn
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "When enabled, AI agents and workflow automations can discover and call this function"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: C51ilI
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
|
||||
msgid "When the API key will expire."
|
||||
@@ -14124,6 +14216,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 ""
|
||||
|
||||
@@ -101,6 +101,7 @@ msgstr ""
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "[empty string]"
|
||||
@@ -305,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})"
|
||||
@@ -376,6 +382,11 @@ msgstr ""
|
||||
msgid "{serviceLabel} service is unreachable"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8vJ+2V
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "{stepCount, plural, one {# step} other {# steps}}"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Bzjg0/
|
||||
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepCalendar.tsx
|
||||
msgid "{stepNumber}. Calendar"
|
||||
@@ -1824,6 +1835,7 @@ msgstr ""
|
||||
#: src/modules/settings/roles/role-permissions/permission-flags/hooks/useActionRolePermissionFlagConfig.ts
|
||||
#: src/modules/navigation/components/MainNavigationDrawerFixedItems.tsx
|
||||
#: src/modules/command-menu/hooks/useOpenAskAIPageInCommandMenu.ts
|
||||
#: src/modules/command-menu/components/CommandMenuAskAIInfo.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
@@ -1962,7 +1974,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 ""
|
||||
@@ -2063,6 +2074,11 @@ msgstr ""
|
||||
msgid "Available"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 06gA3L
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Available as tool"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: oD38t2
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Available tools"
|
||||
@@ -2234,9 +2250,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
|
||||
@@ -2307,6 +2323,7 @@ msgstr ""
|
||||
#. js-lingui-id: AjVXBS
|
||||
#: src/modules/views/view-picker/constants/ViewPickerTypeSelectOptions.ts
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
|
||||
msgid "Calendar"
|
||||
msgstr ""
|
||||
@@ -2359,6 +2376,11 @@ msgstr ""
|
||||
msgid "Calendars"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: qIlodj
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormPhoneFieldInput.tsx
|
||||
msgid "Calling Code"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: msssZq
|
||||
#: src/modules/settings/data-model/objects/forms/components/SettingsDataModelObjectAboutForm.tsx
|
||||
msgid "Can't change API names for standard objects"
|
||||
@@ -2495,11 +2517,6 @@ msgstr ""
|
||||
msgid "Change Password"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: wRtBJP
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Change Plan"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: EYSFEW
|
||||
#: src/pages/settings/domains/SettingsDomain.tsx
|
||||
msgid "Change subdomain?"
|
||||
@@ -2597,7 +2614,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 ""
|
||||
|
||||
@@ -2700,6 +2717,11 @@ msgstr ""
|
||||
msgid "Client Settings"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: mekEJ5
|
||||
#: src/hooks/useCopyToClipboard.tsx
|
||||
msgid "Clipboard requires a secure connection (HTTPS). Please access this app over HTTPS to enable copying."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yz7wBu
|
||||
#: src/modules/ui/feedback/snack-bar-manager/components/SnackBar.tsx
|
||||
msgid "Close"
|
||||
@@ -2742,6 +2764,7 @@ msgstr ""
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Collapse"
|
||||
@@ -3296,11 +3319,6 @@ msgstr ""
|
||||
msgid "Country"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: j2OqfX
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormPhoneFieldInput.tsx
|
||||
msgid "Country Code"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: gJdfqX
|
||||
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
|
||||
msgid "create"
|
||||
@@ -4821,6 +4839,7 @@ msgstr ""
|
||||
#: src/pages/settings/accounts/SettingsAccountsEmails.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Emails"
|
||||
msgstr ""
|
||||
|
||||
@@ -4872,6 +4891,7 @@ msgstr ""
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Empty Array"
|
||||
@@ -4892,6 +4912,7 @@ msgstr ""
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Empty Object"
|
||||
@@ -5019,9 +5040,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
|
||||
@@ -5087,6 +5108,11 @@ msgstr ""
|
||||
msgid "Enter text"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +rrO69
|
||||
#: src/modules/page-layout/widgets/standalone-rich-text/components/StandaloneRichTextEditorContent.tsx
|
||||
msgid "Enter text or type '/' for commands"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yZMXC2
|
||||
#: src/modules/advanced-text-editor/hooks/useAdvancedTextEditor.ts
|
||||
msgid "Enter text or Type '/' for commands"
|
||||
@@ -5483,6 +5509,7 @@ msgstr ""
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Expand"
|
||||
@@ -6013,6 +6040,11 @@ msgstr ""
|
||||
msgid "File URL is not defined"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: sER+bs
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Files"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: o7J4JM
|
||||
#: src/pages/settings/data-model/SettingsObjectFieldTable.tsx
|
||||
#: src/pages/settings/ai/components/SettingsSkillsTable.tsx
|
||||
@@ -6116,6 +6148,7 @@ msgstr ""
|
||||
|
||||
#. js-lingui-id: ylQd2j
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/utils/getActionHeaderTypeOrThrow.ts
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/command-menu/pages/workflow/action/components/CommandMenuWorkflowSelectAction.tsx
|
||||
msgid "Flow"
|
||||
msgstr ""
|
||||
@@ -6581,6 +6614,11 @@ msgstr ""
|
||||
msgid "Hide hidden groups"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: i0qMbr
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Home"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Xkd22/
|
||||
#: src/modules/page-layout/utils/getWidgetTitle.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/GraphTypeInformation.ts
|
||||
@@ -6892,6 +6930,7 @@ msgstr ""
|
||||
#: src/modules/settings/logic-functions/components/tabs/SettingsLogicFunctionTestTab.tsx
|
||||
#: src/modules/command-menu/pages/workflow/step/view-run/components/CommandMenuWorkflowRunViewStepContent.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Input"
|
||||
msgstr ""
|
||||
|
||||
@@ -7949,6 +7988,11 @@ msgstr ""
|
||||
msgid "Maximum email addresses"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9UHNQc
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Maximum execution time in seconds (1-900)"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: PAhTVY
|
||||
#: src/modules/settings/data-model/fields/forms/components/SettingsDataModelFieldMaxValuesForm.tsx
|
||||
msgid "Maximum files"
|
||||
@@ -8651,6 +8695,11 @@ msgstr ""
|
||||
msgid "No body"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: c3+z7H
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCallingCodeSelectInput.tsx
|
||||
msgid "No calling code"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: OTe3RI
|
||||
#: src/pages/settings/domains/SettingsDomain.tsx
|
||||
msgid "No change detected"
|
||||
@@ -8681,7 +8730,6 @@ msgstr ""
|
||||
#: src/modules/settings/data-model/fields/forms/phones/components/SettingsDataModelFieldPhonesForm.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/address/components/SettingsDataModelFieldAddressForm.tsx
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCountrySelectInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCountryCodeSelectInput.tsx
|
||||
msgid "No country"
|
||||
msgstr ""
|
||||
|
||||
@@ -9119,7 +9167,13 @@ msgstr ""
|
||||
msgid "Not synced"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: KiJn9B
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Note"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 1DBGsz
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/action-menu/actions/record-actions/constants/DefaultRecordActionsConfig.tsx
|
||||
msgid "Notes"
|
||||
msgstr ""
|
||||
@@ -9497,6 +9551,11 @@ msgstr ""
|
||||
msgid "Organization"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: zi/p7n
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Organization plan"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: nV6twc
|
||||
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuEditOrganizeActions.tsx
|
||||
msgid "Organize"
|
||||
@@ -9555,6 +9614,7 @@ msgstr ""
|
||||
#: src/modules/logic-functions/components/LogicFunctionExecutionResult.tsx
|
||||
#: src/modules/command-menu/pages/workflow/step/view-run/components/CommandMenuWorkflowRunViewStepContent.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/TerminalOutput.tsx
|
||||
#: src/modules/ai/components/CodeExecutionDisplay.tsx
|
||||
msgid "Output"
|
||||
@@ -10056,6 +10116,11 @@ msgstr ""
|
||||
msgid "Pro"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: r5je1s
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Pro plan"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: k1ifdL
|
||||
#: src/modules/workflow/components/WorkflowStepExecutionResult.tsx
|
||||
#: src/modules/spreadsheet-import/steps/components/UploadStep/components/DropZone.tsx
|
||||
@@ -11915,6 +11980,14 @@ msgstr ""
|
||||
msgid "Spanish"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: gsifzp
|
||||
#: src/modules/command-menu/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
|
||||
#: src/modules/command-menu/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
msgid "Split multiple values"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: vnS6Rf
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
msgid "SSO"
|
||||
@@ -12393,6 +12466,7 @@ msgid "Task Title"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: GtycJ/
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/action-menu/actions/record-actions/constants/DefaultRecordActionsConfig.tsx
|
||||
msgid "Tasks"
|
||||
msgstr ""
|
||||
@@ -12592,6 +12666,11 @@ msgstr ""
|
||||
msgid "There was an error while updating password."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: AUV+TY
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Thinking"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Ed99mE
|
||||
#: src/modules/ai/components/ReasoningSummaryDisplay.tsx
|
||||
msgid "Thinking..."
|
||||
@@ -12779,6 +12858,11 @@ msgstr ""
|
||||
msgid "This will revert the database value to environment/default value. The database override will be removed and the system will use the environment settings."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: f8HOUp
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Thought"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 5g/sE8
|
||||
#: src/modules/action-menu/actions/record-actions/constants/WorkflowActionsConfig.tsx
|
||||
msgid "Tidy up"
|
||||
@@ -12810,10 +12894,16 @@ msgid "Time zone"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: cklVjM
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCalendarViewContent.tsx
|
||||
msgid "Timeline"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: xY9s5E
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Timeout"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8TMaZI
|
||||
#: src/pages/settings/security/event-logs/components/EventLogResultsTable.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogResultsTable.tsx
|
||||
@@ -13126,7 +13216,6 @@ msgid "Type"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: SKD2e4
|
||||
#: src/modules/page-layout/widgets/standalone-rich-text/components/StandaloneRichTextEditorContent.tsx
|
||||
#: src/modules/activities/components/ActivityRichTextEditor.tsx
|
||||
msgid "Type '/' for commands, '@' for mentions"
|
||||
msgstr ""
|
||||
@@ -13730,8 +13819,6 @@ msgid "View Logs"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: ecVcAx
|
||||
#: src/modules/ai/components/AIChatTab.tsx
|
||||
#: src/modules/ai/components/AIChatTab.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
msgid "View Previous AI Chats"
|
||||
@@ -13985,6 +14072,11 @@ msgstr ""
|
||||
msgid "When any deal with amount over $100,000 has its stage or amount updated, send a notification to the sales channel with the deal name, company, new stage, amount and owner."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8jc/Xn
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "When enabled, AI agents and workflow automations can discover and call this function"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: C51ilI
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
|
||||
msgid "When the API key will expire."
|
||||
@@ -14117,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 ""
|
||||
|
||||
@@ -106,6 +106,7 @@ msgstr "(selecionado: {selectedIconKey})"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "[empty string]"
|
||||
@@ -310,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})"
|
||||
@@ -381,6 +387,11 @@ msgstr "{selectedCount} tipos de fonte"
|
||||
msgid "{serviceLabel} service is unreachable"
|
||||
msgstr "O serviço {serviceLabel} está inacessível"
|
||||
|
||||
#. js-lingui-id: 8vJ+2V
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "{stepCount, plural, one {# step} other {# steps}}"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Bzjg0/
|
||||
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepCalendar.tsx
|
||||
msgid "{stepNumber}. Calendar"
|
||||
@@ -1829,6 +1840,7 @@ msgstr "Ascendente"
|
||||
#: src/modules/settings/roles/role-permissions/permission-flags/hooks/useActionRolePermissionFlagConfig.ts
|
||||
#: src/modules/navigation/components/MainNavigationDrawerFixedItems.tsx
|
||||
#: src/modules/command-menu/hooks/useOpenAskAIPageInCommandMenu.ts
|
||||
#: src/modules/command-menu/components/CommandMenuAskAIInfo.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
@@ -1967,7 +1979,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 ""
|
||||
@@ -2068,6 +2079,11 @@ msgstr "Disponibilidade"
|
||||
msgid "Available"
|
||||
msgstr "Disponível"
|
||||
|
||||
#. js-lingui-id: 06gA3L
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Available as tool"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: oD38t2
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Available tools"
|
||||
@@ -2239,9 +2255,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
|
||||
@@ -2312,6 +2328,7 @@ msgstr "caldav.example.com"
|
||||
#. js-lingui-id: AjVXBS
|
||||
#: src/modules/views/view-picker/constants/ViewPickerTypeSelectOptions.ts
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
|
||||
msgid "Calendar"
|
||||
msgstr "Calendário"
|
||||
@@ -2364,6 +2381,11 @@ msgstr "Visão de calendário"
|
||||
msgid "Calendars"
|
||||
msgstr "Calendários"
|
||||
|
||||
#. js-lingui-id: qIlodj
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormPhoneFieldInput.tsx
|
||||
msgid "Calling Code"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: msssZq
|
||||
#: src/modules/settings/data-model/objects/forms/components/SettingsDataModelObjectAboutForm.tsx
|
||||
msgid "Can't change API names for standard objects"
|
||||
@@ -2500,11 +2522,6 @@ msgstr "Alterar tipo de nó"
|
||||
msgid "Change Password"
|
||||
msgstr "Alterar Senha"
|
||||
|
||||
#. js-lingui-id: wRtBJP
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Change Plan"
|
||||
msgstr "Alterar Plano"
|
||||
|
||||
#. js-lingui-id: EYSFEW
|
||||
#: src/pages/settings/domains/SettingsDomain.tsx
|
||||
msgid "Change subdomain?"
|
||||
@@ -2602,7 +2619,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"
|
||||
|
||||
@@ -2705,6 +2722,11 @@ msgstr "Segredo do Cliente"
|
||||
msgid "Client Settings"
|
||||
msgstr "Configurações do Cliente"
|
||||
|
||||
#. js-lingui-id: mekEJ5
|
||||
#: src/hooks/useCopyToClipboard.tsx
|
||||
msgid "Clipboard requires a secure connection (HTTPS). Please access this app over HTTPS to enable copying."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yz7wBu
|
||||
#: src/modules/ui/feedback/snack-bar-manager/components/SnackBar.tsx
|
||||
msgid "Close"
|
||||
@@ -2747,6 +2769,7 @@ msgstr "Codifique sua função"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Collapse"
|
||||
@@ -3301,11 +3324,6 @@ msgstr "Contar valores únicos"
|
||||
msgid "Country"
|
||||
msgstr "País"
|
||||
|
||||
#. js-lingui-id: j2OqfX
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormPhoneFieldInput.tsx
|
||||
msgid "Country Code"
|
||||
msgstr "Código do país"
|
||||
|
||||
#. js-lingui-id: gJdfqX
|
||||
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
|
||||
msgid "create"
|
||||
@@ -4826,6 +4844,7 @@ msgstr "Domínios de E-mail"
|
||||
#: src/pages/settings/accounts/SettingsAccountsEmails.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Emails"
|
||||
msgstr "E-mails"
|
||||
|
||||
@@ -4877,6 +4896,7 @@ msgstr "Vazio"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Empty Array"
|
||||
@@ -4897,6 +4917,7 @@ msgstr "Caixa de entrada vazia"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Empty Object"
|
||||
@@ -5024,10 +5045,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
|
||||
@@ -5092,6 +5113,11 @@ msgstr "Insira o valor de teste"
|
||||
msgid "Enter text"
|
||||
msgstr "Insira o texto"
|
||||
|
||||
#. js-lingui-id: +rrO69
|
||||
#: src/modules/page-layout/widgets/standalone-rich-text/components/StandaloneRichTextEditorContent.tsx
|
||||
msgid "Enter text or type '/' for commands"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yZMXC2
|
||||
#: src/modules/advanced-text-editor/hooks/useAdvancedTextEditor.ts
|
||||
msgid "Enter text or Type '/' for commands"
|
||||
@@ -5488,6 +5514,7 @@ msgstr "Sair das Configurações"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Expand"
|
||||
@@ -6018,6 +6045,11 @@ msgstr ""
|
||||
msgid "File URL is not defined"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: sER+bs
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Files"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: o7J4JM
|
||||
#: src/pages/settings/data-model/SettingsObjectFieldTable.tsx
|
||||
#: src/pages/settings/ai/components/SettingsSkillsTable.tsx
|
||||
@@ -6121,6 +6153,7 @@ msgstr "O nome não pode estar vazio"
|
||||
|
||||
#. js-lingui-id: ylQd2j
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/utils/getActionHeaderTypeOrThrow.ts
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/command-menu/pages/workflow/action/components/CommandMenuWorkflowSelectAction.tsx
|
||||
msgid "Flow"
|
||||
msgstr "Fluxo"
|
||||
@@ -6586,6 +6619,11 @@ msgstr "Ocultar grupo {groupValue}"
|
||||
msgid "Hide hidden groups"
|
||||
msgstr "Ocultar grupos ocultos"
|
||||
|
||||
#. js-lingui-id: i0qMbr
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Home"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Xkd22/
|
||||
#: src/modules/page-layout/utils/getWidgetTitle.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/GraphTypeInformation.ts
|
||||
@@ -6897,6 +6935,7 @@ msgstr "Informações"
|
||||
#: src/modules/settings/logic-functions/components/tabs/SettingsLogicFunctionTestTab.tsx
|
||||
#: src/modules/command-menu/pages/workflow/step/view-run/components/CommandMenuWorkflowRunViewStepContent.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Input"
|
||||
msgstr "Entrada"
|
||||
|
||||
@@ -7954,6 +7993,11 @@ msgstr "Intervalo máximo"
|
||||
msgid "Maximum email addresses"
|
||||
msgstr "Máximo de endereços de email"
|
||||
|
||||
#. js-lingui-id: 9UHNQc
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Maximum execution time in seconds (1-900)"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: PAhTVY
|
||||
#: src/modules/settings/data-model/fields/forms/components/SettingsDataModelFieldMaxValuesForm.tsx
|
||||
msgid "Maximum files"
|
||||
@@ -8656,6 +8700,11 @@ msgstr "Nenhum campo disponível para selecionar"
|
||||
msgid "No body"
|
||||
msgstr "Sem corpo"
|
||||
|
||||
#. js-lingui-id: c3+z7H
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCallingCodeSelectInput.tsx
|
||||
msgid "No calling code"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: OTe3RI
|
||||
#: src/pages/settings/domains/SettingsDomain.tsx
|
||||
msgid "No change detected"
|
||||
@@ -8686,7 +8735,6 @@ msgstr "Nenhum contexto foi fornecido para esta solicitação"
|
||||
#: src/modules/settings/data-model/fields/forms/phones/components/SettingsDataModelFieldPhonesForm.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/address/components/SettingsDataModelFieldAddressForm.tsx
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCountrySelectInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCountryCodeSelectInput.tsx
|
||||
msgid "No country"
|
||||
msgstr "Sem país"
|
||||
|
||||
@@ -9124,7 +9172,13 @@ msgstr "Não compartilhado por {notSharedByFullName}"
|
||||
msgid "Not synced"
|
||||
msgstr "Não sincronizado"
|
||||
|
||||
#. js-lingui-id: KiJn9B
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Note"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 1DBGsz
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/action-menu/actions/record-actions/constants/DefaultRecordActionsConfig.tsx
|
||||
msgid "Notes"
|
||||
msgstr "Notas"
|
||||
@@ -9502,6 +9556,11 @@ msgstr ""
|
||||
msgid "Organization"
|
||||
msgstr "Organização"
|
||||
|
||||
#. js-lingui-id: zi/p7n
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Organization plan"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: nV6twc
|
||||
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuEditOrganizeActions.tsx
|
||||
msgid "Organize"
|
||||
@@ -9560,6 +9619,7 @@ msgstr "Interrupção"
|
||||
#: src/modules/logic-functions/components/LogicFunctionExecutionResult.tsx
|
||||
#: src/modules/command-menu/pages/workflow/step/view-run/components/CommandMenuWorkflowRunViewStepContent.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/TerminalOutput.tsx
|
||||
#: src/modules/ai/components/CodeExecutionDisplay.tsx
|
||||
msgid "Output"
|
||||
@@ -10061,6 +10121,11 @@ msgstr "Política de privacidade"
|
||||
msgid "Pro"
|
||||
msgstr "Pro"
|
||||
|
||||
#. js-lingui-id: r5je1s
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Pro plan"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: k1ifdL
|
||||
#: src/modules/workflow/components/WorkflowStepExecutionResult.tsx
|
||||
#: src/modules/spreadsheet-import/steps/components/UploadStep/components/DropZone.tsx
|
||||
@@ -11920,6 +11985,14 @@ msgstr "Espaços e vírgula - {spacesAndCommaExample}"
|
||||
msgid "Spanish"
|
||||
msgstr "Espanhol"
|
||||
|
||||
#. js-lingui-id: gsifzp
|
||||
#: src/modules/command-menu/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
|
||||
#: src/modules/command-menu/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
msgid "Split multiple values"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: vnS6Rf
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
msgid "SSO"
|
||||
@@ -12398,6 +12471,7 @@ msgid "Task Title"
|
||||
msgstr "Título da tarefa"
|
||||
|
||||
#. js-lingui-id: GtycJ/
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/action-menu/actions/record-actions/constants/DefaultRecordActionsConfig.tsx
|
||||
msgid "Tasks"
|
||||
msgstr "Tarefas"
|
||||
@@ -12597,6 +12671,11 @@ msgstr "Não há atividade associada a este registro."
|
||||
msgid "There was an error while updating password."
|
||||
msgstr "Ocorreu um erro ao atualizar a senha."
|
||||
|
||||
#. js-lingui-id: AUV+TY
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Thinking"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Ed99mE
|
||||
#: src/modules/ai/components/ReasoningSummaryDisplay.tsx
|
||||
msgid "Thinking..."
|
||||
@@ -12784,6 +12863,11 @@ msgstr "Isso excluirá permanentemente seu método de autenticação de dois fat
|
||||
msgid "This will revert the database value to environment/default value. The database override will be removed and the system will use the environment settings."
|
||||
msgstr "Isso reverterá o valor do banco de dados para o valor do ambiente/padrão. A substituição do banco de dados será removida e o sistema usará as configurações do ambiente."
|
||||
|
||||
#. js-lingui-id: f8HOUp
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Thought"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 5g/sE8
|
||||
#: src/modules/action-menu/actions/record-actions/constants/WorkflowActionsConfig.tsx
|
||||
msgid "Tidy up"
|
||||
@@ -12815,10 +12899,16 @@ msgid "Time zone"
|
||||
msgstr "Fuso horário"
|
||||
|
||||
#. js-lingui-id: cklVjM
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCalendarViewContent.tsx
|
||||
msgid "Timeline"
|
||||
msgstr "Linha do Tempo"
|
||||
|
||||
#. js-lingui-id: xY9s5E
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Timeout"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8TMaZI
|
||||
#: src/pages/settings/security/event-logs/components/EventLogResultsTable.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogResultsTable.tsx
|
||||
@@ -13131,7 +13221,6 @@ msgid "Type"
|
||||
msgstr "Tipo"
|
||||
|
||||
#. js-lingui-id: SKD2e4
|
||||
#: src/modules/page-layout/widgets/standalone-rich-text/components/StandaloneRichTextEditorContent.tsx
|
||||
#: src/modules/activities/components/ActivityRichTextEditor.tsx
|
||||
msgid "Type '/' for commands, '@' for mentions"
|
||||
msgstr ""
|
||||
@@ -13735,8 +13824,6 @@ msgid "View Logs"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: ecVcAx
|
||||
#: src/modules/ai/components/AIChatTab.tsx
|
||||
#: src/modules/ai/components/AIChatTab.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
msgid "View Previous AI Chats"
|
||||
@@ -13992,6 +14079,11 @@ msgstr ""
|
||||
msgid "When any deal with amount over $100,000 has its stage or amount updated, send a notification to the sales channel with the deal name, company, new stage, amount and owner."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8jc/Xn
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "When enabled, AI agents and workflow automations can discover and call this function"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: C51ilI
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
|
||||
msgid "When the API key will expire."
|
||||
@@ -14124,6 +14216,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 ""
|
||||
|
||||
@@ -106,6 +106,7 @@ msgstr "(selecionado: {selectedIconKey})"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "[empty string]"
|
||||
@@ -310,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})"
|
||||
@@ -381,6 +387,11 @@ msgstr "{selectedCount} tipos de origem"
|
||||
msgid "{serviceLabel} service is unreachable"
|
||||
msgstr "O serviço {serviceLabel} está inacessível"
|
||||
|
||||
#. js-lingui-id: 8vJ+2V
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "{stepCount, plural, one {# step} other {# steps}}"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Bzjg0/
|
||||
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepCalendar.tsx
|
||||
msgid "{stepNumber}. Calendar"
|
||||
@@ -1829,6 +1840,7 @@ msgstr "Ascendente"
|
||||
#: src/modules/settings/roles/role-permissions/permission-flags/hooks/useActionRolePermissionFlagConfig.ts
|
||||
#: src/modules/navigation/components/MainNavigationDrawerFixedItems.tsx
|
||||
#: src/modules/command-menu/hooks/useOpenAskAIPageInCommandMenu.ts
|
||||
#: src/modules/command-menu/components/CommandMenuAskAIInfo.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
@@ -1967,7 +1979,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 ""
|
||||
@@ -2068,6 +2079,11 @@ msgstr "Disponibilidade"
|
||||
msgid "Available"
|
||||
msgstr "Disponível"
|
||||
|
||||
#. js-lingui-id: 06gA3L
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Available as tool"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: oD38t2
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Available tools"
|
||||
@@ -2239,9 +2255,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
|
||||
@@ -2312,6 +2328,7 @@ msgstr "caldav.example.com"
|
||||
#. js-lingui-id: AjVXBS
|
||||
#: src/modules/views/view-picker/constants/ViewPickerTypeSelectOptions.ts
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
|
||||
msgid "Calendar"
|
||||
msgstr "Calendário"
|
||||
@@ -2364,6 +2381,11 @@ msgstr "Visão do Calendário"
|
||||
msgid "Calendars"
|
||||
msgstr "Calendários"
|
||||
|
||||
#. js-lingui-id: qIlodj
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormPhoneFieldInput.tsx
|
||||
msgid "Calling Code"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: msssZq
|
||||
#: src/modules/settings/data-model/objects/forms/components/SettingsDataModelObjectAboutForm.tsx
|
||||
msgid "Can't change API names for standard objects"
|
||||
@@ -2500,11 +2522,6 @@ msgstr "Alterar tipo de nó"
|
||||
msgid "Change Password"
|
||||
msgstr "Alterar palavra-passe"
|
||||
|
||||
#. js-lingui-id: wRtBJP
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Change Plan"
|
||||
msgstr "Mudar Plano"
|
||||
|
||||
#. js-lingui-id: EYSFEW
|
||||
#: src/pages/settings/domains/SettingsDomain.tsx
|
||||
msgid "Change subdomain?"
|
||||
@@ -2602,7 +2619,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"
|
||||
|
||||
@@ -2705,6 +2722,11 @@ msgstr "Segredo do Cliente"
|
||||
msgid "Client Settings"
|
||||
msgstr "Configurações do Cliente"
|
||||
|
||||
#. js-lingui-id: mekEJ5
|
||||
#: src/hooks/useCopyToClipboard.tsx
|
||||
msgid "Clipboard requires a secure connection (HTTPS). Please access this app over HTTPS to enable copying."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yz7wBu
|
||||
#: src/modules/ui/feedback/snack-bar-manager/components/SnackBar.tsx
|
||||
msgid "Close"
|
||||
@@ -2747,6 +2769,7 @@ msgstr "Codifique sua função"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Collapse"
|
||||
@@ -3301,11 +3324,6 @@ msgstr "Contar valores únicos"
|
||||
msgid "Country"
|
||||
msgstr "País"
|
||||
|
||||
#. js-lingui-id: j2OqfX
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormPhoneFieldInput.tsx
|
||||
msgid "Country Code"
|
||||
msgstr "Código do País"
|
||||
|
||||
#. js-lingui-id: gJdfqX
|
||||
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
|
||||
msgid "create"
|
||||
@@ -4826,6 +4844,7 @@ msgstr "Domínios de Emails"
|
||||
#: src/pages/settings/accounts/SettingsAccountsEmails.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Emails"
|
||||
msgstr "E-mails"
|
||||
|
||||
@@ -4877,6 +4896,7 @@ msgstr "Vazio"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Empty Array"
|
||||
@@ -4897,6 +4917,7 @@ msgstr "Caixa de entrada vazia"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Empty Object"
|
||||
@@ -5024,10 +5045,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
|
||||
@@ -5092,6 +5113,11 @@ msgstr "Introduza o valor de teste"
|
||||
msgid "Enter text"
|
||||
msgstr "Introduza o texto"
|
||||
|
||||
#. js-lingui-id: +rrO69
|
||||
#: src/modules/page-layout/widgets/standalone-rich-text/components/StandaloneRichTextEditorContent.tsx
|
||||
msgid "Enter text or type '/' for commands"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yZMXC2
|
||||
#: src/modules/advanced-text-editor/hooks/useAdvancedTextEditor.ts
|
||||
msgid "Enter text or Type '/' for commands"
|
||||
@@ -5488,6 +5514,7 @@ msgstr "Sair das Definições"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Expand"
|
||||
@@ -6018,6 +6045,11 @@ msgstr ""
|
||||
msgid "File URL is not defined"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: sER+bs
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Files"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: o7J4JM
|
||||
#: src/pages/settings/data-model/SettingsObjectFieldTable.tsx
|
||||
#: src/pages/settings/ai/components/SettingsSkillsTable.tsx
|
||||
@@ -6121,6 +6153,7 @@ msgstr "O primeiro nome não pode estar vazio"
|
||||
|
||||
#. js-lingui-id: ylQd2j
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/utils/getActionHeaderTypeOrThrow.ts
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/command-menu/pages/workflow/action/components/CommandMenuWorkflowSelectAction.tsx
|
||||
msgid "Flow"
|
||||
msgstr "Fluxo"
|
||||
@@ -6586,6 +6619,11 @@ msgstr "Ocultar grupo {groupValue}"
|
||||
msgid "Hide hidden groups"
|
||||
msgstr "Ocultar grupos ocultos"
|
||||
|
||||
#. js-lingui-id: i0qMbr
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Home"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Xkd22/
|
||||
#: src/modules/page-layout/utils/getWidgetTitle.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/GraphTypeInformation.ts
|
||||
@@ -6897,6 +6935,7 @@ msgstr "Informações"
|
||||
#: src/modules/settings/logic-functions/components/tabs/SettingsLogicFunctionTestTab.tsx
|
||||
#: src/modules/command-menu/pages/workflow/step/view-run/components/CommandMenuWorkflowRunViewStepContent.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Input"
|
||||
msgstr "Entrada"
|
||||
|
||||
@@ -7954,6 +7993,11 @@ msgstr "Intervalo Máximo"
|
||||
msgid "Maximum email addresses"
|
||||
msgstr "Máximo de endereços de e-mail"
|
||||
|
||||
#. js-lingui-id: 9UHNQc
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Maximum execution time in seconds (1-900)"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: PAhTVY
|
||||
#: src/modules/settings/data-model/fields/forms/components/SettingsDataModelFieldMaxValuesForm.tsx
|
||||
msgid "Maximum files"
|
||||
@@ -8656,6 +8700,11 @@ msgstr "Sem campos disponíveis para selecionar"
|
||||
msgid "No body"
|
||||
msgstr "Sem corpo"
|
||||
|
||||
#. js-lingui-id: c3+z7H
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCallingCodeSelectInput.tsx
|
||||
msgid "No calling code"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: OTe3RI
|
||||
#: src/pages/settings/domains/SettingsDomain.tsx
|
||||
msgid "No change detected"
|
||||
@@ -8686,7 +8735,6 @@ msgstr "Não foi fornecido contexto para este pedido"
|
||||
#: src/modules/settings/data-model/fields/forms/phones/components/SettingsDataModelFieldPhonesForm.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/address/components/SettingsDataModelFieldAddressForm.tsx
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCountrySelectInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCountryCodeSelectInput.tsx
|
||||
msgid "No country"
|
||||
msgstr "Sem país"
|
||||
|
||||
@@ -9124,7 +9172,13 @@ msgstr "Não compartilhado por {notSharedByFullName}"
|
||||
msgid "Not synced"
|
||||
msgstr "Não sincronizado"
|
||||
|
||||
#. js-lingui-id: KiJn9B
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Note"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 1DBGsz
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/action-menu/actions/record-actions/constants/DefaultRecordActionsConfig.tsx
|
||||
msgid "Notes"
|
||||
msgstr "Notas"
|
||||
@@ -9502,6 +9556,11 @@ msgstr ""
|
||||
msgid "Organization"
|
||||
msgstr "Organização"
|
||||
|
||||
#. js-lingui-id: zi/p7n
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Organization plan"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: nV6twc
|
||||
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuEditOrganizeActions.tsx
|
||||
msgid "Organize"
|
||||
@@ -9560,6 +9619,7 @@ msgstr "Interrupção"
|
||||
#: src/modules/logic-functions/components/LogicFunctionExecutionResult.tsx
|
||||
#: src/modules/command-menu/pages/workflow/step/view-run/components/CommandMenuWorkflowRunViewStepContent.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/TerminalOutput.tsx
|
||||
#: src/modules/ai/components/CodeExecutionDisplay.tsx
|
||||
msgid "Output"
|
||||
@@ -10061,6 +10121,11 @@ msgstr "Política de Privacidade"
|
||||
msgid "Pro"
|
||||
msgstr "Pro"
|
||||
|
||||
#. js-lingui-id: r5je1s
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Pro plan"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: k1ifdL
|
||||
#: src/modules/workflow/components/WorkflowStepExecutionResult.tsx
|
||||
#: src/modules/spreadsheet-import/steps/components/UploadStep/components/DropZone.tsx
|
||||
@@ -11920,6 +11985,14 @@ msgstr "Espaços e vírgula - {spacesAndCommaExample}"
|
||||
msgid "Spanish"
|
||||
msgstr "Espanhol"
|
||||
|
||||
#. js-lingui-id: gsifzp
|
||||
#: src/modules/command-menu/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
|
||||
#: src/modules/command-menu/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
msgid "Split multiple values"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: vnS6Rf
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
msgid "SSO"
|
||||
@@ -12398,6 +12471,7 @@ msgid "Task Title"
|
||||
msgstr "Título da Tarefa"
|
||||
|
||||
#. js-lingui-id: GtycJ/
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/action-menu/actions/record-actions/constants/DefaultRecordActionsConfig.tsx
|
||||
msgid "Tasks"
|
||||
msgstr "Tarefas"
|
||||
@@ -12597,6 +12671,11 @@ msgstr "Não há atividade associada a este registo."
|
||||
msgid "There was an error while updating password."
|
||||
msgstr "Ocorreu um erro ao atualizar a palavra-passe."
|
||||
|
||||
#. js-lingui-id: AUV+TY
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Thinking"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Ed99mE
|
||||
#: src/modules/ai/components/ReasoningSummaryDisplay.tsx
|
||||
msgid "Thinking..."
|
||||
@@ -12784,6 +12863,11 @@ msgstr "Isto eliminará permanentemente o seu método de autenticação de dois
|
||||
msgid "This will revert the database value to environment/default value. The database override will be removed and the system will use the environment settings."
|
||||
msgstr "Isso irá reverter o valor do banco de dados para o valor de ambiente/padrão. A substituição no banco de dados será removida e o sistema usará as configurações de ambiente."
|
||||
|
||||
#. js-lingui-id: f8HOUp
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Thought"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 5g/sE8
|
||||
#: src/modules/action-menu/actions/record-actions/constants/WorkflowActionsConfig.tsx
|
||||
msgid "Tidy up"
|
||||
@@ -12815,10 +12899,16 @@ msgid "Time zone"
|
||||
msgstr "Fuso horário"
|
||||
|
||||
#. js-lingui-id: cklVjM
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCalendarViewContent.tsx
|
||||
msgid "Timeline"
|
||||
msgstr "Linha do tempo"
|
||||
|
||||
#. js-lingui-id: xY9s5E
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Timeout"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8TMaZI
|
||||
#: src/pages/settings/security/event-logs/components/EventLogResultsTable.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogResultsTable.tsx
|
||||
@@ -13131,7 +13221,6 @@ msgid "Type"
|
||||
msgstr "Tipo"
|
||||
|
||||
#. js-lingui-id: SKD2e4
|
||||
#: src/modules/page-layout/widgets/standalone-rich-text/components/StandaloneRichTextEditorContent.tsx
|
||||
#: src/modules/activities/components/ActivityRichTextEditor.tsx
|
||||
msgid "Type '/' for commands, '@' for mentions"
|
||||
msgstr ""
|
||||
@@ -13735,8 +13824,6 @@ msgid "View Logs"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: ecVcAx
|
||||
#: src/modules/ai/components/AIChatTab.tsx
|
||||
#: src/modules/ai/components/AIChatTab.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
msgid "View Previous AI Chats"
|
||||
@@ -13992,6 +14079,11 @@ msgstr ""
|
||||
msgid "When any deal with amount over $100,000 has its stage or amount updated, send a notification to the sales channel with the deal name, company, new stage, amount and owner."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8jc/Xn
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "When enabled, AI agents and workflow automations can discover and call this function"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: C51ilI
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
|
||||
msgid "When the API key will expire."
|
||||
@@ -14124,6 +14216,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 ""
|
||||
|
||||
@@ -106,6 +106,7 @@ msgstr "(selectată: {selectedIconKey})"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "[empty string]"
|
||||
@@ -310,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})"
|
||||
@@ -381,6 +387,11 @@ msgstr "{selectedCount} tipuri de surse"
|
||||
msgid "{serviceLabel} service is unreachable"
|
||||
msgstr "Serviciul {serviceLabel} este inaccesibil"
|
||||
|
||||
#. js-lingui-id: 8vJ+2V
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "{stepCount, plural, one {# step} other {# steps}}"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Bzjg0/
|
||||
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepCalendar.tsx
|
||||
msgid "{stepNumber}. Calendar"
|
||||
@@ -1829,6 +1840,7 @@ msgstr "Ascendent"
|
||||
#: src/modules/settings/roles/role-permissions/permission-flags/hooks/useActionRolePermissionFlagConfig.ts
|
||||
#: src/modules/navigation/components/MainNavigationDrawerFixedItems.tsx
|
||||
#: src/modules/command-menu/hooks/useOpenAskAIPageInCommandMenu.ts
|
||||
#: src/modules/command-menu/components/CommandMenuAskAIInfo.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
@@ -1967,7 +1979,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 ""
|
||||
@@ -2068,6 +2079,11 @@ msgstr "Disponibilitate"
|
||||
msgid "Available"
|
||||
msgstr "Disponibil"
|
||||
|
||||
#. js-lingui-id: 06gA3L
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Available as tool"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: oD38t2
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Available tools"
|
||||
@@ -2239,9 +2255,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
|
||||
@@ -2312,6 +2328,7 @@ msgstr "caldav.example.com"
|
||||
#. js-lingui-id: AjVXBS
|
||||
#: src/modules/views/view-picker/constants/ViewPickerTypeSelectOptions.ts
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
|
||||
msgid "Calendar"
|
||||
msgstr "Calendar"
|
||||
@@ -2364,6 +2381,11 @@ msgstr "Vizualizare calendar"
|
||||
msgid "Calendars"
|
||||
msgstr "Calendare"
|
||||
|
||||
#. js-lingui-id: qIlodj
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormPhoneFieldInput.tsx
|
||||
msgid "Calling Code"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: msssZq
|
||||
#: src/modules/settings/data-model/objects/forms/components/SettingsDataModelObjectAboutForm.tsx
|
||||
msgid "Can't change API names for standard objects"
|
||||
@@ -2500,11 +2522,6 @@ msgstr "Schimbă tipul nodului"
|
||||
msgid "Change Password"
|
||||
msgstr "Schimbă parola"
|
||||
|
||||
#. js-lingui-id: wRtBJP
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Change Plan"
|
||||
msgstr "Schimbă planul"
|
||||
|
||||
#. js-lingui-id: EYSFEW
|
||||
#: src/pages/settings/domains/SettingsDomain.tsx
|
||||
msgid "Change subdomain?"
|
||||
@@ -2602,7 +2619,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"
|
||||
|
||||
@@ -2705,6 +2722,11 @@ msgstr "Secret client"
|
||||
msgid "Client Settings"
|
||||
msgstr "Setări Client"
|
||||
|
||||
#. js-lingui-id: mekEJ5
|
||||
#: src/hooks/useCopyToClipboard.tsx
|
||||
msgid "Clipboard requires a secure connection (HTTPS). Please access this app over HTTPS to enable copying."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yz7wBu
|
||||
#: src/modules/ui/feedback/snack-bar-manager/components/SnackBar.tsx
|
||||
msgid "Close"
|
||||
@@ -2747,6 +2769,7 @@ msgstr "Codificați funcția dumneavoastră"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Collapse"
|
||||
@@ -3301,11 +3324,6 @@ msgstr "Numără valorile unice"
|
||||
msgid "Country"
|
||||
msgstr "Țară"
|
||||
|
||||
#. js-lingui-id: j2OqfX
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormPhoneFieldInput.tsx
|
||||
msgid "Country Code"
|
||||
msgstr "Codul țării"
|
||||
|
||||
#. js-lingui-id: gJdfqX
|
||||
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
|
||||
msgid "create"
|
||||
@@ -4826,6 +4844,7 @@ msgstr "Domenii de email"
|
||||
#: src/pages/settings/accounts/SettingsAccountsEmails.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Emails"
|
||||
msgstr "Emailuri"
|
||||
|
||||
@@ -4877,6 +4896,7 @@ msgstr "Gol"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Empty Array"
|
||||
@@ -4897,6 +4917,7 @@ msgstr "Inbox gol"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Empty Object"
|
||||
@@ -5024,10 +5045,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
|
||||
@@ -5092,6 +5113,11 @@ msgstr "Introduceți valoarea de test"
|
||||
msgid "Enter text"
|
||||
msgstr "Introduceți text"
|
||||
|
||||
#. js-lingui-id: +rrO69
|
||||
#: src/modules/page-layout/widgets/standalone-rich-text/components/StandaloneRichTextEditorContent.tsx
|
||||
msgid "Enter text or type '/' for commands"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yZMXC2
|
||||
#: src/modules/advanced-text-editor/hooks/useAdvancedTextEditor.ts
|
||||
msgid "Enter text or Type '/' for commands"
|
||||
@@ -5488,6 +5514,7 @@ msgstr "Ieșire din Setări"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Expand"
|
||||
@@ -6018,6 +6045,11 @@ msgstr ""
|
||||
msgid "File URL is not defined"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: sER+bs
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Files"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: o7J4JM
|
||||
#: src/pages/settings/data-model/SettingsObjectFieldTable.tsx
|
||||
#: src/pages/settings/ai/components/SettingsSkillsTable.tsx
|
||||
@@ -6121,6 +6153,7 @@ msgstr "Prenumele nu poate fi gol"
|
||||
|
||||
#. js-lingui-id: ylQd2j
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/utils/getActionHeaderTypeOrThrow.ts
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/command-menu/pages/workflow/action/components/CommandMenuWorkflowSelectAction.tsx
|
||||
msgid "Flow"
|
||||
msgstr "Flux"
|
||||
@@ -6586,6 +6619,11 @@ msgstr "Ascunde grupul {groupValue}"
|
||||
msgid "Hide hidden groups"
|
||||
msgstr "Ascundeți grupurile ascunse"
|
||||
|
||||
#. js-lingui-id: i0qMbr
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Home"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Xkd22/
|
||||
#: src/modules/page-layout/utils/getWidgetTitle.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/GraphTypeInformation.ts
|
||||
@@ -6897,6 +6935,7 @@ msgstr "Informații"
|
||||
#: src/modules/settings/logic-functions/components/tabs/SettingsLogicFunctionTestTab.tsx
|
||||
#: src/modules/command-menu/pages/workflow/step/view-run/components/CommandMenuWorkflowRunViewStepContent.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Input"
|
||||
msgstr "Intrare"
|
||||
|
||||
@@ -7954,6 +7993,11 @@ msgstr "Interval maxim"
|
||||
msgid "Maximum email addresses"
|
||||
msgstr "Adresele de e-mail maxime"
|
||||
|
||||
#. js-lingui-id: 9UHNQc
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Maximum execution time in seconds (1-900)"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: PAhTVY
|
||||
#: src/modules/settings/data-model/fields/forms/components/SettingsDataModelFieldMaxValuesForm.tsx
|
||||
msgid "Maximum files"
|
||||
@@ -8656,6 +8700,11 @@ msgstr "Nu există câmpuri disponibile de selectat"
|
||||
msgid "No body"
|
||||
msgstr "Fără Body"
|
||||
|
||||
#. js-lingui-id: c3+z7H
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCallingCodeSelectInput.tsx
|
||||
msgid "No calling code"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: OTe3RI
|
||||
#: src/pages/settings/domains/SettingsDomain.tsx
|
||||
msgid "No change detected"
|
||||
@@ -8686,7 +8735,6 @@ msgstr "Nu a fost furnizat niciun context pentru această cerere"
|
||||
#: src/modules/settings/data-model/fields/forms/phones/components/SettingsDataModelFieldPhonesForm.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/address/components/SettingsDataModelFieldAddressForm.tsx
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCountrySelectInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCountryCodeSelectInput.tsx
|
||||
msgid "No country"
|
||||
msgstr "Fără țară"
|
||||
|
||||
@@ -9124,7 +9172,13 @@ msgstr "Nu este partajat de {notSharedByFullName}"
|
||||
msgid "Not synced"
|
||||
msgstr "Neacordat"
|
||||
|
||||
#. js-lingui-id: KiJn9B
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Note"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 1DBGsz
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/action-menu/actions/record-actions/constants/DefaultRecordActionsConfig.tsx
|
||||
msgid "Notes"
|
||||
msgstr "Notițe"
|
||||
@@ -9502,6 +9556,11 @@ msgstr ""
|
||||
msgid "Organization"
|
||||
msgstr "Organizație"
|
||||
|
||||
#. js-lingui-id: zi/p7n
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Organization plan"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: nV6twc
|
||||
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuEditOrganizeActions.tsx
|
||||
msgid "Organize"
|
||||
@@ -9560,6 +9619,7 @@ msgstr "Întrerupere"
|
||||
#: src/modules/logic-functions/components/LogicFunctionExecutionResult.tsx
|
||||
#: src/modules/command-menu/pages/workflow/step/view-run/components/CommandMenuWorkflowRunViewStepContent.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/TerminalOutput.tsx
|
||||
#: src/modules/ai/components/CodeExecutionDisplay.tsx
|
||||
msgid "Output"
|
||||
@@ -10061,6 +10121,11 @@ msgstr "Politica de confidențialitate"
|
||||
msgid "Pro"
|
||||
msgstr "Pro"
|
||||
|
||||
#. js-lingui-id: r5je1s
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Pro plan"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: k1ifdL
|
||||
#: src/modules/workflow/components/WorkflowStepExecutionResult.tsx
|
||||
#: src/modules/spreadsheet-import/steps/components/UploadStep/components/DropZone.tsx
|
||||
@@ -11920,6 +11985,14 @@ msgstr "Spații și virgulă - {spacesAndCommaExample}"
|
||||
msgid "Spanish"
|
||||
msgstr "Spaniolă"
|
||||
|
||||
#. js-lingui-id: gsifzp
|
||||
#: src/modules/command-menu/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
|
||||
#: src/modules/command-menu/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
msgid "Split multiple values"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: vnS6Rf
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
msgid "SSO"
|
||||
@@ -12398,6 +12471,7 @@ msgid "Task Title"
|
||||
msgstr "Titlul sarcinii"
|
||||
|
||||
#. js-lingui-id: GtycJ/
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/action-menu/actions/record-actions/constants/DefaultRecordActionsConfig.tsx
|
||||
msgid "Tasks"
|
||||
msgstr "Sarcini"
|
||||
@@ -12597,6 +12671,11 @@ msgstr "Nu există activitate asociată acestei înregistrări."
|
||||
msgid "There was an error while updating password."
|
||||
msgstr "A apărut o eroare în timpul actualizării parolei."
|
||||
|
||||
#. js-lingui-id: AUV+TY
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Thinking"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Ed99mE
|
||||
#: src/modules/ai/components/ReasoningSummaryDisplay.tsx
|
||||
msgid "Thinking..."
|
||||
@@ -12784,6 +12863,11 @@ msgstr "Aceasta va șterge permanent metoda dvs. de autentificare în doi pași.
|
||||
msgid "This will revert the database value to environment/default value. The database override will be removed and the system will use the environment settings."
|
||||
msgstr "Aceasta va reveni valoarea bazei de date la valoarea implicită/mediu. Suprascrierea bazei de date va fi eliminată iar sistemul va utiliza setările de mediu."
|
||||
|
||||
#. js-lingui-id: f8HOUp
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Thought"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 5g/sE8
|
||||
#: src/modules/action-menu/actions/record-actions/constants/WorkflowActionsConfig.tsx
|
||||
msgid "Tidy up"
|
||||
@@ -12815,10 +12899,16 @@ msgid "Time zone"
|
||||
msgstr "Fusul orar"
|
||||
|
||||
#. js-lingui-id: cklVjM
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCalendarViewContent.tsx
|
||||
msgid "Timeline"
|
||||
msgstr "Cronologie"
|
||||
|
||||
#. js-lingui-id: xY9s5E
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Timeout"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8TMaZI
|
||||
#: src/pages/settings/security/event-logs/components/EventLogResultsTable.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogResultsTable.tsx
|
||||
@@ -13131,7 +13221,6 @@ msgid "Type"
|
||||
msgstr "Tip"
|
||||
|
||||
#. js-lingui-id: SKD2e4
|
||||
#: src/modules/page-layout/widgets/standalone-rich-text/components/StandaloneRichTextEditorContent.tsx
|
||||
#: src/modules/activities/components/ActivityRichTextEditor.tsx
|
||||
msgid "Type '/' for commands, '@' for mentions"
|
||||
msgstr ""
|
||||
@@ -13735,8 +13824,6 @@ msgid "View Logs"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: ecVcAx
|
||||
#: src/modules/ai/components/AIChatTab.tsx
|
||||
#: src/modules/ai/components/AIChatTab.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
msgid "View Previous AI Chats"
|
||||
@@ -13992,6 +14079,11 @@ msgstr ""
|
||||
msgid "When any deal with amount over $100,000 has its stage or amount updated, send a notification to the sales channel with the deal name, company, new stage, amount and owner."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8jc/Xn
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "When enabled, AI agents and workflow automations can discover and call this function"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: C51ilI
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
|
||||
msgid "When the API key will expire."
|
||||
@@ -14124,6 +14216,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.
@@ -106,6 +106,7 @@ msgstr "(изабрано: {selectedIconKey})"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "[empty string]"
|
||||
@@ -310,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})"
|
||||
@@ -381,6 +387,11 @@ msgstr "{selectedCount} типова извора"
|
||||
msgid "{serviceLabel} service is unreachable"
|
||||
msgstr "Сервис {serviceLabel} није доступан"
|
||||
|
||||
#. js-lingui-id: 8vJ+2V
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "{stepCount, plural, one {# step} other {# steps}}"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Bzjg0/
|
||||
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepCalendar.tsx
|
||||
msgid "{stepNumber}. Calendar"
|
||||
@@ -1829,6 +1840,7 @@ msgstr "Растуће"
|
||||
#: src/modules/settings/roles/role-permissions/permission-flags/hooks/useActionRolePermissionFlagConfig.ts
|
||||
#: src/modules/navigation/components/MainNavigationDrawerFixedItems.tsx
|
||||
#: src/modules/command-menu/hooks/useOpenAskAIPageInCommandMenu.ts
|
||||
#: src/modules/command-menu/components/CommandMenuAskAIInfo.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
@@ -1967,7 +1979,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 ""
|
||||
@@ -2068,6 +2079,11 @@ msgstr "Доступност"
|
||||
msgid "Available"
|
||||
msgstr "Доступно"
|
||||
|
||||
#. js-lingui-id: 06gA3L
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Available as tool"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: oD38t2
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Available tools"
|
||||
@@ -2239,9 +2255,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
|
||||
@@ -2312,6 +2328,7 @@ msgstr "caldav.example.com"
|
||||
#. js-lingui-id: AjVXBS
|
||||
#: src/modules/views/view-picker/constants/ViewPickerTypeSelectOptions.ts
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
|
||||
msgid "Calendar"
|
||||
msgstr "Календар"
|
||||
@@ -2364,6 +2381,11 @@ msgstr "Преглед календара"
|
||||
msgid "Calendars"
|
||||
msgstr "Календари"
|
||||
|
||||
#. js-lingui-id: qIlodj
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormPhoneFieldInput.tsx
|
||||
msgid "Calling Code"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: msssZq
|
||||
#: src/modules/settings/data-model/objects/forms/components/SettingsDataModelObjectAboutForm.tsx
|
||||
msgid "Can't change API names for standard objects"
|
||||
@@ -2500,11 +2522,6 @@ msgstr "Промените тип чвора"
|
||||
msgid "Change Password"
|
||||
msgstr "Промени лозинку"
|
||||
|
||||
#. js-lingui-id: wRtBJP
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Change Plan"
|
||||
msgstr "Промени план"
|
||||
|
||||
#. js-lingui-id: EYSFEW
|
||||
#: src/pages/settings/domains/SettingsDomain.tsx
|
||||
msgid "Change subdomain?"
|
||||
@@ -2602,7 +2619,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 "Изаберите формат за приказ датума"
|
||||
|
||||
@@ -2705,6 +2722,11 @@ msgstr "Тајна клијента"
|
||||
msgid "Client Settings"
|
||||
msgstr "Подешавања клијента"
|
||||
|
||||
#. js-lingui-id: mekEJ5
|
||||
#: src/hooks/useCopyToClipboard.tsx
|
||||
msgid "Clipboard requires a secure connection (HTTPS). Please access this app over HTTPS to enable copying."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yz7wBu
|
||||
#: src/modules/ui/feedback/snack-bar-manager/components/SnackBar.tsx
|
||||
msgid "Close"
|
||||
@@ -2747,6 +2769,7 @@ msgstr "Напишите вашу функцију"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Collapse"
|
||||
@@ -3301,11 +3324,6 @@ msgstr "Број јединствених вредности"
|
||||
msgid "Country"
|
||||
msgstr "Земља"
|
||||
|
||||
#. js-lingui-id: j2OqfX
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormPhoneFieldInput.tsx
|
||||
msgid "Country Code"
|
||||
msgstr "Код земље"
|
||||
|
||||
#. js-lingui-id: gJdfqX
|
||||
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
|
||||
msgid "create"
|
||||
@@ -4826,6 +4844,7 @@ msgstr "Имејл домени"
|
||||
#: src/pages/settings/accounts/SettingsAccountsEmails.tsx
|
||||
#: src/modules/settings/hooks/useSettingsNavigationItems.tsx
|
||||
#: src/modules/settings/accounts/components/SettingsAccountsSettingsSection.tsx
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Emails"
|
||||
msgstr "Имејлови"
|
||||
|
||||
@@ -4877,6 +4896,7 @@ msgstr "Празно"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Empty Array"
|
||||
@@ -4897,6 +4917,7 @@ msgstr "Празан пријемни сандуче"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Empty Object"
|
||||
@@ -5024,10 +5045,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
|
||||
@@ -5092,6 +5113,11 @@ msgstr "Унесите тест вредност"
|
||||
msgid "Enter text"
|
||||
msgstr "Унесите текст"
|
||||
|
||||
#. js-lingui-id: +rrO69
|
||||
#: src/modules/page-layout/widgets/standalone-rich-text/components/StandaloneRichTextEditorContent.tsx
|
||||
msgid "Enter text or type '/' for commands"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: yZMXC2
|
||||
#: src/modules/advanced-text-editor/hooks/useAdvancedTextEditor.ts
|
||||
msgid "Enter text or Type '/' for commands"
|
||||
@@ -5488,6 +5514,7 @@ msgstr "Изађи из подешавања"
|
||||
#: src/modules/object-record/record-field/ui/meta-types/input/components/RawJsonFieldInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/meta-types/display/components/JsonFieldDisplay.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
#: src/modules/ai/components/RoutingDebugDisplay.tsx
|
||||
msgid "Expand"
|
||||
@@ -6018,6 +6045,11 @@ msgstr ""
|
||||
msgid "File URL is not defined"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: sER+bs
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Files"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: o7J4JM
|
||||
#: src/pages/settings/data-model/SettingsObjectFieldTable.tsx
|
||||
#: src/pages/settings/ai/components/SettingsSkillsTable.tsx
|
||||
@@ -6121,6 +6153,7 @@ msgstr "Име не може бити празно"
|
||||
|
||||
#. js-lingui-id: ylQd2j
|
||||
#: src/modules/workflow/workflow-steps/workflow-actions/utils/getActionHeaderTypeOrThrow.ts
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/command-menu/pages/workflow/action/components/CommandMenuWorkflowSelectAction.tsx
|
||||
msgid "Flow"
|
||||
msgstr "Ток"
|
||||
@@ -6586,6 +6619,11 @@ msgstr "Сакриј групу {groupValue}"
|
||||
msgid "Hide hidden groups"
|
||||
msgstr "Сакриј скривене групе"
|
||||
|
||||
#. js-lingui-id: i0qMbr
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Home"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Xkd22/
|
||||
#: src/modules/page-layout/utils/getWidgetTitle.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/GraphTypeInformation.ts
|
||||
@@ -6897,6 +6935,7 @@ msgstr "Информације"
|
||||
#: src/modules/settings/logic-functions/components/tabs/SettingsLogicFunctionTestTab.tsx
|
||||
#: src/modules/command-menu/pages/workflow/step/view-run/components/CommandMenuWorkflowRunViewStepContent.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Input"
|
||||
msgstr "Унос"
|
||||
|
||||
@@ -7954,6 +7993,11 @@ msgstr "Максимални опсег"
|
||||
msgid "Maximum email addresses"
|
||||
msgstr "Максималан број имејл адреса"
|
||||
|
||||
#. js-lingui-id: 9UHNQc
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Maximum execution time in seconds (1-900)"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: PAhTVY
|
||||
#: src/modules/settings/data-model/fields/forms/components/SettingsDataModelFieldMaxValuesForm.tsx
|
||||
msgid "Maximum files"
|
||||
@@ -8656,6 +8700,11 @@ msgstr "Нема доступних поља за избор"
|
||||
msgid "No body"
|
||||
msgstr "Нема тела"
|
||||
|
||||
#. js-lingui-id: c3+z7H
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCallingCodeSelectInput.tsx
|
||||
msgid "No calling code"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: OTe3RI
|
||||
#: src/pages/settings/domains/SettingsDomain.tsx
|
||||
msgid "No change detected"
|
||||
@@ -8686,7 +8735,6 @@ msgstr "Контекст није обезбеђен за овај захтев"
|
||||
#: src/modules/settings/data-model/fields/forms/phones/components/SettingsDataModelFieldPhonesForm.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/address/components/SettingsDataModelFieldAddressForm.tsx
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCountrySelectInput.tsx
|
||||
#: src/modules/object-record/record-field/ui/form-types/components/FormCountryCodeSelectInput.tsx
|
||||
msgid "No country"
|
||||
msgstr "Нема земље"
|
||||
|
||||
@@ -9124,7 +9172,13 @@ msgstr "Није дељено од стране {notSharedByFullName}"
|
||||
msgid "Not synced"
|
||||
msgstr "Није синхронизовано"
|
||||
|
||||
#. js-lingui-id: KiJn9B
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
msgid "Note"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 1DBGsz
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/action-menu/actions/record-actions/constants/DefaultRecordActionsConfig.tsx
|
||||
msgid "Notes"
|
||||
msgstr "Белешке"
|
||||
@@ -9502,6 +9556,11 @@ msgstr ""
|
||||
msgid "Organization"
|
||||
msgstr "Организација"
|
||||
|
||||
#. js-lingui-id: zi/p7n
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Organization plan"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: nV6twc
|
||||
#: src/modules/command-menu/pages/navigation-menu-item/components/CommandMenuEditOrganizeActions.tsx
|
||||
msgid "Organize"
|
||||
@@ -9560,6 +9619,7 @@ msgstr "Прекид рада"
|
||||
#: src/modules/logic-functions/components/LogicFunctionExecutionResult.tsx
|
||||
#: src/modules/command-menu/pages/workflow/step/view-run/components/CommandMenuWorkflowRunViewStepContent.tsx
|
||||
#: src/modules/ai/components/ToolStepRenderer.tsx
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
#: src/modules/ai/components/TerminalOutput.tsx
|
||||
#: src/modules/ai/components/CodeExecutionDisplay.tsx
|
||||
msgid "Output"
|
||||
@@ -10061,6 +10121,11 @@ msgstr "Политика приватности"
|
||||
msgid "Pro"
|
||||
msgstr "Про"
|
||||
|
||||
#. js-lingui-id: r5je1s
|
||||
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
|
||||
msgid "Pro plan"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: k1ifdL
|
||||
#: src/modules/workflow/components/WorkflowStepExecutionResult.tsx
|
||||
#: src/modules/spreadsheet-import/steps/components/UploadStep/components/DropZone.tsx
|
||||
@@ -11920,6 +11985,14 @@ msgstr "Размаци и запета - {spacesAndCommaExample}"
|
||||
msgid "Spanish"
|
||||
msgstr "Шпански"
|
||||
|
||||
#. js-lingui-id: gsifzp
|
||||
#: src/modules/command-menu/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
|
||||
#: src/modules/command-menu/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
#: src/modules/command-menu/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
|
||||
msgid "Split multiple values"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: vnS6Rf
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
msgid "SSO"
|
||||
@@ -12398,6 +12471,7 @@ msgid "Task Title"
|
||||
msgstr "Наслов задатка"
|
||||
|
||||
#. js-lingui-id: GtycJ/
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/action-menu/actions/record-actions/constants/DefaultRecordActionsConfig.tsx
|
||||
msgid "Tasks"
|
||||
msgstr "Задаци"
|
||||
@@ -12597,6 +12671,11 @@ msgstr "Са овим записом нема повезаних активно
|
||||
msgid "There was an error while updating password."
|
||||
msgstr "Дошло је до грешке при ажурирању лозинке."
|
||||
|
||||
#. js-lingui-id: AUV+TY
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Thinking"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: Ed99mE
|
||||
#: src/modules/ai/components/ReasoningSummaryDisplay.tsx
|
||||
msgid "Thinking..."
|
||||
@@ -12784,6 +12863,11 @@ msgstr "Ово ће трајно избрисати ваш метод двофа
|
||||
msgid "This will revert the database value to environment/default value. The database override will be removed and the system will use the environment settings."
|
||||
msgstr "Ово ће вратити вредност из базе података на вредност окружења/подразумевану вредност. Измена базе података ће бити уклоњена и систем ће користити подешавања окружења."
|
||||
|
||||
#. js-lingui-id: f8HOUp
|
||||
#: src/modules/ai/components/ThinkingStepsDisplay.tsx
|
||||
msgid "Thought"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 5g/sE8
|
||||
#: src/modules/action-menu/actions/record-actions/constants/WorkflowActionsConfig.tsx
|
||||
msgid "Tidy up"
|
||||
@@ -12815,10 +12899,16 @@ msgid "Time zone"
|
||||
msgstr "Временска зона"
|
||||
|
||||
#. js-lingui-id: cklVjM
|
||||
#: src/modules/page-layout/constants/StandardPageLayoutTabTitleTranslations.ts
|
||||
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCalendarViewContent.tsx
|
||||
msgid "Timeline"
|
||||
msgstr "Трака времена"
|
||||
|
||||
#. js-lingui-id: xY9s5E
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "Timeout"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8TMaZI
|
||||
#: src/pages/settings/security/event-logs/components/EventLogResultsTable.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogResultsTable.tsx
|
||||
@@ -13131,7 +13221,6 @@ msgid "Type"
|
||||
msgstr "Тип"
|
||||
|
||||
#. js-lingui-id: SKD2e4
|
||||
#: src/modules/page-layout/widgets/standalone-rich-text/components/StandaloneRichTextEditorContent.tsx
|
||||
#: src/modules/activities/components/ActivityRichTextEditor.tsx
|
||||
msgid "Type '/' for commands, '@' for mentions"
|
||||
msgstr ""
|
||||
@@ -13735,8 +13824,6 @@ msgid "View Logs"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: ecVcAx
|
||||
#: src/modules/ai/components/AIChatTab.tsx
|
||||
#: src/modules/ai/components/AIChatTab.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
#: src/modules/action-menu/actions/record-agnostic-actions/constants/RecordAgnosticActionsConfig.tsx
|
||||
msgid "View Previous AI Chats"
|
||||
@@ -13992,6 +14079,11 @@ msgstr ""
|
||||
msgid "When any deal with amount over $100,000 has its stage or amount updated, send a notification to the sales channel with the deal name, company, new stage, amount and owner."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 8jc/Xn
|
||||
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionNewForm.tsx
|
||||
msgid "When enabled, AI agents and workflow automations can discover and call this function"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: C51ilI
|
||||
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
|
||||
msgid "When the API key will expire."
|
||||
@@ -14124,6 +14216,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 ""
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user