Compare commits

...
Author SHA1 Message Date
Félix Malfait 9decbf41d3 fix: handle JSON-RPC notifications correctly and distinguish auth errors
- Return null (HTTP 202) for JSON-RPC notifications (no id) instead of
  sending a malformed response with id: undefined
- Make JsonRpc DTO `id` field properly optional in TypeScript
- Distinguish HttpException (auth/FORBIDDEN → SERVER_ERROR -32000) from
  unexpected errors (INTERNAL_ERROR -32603) in the catch block
- Add SERVER_ERROR (-32000) to JSON-RPC error code constants
- Update controller to return 202 Accepted for notifications via
  @Res({ passthrough: true })
- Update unit and integration tests for new notification and error semantics

Made-with: Cursor
2026-03-16 12:29:42 +01:00
Félix Malfait 8d1da76d2c Small improvements 2026-03-16 12:05:16 +01:00
channi23 0fe2e260d3 test: update MCP integration expectations 2026-03-16 15:33:58 +05:30
channi23 e3e9d8d598 test: align MCP controller spec with tools/list response 2026-03-16 15:13:25 +05:30
channi23 16e66c8df0 fix: return method-specific MCP responses 2026-03-16 15:06:59 +05:30
Abdullah.andGitHub 6e36ad9fa2 fix: mailparser vulnerable to cross-site scripting (#18664)
Resolves [Dependabot Alert
595](https://github.com/twentyhq/twenty/security/dependabot/595) and
[Dependabot Alert
596](https://github.com/twentyhq/twenty/security/dependabot/596).
2026-03-16 09:59:36 +01:00
Charles BochetandGitHub 5c745059ad refactor: remove "core" naming from views and eliminate converter layer (#18667)
## Summary

- **Remove all "core" prefixes** from the views system — the
metadata-based storage migration is complete, so `CoreView`,
`coreViewsSelector`, `getCoreViews`, etc. are now just `View`,
`viewsSelector`, `getViews`
- **Eliminate the entire converter layer** (15 files, ~850 lines
deleted) — `convertCoreViewToView` and all sub-converters were either
no-ops or trivially adding `__typename` / mapping identical enum values.
Local enums now re-export from generated GraphQL types directly (single
source of truth)
- **Unify `View` and `ViewWithRelations`** into one type —
`ViewWithRelations` is now a type alias for `View`, selectors return
data directly without conversion

### Backend
- Rename `@ObjectType('CoreView')` → `@ObjectType('View')` (and all
sub-entities)
- Rename resolver methods: `getCoreViews` → `getViews`, `createCoreView`
→ `createView`, etc.
- Rename `FIND_ALL_CORE_VIEWS_GRAPHQL_OPERATION` →
`FIND_ALL_VIEWS_GRAPHQL_OPERATION`

### Frontend
- Delete 15 converter files (`convertGqlView*ToView*`,
`convertView*ToGql`, `convertViewWithRelationsToView`)
- Re-export `ViewType`, `ViewKey`, `ViewFilterGroupLogicalOperator` from
generated enums (no more duplicate enum definitions with different
casing)
- Replace `ViewOpenRecordInType` with `ViewOpenRecordIn` from generated
- Remove `__typename` from all local view sub-types
- Remove unused `variant` from `ViewFilter`, make `displayValue` and
`definition` optional
- Rename ~45 GraphQL query/mutation files and all selectors to drop
"core" prefix
- Delete unused `viewsWithRelationsSelector`
2026-03-16 09:57:18 +01:00
6340b9e2f7 i18n - translations (#18669)
Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
2026-03-16 09:49:16 +01:00
Abdullah.andGitHub 2c2f66b584 fix: DOMPurify contains a cross-site scripting vulnerability (#18665)
Resolves [Dependabot Alert
597](https://github.com/twentyhq/twenty/security/dependabot/597),
[Dependabot Alert
598](https://github.com/twentyhq/twenty/security/dependabot/598),
[Dependabot Alert
599](https://github.com/twentyhq/twenty/security/dependabot/599) and
[Dependabot Alert
600](https://github.com/twentyhq/twenty/security/dependabot/600).
2026-03-16 09:49:03 +01:00
Félix MalfaitGitHubClaudeclaude[bot] <41898282+claude[bot]@users.noreply.github.com>github-actionscubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
95a35f8a1d Implement OAuth 2.0 Dynamic Client Registration (RFC 7591) (#18608)
## Summary
This PR implements OAuth 2.0 Dynamic Client Registration (RFC 7591) and
OAuth 2.0 Protected Resource Metadata (RFC 9728) support, enabling
third-party applications to dynamically register as OAuth clients
without manual configuration.

## Key Changes

### OAuth Dynamic Client Registration
- **New Controller**: `OAuthRegistrationController` at `POST
/oauth/register` endpoint
  - Validates client metadata according to RFC 7591 specifications
  - Enforces PKCE-only public client model (no client secrets)
- Supports only `authorization_code` grant type and `code` response type
  - Rate limits registrations to 10 per hour per IP address
  - Returns `client_id` and registration metadata in response

- **Input Validation**: `OAuthRegisterInput` DTO with constraints on:
  - Client name (max 256 chars)
  - Redirect URIs (max 20, validated for security)
  - Grant types, response types, scopes, and auth methods
  - Logo and client URIs (max 2048 chars)

- **Discovery Endpoint Update**: Added `registration_endpoint` to OAuth
discovery metadata

### Stale Registration Cleanup
- **Cleanup Service**: Automatically removes OAuth-only registrations
older than 30 days that have no active installations
- **Cron Job**: Runs daily at 02:30 AM UTC with batch processing (100
records per batch)
- **CLI Command**: `cron:stale-registration-cleanup` to manually trigger
cleanup

### MCP (Model Context Protocol) Authentication
- **New Guard**: `McpAuthGuard` implements RFC 9728 compliance
  - Wraps JWT authentication with proper error responses
- Returns `WWW-Authenticate` header with protected resource metadata URL
on 401
  - Enables OAuth-protected MCP endpoints

### Protected Resource Metadata
- **New Endpoint**: `GET /.well-known/oauth-protected-resource` (RFC
9728)
  - Advertises MCP resource as OAuth-protected
  - Lists supported scopes and bearer token methods
  - Enables OAuth clients to discover authorization requirements

### Application Registration Updates
- **New Source Type**: `OAUTH_ONLY` enum value for OAuth-only
registrations
- **Install Service**: Skips artifact installation for OAuth-only apps
(no code artifacts)

### Frontend Updates
- **Authorization Page**: Support both snake_case (standard OAuth) and
camelCase (legacy) query parameters
  - `client_id` / `clientId`
  - `code_challenge` / `codeChallenge`
  - `redirect_uri` / `redirectUrl`

## Implementation Details

- **Rate Limiting**: Uses token bucket algorithm with 10 registrations
per 3,600,000ms window per IP
- **Scope Validation**: Requested scopes are capped to allowed OAuth
scopes; defaults to all scopes if not specified
- **Redirect URI Validation**: Uses existing `validateRedirectUri`
utility for security
- **Cache Headers**: Registration responses include `Cache-Control:
no-store` and `Pragma: no-cache`
- **Batch Processing**: Cleanup operations process 100 records at a time
to avoid memory issues
- **Grace Period**: 30-day grace period before cleanup to allow time for
client activation

https://claude.ai/code/session_01PxcuWFFRuXMASMaMGTLYk2

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: github-actions <github-actions@twenty.com>
Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
2026-03-16 09:42:28 +01:00
Abdullah.andGitHub 87c519b72f fix: multer vulnerable to denial of service via uncontrolled recursion (#18659)
Resolves [Dependabot Alert
608](https://github.com/twentyhq/twenty/security/dependabot/608).
2026-03-16 09:08:40 +01:00
Abdullah.andGitHub 1b20bdaf6d fix: @isaacs/brace-expansion has uncontrolled resource consumption (#18660)
Resolves [Dependabot Alert
414](https://github.com/twentyhq/twenty/security/dependabot/414).
2026-03-16 09:08:25 +01:00
Abdullah.andGitHub 67866ff59c fix: expr-eval related dependabot alerts (#18661)
Resolves [Dependabot Alert
593](https://github.com/twentyhq/twenty/security/dependabot/593) and
[Dependabot Alert
594](https://github.com/twentyhq/twenty/security/dependabot/594).

expr-eval was last published six years ago and had changes five years
ago. NPM contains a fork that published the changes from five years ago
under the same name with `-fork` suffix. This PR uses that fork as
suggested by Dependabot.
2026-03-16 09:08:19 +01:00
Abdullah.andGitHub e6f1bdd1c8 fix: yauzl contains an off-by-one error (#18662)
Resolves [Dependabot Alert
633](https://github.com/twentyhq/twenty/security/dependabot/633).
2026-03-16 09:08:12 +01:00
Charles BochetandGitHub ba9aa41bba refactor: metadata store cleanup, SSE unification, mock metadata loading & login redirect fix (#18651)
## Summary
- **SSE unification**: Replaced 11 individual SSE effect components with
a single generic `MetadataStoreSSEEffect`
- **Metadata store cleanup**: Merged `metadataCollectionHashesState`
into `metadataStoreState` (currentCollectionHash / draftCollectionHash
per entity), moved `objectMetadataItemsSelector` to `object-metadata`
domain, converted `navigationMenuItemsState` to a derived selector
- **Naming clarity**: Renamed `isAppMetadataReadyState` →
`isMinimalMetadataReadyState`, `MetadataGater` → `MinimalMetadataGater`,
`useIsLogged` → `useHasAccessTokenPair`,
`patchMetadataStoreFromSSEEvent` now takes named object params
- **Mock metadata loading**: Added `generate-navigation-menu-items.ts`
script, rewrote `useLoadMockedMinimalMetadata` to load full
objects/fields/indexes/views/navItems from generated mock data, enabling
proper sign-in background rendering (table columns, view picker,
navigation)
- **Login/logout transitions**: `MinimalMetadataLoadEffect` manages
mocked↔real metadata transitions based on auth state,
`MainContextStoreProvider` computes context on auth pages for view
picker support
- **Login redirect fix**: `handleLoadWorkspaceAfterAuthentication` now
re-enables `isAppEffectRedirectEnabled` after `loadCurrentUser()`
completes, fixing the blocked post-login navigation
- **Dead code removal**: Deleted `useRefreshPageLayouts`,
`useApplyPageLayouts`, `useStaleMetadataEntities`,
`metadataCollectionHashesState`, and all individual SSE effects

## Test plan
- [x] Login from welcome page redirects to companies page
- [x] Logout transitions cleanly to mocked metadata on welcome page
- [x] Sign-in background shows table columns, view picker, and
navigation items
- [x] SSE events still update metadata store entries correctly
- [x] Navigation menu items persist across page refreshes
- [ ] CI: lint, typecheck, tests pass
2026-03-16 00:38:11 +01:00
Charles BochetandGitHub 06efee1eef feat: hash-based metadata staleness detection (#18649)
## Summary

Replace the single `metadataVersion` integer with per-entity-type
**collection hashes** for granular metadata staleness detection. The
backend already generates a UUID per flat entity map on each cache
recompute (`crypto.randomUUID()` in `WorkspaceCacheService`); we now
expose these via the minimal metadata endpoint and SSE events so the
frontend can compare and know exactly which entity types are stale.

### Key changes

**Backend:**
- `WorkspaceCacheService.getCacheHashes()` — new public method that
reads only `:hash` keys from Redis without fetching full data
- `MinimalMetadataDTO` — added `collectionHashes: Record<string,
string>` (JSON scalar mapping `AllMetadataName` → collection hash),
removed `metadataVersion`
- `MetadataEventDTO` — added optional `updatedCollectionHash` field to
SSE events
- `MetadataEventsToDbListener` — reads the collection hash for the
affected entity type after cache invalidation and attaches it to the SSE
event before publishing
- `MinimalMetadataService` — no longer queries the workspace table; uses
`getCacheHashes()` for all flat entity maps and maps cache keys to
`AllMetadataName` locally

**Frontend:**
- `metadataCollectionHashesState` — new Jotai atom with
`atomWithStorage` + `getOnInit: true` storing
`Partial<Record<MetadataEntityKey, string>>`
- `mapAllMetadataNameToEntityKey()` — explicit mapping from backend
`AllMetadataName` to frontend `MetadataEntityKey` (23 entries)
- `useLoadMinimalMetadata` — stores `collectionHashes` from server,
computes `staleEntityKeys` by comparing local vs server hashes
- `patchMetadataStoreFromSSEEvent()` — accepts optional
`updatedCollectionHash` and updates `metadataCollectionHashesState`
- All 11 SSE effect components — pass
`eventDetail.updatedCollectionHash` through to the patch function
- `useStaleMetadataEntities` — new hook returning entity keys missing
from collection hashes (not yet loaded/synced)
- `resetMetadataStore()` — also clears collection hashes
- Deleted `metadataVersionState` (superseded by collection hashes)

### Design decisions

- **No change to hash generation** — existing `crypto.randomUUID()` is
sufficient. Hashes are persisted in Redis, survive server restarts, and
change only on `invalidateAndRecompute`.
- **"Collection hash" naming** — used consistently to clarify the hash
represents an entire entity collection (e.g., all views), not a single
record.
- **Mapping localized** — backend `WorkspaceCacheKeyName` →
`AllMetadataName` mapping lives in the minimal metadata service.
Frontend `AllMetadataName` → `MetadataEntityKey` mapping lives in a
local utility. Nothing in `twenty-shared`.
- **Backward compatible** — `collectionHashes` is additive;
`updatedCollectionHash` is nullable.
2026-03-14 23:38:37 +01:00
Charles BochetandGitHub 7a3540788a feat: uniformize metadata store with flat types, SSE alignment, presentation endpoint & localStorage (#18647)
## Summary

Uniformizes the metadata store to support **all** backend flat metadata
types, introduces a **minimal metadata endpoint** for fast initial
renders, replaces custom localStorage persistence with **Jotai's
built-in `atomWithStorage`**, and wires up a
**MinimalMetadataLoadEffect** for stale-while-revalidate loading.

### Key changes

- **All flat metadata types**: Added `FlatCommandMenuItem`,
`FlatFrontComponent`, `FlatWebhook`, `FlatRole`, `FlatRoleTarget`,
`FlatAgent`, `FlatSkill`, `FlatRowLevelPermissionPredicate`,
`FlatRowLevelPermissionPredicateGroup` — every entity in the backend
`MetadataEntityTypeMap` now has a corresponding frontend flat type
registered in `ALL_METADATA_ENTITY_KEYS` and `MetadataEntityTypeMap`.

- **Minimal metadata endpoint** (`minimalMetadata` GraphQL query): New
backend module (`MinimalMetadataModule`) returns lightweight object
metadata (names, icons, labels, flags) and basic views (id, type, key,
objectMetadataId) plus a `metadataVersion`. This enables fast first
paint before full metadata loads.

- **Jotai `atomWithStorage` for persistence**: Replaced the custom
`MetadataLocalStorageEffect` with Jotai's built-in `atomWithStorage` on
both `metadataStoreState` (family) and `metadataVersionState`. Added
`localStorageOptions` support to `createAtomFamilyState` for `{
getOnInit: true }` synchronous hydration. Each entity atom auto-persists
under keys like `metadataStoreState__objectMetadataItems`.

- **MinimalMetadataLoadEffect**: New effect mounted before
`MetadataProviderInitialEffects` that checks if the store already has
data (from Jotai localStorage hydration). If empty, it fetches minimal
metadata from the new endpoint. The full metadata load continues in
parallel, eventually enriching the store with complete data.

- **SSE effects alignment**: All metadata entity types now have
corresponding SSE effects that directly patch the metadata store via
`patchMetadataStoreFromSSEEvent`.

- **Existing selectors and joining logic**:
`objectMetadataItemsWithFieldsSelector`, `viewsWithRelationsSelector`,
`pageLayoutsWithRelationsSelector` reconstruct nested data from flat
entities for components that need it.

### Loading flow

```
App mount
  → Jotai atomWithStorage hydrates store from localStorage (sync, getOnInit)
  → MinimalMetadataLoadEffect
      → Store has data? → skip (app renders immediately)
      → Store empty? → fetch minimalMetadata endpoint → populate objects + views
  → MetadataProviderInitialEffects (full metadata load, runs in parallel)
  → LazyMetadataLoadEffect (page layouts, logic functions, nav menu, etc.)
  → IsAppMetadataReadyEffect (sets isAppMetadataReady)
```

## Test plan

- [ ] Verify app loads with empty localStorage (should fetch minimal
metadata, then full)
- [ ] Verify app loads with populated localStorage (should skip minimal
fetch, render immediately)
- [ ] Verify SSE events correctly update metadata store for all entity
types
- [ ] Verify logout clears metadata store (atom reset propagates to
localStorage)
- [ ] Verify all metadata selectors return correct joined data
- [ ] CI: lint, typecheck, tests pass
2026-03-14 20:32:25 +01:00
6711b40922 i18n - docs translations (#18645)
Created by Github action

Co-authored-by: github-actions <github-actions@twenty.com>
2026-03-14 16:49:41 +01:00
c753b2bee1 i18n - docs translations (#18644)
Created by Github action

Co-authored-by: github-actions <github-actions@twenty.com>
2026-03-14 13:57:57 +01:00
70a060b4ee docs: fix contributor docs links and typos (#18637)
## Summary

This PR fixes several small documentation issues in the contributor and
setup guides:

- fixes broken docs links in the root README
- corrects multiple typos and capitalization issues in contributor docs
- fixes malformed Markdown for the Redis command in local setup
- improves wording in the Docker Compose self-hosting guide

## Changes

- updated README installation links to the current docs routes
- changed `Open-source` to `open-source`
- fixed `specially` -> `especially` in the frontend style guide
- normalized `MacOS` -> `macOS`, `powershell` -> `PowerShell`, and
`Postgresql` -> `PostgreSQL`
- replaced the invalid `localhost:5432` Markdown link with inline code
- fixed the malformed fenced code block for `brew services start redis`
- cleaned up Redis naming/capitalization and a few grammar issues in the
setup docs
- improved the warning and environment-variable wording in the Docker
Compose guide

## Testing

- not run; docs-only changes

---------

Co-authored-by: Charles Bochet <charlesBochet@users.noreply.github.com>
2026-03-14 12:54:31 +01:00
Charles BochetandGitHub 40ff109179 feat: migrate objectMetadata reads to granular metadata store (#18643)
## Summary

Consolidates `objectMetadataItems` onto the metadata store as the
**single source of truth**, replacing the previous dual-store approach
(separate `objectMetadataItemsState` atom + untyped
`metadataStoreState`).

### Architecture: three-layer design

```
┌─────────────────────────────────────────────────────────┐
│ Store Layer (granular, typed)                           │
│  objectMetadataItems → FlatObjectMetadataItem[]         │
│  fieldMetadataItems  → FlatFieldMetadataItem[]          │
│  indexMetadataItems  → FlatIndexMetadataItem[]           │
└────────────────┬────────────────────────────────────────┘
                 │ .current (never draft)
┌────────────────▼────────────────────────────────────────┐
│ Selectors (typed read-only)                             │
│  objectMetadataItemsSelector                            │
│  fieldMetadataItemsSelector                             │
│  indexMetadataItemsSelector                             │
│  metadataStoreStatusFamilySelector                      │
│  isSystemObjectByNameSingularFamilySelector (narrow)    │
│  activeObjectNameSingularsSelector (narrow)             │
└────────────────┬────────────────────────────────────────┘
                 │ joins objects + fields + indexes + permissions
┌────────────────▼────────────────────────────────────────┐
│ Joining Selector                                        │
│  objectMetadataItemsWithFieldsSelector                  │
│  → produces full ObjectMetadataItem[] with              │
│    readableFields / updatableFields from permissions    │
│  → 12 existing selectors repointed here                 │
└─────────────────────────────────────────────────────────┘
```

### Key changes

- **Granular flat types** (`FlatObjectMetadataItem`,
`FlatFieldMetadataItem`, `FlatIndexMetadataItem`) — objects stored
without embedded fields/indexes, matching backend "Flat" naming
convention
- **Typed write API** — `updateDraft` is now generic via
`MetadataEntityTypeMap`, giving compile-time safety on what data shape
goes to each key
- **Write path refactored** — fetch → split into flat entities via
`splitObjectMetadataItemWithRelated` → write to metadata store directly.
No more dual-write through `objectMetadataItemsState`. Permissions
enrichment moved from write path into the joining selector.
- **SSE effects write directly** — `ObjectMetadataItemSSEEffect` and
`FieldMetadataSSEEffect` now patch the store from the SSE event payload
(create/update/delete) instead of triggering a full re-fetch
- **`objectMetadataItemsState` bridge** — converted from writable
`createAtomState` to read-only `createAtomSelector` that delegates to
the joining selector. All 100+ existing consumers continue to work
without code changes.
- **All selectors use Twenty state API** — `createAtomSelector` /
`createAtomFamilySelector` throughout, no raw `atom()`
- **Narrow selectors** for hot paths —
`isSystemObjectByNameSingularFamilySelector` and
`activeObjectNameSingularsSelector` read from flat objects only,
avoiding re-renders when fields/indexes/permissions change. Placed in
`object-metadata/states/` as higher-level business selectors.
- **Test helper** — `setTestObjectMetadataItemsInMetadataStore` for
tests that need to set up composite object metadata through the store
(clearly named as a testing utility)

### Naming conventions

- `ObjectMetadataItemWithRelated` — type for objects with embedded
fields/indexes (input to split utility)
- `FlatObjectMetadataItem` / `FlatFieldMetadataItem` /
`FlatIndexMetadataItem` — granular store types
- Selector names don't expose "Current" — that's an internal detail of
the metadata store API

### Future work

- Optimistic update API (`updateCurrentOptimistically` with rollback)
- Migrate remaining entities (views, pageLayouts, etc.) to the same
pattern
- Gradually remove `objectMetadataItemsState` bridge once all direct
imports are replaced

## Test plan

- [x] `npx nx typecheck twenty-front` passes
- [x] `npx nx lint:diff-with-main twenty-front` passes
- [ ] Verify app loads correctly with metadata from the store
- [ ] Verify SSE updates (object/field changes) propagate correctly
- [ ] Run existing test suites to confirm no regressions
2026-03-14 12:54:19 +01:00
WeikoandGitHub 48172d60fd View field override (#18572)
## Context
This PR introduces overrides for view fields which will be useful for
page layout FIELDS widgets fields position/groups/visibility override +
restore logic.
2026-03-14 12:40:15 +01:00
Thomas des FrancsandGitHub 0b0ffcb8fa Add pitfall reminders to LLMS guidance (#18627)
please chat, no scroll in scroll on dashboards 🙏
2026-03-14 10:53:42 +00:00
6552ec83ec i18n - translations (#18642)
Created by Github action

Co-authored-by: github-actions <github-actions@twenty.com>
2026-03-14 11:03:11 +01:00
Charles BochetandGitHub 602db4ffea feat: enable Rich Text as a creatable field type (#18634)
## Summary

- Removes `RICH_TEXT` from the excluded/hidden field types in the
settings UI so users can create rich text fields on any object (not just
Note/Task)
- Creates a generic `RichTextFieldEditor` component that uses standard
`useUpdateOneRecord` for persistence, decoupled from the
Note/Task-specific `ActivityRichTextEditor`
- Updates the inline `RichTextFieldInput` and side panel to route to the
appropriate editor based on object type (activity editor for Note/Task,
generic editor for everything else)

## Details

### Tier 1 — Settings UI unlock
- Removed `RICH_TEXT` from `excludedFieldTypes` in
`SettingsObjectNewFieldSelect.tsx`
- Removed `RICH_TEXT` from `SettingsExcludedFieldType` type union
- Added `RICH_TEXT` to `previewableTypes` in
`SettingsDataModelFieldSettingsFormCard`

### Tier 2 — Generic inline editing
- New `RichTextFieldEditor` — a generic BlockNote editor that works for
any object using `useUpdateOneRecord` (no activity-specific coupling)
- `RichTextFieldInput` now branches: `ActivityRichTextEditor` for
Note/Task, `RichTextFieldEditor` for all other objects
- Generalized side panel state (`viewableRichTextComponentState`) from
`activityId`/`activityObjectNameSingular` to
`recordId`/`objectNameSingular`/`fieldName`
- `useOpenRichTextInSidePanel` now accepts an optional `fieldName`
parameter

### Tier 3 — Verification
- Search: only `markdown` subfield is indexed (correct behavior)
- Filters: `RichTextFilter` GraphQL input type already exists
- Import/export: `markdown` subfield is already marked `isImportable:
true`
2026-03-14 10:57:27 +01:00
3a9247d9d1 i18n - translations (#18639)
Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
2026-03-13 20:02:02 +01:00
6b48f197d4 feat: deprecate WorkspaceFavorite in favor of NavigationMenuItem (#18624)
## Summary

- **Removes the entire `modules/favorites/` directory** (~66 files,
~5000 lines deleted) — components, hooks, states, types, utils, tests,
and the favorite-folder-picker sub-module
- **Eliminates the dual-write pattern** where creating a favorite also
created a NavigationMenuItem — all consumers now use
`useCreateNavigationMenuItem` directly
- **Removes `IS_NAVIGATION_MENU_ITEM_EDITING_ENABLED` feature flag
checks** from ~12 files, always taking the NavigationMenuItem code path
- **Cleans up backend dual-writes** in `object-metadata.service.ts` and
`twenty-standard-application.service.ts` that were creating Favorite
records alongside NavigationMenuItems
- **Updates prefetch system** to only load NavigationMenuItems (removes
favorites prefetch effects and states)
- **Cleans up test infrastructure** — updates Storybook decorators, mock
data, and graphql mocks to remove favorites references

### What was intentionally kept
- **Backend entity definitions** (`FavoriteWorkspaceEntity`,
`FavoriteFolderWorkspaceEntity`) — these define the database schema and
need a proper database migration to remove
- **Cascade deletion listeners** — still needed to clean up existing
Favorite data in workspaces that haven't been fully migrated
- **v1.18 migration commands** — needed for workspaces upgrading from
older versions

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 19:45:40 +01:00
2a8912b17a i18n - docs translations (#18636)
Created by Github action

Co-authored-by: github-actions <github-actions@twenty.com>
2026-03-13 19:40:17 +01:00
55d675bba7 i18n - translations (#18633)
Created by Github action

Co-authored-by: github-actions <github-actions@twenty.com>
2026-03-13 19:23:23 +01:00
Charles BochetandGitHub d9eb317bb5 feat: rename RICH_TEXT_V2 → RICH_TEXT in codebase (keep DB value) (#18628)
## Summary

- Renames the `FieldMetadataType` enum key from `RICH_TEXT_V2` to
`RICH_TEXT` across the entire codebase, while keeping the underlying
string value as `'RICH_TEXT_V2'` to maintain PostgreSQL database
compatibility
- Renames all related types, guards, hooks, components, and files from
`*RichTextV2*` / `*rich-text-v2*` to `*RichText*` / `*rich-text*` (e.g.
`FormRichTextV2FieldInput` → `FormRichTextFieldInput`,
`isFieldRichTextV2` → `isFieldRichText`)
- Updates generated files (GraphQL schema, SDK types) to use the new key
while preserving the `RICH_TEXT_V2` string value for DB/API layer
- Updates i18n locale files, test snapshots, and integration tests to
reflect the rename

## Context

The legacy `RICH_TEXT` (V1) field type was deprecated and migrated to
`TEXT` in a previous PR (#18623). With V1 gone, the `RICH_TEXT_V2`
naming is no longer necessary — `RICH_TEXT` is now the canonical name.
The DB enum value stays `'RICH_TEXT_V2'` to avoid confusion with the
just-deprecated V1 type and to prevent a database migration.

## Test plan

- [x] `twenty-server` typecheck passes
- [x] `twenty-front` typecheck passes (only pre-existing Apollo client
errors remain)
- [x] `twenty-server` lint passes
- [x] `twenty-front` lint passes
- [x] `twenty-shared` build passes
- [ ] CI passes


Made with [Cursor](https://cursor.com)
2026-03-13 19:07:55 +01:00
williamjusticedavisandGitHub 3054679411 fix: add missing React key props to ButtonGroup and FloatingButtonGro… (#18615)
Fix missing React key props on ButtonGroup and FloatingButtonGroup story
children
                  
JSX element arrays defined in Storybook args require explicit key props,
otherwise React emits a "missing key" warning in development. This adds
keys to the children arrays in ButtonGroup.stories.tsx and
FloatingButtonGroup.stories.tsx.
2026-03-13 16:19:30 +00:00
1b1d79b08f i18n - docs translations (#18625)
Created by Github action

Co-authored-by: github-actions <github-actions@twenty.com>
2026-03-13 17:32:09 +01:00
Charles BochetandGitHub 46e515436e Deprecate legacy RICH_TEXT field metadata type (#18623)
## Summary

- Removes the deprecated `RICH_TEXT` (V1) field metadata type from the
codebase entirely
- Adds a 1.20 upgrade command that migrates existing `RICH_TEXT` fields
to `TEXT` in `core.fieldMetadata`
- Cleans up ~70 files across `twenty-shared`, `twenty-server`,
`twenty-front`, `twenty-sdk`, and `twenty-zapier`

## Context

`RICH_TEXT` was a legacy field type that stored rich text as a single
`text` column. It was already **read-only** — writes threw errors
directing users to `RICH_TEXT_V2` instead. `RICH_TEXT_V2` is the current
approach: a composite type with `blocknote` (editor JSON) and `markdown`
subfields. Keeping the deprecated type added maintenance burden without
any value.

Since the underlying database column type for `RICH_TEXT` was already
`text` (same as `TEXT`), the migration only needs to update the metadata
— no data migration or column changes required.

## Changes

### Upgrade command (new)
- `1-20-migrate-rich-text-to-text.command.ts` — runs `UPDATE
core."fieldMetadata" SET "type" = 'TEXT' WHERE "type" = 'RICH_TEXT'` per
workspace, with cache invalidation

### Enum & shared types
- Removed `RICH_TEXT` from `FieldMetadataType` enum
- Removed from `FieldMetadataDefaultValueMapping`,
`isFieldMetadataTextKind`

### Server (~30 files)
- Removed from type mapper (scalar, filter, order-by), data processors,
input transformer, filter operators, zod schemas, column type mapping,
searchable fields, RLS matching, OpenAPI schema, fake value generators
- Removed from field creation flow and field metadata type validator
- Updated dev seeder Pet `bio` field to `TEXT`
- Cleaned up mocks, snapshots, integration tests

### Frontend (~25 files)
- Deleted: `RichTextFieldDisplay`, `isFieldRichText`,
`isFieldRichTextValue`, `useRichTextFieldDisplay`
- Removed from `FieldDisplay`, `usePersistField`, `isFieldValueEmpty`,
`isRecordMatchingFilter`, `generateEmptyFieldValue`,
`isFieldCellSupported`, spreadsheet import, workflow fake values
- Removed from settings types, field type configs, and field creation
exclusion list
- Updated tests, mocks, and stories

### SDK & Zapier
- Removed from generated GraphQL schema and TypeScript types
- Removed from Zapier `computeInputFields`
2026-03-13 17:25:40 +01:00
49bdcd6bd5 i18n - docs translations (#18621)
Created by Github action

Co-authored-by: github-actions <github-actions@twenty.com>
2026-03-13 17:16:43 +01:00
3f01249967 i18n - translations (#18620)
Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
2026-03-13 17:16:32 +01:00
4b6c8d52e5 Improve type safety and remove unnecessary store operations (#18622)
## Summary
This PR improves type safety across the codebase by replacing generic
`any` types with proper TypeScript types, removes unnecessary record
store operations, and adds TODO comments for future refactoring of
useEffect hooks.

## Key Changes

### Type Safety Improvements
- **SettingsAgentTurnDetail.tsx**: Replaced `any` type annotations with
proper `AgentMessage` type from generated GraphQL types
- **useCreateManyRecords.ts**: Added `RecordGqlNode` type for better
type safety when handling mutation responses
- **useLazyFindOneRecord.ts**: Replaced generic `Record<string, any>`
with `Record<string, RecordGqlNode>` for improved type checking

### Removed Unnecessary Operations
- **EventCardCalendarEvent.tsx**: Removed unused
`useUpsertRecordsInStore` hook and its associated useEffect that was
upserting calendar event records to the store
- **EventCardMessage.tsx**: Removed unused `useUpsertRecordsInStore`
hook and its associated useEffect that was upserting message records to
the store

### Conditional Query Execution
- **useLoadCurrentUser.ts**: Made the `FindAllCoreViewsDocument` query
conditional - only executes when `isOnAWorkspace` is true, preventing
unnecessary queries for users not on a workspace

### Documentation
- Added TODO comments in multiple files (`useAgentChatData.ts`,
`useWorkspaceFromInviteHash.ts`, `useGetPublicWorkspaceDataByDomain.ts`,
`useFindManyRecords.ts`, `useSingleRecordPickerPerformSearch.ts`)
referencing PR #18584 for future refactoring of useEffect hooks to avoid
unnecessary re-renders

## Implementation Details
- The removal of store upsert operations suggests these records are
already being managed elsewhere or the operations were redundant
- Type improvements maintain backward compatibility while providing
better IDE support and compile-time checking
- Conditional query execution reduces unnecessary network requests and
improves performance for non-workspace users

https://claude.ai/code/session_01YQErkoHotMvM6VL3JkWAqV

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-03-13 17:14:56 +01:00
b470cb21a1 Upgrade Apollo Client to v4 and refactor error handling (#18584)
## Summary
This PR upgrades Apollo Client from v3.10.0 to v4 and refactors error
handling patterns across the codebase to use a new centralized
`useSnackBarOnQueryError` hook.

## Key Changes

- **Dependency Update**: Upgraded `@apollo/client` from `^3.10.0` to
`^3.11.0` in root package.json
- **New Hook**: Added `useSnackBarOnQueryError` hook for centralized
Apollo query error handling with snack bar notifications
- **Error Handling Refactor**: Updated 100+ files to use the new error
handling pattern:
  - Removed direct `ApolloError` imports where no longer needed
- Replaced manual error handling logic with `useSnackBarOnQueryError`
hook
- Simplified error handling in hooks and components across multiple
modules
- **GraphQL Codegen**: Updated codegen configuration files to work with
Apollo Client v3.11.0
- **Type Definitions**: Added TypeScript declaration file for
`apollo-upload-client` module
- **Test Updates**: Updated test files to reflect new error handling
patterns

## Notable Implementation Details

- The new `useSnackBarOnQueryError` hook provides a consistent way to
handle Apollo query errors with automatic snack bar notifications
- Changes span across multiple feature areas: auth, object records,
settings, workflows, billing, and more
- All changes maintain backward compatibility while improving code
maintainability and reducing duplication
- Jest configuration updated to work with the new Apollo Client version

https://claude.ai/code/session_019WGZ6Rd7sEHuBg9sTrXRqJ

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-03-13 14:59:46 +01:00
172bbd01bc Add Gemini 3.1 Flash Lite model to AI registry (#18597)
## Summary
- Adds `gemini-3.1-flash-lite-preview` to the Google AI models registry
- Ultra-low-cost Gemini model ($0.25/M input, $1.50/M output) — half the
price of Gemini 3 Flash
- 1M context window, 64K max output, supports dynamic thinking
- No service code changes needed — the existing `AiModelRegistryService`
auto-discovers models from constants

## Changes
- `ai-models-types.const.ts`: Added `gemini-3.1-flash-lite-preview` to
the `ModelId` type union
- `google-models.const.ts`: Added model configuration with pricing,
context window, and capabilities

## Test plan
- [ ] `npx nx typecheck twenty-server` passes
- [ ] `npx nx lint twenty-server` passes
- [ ] With `GOOGLE_API_KEY` set, model appears in available models list
- [ ] Existing Gemini models unaffected

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 13:22:08 +00:00
58f534939c i18n - docs translations (#18617)
Created by Github action

Co-authored-by: github-actions <github-actions@twenty.com>
2026-03-13 13:36:07 +01:00
Charles BochetandGitHub 0379aea0b1 fix: split tsvector migration, add configurable DB timeout, reorder 1.19 commands (#18614)
## Summary

- **Split tsvector migration into individual per-field transactions**:
each tsvector field now runs in its own
`workspaceMigrationRunnerService.run()` call (its own DB transaction).
Since STORED generated columns trigger full table rewrites, a timeout on
one large table (e.g. `timelineActivity`) no longer rolls back the
others. Each field has its own idempotency check, so the migration is
fully resumable.
- **Add configurable `DATABASE_STATEMENT_TIMEOUT_MS` env var** (default
15000ms): controls the `query_timeout` on the core datasource globally,
allowing operators to raise it for long-running upgrade commands without
code changes.
- **Reorder 1.19 upgrade commands**: move
`fixRoleAndAgentUniversalIdentifiersCommand` first so that subsequent
commands see corrected universal identifiers.
2026-03-13 12:59:31 +01:00
martmullGitHubcubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com>
f3e0c12ce6 Fix app install file upload (#18593)
remove wrong file path based file selection

---------

Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com>
2026-03-13 11:06:14 +00:00
Baptiste DevessierandGitHub 0641e07ca6 Bring back relations notes tasks targets (#18600)
## Demo when view isn't defined (front-end mock)


https://github.com/user-attachments/assets/2414076b-a96e-49ef-af02-c72a8e0e80de

## Demo when view is defined


https://github.com/user-attachments/assets/a94487a3-68ec-4d5f-8b33-d6b7242455d4
2026-03-13 10:57:33 +00:00
Thomas TrompetteandGitHub dfd28f5b4a Separate create draft cases op (#18613)
Bug: When creating a draft from an activated workflow version, the draft
row was inserted into the database without steps and trigger, then
updated with them in a separate operation. The SSE create-one event
fired on the INSERT, causing the frontend to refetch the draft before
the UPDATE — resulting in steps: null and trigger: null, which crashed
the step editor.

Fix: Reorder the operations so steps are duplicated first, then either
insert a new draft or update an existing one with steps and trigger
already populated. The row never exists in the database without complete
data.
2026-03-13 10:43:20 +00:00
Raphaël BosiandGitHub 349bfc8462 Backfill existing workspaces with standard command menu items (#18596)
Create a command to backfill command menu items.
2026-03-13 09:03:15 +00:00
Baptiste DevessierandGitHub 262f9f5fe1 Re-fetch conditional display property in the frontend (#18601) 2026-03-13 08:32:53 +00:00
Félix MalfaitGitHubcubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>claude[bot] <41898282+claude[bot]@users.noreply.github.com>Claude Opus 4.6
5f558e5539 fix: accept production enterprise keys in development environment (#18611)
## Problem
When `NODE_ENV` is development, the server was only using the dev public
key to verify enterprise JWTs. Production keys are signed with the
production private key, so they failed verification with the dev public
key, resulting in "Invalid enterprise key" errors.

## Solution
Try both production and dev public keys when in development, so
production keys work when testing locally. In production, only the
production key is used (unchanged behavior).

## Changes
- `enterprise-plan.service.ts`: Replaced `getPublicKey()` with
`getPublicKeysToTry()` that returns both keys in development; updated
`verifyJwt()` to try each key until one succeeds
- `enterprise-plan.service.spec.ts`: Added test for production key
acceptance when `NODE_ENV` is development

Made with [Cursor](https://cursor.com)

---------

Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 09:20:14 +01:00
WeikoandGitHub 1cb4c98cb3 Add dataloader and read from cache for view entities (#18594)
## Context
Improve view resolution using cache and dataloader

## Performance Comparison

|Run|Main (no DataLoaders/cache)|Feature Branch (DataLoaders +
cache)|Speedup|
|---|---|---|---|
|1 (cold)|418ms|95ms|~4.4x faster|
|2|42ms|19ms|~2.2x faster|
|3|37ms|19ms|~1.9x faster|
|4|39ms|12ms|~3.2x faster|
|5|33ms|13ms|~2.5x faster|

The biggest improvement is to use dataloaders for the multiple relations
associated with views. Cache is a bit less significant since there are
other cache mechanism such as PostgreSQL buffer cache but it will
probably be more meaningful with bigger workspaces
2026-03-12 18:05:30 +00:00
CopilotGitHubcopilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>Devessier
a3c392ce8b Reset selected widget when exiting record page layout edit mode (#18603)
## Before


https://github.com/user-attachments/assets/b9720898-3433-488b-b784-1fa78e4e68f7

## After


https://github.com/user-attachments/assets/8f3fdde5-773d-44c4-a0f5-cca683736782

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Devessier <29370468+Devessier@users.noreply.github.com>
2026-03-12 17:55:01 +00:00
Charles BochetandGitHub ab13020e2b Fix wrong uuid error on field metadata (#18598)
## Summary
- Same fix as #18590 but applied to `FieldMetadataDTO`
- Changed `universalIdentifier` from `UUID` to `String` type since field
metadata universal identifiers are not necessarily valid UUIDs
- Removed `universalIdentifier` from `FieldFilter` (was using
`UUIDFilterComparison`)
- Updated generated SDK and frontend types accordingly
2026-03-12 18:51:42 +01:00
WeikoandGitHub 3f420c84d7 Fix Flow tab missing for workflow run (#18602)
## Context
Conditional tab rendering was recently introduced for system objects
that now have record page layouts. However Workflow run is a system
object and has a specific "Flow" tab that was not displayed anymore

## Before
<img width="1191" height="640" alt="Screenshot 2026-03-12 at 18 10 03"
src="https://github.com/user-attachments/assets/6f2c6319-6ddf-4906-a83c-0db8a27a8267"
/>

## After
<img width="1299" height="802" alt="Screenshot 2026-03-12 at 18 09 35"
src="https://github.com/user-attachments/assets/35e1e356-e995-43a2-9207-adc0f67cc426"
/>
2026-03-12 17:25:12 +00:00
0ef4741473 i18n - translations (#18595)
Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
2026-03-12 18:17:42 +01:00
WeikoandGitHub b5db955ac8 Fix sdk metadata client codegen (#18599)
## Context
Previous token was tied to a non-existing token and codegen was failing
locally due to the server throwing.
This is due to a regression introduced here
https://github.com/twentyhq/twenty/pull/18590/changes#diff-848fff5d5b6f9858c8e2391212dfa9da5151cd3b1325d410df8a82250a229558L26
where a token is hardcoded instead of using the one from the ENV
2026-03-12 18:13:37 +01:00
Baptiste DevessierandGitHub 2a6fcfcfb3 Side Panel Sub Page Framework® (#18579)
Replace hard-coded implementations for sub pages in the side panel with
a proper framework
2026-03-12 15:17:29 +00:00
5bfa4c5c39 Fix wrong uuid error (#18590)
as title

---------

Co-authored-by: Charles Bochet <charles@twenty.com>
2026-03-12 16:12:30 +01:00
1685d066be i18n - translations (#18591)
Created by Github action

Co-authored-by: github-actions <github-actions@twenty.com>
2026-03-12 15:55:51 +01:00
Thomas TrompetteandGitHub 6a3281a18d Bug fix batches (#18588)
- clear sse state on logout
- fix no record not selectable through keyboard
- fix book a call design
- fix error notif design
2026-03-12 15:55:30 +01:00
Raphaël BosiandGitHub 741e9a8f81 Update yarn lock (#18589)
https://github.com/twentyhq/twenty/pull/18075
2026-03-12 15:42:01 +01:00
Charles BochetandGitHub 0897575fd0 Fix flaky return-to-path e2e tests (#18580)
## Summary

Fixes flaky `return-to-path` e2e tests that were failing intermittently
in CI merge queue runs.

**Root cause:** In the multi-workspace environment used by CI
(`IS_MULTIWORKSPACE_ENABLED=true`), navigating to
`localhost:3001/settings/accounts` triggers a full page redirect to
`app.localhost:3001/welcome` via `useRedirectToDefaultDomain`. This
redirect is a hard navigation (not a React Router transition), which
clears all in-memory Jotai state — including the `returnToPathState`
atom that stores the path the user should be redirected to after login.
After the redirect, the app has no memory of the intended destination
and falls back to `/objects/companies`.

**Fix:** Before performing the cross-domain redirect in
`useRedirectToDefaultDomain`, read the `returnToPath` from the Jotai
store and pass it as a URL search parameter. On the new page load,
`useInitializeQueryParamState` picks it up from the URL and re-hydrates
the Jotai atom, preserving the return-to-path across the full page
reload.

## Test plan

- [x] Verified locally against production build (`serve -s build`) with
`IS_MULTIWORKSPACE_ENABLED=true` — 33/33 consecutive passes of
`return-to-path.spec.ts`
- [x] Lint passes (`npx nx lint:diff-with-main twenty-front`)
2026-03-12 15:29:35 +01:00
501fcc737f i18n - translations (#18586)
Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
2026-03-12 15:18:16 +01:00
Raphaël BosiandGitHub c9deab4373 [COMMAND MENU ITEMS] Remove standard front components (#18581)
All standard command menu items will link to an engine component instead
of standard front components.
2026-03-12 15:18:00 +01:00
MarieandGitHub c1da7be6d7 Billing for self-hosts (#18075)
## Summary

Implements enterprise licensing and per-seat billing for self-hosted
environments, with Stripe as the single source of truth for subscription
data.

### Components

- **twenty-website** hosts the private key to sign `ENTERPRISE_KEY` and
`ENTERPRISE_VALIDITY_TOKEN`. It communicates with Stripe to emit the
daily `ENTERPRISE_VALIDITY_TOKEN` if the subscription is active, based
on the user's Stripe subscription ID stored in `ENTERPRISE_KEY`.
- **Stripe** is the single source of truth for subscription data
(status, seats, billing).
- **The client** (twenty-server + DB + workers) saves `ENTERPRISE_KEY`
in the `keyValuePair` table (or `.env` if
`IS_CONFIG_VARIABLES_IN_DB_ENABLED` is false) and the daily-renewed
`ENTERPRISE_VALIDITY_TOKEN` in the `appToken` table.
`ENTERPRISE_VALIDITY_TOKEN` is verified client-side using a public key
to grant access to enterprise features (RLS, SSO, audit logs, etc.).

### Flow

1. When requesting an upgrade to an enterprise plan (from **Enterprise**
in settings), the user is shown a modal to choose monthly/yearly
billing, then redirected to Stripe to enter payment details. After
checkout, they land on twenty-website where they are exposed to their
`ENTERPRISE_KEY`, which they paste in the UI. It is saved in the
`keyValuePair` table. On activation, a first `ENTERPRISE_VALIDITY_TOKEN`
with 30-day validity is stored in the `appToken` table.

2. **Every day**, a cron job runs and does two things:
- **Refreshes the validity token**: communicates with twenty-website to
get a new `ENTERPRISE_VALIDITY_TOKEN` with 30-day validity if the Stripe
subscription is still active. If the subscription is in cancellation,
the emitted token has a validity equal to the cancellation date. If it's
no longer valid, the token is not replaced. The cron only needs to run
every 30 days in practice, but runs daily so it's resilient to
occasional failures.
- **Reports seat count**: counts active (non-soft-deleted)
`UserWorkspace` entries and sends the count to twenty-website, which
updates the Stripe subscription quantity with proration. Seats are also
reported on first activation. If the subscription is canceled or
scheduled for cancellation, the seat update is skipped.

3. `ENTERPRISE_VALIDITY_TOKEN` is verified server-side via a public key
to grant access to enterprise features.

### Key concepts

Three distinct checks are exposed as GraphQL fields on `Workspace`:

| Field | Meaning |
|---|---|
| `hasValidEnterpriseKey` | Has any valid enterprise key (signed JWT
**or** legacy plain string) |
| `hasValidSignedEnterpriseKey` | `ENTERPRISE_KEY` is a properly signed
JWT (billing portal makes sense) |
| `hasValidEnterpriseValidityToken` | `ENTERPRISE_VALIDITY_TOKEN` is
present and not expired (expiration depends on signed token payload, not
on "expiresAt" on appToken table which is only indicative) |

Feature access is gated by `isValid()` =
`hasValidEnterpriseValidityToken || hasValidEnterpriseKey` (to support
both new and legacy keys during transition). After transition isValid()
= hasValidEnterpriseValidityToken

### Frontend states

The Enterprise settings page handles multiple states:
- **No key**: show "Get Enterprise" with checkout modal
- **Orphaned validity token** (token valid but no signed key): prompt
user to set a valid enterprise key
- **Active/trialing but no validity token**: show subscription status
with a "Reload validity token" action
- **Active/trialing**: show full subscription info, billing portal
access, cancel option
- **Cancellation scheduled**: show cancellation date, billing portal
- **Canceled**: show billing history link and option to start a new
subscription
- **Past due / Incomplete**: prompt to update payment or restart

### Temporary retro-compatibility: legacy plain-text keys

Previously, enterprise features were gated by a simple check: any
non-empty string in `ENTERPRISE_KEY` granted access. With this PR, we
transition to a controlled system relying on signed JWTs.

To avoid breaking existing self-hosted users:
- **Legacy plain-text keys still grant access** to enterprise features.
`hasValidEnterpriseKey` returns `true` for both signed JWTs and plain
strings, and `isValid()` checks `hasValidEnterpriseKey` as a fallback
when no validity token is present.
- **A deprecation banner** is shown at the top of the app when
`hasValidEnterpriseKey` is `true` but `hasValidSignedEnterpriseKey` is
`false`, informing the user that their key format is deprecated and they
should activate a new signed key.
- **No billing portal or subscription management** is available for
legacy keys since there is no Stripe subscription to manage.

This retro-compatibility will be removed in a future version. At that
point, `isValid()` will only check `hasValidEnterpriseValidityToken`.

### Edge cases

- **Air-gapped / production environments**: for self-hosted clients that
block external traffic (or for our own production), provide a long-lived
`ENTERPRISE_VALIDITY_TOKEN` (e.g. 99 years) directly in the `appToken`
table, with no `ENTERPRISE_KEY`. The daily cron will skip the refresh
(no enterprise key to authenticate with), but the pre-seeded validity
token will be used to grant feature access. No billing or seat reporting
occurs in this mode.
- **`IS_CONFIG_VARIABLES_IN_DB_ENABLED` is false**: if the user tries to
activate an enterprise key but DB config writes are disabled, the
backend returns a clear error asking them to add `ENTERPRISE_KEY` to
their `.env` file manually.
- **Canceled subscriptions**: the `/seats` endpoint skips Stripe updates
for canceled or cancellation-scheduled subscriptions to avoid Stripe API
errors.

### How to test
- launch twenty-website on a different url (eg localhost:1002)
- add ENTERPRISE_API_URL=http://localhost:3002/api/enterprise (or else)
in your server .env
- ask me for twenty-website's .env file content (STRIPE_SECRET_KEY;
STRIPE_ENTERPRISE_MONTHLY_PRICE_ID;STRIPE_ENTERPRISE_YEARLY_PRICE_ID;
ENTERPRISE_JWT_PRIVATE_KEY; ENTERPRISE_JWT_PUBLIC_KEY;
NEXT_PUBLIC_WEBSITE_URL)
- visit Admin panel / enterprise
2026-03-12 15:07:53 +01:00
WeikoandGitHub c59f420d21 Hide tabs for system objects (#18583)
<img width="1286" height="793" alt="Screenshot 2026-03-12 at 13 57 16"
src="https://github.com/user-attachments/assets/bebfd23f-3172-424a-95ee-ba95358a6196"
/>
2026-03-12 14:46:15 +01:00
WeikoandGitHub 06d4d62e90 Move 1.19 backfill pagelayout and views to 1.20 (#18582) 2026-03-12 13:46:07 +01:00
WeikoandGitHub eb4665bc98 Create missing standard table and fields widget views (#18543) 2026-03-12 13:28:05 +01:00
f19fcd0010 i18n - translations (#18578)
Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
2026-03-12 13:23:54 +01:00
Lucas BordeauandGitHub cb3e32df86 Fix AI demo workspace skill (#18575)
This PR fixes what allows to have a working demo workspace skill.

- Skill updated many times into something that works
- Fixed infinite loop in AI chat by memoizing ai-sdk output
- Finished navigateToView implementation
- Increased MAX_STEPS to 300 so the chat don't quit in the middle of a
long running skill
- Added CreateManyRelationFields
2026-03-12 13:19:01 +01:00
Hamza FaidiandGitHub db5b4d9c6c fix: replace unsafe JSON.parse casts with parseJson in filter dropdowns (#18513)
## Problem

Four filter dropdown components were calling `JSON.parse(filter.value)
as string[]` to parse stored filter state. This throws a `SyntaxError`
if the value is malformed (truncated URL, stale localStorage, migration
artifact), crashing the entire dropdown with no recovery.

## Solution

Replace with the existing `parseJson<string[]>` utility from
`twenty-shared`, which wraps `JSON.parse` in a try/catch and returns
`null` on failure. The `?? []` fallback gracefully degrades to an empty
selection instead of crashing.

All four files had an explicit `// TODO: replace by a safe parse`
marking this as a known issue.

## Testing


No new tests — `parseJson` is already tested in `twenty-shared`. No new
logic introduced.

## issue link 
#18514
2026-03-12 13:15:22 +01:00
Charles BochetandGitHub 660536d6bb Fix onboarding flow: workspace creation modal and invite team skip (#18577)
## Summary

- **Fix create-profile modal not showing after workspace creation**:
After activating a workspace, `CreateWorkspace.onSubmit` called
`refreshObjectMetadataItems()` which only updated the
`objectMetadataItemsState` atom but never marked the metadata store as
ready (`metadataStoreState` stayed at `'empty'`). Since `MetadataGater`
excludes `CreateWorkspace` but not `CreateProfile` from its loading
check, navigating to `/create/profile` triggered the skeleton loader
instead of the modal. The fix adds the full metadata pipeline after
refresh — `updateDraft('objectMetadataItems')` + `applyChanges()` for
objects, and `fetchAndLoadIndexViews()` for views — so
`isAppMetadataReady` is `true` before navigation.

- **Fix invite-team "Skip" not persisting to server**: Clicking "Skip"
on the invite-team page called `setNextOnboardingStatus()` which only
updated the local Jotai atom. The early return for empty emails bypassed
`sendInvitation`, so the server never cleared the
`ONBOARDING_INVITE_TEAM_PENDING` user var. On page refresh,
`GetCurrentUser` returned `INVITE_TEAM` and the user was stuck. The fix
removes the early return so `sendInvitation({ emails: [] })` always runs
— the server handles empty arrays fine and clears the pending flag.
2026-03-12 13:15:05 +01:00
e8f8189167 [COMMAND MENU ITEMS] Add engine component key (#18554)
## PR Description

In the process of migrating all the existing commands to the backend, we
stumbled across a couple of problems that made us reconsider the full
migration. This PR introduces a way for command menu items to bypass
front components and to directly reference a frontend component from
twenty front.

It:
- Introduces a `engineFrontComponentKey` field on `CommandMenuItem` as
an alternative to `frontComponentId` and `workflowVersionId`, allowing
command menu items to reference frontend components by key directly
rather than requiring a FrontComponent entity
- Updates the DB constraint to allow exactly one of `workflowVersionId`,
`frontComponentId`, or `engineFrontComponentKey`

### All standard command menu items from the frontend which use
`standardFrontComponentKey`

These are all commands that execute a GraphQL query or a mutation.
Two mains concerned have been raised that made us go with this
(temporary) architecture instead:
- If those commands are part of the standard application, they can only
alter objects from that application and not custom objects.
- We would need to implement a way to trigger optimistic rendering from
the front components, which might take some time to implement.

List:
- Create new record
- Delete (single record)
- Delete records (multiple)
- Restore record
- Restore records (multiple)
- Permanently destroy record
- Permanently destroy records (multiple)
- Add to favorites
- Remove from favorites
- Merge records
- Duplicate Dashboard
- Save Dashboard
- Save Page Layout
- Activate Workflow
- Deactivate Workflow
- Discard Draft (workflow)
- Test Workflow
- Tidy up workflow
- Duplicate Workflow
- Stop (workflow run)
- Use as draft (workflow version)

---------

Co-authored-by: Charles Bochet <charles@twenty.com>
2026-03-12 13:14:45 +01:00
martmullandGitHub 78473a606a Fix app dev flickering (#18562)
- fix ticker issue
- fix too many rendering
2026-03-12 11:58:44 +01:00
neo773andGitHub b21fb4aa6f Fix PDF Upload edge case (#18533)
we were using an older version of `file-type` which has limited support
for PDF as it's a complex spec
Updated to latest version which includes support for plugins and added
`@file-type/pdf` which has extensive spec compliant detection approach

fixes TWENTY-SERVER-FAN
2026-03-12 10:34:24 +00:00
38664249cf i18n - translations (#18576)
Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
2026-03-12 11:24:07 +01:00
Baptiste DevessierandGitHub 69542898a1 Display a single Add a Section button (#18563)
- Display a single Add a Section button at the end of the list
- Move other buttons to the section's dropdown menu


https://github.com/user-attachments/assets/b51d8846-635a-477a-9205-bf3266cfcff4
2026-03-12 10:01:48 +00:00
09beddb63d i18n - docs translations (#18566)
Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
2026-03-12 10:55:44 +01:00
1916 changed files with 40616 additions and 42751 deletions
@@ -1,66 +0,0 @@
name: CI Twenty Standard Front Component
on:
pull_request:
permissions:
contents: read
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
jobs:
changed-files-check:
uses: ./.github/workflows/changed-files.yaml
with:
files: |
package.json
yarn.lock
packages/twenty-standard-application/**
packages/twenty-sdk/**
packages/twenty-shared/**
standard-front-component-build-check:
needs: changed-files-check
if: needs.changed-files-check.outputs.any_changed == 'true'
timeout-minutes: 30
runs-on: ubuntu-latest
steps:
- name: Fetch custom Github Actions and base branch history
uses: actions/checkout@v4
with:
fetch-depth: 10
- name: Install dependencies
uses: ./.github/actions/yarn-install
- name: Build twenty-shared
run: npx nx build twenty-shared
- name: Build twenty-sdk
run: npx nx build twenty-sdk
- name: Build twenty-standard-application
run: npx nx build twenty-standard-application
- name: Check for pending standard front component build
run: |
if ! git diff --quiet -- packages/twenty-standard-application/src/build packages/twenty-standard-application/src/standard-front-component-build-manifest.ts; then
echo "::error::Standard front component build output is out of date. Please run 'npx nx build twenty-standard-application' and commit the changes."
echo ""
echo "The following changes were detected:"
echo "==================================================="
git diff -- packages/twenty-standard-application/src/build packages/twenty-standard-application/src/standard-front-component-build-manifest.ts
echo "==================================================="
exit 1
fi
ci-twenty-standard-front-component-status-check:
if: always() && !cancelled()
timeout-minutes: 5
runs-on: ubuntu-latest
needs:
[
changed-files-check,
standard-front-component-build-check,
]
steps:
- name: Fail job if any needs failed
if: contains(needs.*.result, 'failure')
run: exit 1
+3 -3
View File
@@ -40,7 +40,8 @@ jobs:
uses: actions/checkout@v4
with:
token: ${{ github.token }}
ref: ${{ github.event_name == 'pull_request' && github.head_ref || github.ref }}
repository: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name || github.repository }}
ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.ref }}
- name: Install dependencies
uses: ./.github/actions/yarn-install
@@ -111,7 +112,7 @@ jobs:
run: yarn docs:generate-paths
- name: Commit artifacts to pull request branch
if: github.event_name == 'pull_request'
if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository
run: |
git add packages/twenty-docs/docs.json packages/twenty-docs/navigation/navigation.template.json packages/twenty-shared/src/constants/DocumentationPaths.ts
if git diff --staged --quiet --exit-code; then
@@ -149,4 +150,3 @@ jobs:
fi
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+3 -3
View File
@@ -25,8 +25,8 @@
# Installation
See:
🚀 [Self-hosting](https://docs.twenty.com/developers/self-hosting/docker-compose)
🖥️ [Local Setup](https://docs.twenty.com/developers/local-setup)
🚀 [Self-hosting](https://docs.twenty.com/developers/self-host/capabilities/docker-compose)
🖥️ [Local Setup](https://docs.twenty.com/developers/contribute/capabilities/local-setup)
# Why Twenty
@@ -36,7 +36,7 @@ We built Twenty for three reasons:
**A fresh start is required to build a better experience.** We can learn from past mistakes and craft a cohesive experience inspired by new UX patterns from tools like Notion, Airtable or Linear.
**We believe in Open-source and community.** Hundreds of developers are already building Twenty together. Once we have plugin capabilities, a whole ecosystem will grow around it.
**We believe in open-source and community.** Hundreds of developers are already building Twenty together. Once we have plugin capabilities, a whole ecosystem will grow around it.
<br />
+1 -2
View File
@@ -1,7 +1,7 @@
{
"private": true,
"dependencies": {
"@apollo/client": "^3.7.17",
"@apollo/client": "^4.0.0",
"@floating-ui/react": "^0.24.3",
"@linaria/core": "^6.2.0",
"@linaria/react": "^6.2.1",
@@ -207,7 +207,6 @@
"packages/twenty-e2e-testing",
"packages/twenty-shared",
"packages/twenty-sdk",
"packages/twenty-standard-application",
"packages/twenty-apps",
"packages/twenty-cli",
"packages/create-twenty-app",
+28 -11
View File
@@ -58,6 +58,12 @@ yarn twenty function:execute --preInstall
# Execute the post-install function
yarn twenty function:execute --postInstall
# Build the app for distribution
yarn twenty app:build
# Publish the app to npm or directly to a Twenty server
yarn twenty app:publish
# Uninstall the application from the current workspace
yarn twenty app:uninstall
```
@@ -109,29 +115,40 @@ npx create-twenty-app@latest my-app -m
- Use `yarn twenty app:dev` while you iterate — it watches, builds, and syncs changes to your workspace in real time.
- `CoreApiClient` (for workspace data via `/graphql`) is auto-generated by `yarn twenty app:dev`. `MetadataApiClient` (for workspace configuration and file uploads via `/metadata`) ships pre-built with the SDK. Both are available via `import { CoreApiClient, MetadataApiClient } from 'twenty-sdk/clients'`.
## Publish your application
## Build and publish your application
Applications are currently stored in `twenty/packages/twenty-apps`.
Once your app is ready, build and publish it using the CLI:
You can share your application with all Twenty users:
```bash
# Build the app (output goes to .twenty/output/)
yarn twenty app:build
# Build and create a tarball (.tgz) for distribution
yarn twenty app:build --tarball
# Publish to npm (requires npm login)
yarn twenty app:publish
# Publish with a dist-tag (e.g. beta, next)
yarn twenty app:publish --tag beta
# Publish directly to a Twenty server (builds, uploads, and installs in one step)
yarn twenty app:publish --server https://app.twenty.com
```
### Publish to the Twenty marketplace
You can also contribute your application to the curated marketplace:
```bash
# pull the Twenty project
git clone https://github.com/twentyhq/twenty.git
cd twenty
# create a new branch
git checkout -b feature/my-awesome-app
```
- Copy your app folder into `twenty/packages/twenty-apps`.
- Commit your changes and open a pull request on https://github.com/twentyhq/twenty
```bash
git commit -m "Add new application"
git push
```
Our team reviews contributions for quality, security, and reusability before merging.
## Troubleshooting
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "create-twenty-app",
"version": "0.7.0-canary.0",
"version": "0.7.0",
"description": "Command-line interface to create Twenty application",
"main": "dist/cli.cjs",
"bin": "dist/cli.cjs",
@@ -11,3 +11,4 @@
- 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.
- Creating a front-end component that has a scroll instead of being responsive to its fixed widget height and width, unless it is specifically meant to be used in a canvas tab.
@@ -30,7 +30,7 @@ type AnalysisResult = {
commitments: Commitment[];
};
type RichTextV2Data = {
type RichTextData = {
markdown: string;
blocknote: null;
};
@@ -123,7 +123,7 @@ const createNoteInTwenty = async (
bodyV2: {
markdown: noteBodyMarkdown,
blocknote: null,
} satisfies RichTextV2Data,
} satisfies RichTextData,
};
try {
@@ -159,7 +159,7 @@ const createTaskInTwenty = async (
const taskData: {
title: string;
bodyV2: RichTextV2Data;
bodyV2: RichTextData;
dueAt?: string;
} = {
title: actionItem.title,
@@ -10,3 +10,4 @@
- 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.
- Creating a front-end component that has a scroll instead of being responsive to its fixed widget height and width, unless it is specifically meant to be used in a canvas tab.
@@ -32,7 +32,7 @@ type AnalysisResult = {
commitments: Commitment[];
};
type RichTextV2Data = {
type RichTextData = {
markdown: string;
blocknote: null;
};
@@ -362,7 +362,7 @@ const createNoteInTwenty = async (
bodyV2: {
markdown: noteBodyMarkdown,
blocknote: null,
} satisfies RichTextV2Data,
} satisfies RichTextData,
};
try {
@@ -451,7 +451,7 @@ const createTaskInTwenty = async (
const taskData: {
title: string;
bodyV2: RichTextV2Data;
bodyV2: RichTextData;
dueAt?: string;
assigneeId?: string;
} = {
+1
View File
@@ -10,3 +10,4 @@
- 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.
- Creating a front-end component that has a scroll instead of being responsive to its fixed widget height and width, unless it is specifically meant to be used in a canvas tab.
@@ -7,3 +7,4 @@
- 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.
- Creating a front-end component that has a scroll instead of being responsive to its fixed widget height and width, unless it is specifically meant to be used in a canvas tab.
@@ -81,7 +81,7 @@ export default defineObject({
},
{
universalIdentifier: TRANSCRIPT_FIELD_UNIVERSAL_IDENTIFIER,
type: FieldType.RICH_TEXT_V2,
type: FieldType.RICH_TEXT,
name: 'transcript',
label: 'Transcript',
description: 'Human-readable transcript of the call',
@@ -114,7 +114,7 @@ export default defineObject({
},
{
universalIdentifier: SUMMARY_FIELD_UNIVERSAL_IDENTIFIER,
type: FieldType.RICH_TEXT_V2,
type: FieldType.RICH_TEXT,
name: 'summary',
label: 'Summary',
description: 'AI-generated summary of the call',
@@ -16,7 +16,7 @@ Use this skill when a user asks you to summarize, analyze, or extract insights f
## How to Access the Data
1. Use \`find_one_callRecording\` to fetch the call recording by its ID.
2. Read the \`transcript\` field (RICH_TEXT_V2, markdown format) which contains the full conversation.
2. Read the \`transcript\` field (RICH_TEXT, markdown format) which contains the full conversation.
3. The transcript uses the format: **Speaker Name:** spoken text
## What to Produce
+1 -4
View File
@@ -15,7 +15,6 @@ COPY ./packages/twenty-ui/package.json /app/packages/twenty-ui/
COPY ./packages/twenty-shared/package.json /app/packages/twenty-shared/
COPY ./packages/twenty-front/package.json /app/packages/twenty-front/
COPY ./packages/twenty-sdk/package.json /app/packages/twenty-sdk/
COPY ./packages/twenty-standard-application/package.json /app/packages/twenty-standard-application/
# Install all dependencies
RUN yarn && yarn cache clean && npx nx reset
@@ -29,13 +28,11 @@ COPY ./packages/twenty-emails /app/packages/twenty-emails
COPY ./packages/twenty-shared /app/packages/twenty-shared
COPY ./packages/twenty-ui /app/packages/twenty-ui
COPY ./packages/twenty-sdk /app/packages/twenty-sdk
COPY ./packages/twenty-standard-application /app/packages/twenty-standard-application
COPY ./packages/twenty-server /app/packages/twenty-server
RUN npx nx build twenty-standard-application
RUN npx nx run twenty-server:build
RUN yarn workspaces focus --production twenty-emails twenty-shared twenty-sdk twenty-standard-application twenty-server
RUN yarn workspaces focus --production twenty-emails twenty-shared twenty-sdk twenty-server
# Build the front
FROM common-deps AS twenty-front-build
@@ -9,7 +9,7 @@ The goal here is to have a consistent codebase, which is easy to read and easy t
For this, it's better to be a bit more verbose than to be too concise.
Always keep in mind that people read code more often than they write it, specially on an open source project, where anyone can contribute.
Always keep in mind that people read code more often than they write it, especially on an open source project, where anyone can contribute.
There are a lot of rules that are not defined here, but that are automatically checked by linters.
@@ -150,7 +150,7 @@ type MyType = {
### Use string literals instead of enums
[String literals](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#literal-types) are the go-to way to handle enum-like values in TypeScript. They are easier to extend with Pick and Omit, and offer a better developer experience, specially with code completion.
[String literals](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#literal-types) are the go-to way to handle enum-like values in TypeScript. They are easier to extend with Pick and Omit, and offer a better developer experience, especially with code completion.
You can see why TypeScript recommends avoiding enums [here](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#enums).
@@ -288,4 +288,3 @@ An Oxlint rule, `typescript/consistent-type-imports`, enforces the no-type impor
Please note that this rule specifically addresses rare edge cases where unintentional type imports occur. TypeScript itself discourages this practice, as mentioned in the [TypeScript 3.8 release notes](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-8.html). In most situations, you should not need to use type-only imports.
To ensure your code complies with this rule, make sure to run Oxlint as part of your development workflow.
@@ -7,7 +7,7 @@ description: "The guide for contributors (or curious developers) who want to run
## Prerequisites
<Tabs>
<Tab title="Linux and MacOS">
<Tab title="Linux and macOS">
Before you can install and use Twenty, make sure you install the following on your computer:
- [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)
@@ -31,7 +31,7 @@ wsl --install
```
You should now see a prompt to restart your computer. If not, restart it manually.
Upon restart, a powershell window will open and install Ubuntu. This may take up some time.
Upon restart, a PowerShell window will open and install Ubuntu. This may take up some time.
You'll see a prompt to create a username and password for your Ubuntu installation.
2. Install and configure git
@@ -104,7 +104,7 @@ You should run all commands in the following steps from the root of the project.
<Tabs>
<Tab title="Linux">
**Option 1 (preferred):** To provision your database locally:
Use the following link to install Postgresql on your Linux machine: [Postgresql Installation](https://www.postgresql.org/download/linux/)
Use the following link to install PostgreSQL on your Linux machine: [PostgreSQL Installation](https://www.postgresql.org/download/linux/)
```bash
psql postgres -c "CREATE DATABASE \"default\";" -c "CREATE DATABASE test;"
```
@@ -131,7 +131,7 @@ You should run all commands in the following steps from the root of the project.
```
The installer might not create the `postgres` user by default when installing
via Homebrew on MacOS. Instead, it creates a PostgreSQL role that matches your macOS
via Homebrew on macOS. Instead, it creates a PostgreSQL role that matches your macOS
username (e.g., "john").
To check and create the `postgres` user if necessary, follow these steps:
```bash
@@ -174,8 +174,8 @@ You should run all commands in the following steps from the root of the project.
<Tab title="Windows (WSL)">
All the following steps are to be run in the WSL terminal (within your virtual machine)
**Option 1:** To provision your Postgresql locally:
Use the following link to install Postgresql on your Linux virtual machine: [Postgresql Installation](https://www.postgresql.org/download/linux/)
**Option 1:** To provision your PostgreSQL locally:
Use the following link to install PostgreSQL on your Linux virtual machine: [PostgreSQL Installation](https://www.postgresql.org/download/linux/)
```bash
psql postgres -c "CREATE DATABASE \"default\";" -c "CREATE DATABASE test;"
```
@@ -190,10 +190,12 @@ You should run all commands in the following steps from the root of the project.
</Tab>
</Tabs>
You can now access the database at [localhost:5432](localhost:5432), with user `postgres` and password `postgres` .
You can now access the database at `localhost:5432`.
If you used the Docker option above, the default credentials are user `postgres` and password `postgres`. For native PostgreSQL installations, use the credentials and roles configured on your machine.
## Step 4: Set up a Redis Database (cache)
Twenty requires a redis cache to provide the best performance
Twenty requires a Redis cache to provide the best performance.
<Tabs>
<Tab title="Linux">
@@ -210,8 +212,10 @@ Twenty requires a redis cache to provide the best performance
```bash
brew install redis
```
Start your redis server:
```brew services start redis```
Start your Redis server:
```bash
brew services start redis
```
**Option 2:** If you have docker installed:
```bash
@@ -229,11 +233,11 @@ Twenty requires a redis cache to provide the best performance
</Tab>
</Tabs>
If you need a Client GUI, we recommend [redis insight](https://redis.io/insight/) (free version available)
If you need a client GUI, we recommend [Redis Insight](https://redis.io/insight/) (free version available).
## Step 5: Setup environment variables
## Step 5: Set up environment variables
Use environment variables or `.env` files to configure your project. More info [here](/developers/self-host/capabilities/setup)
Use environment variables or `.env` files to configure your project. More info [here](/developers/self-host/capabilities/setup).
Copy the `.env.example` files in `/front` and `/server`:
```bash
@@ -63,6 +63,12 @@ yarn twenty function:execute --preInstall
# Execute the post-install function
yarn twenty function:execute --postInstall
# Build the app for distribution
yarn twenty app:build
# Publish the app to npm or a Twenty server
yarn twenty app:publish
# Uninstall the application from the current workspace
yarn twenty app:uninstall
@@ -1224,6 +1230,113 @@ Key points:
Explore a minimal, end-to-end example that demonstrates objects, logic functions, front components, and multiple triggers [here](https://github.com/twentyhq/twenty/tree/main/packages/twenty-apps/hello-world):
## Building your app
Once you've developed your app with `app:dev`, use `app:build` to compile it into a distributable package.
```bash filename="Terminal"
# Build the app (output goes to .twenty/output/)
yarn twenty app:build
# Build and create a tarball (.tgz) for distribution
yarn twenty app:build --tarball
```
The build process:
1. **Parses and validates the manifest** — reads all `defineX()` entities from your source files and validates the manifest structure.
2. **Compiles logic functions and front components** — bundles TypeScript sources into ESM `.mjs` files using esbuild.
3. **Generates checksums** — computes MD5 hashes for each built file, stored in the manifest as `builtHandlerChecksum` / `builtComponentChecksum`.
4. **Generates the typed API client** — introspects the GraphQL schema and generates typed `CoreApiClient` and `MetadataApiClient` clients.
5. **Runs a TypeScript type check** — runs `tsc --noEmit` to catch type errors before publishing.
6. **Rebuilds with the generated client** — performs a second compilation pass so the generated client types are included.
7. **Optionally creates a tarball** — if `--tarball` is passed, runs `npm pack` to create a `.tgz` file ready for distribution.
The build output in `.twenty/output/` contains:
```text
.twenty/output/
├── manifest.json # Manifest with checksums for all built files
├── package.json # Copied from app root
├── yarn.lock # Copied from app root
├── src/
│ ├── logic-functions/ # Compiled .mjs logic function files
│ └── front-components/ # Compiled .mjs front component files
├── public/ # Static assets (if any)
└── my-app-1.0.0.tgz # Only with --tarball flag
```
| Option | Description |
|--------|-------------|
| `[appPath]` | Path to the app directory (defaults to current directory) |
| `--tarball` | Also pack the output into a `.tgz` tarball |
## Publishing your app
Use `app:publish` to distribute your app — either to the npm registry or directly to a Twenty server.
### Publish to npm (default)
```bash filename="Terminal"
# Publish to npm (requires npm login)
yarn twenty app:publish
# Publish with a dist-tag (e.g. beta, next)
yarn twenty app:publish --tag beta
```
This builds the app and runs `npm publish` from the `.twenty/output/` directory. The published package can then be installed from the Twenty marketplace by any workspace.
### Publish to a Twenty server
```bash filename="Terminal"
# Publish directly to a Twenty server
yarn twenty app:publish --server https://app.twenty.com
```
This builds the app with a tarball, uploads it to the server via the `uploadAppTarball` GraphQL mutation, and triggers installation in one step. This is useful for private deployments or testing against a specific server.
| Option | Description |
|--------|-------------|
| `[appPath]` | Path to the app directory (defaults to current directory) |
| `--server <url>` | Publish to a Twenty server instead of npm |
| `--token <token>` | Authentication token for the target server |
| `--tag <tag>` | npm dist-tag (e.g. `beta`, `next`) — only for npm publish |
## Application registration
Before an app can be installed in a workspace, it must be **registered**. A registration is a metadata record that describes where the app comes from and how to authenticate it. This is handled automatically by the CLI in most cases.
### Source types
Each registration has a **source type** that determines how the app's files are resolved during installation:
| Source type | How files are resolved | Typical use case |
|-------------|----------------------|------------------|
| `LOCAL` | Files are synced in real-time by the CLI watcher — installation is skipped | Development with `app:dev` |
| `NPM` | Fetched from the npm registry via the `sourcePackage` field | Published apps on npm |
| `TARBALL` | Extracted from an uploaded `.tgz` file stored on the server | Private apps published with `--server` |
### How registration happens
- **`app:dev`** — automatically creates a `LOCAL` registration the first time you run dev mode against a workspace.
- **`app:publish --server`** — uploads a tarball and creates (or updates) a `TARBALL` registration, then installs the app.
- **npm marketplace** — `NPM` registrations are created when apps are synced from the npm registry into the Twenty marketplace catalog.
- **GraphQL API** — you can also create registrations programmatically via the `createApplicationRegistration` mutation.
### Registration vs installation
**Registration** and **installation** are separate concepts:
- A **registration** (`ApplicationRegistration`) is a global metadata record describing the app: its name, source type, OAuth credentials, and marketplace listing status. It exists independently of any workspace.
- An **installation** (`Application`) is a per-workspace instance. When a user installs an app, Twenty resolves the package from the registration's source, writes the built files to storage, and synchronizes the manifest (creating objects, fields, logic functions, etc.) in that workspace.
One registration can be installed in many workspaces. Each workspace gets its own copy of the app's files and data model.
### OAuth credentials
Each registration includes OAuth credentials (`oAuthClientId` and `oAuthClientSecret`) generated at creation time. These are used by the app to authenticate API requests on behalf of users. The client secret is returned **once** at creation — store it securely. You can rotate it later via the `rotateApplicationRegistrationClientSecret` mutation.
## Manual setup (without the scaffolder)
While we recommend using `create-twenty-app` for the best getting-started experience, you can also set up a project manually. Do not install the CLI globally. Instead, add `twenty-sdk` as a local dependency and wire a single script in your package.json:
@@ -4,7 +4,7 @@ title: 1-Click w/ Docker Compose
<Warning>
Docker containers are for production hosting or self-hosting, for the contribution please check the [Local Setup](/developers/contribute/capabilities/local-setup).
Docker containers are for production hosting or self-hosting. For contributing, please check the [Local Setup](/developers/contribute/capabilities/local-setup).
</Warning>
## Overview
@@ -13,7 +13,7 @@ This guide provides step-by-step instructions to install and configure the Twent
**Important:** Only modify settings explicitly mentioned in this guide. Altering other configurations may lead to issues.
See docs [Setup Environment Variables](/developers/self-host/capabilities/setup) for advanced configuration. All environment variables must be declared in the docker-compose.yml file at the server and / or worker level depending on the variable.
See [Setup Environment Variables](/developers/self-host/capabilities/setup) for advanced configuration. All environment variables must be declared in the `docker-compose.yml` file at the server and/or worker level, depending on the variable.
## System Requirements
@@ -237,4 +237,3 @@ docker compose up -d
If you encounter any problem, check [Troubleshooting](/developers/self-host/capabilities/troubleshooting) for solutions.
+4
View File
@@ -6302,6 +6302,10 @@
"source": "/developers/extend/capabilities/apps",
"destination": "/developers/extend/apps/getting-started"
},
{
"source": "/developers/extend/mcp",
"destination": "/user-guide/ai/capabilities/mcp"
},
{
"source": "/developers/local-setup",
"destination": "/developers/contribute/capabilities/local-setup"
@@ -8,7 +8,7 @@ title: دليل الأسلوب
لهذا، من الأفضل أن تكون تفصيلًا أكثر قليلاً بدلاً من أن تكون موجزًا للغاية.
دائمًا ضع في اعتبارك أن الناس يقرؤون التعليمات البرمجية أكثر مما يكتبونها، وخاصة في المشاريع مفتوحة المصدر، حيث يمكن لأي شخص المساهمة.
دائمًا ضع في اعتبارك أن الناس يقرؤون التعليمات البرمجية أكثر مما يكتبونها، وخاصة في مشروع مفتوح المصدر، حيث يمكن لأي شخص المساهمة.
هناك العديد من القواعد التي لم يتم تعريفها هنا، ولكن يتم التحقق منها تلقائيًا بواسطة أدوات الفحص.
@@ -6,7 +6,7 @@ description: الدليل للمساهمين (أو المطورين الفضول
## المتطلبات الأساسية
<Tabs>
<Tab title="Linux و MacOS">
<Tab title="Linux و macOS">
قبل أن تتمكن من تثبيت واستخدام Twenty، تأكد من تثبيت الأمور التالية على جهاز الكمبيوتر الخاص بك:
* [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)
@@ -103,7 +103,7 @@ cd twenty
<Tabs>
<Tab title="Linux">
**الخيار 1 (المفضل):** لتوفير قاعدة بياناتك محليًا:
استخدم الرابط التالي لتثبيت Postgresql على جهاز Linux الخاص بك: [تثبيت Postgresql](https://www.postgresql.org/download/linux/)
استخدم الرابط التالي لتثبيت PostgreSQL على جهاز Linux الخاص بك: [تثبيت PostgreSQL](https://www.postgresql.org/download/linux/)
```bash
psql postgres -c "CREATE DATABASE \"default\";" -c "CREATE DATABASE test;"
```
@@ -129,8 +129,8 @@ cd twenty
brew services list
```
المثبت قد لا ينشئ المستخدم `postgres` افتراضيًا عند التثبيت
عبر Homebrew على MacOS. بدلاً من ذلك، فإنه ينشئ دور PostgreSQL يطابق
قد لا يقوم المُثبِّت بإنشاء المستخدم `postgres` افتراضيًا عند التثبيت
عبر Homebrew على macOS. بدلاً من ذلك، فإنه ينشئ دور PostgreSQL يطابق
اسم المستخدم الخاص بك في MacOS (مثل "john").
للتحقق وإنشاء المستخدم `postgres` إذا لزم الأمر، اتبع هذه الخطوات:
```bash
@@ -173,8 +173,8 @@ cd twenty
<Tab title="ويندوز (WSL)">
يجب أن تُنفذ جميع الخطوات التالية في تيرمينال WSL (داخل جهازك الافتراضي)
**الخيار 1:** لتوفير قاعدة بيانات Postgresql الخاصة بك محليًا:
استخدم الرابط التالي لتثبيت Postgresql على جهاز Linux الافتراضي الخاص بك: [تثبيت Postgresql](https://www.postgresql.org/download/linux/)
**الخيار 1:** لتوفير قاعدة بيانات PostgreSQL الخاصة بك محليًا:
استخدم الرابط التالي لتثبيت PostgreSQL على جهاز Linux الافتراضي الخاص بك: [تثبيت PostgreSQL](https://www.postgresql.org/download/linux/)
```bash
psql postgres -c "CREATE DATABASE \"default\";" -c "CREATE DATABASE test;"
```
@@ -189,11 +189,13 @@ cd twenty
</Tab>
</Tabs>
يمكنك الآن الوصول إلى قاعدة البيانات على [localhost:5432](localhost:5432)، مع المستخدم `postgres` وكلمة المرور `postgres`.
يمكنك الآن الوصول إلى قاعدة البيانات على `localhost:5432`.
إذا استخدمت خيار Docker أعلاه، فإن بيانات الاعتماد الافتراضية هي اسم المستخدم `postgres` وكلمة المرور `postgres`. بالنسبة لتثبيتات PostgreSQL الأصلية، استخدم بيانات الاعتماد والأدوار المُكوَّنة على جهازك.
## الخطوة 4: إعداد قاعدة بيانات Redis (للتخزين المؤقت)
يتطلب Twenty مخزن بيانات Redis لتقديم أفضل أداء
يتطلب Twenty مخزن بيانات Redis لتقديم أفضل أداء.
<Tabs>
<Tab title="Linux">
@@ -210,8 +212,10 @@ cd twenty
```bash
brew install redis
```
ابدأ خادم redis الخاص بك:
`brew services start redis`
ابدأ تشغيل خادم Redis:
```bash
brew services start redis
```
**الخيار 2:** إذا كنت قد قمت بتثبيت docker:
```bash
@@ -229,11 +233,11 @@ cd twenty
</Tab>
</Tabs>
إذا كنت بحاجة إلى واجهة رسومية للعميل، نوصي بـ [redis insight](https://redis.io/insight/) (يتوفر إصدار مجاني)
إذا كنت بحاجة إلى واجهة رسومية للعميل، نوصي بـ [Redis Insight](https://redis.io/insight/) (يتوفر إصدار مجاني).
## الخطوة 5: إعداد متغيرات البيئة
استخدم متغيرات البيئة أو ملفات `.env` لتكوين مشروعك. المزيد من المعلومات [هنا](/l/ar/developers/self-host/capabilities/setup)
استخدم متغيرات البيئة أو ملفات `.env` لتكوين مشروعك. المزيد من المعلومات [هنا](/l/ar/developers/self-host/capabilities/setup).
انسخ ملفات `.env.example` الموجودة في `/front` و`/server`:
@@ -64,6 +64,12 @@ yarn twenty function:execute --preInstall
# نفّذ دالة ما بعد التثبيت
yarn twenty function:execute --postInstall
# ابنِ التطبيق للتوزيع
yarn twenty app:build
# انشر التطبيق إلى npm أو إلى خادم Twenty
yarn twenty app:publish
# أزل تثبيت التطبيق من مساحة العمل الحالية
yarn twenty app:uninstall
@@ -1240,6 +1246,113 @@ uploadFile(
استكشف مثالًا بسيطًا شاملًا من البداية إلى النهاية يوضح الكائنات والوظائف المنطقية والمكوّنات الأمامية ومشغّلات متعددة [هنا](https://github.com/twentyhq/twenty/tree/main/packages/twenty-apps/hello-world):
## بناء تطبيقك
بمجرد أن تطوّر تطبيقك باستخدام `app:dev`، استخدم `app:build` لإنشاء حزمة قابلة للتوزيع منه.
```bash filename="Terminal"
# ابنِ التطبيق (الإخراج يذهب إلى .twenty/output/)
yarn twenty app:build
# ابنِ وأنشئ ملف tarball (.tgz) للتوزيع
yarn twenty app:build --tarball
```
عملية البناء:
1. **يقوم بتحليل ملف البيان والتحقق من صحته** — يقرأ جميع الكيانات `defineX()` من ملفات المصدر لديك ويُتحقّق من بنية ملف البيان.
2. **يُصرِّف دوال المنطق ومكوّنات الواجهة** — يُجمّع مصادر TypeScript إلى ملفات ESM `.mjs` باستخدام esbuild.
3. **يولّد قيم التحقّق** — يحسب تجزئات MD5 لكل ملف مُبنًى، وتُخزَّن في ملف البيان كـ `builtHandlerChecksum` / `builtComponentChecksum`.
4. **ينشئ عميل API مضبوط الأنواع** — يفحص مخطط GraphQL ويُنشئ عميلَي `CoreApiClient` و`MetadataApiClient` مضبوطي الأنواع.
5. **يشغّل فحص الأنواع لـ TypeScript** — يشغّل `tsc --noEmit` لاكتشاف أخطاء الأنواع قبل النشر.
6. **يعيد البناء باستخدام العميل المُولَّد** — يُجري مرحلة ترجمة ثانية بحيث تُدرَج أنواع العميل المُولَّد.
7. **ينشئ أرشيف tar اختياريًا** — إذا تم تمرير `--tarball`، يشغّل `npm pack` لإنشاء ملف `.tgz` جاهز للتوزيع.
مخرجات البناء في `.twenty/output/` تتضمّن:
```text
.twenty/output/
├── manifest.json # Manifest with checksums for all built files
├── package.json # Copied from app root
├── yarn.lock # Copied from app root
├── src/
│ ├── logic-functions/ # Compiled .mjs logic function files
│ └── front-components/ # Compiled .mjs front component files
├── public/ # Static assets (if any)
└── my-app-1.0.0.tgz # Only with --tarball flag
```
| الخيار | الوصف |
| ----------- | -------------------------------------------------- |
| `[appPath]` | المسار إلى دليل التطبيق (افتراضيًا: الدليل الحالي) |
| `--tarball` | قم أيضًا بحزم المخرجات في أرشيف `.tgz` |
## نشر تطبيقك
استخدم `app:publish` لتوزيع تطبيقك — إما إلى سجل npm أو مباشرةً إلى خادم Twenty.
### النشر إلى npm (الإعداد الافتراضي)
```bash filename="Terminal"
# Publish to npm (requires npm login)
yarn twenty app:publish
# Publish with a dist-tag (e.g. beta, next)
yarn twenty app:publish --tag beta
```
يقوم هذا ببناء التطبيق وتشغيل `npm publish` من دليل `.twenty/output/`. بعد ذلك يمكن تثبيت الحزمة المنشورة من سوق Twenty بواسطة أي مساحة عمل.
### النشر إلى خادم Twenty
```bash filename="Terminal"
# Publish directly to a Twenty server
yarn twenty app:publish --server https://app.twenty.com
```
يقوم هذا ببناء التطبيق مع أرشيف tar، ويرفعه إلى الخادم عبر العملية `uploadAppTarball` في GraphQL، ويبدأ التثبيت في خطوة واحدة. يكون هذا مفيدًا لعمليات النشر الخاصة أو للاختبار مقابل خادم محدّد.
| الخيار | الوصف |
| ----------------- | -------------------------------------------------------- |
| `[appPath]` | المسار إلى دليل التطبيق (افتراضيًا: الدليل الحالي) |
| `--server <url>` | انشر إلى خادم Twenty بدلًا من npm |
| `--token <token>` | رمز المصادقة للخادم المستهدف |
| `--tag <tag>` | علامة توزيع npm (مثل `beta`، `next`) — للنشر عبر npm فقط |
## تسجيل التطبيق
قبل أن يمكن تثبيت تطبيق في مساحة عمل، يجب أن يكون **مسجّلًا**. التسجيل هو سجل بيانات وصفية يوضّح مصدر التطبيق وكيفية مصادقته. يُعالَج هذا تلقائيًا بواسطة CLI في معظم الحالات.
### أنواع المصادر
لكل تسجيل **نوع مصدر** يحدّد كيفية تحديد ملفات التطبيق أثناء التثبيت:
| نوع المصدر | كيفية تحديد الملفات | حالة الاستخدام النموذجية |
| ---------- | ------------------------------------------------------------------------- | --------------------------------------- |
| `LOCAL` | تتم مزامنة الملفات في الوقت الفعلي بواسطة مُراقِب CLI — يتم تخطّي التثبيت | التطوير باستخدام `app:dev` |
| `NPM` | تُجلب من سجل npm عبر الحقل `sourcePackage` | تطبيقات منشورة على npm |
| `TARBALL` | تُستخرَج من ملف `.tgz` مرفوع ومخزَّن على الخادم | تطبيقات خاصة منشورة باستخدام `--server` |
### كيفية إجراء التسجيل
* **`app:dev`** — ينشئ تلقائيًا تسجيلًا من نوع `LOCAL` في المرة الأولى التي تشغّل فيها وضع التطوير لمساحة عمل.
* **`app:publish --server`** — يرفع أرشيف tar وينشئ (أو يحدّث) تسجيلًا من نوع `TARBALL`، ثم يثبّت التطبيق.
* **سوق npm** — يتم إنشاء تسجيلات `NPM` عند مزامنة التطبيقات من سجل npm إلى كتالوج سوق Twenty.
* **واجهة برمجة تطبيقات GraphQL** — يمكنك أيضًا إنشاء التسجيلات برمجيًا عبر العملية `createApplicationRegistration`.
### التسجيل مقابل التثبيت
**التسجيل** و**التثبيت** مفهومان منفصلان:
* **التسجيل** (`ApplicationRegistration`) هو سجل بيانات وصفية عام يصف التطبيق: اسمه، نوع المصدر، بيانات اعتماد OAuth، وحالة إدراجه في السوق. وهو موجود بشكل مستقل عن أي مساحة عمل.
* **التثبيت** (`Application`) هو مثيل لكل مساحة عمل. عند قيام مستخدم بتثبيت تطبيق، تقوم Twenty بحلّ الحزمة من مصدر التسجيل، وتكتب الملفات المُبنَاة إلى التخزين، وتزامن البيان التعريفي (إنشاء الكائنات والحقول ودوال المنطق، إلخ) في مساحة العمل تلك.
يمكن تثبيت تسجيل واحد في العديد من مساحات العمل. تحصل كل مساحة عمل على نسختها الخاصة من ملفات التطبيق ونموذج البيانات.
### بيانات اعتماد OAuth
يتضمن كل تسجيل بيانات اعتماد OAuth (`oAuthClientId` و`oAuthClientSecret`) يتم إنشاؤها وقت الإنشاء. يستخدمها التطبيق لمصادقة طلبات واجهة برمجة التطبيقات بالنيابة عن المستخدمين. يُعرَض سر العميل مرةً **واحدة** عند الإنشاء — خزّنه بأمان. يمكنك تدويره لاحقًا عبر العملية `rotateApplicationRegistrationClientSecret`.
## إعداد يدوي (بدون المهيئ)
بينما نوصي باستخدام `create-twenty-app` للحصول على أفضل تجربة للبدء، يمكنك أيضًا إعداد مشروع يدويًا. لا تثبّت CLI عالميًا. بدل ذلك، أضف `twenty-sdk` كاعتماد محلي واربط سكربتًا واحدًا في ملف package.json لديك:
@@ -3,7 +3,7 @@ title: بنقرة واحدة مع Docker Compose
---
<Warning>
الحاويات الخاصة بدوكر مخصصة للاستضافة الإنتاجية أو الاستضافة الذاتية، للتحقيق يرجى التحقق من [الإعداد المحلي](/l/ar/developers/contribute/capabilities/local-setup).
حاويات Docker مخصصة للاستضافة في بيئة الإنتاج أو للاستضافة الذاتية. للمساهمة، يُرجى الاطلاع على [الإعداد المحلي](/l/ar/developers/contribute/capabilities/local-setup).
</Warning>
## نظرة عامة
@@ -12,7 +12,7 @@ title: بنقرة واحدة مع Docker Compose
**مهم:** عدّل الإعدادات المذكورة صراحة في هذا الدليل فقط. قد يؤدي تعديل التكوينات الأخرى إلى مشاكل.
راجع المستندات الخاصة بـ [إعداد متغيرات البيئة](/l/ar/developers/self-host/capabilities/setup) لإعداد متقدم. يجب إعلان جميع متغيرات البيئة في الملف docker-compose.yml على مستوى الخادم و/أو العامل بناءً على المتغير.
راجع [إعداد متغيرات البيئة](/l/ar/developers/self-host/capabilities/setup) لإعداد متقدم. يجب إعلان جميع متغيرات البيئة في ملف `docker-compose.yml` على مستوى الخادم و/أو العامل، اعتمادًا على المتغير.
## متطلبات النظام
@@ -297,46 +297,60 @@ yarn command:prod cron:workflow:automated-cron-trigger
**وضع بيئي فقط:** إذا كنت قد ضبطت `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false`، فأضف هذه المتغيرات إلى ملف `.env` الخاص بك بدلاً من ذلك.
</Warning>
## الوظائف المنطقية
## الوظائف المنطقية ومفسر الشيفرة
تدعم Twenty الوظائف المنطقية لعمليات سير العمل والمنطق المخصص. يتم تكوين بيئة التنفيذ عبر متغير البيئة `SERVERLESS_TYPE`.
تدعم Twenty الوظائف المنطقية لعمليات سير العمل ومفسر الشيفرة لتحليل بيانات الذكاء الاصطناعي. كلاهما يقوم بتشغيل الشيفرة المقدمة من المستخدم ويتطلب تهيئة صريحة لأغراض الأمان.
### الإعدادات الافتراضية للأمان
**في بيئة الإنتاج (NODE_ENV=production):** يكون الإعداد الافتراضي لكل من الوظائف المنطقية ومفسر الشيفرة هو **معطل**. يجب تمكينهما صراحة باستخدام `LOGIC_FUNCTION_TYPE` و`CODE_INTERPRETER_TYPE` إذا كنت تحتاج إلى هذه الميزات.
**في بيئة التطوير (NODE_ENV=development):** يكون الإعداد الافتراضي لكليهما **LOCAL** لتسهيل التشغيل محلياً.
<Warning>
**ملاحظة أمنية:** يقوم برنامج التشغيل المحلي (`SERVERLESS_TYPE=LOCAL`) بتشغيل الشيفرة مباشرةً على المضيف ضمن عملية Node.js من دون عزل. يجب استخدامه فقط للشيفرة الموثوقة أثناء التطوير. بالنسبة لعمليات النشر الإنتاجية التي تتعامل مع شيفرة غير موثوق بها، نوصي بشدة باستخدام `SERVERLESS_TYPE=LAMBDA` أو `SERVERLESS_TYPE=DISABLED`.
**ملاحظة أمنية:** يقوم برنامج التشغيل المحلي (`LOGIC_FUNCTION_TYPE=LOCAL` أو `CODE_INTERPRETER_TYPE=LOCAL`) بتشغيل الشيفرة مباشرة على المضيف ضمن عملية Node.js من دون عزل. يجب استخدامه فقط للشيفرة الموثوقة أثناء التطوير. لعمليات النشر الإنتاجية التي تتعامل مع شيفرة غير موثوقة، استخدم `LOGIC_FUNCTION_TYPE=LAMBDA` أو `CODE_INTERPRETER_TYPE=E2B` (مع وضع الحماية)، أو اتركهما مُعطَّلَيْن.
</Warning>
### برامج التشغيل المتاحة
### الوظائف المنطقية - برامج التشغيل المتاحة
| برنامج التشغيل | متغير البيئة | حالة الاستخدام | مستوى الأمان |
| -------------- | -------------------------- | ------------------------------- | ----------------------------- |
| معطل | `SERVERLESS_TYPE=DISABLED` | تعطيل الوظائف المنطقية بالكامل | غير متاح |
| محلي | `SERVERLESS_TYPE=LOCAL` | بيئات التطوير والبيئات الموثوقة | منخفض (من دون عزل) |
| Lambda | `SERVERLESS_TYPE=LAMBDA` | الإنتاج مع شيفرة غير موثوق بها | مرتفع (عزل على مستوى الأجهزة) |
| برنامج التشغيل | متغير البيئة | حالة الاستخدام | مستوى الأمان |
| -------------- | ------------------------------ | ------------------------------- | ----------------------------- |
| معطل | `LOGIC_FUNCTION_TYPE=DISABLED` | تعطيل الوظائف المنطقية بالكامل | غير متاح |
| محلي | `LOGIC_FUNCTION_TYPE=LOCAL` | بيئات التطوير والبيئات الموثوقة | منخفض (من دون عزل) |
| Lambda | `LOGIC_FUNCTION_TYPE=LAMBDA` | الإنتاج مع شيفرة غير موثوق بها | مرتفع (عزل على مستوى الأجهزة) |
### التكوين الموصى به
### الوظائف المنطقية - الإعداد الموصى به
**للتطوير:**
```bash
SERVERLESS_TYPE=LOCAL # default
LOGIC_FUNCTION_TYPE=LOCAL # default when NODE_ENV=development
```
**للإنتاج (AWS):**
```bash
SERVERLESS_TYPE=LAMBDA
SERVERLESS_LAMBDA_REGION=us-east-1
SERVERLESS_LAMBDA_ROLE=arn:aws:iam::123456789:role/your-lambda-role
SERVERLESS_LAMBDA_ACCESS_KEY_ID=your-access-key
SERVERLESS_LAMBDA_SECRET_ACCESS_KEY=your-secret-key
LOGIC_FUNCTION_TYPE=LAMBDA
LOGIC_FUNCTION_LAMBDA_REGION=us-east-1
LOGIC_FUNCTION_LAMBDA_ROLE=arn:aws:iam::123456789:role/your-lambda-role
LOGIC_FUNCTION_LAMBDA_ACCESS_KEY_ID=your-access-key
LOGIC_FUNCTION_LAMBDA_SECRET_ACCESS_KEY=your-secret-key
```
**لتعطيل الوظائف المنطقية:**
```bash
SERVERLESS_TYPE=DISABLED
LOGIC_FUNCTION_TYPE=DISABLED # default when NODE_ENV=production
```
### مفسر الشيفرة - برامج التشغيل المتاحة
| برنامج التشغيل | متغير البيئة | حالة الاستخدام | مستوى الأمان |
| -------------- | -------------------------------- | ------------------------------------- | ------------------------ |
| معطل | `CODE_INTERPRETER_TYPE=DISABLED` | تعطيل تنفيذ الشيفرة بالذكاء الاصطناعي | غير متاح |
| محلي | `CODE_INTERPRETER_TYPE=LOCAL` | للتطوير فقط | منخفض (من دون عزل) |
| E2B | `CODE_INTERPRETER_TYPE=E_2_B` | الإنتاج مع تنفيذ ضمن صندوق رمل معزول | مرتفعة (صندوق رمل معزول) |
<Note>
عند استخدام `SERVERLESS_TYPE=DISABLED`، ستؤدي أي محاولة لتنفيذ وظيفة منطقية إلى إرجاع خطأ. يكون هذا مفيدًا إذا كنت ترغب في تشغيل Twenty من دون إمكانات الوظائف المنطقية.
عند استخدام `LOGIC_FUNCTION_TYPE=DISABLED` أو `CODE_INTERPRETER_TYPE=DISABLED`، سترجع أي محاولة للتنفيذ خطأً. يكون هذا مفيدًا إذا كنت ترغب في تشغيل Twenty من دون هذه الإمكانات.
</Note>
@@ -6,7 +6,7 @@ description: Der Leitfaden für Mitwirkende (oder neugierige Entwickler), die Tw
## Voraussetzungen
<Tabs>
<Tab title="Linux und MacOS">
<Tab title="Linux und macOS">
Bevor Sie Twenty installieren und verwenden können, stellen Sie sicher, dass Sie Folgendes auf Ihrem Computer installiert haben:
* [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)
@@ -103,7 +103,7 @@ Alle folgenden Befehle innerhalb des Projekts sind vom Stammverzeichnis aus ausz
<Tabs>
<Tab title="Linux">
**Option 1 (bevorzugt):** Um Ihre Datenbank lokal bereitzustellen:
Verwenden Sie den folgenden Link, um PostgreSQL auf Ihrem Linux-Rechner zu installieren: [Postgresql-Installation](https://www.postgresql.org/download/linux/)
Verwenden Sie den folgenden Link, um PostgreSQL auf Ihrem Linux-Rechner zu installieren: [PostgreSQL-Installation](https://www.postgresql.org/download/linux/)
```bash
psql postgres -c "CREATE DATABASE \"default\";" -c "CREATE DATABASE test;"
```
@@ -129,8 +129,8 @@ Alle folgenden Befehle innerhalb des Projekts sind vom Stammverzeichnis aus ausz
brew services list
```
Der Installer erstellt möglicherweise nicht standardmäßig den Benutzer `postgres`, wenn er
über Homebrew auf MacOS installiert wird. Stattdessen wird eine PostgreSQL-Rolle erstellt, die Ihrem macOS
Das Installationsprogramm erstellt den Benutzer `postgres` möglicherweise nicht standardmäßig bei der Installation
über Homebrew auf macOS. Stattdessen wird eine PostgreSQL-Rolle erstellt, die Ihrem macOS
Benutzernamen (z. B. "john") entspricht.
Um zu überprüfen und, falls erforderlich, den Benutzer `postgres` zu erstellen, führen Sie folgende Schritte aus:
```bash
@@ -174,7 +174,7 @@ Alle folgenden Befehle innerhalb des Projekts sind vom Stammverzeichnis aus ausz
Alle folgenden Schritte sind im WSL-Terminal auszuführen (innerhalb Ihrer virtuellen Maschine)
**Option 1:** Um Ihr PostgreSQL lokal bereitzustellen:
Verwenden Sie den folgenden Link, um PostgreSQL auf Ihrer Linux-VM zu installieren: [Postgresql-Installation](https://www.postgresql.org/download/linux/)
Verwenden Sie den folgenden Link, um PostgreSQL auf Ihrer Linux-VM zu installieren: [PostgreSQL-Installation](https://www.postgresql.org/download/linux/)
```bash
psql postgres -c "CREATE DATABASE \"default\";" -c "CREATE DATABASE test;"
```
@@ -189,11 +189,13 @@ Alle folgenden Befehle innerhalb des Projekts sind vom Stammverzeichnis aus ausz
</Tab>
</Tabs>
Sie können jetzt über [localhost:5432](localhost:5432) auf die Datenbank zugreifen, mit dem Benutzer `postgres` und dem Passwort `postgres`.
Sie können nun über `localhost:5432` auf die Datenbank zugreifen.
Wenn Sie die oben genannte Docker-Option verwendet haben, lauten die Standardanmeldedaten Benutzer `postgres` und Passwort `postgres`. Für native PostgreSQL-Installationen verwenden Sie die auf Ihrem Rechner konfigurierten Anmeldedaten und Rollen.
## Schritt 4: Einrichten einer Redis-Datenbank (Cache)
Twenty benötigt einen Redis-Cache, um die beste Leistung zu bieten
Twenty benötigt einen Redis-Cache, um die beste Leistung zu bieten.
<Tabs>
<Tab title="Linux">
@@ -211,7 +213,9 @@ Twenty benötigt einen Redis-Cache, um die beste Leistung zu bieten
brew install redis
```
Starten Sie Ihren Redis-Server:
`brew services start redis`
```bash
brew services start redis
```
**Option 2:** Wenn Sie Docker installiert haben:
```bash
@@ -229,11 +233,11 @@ Twenty benötigt einen Redis-Cache, um die beste Leistung zu bieten
</Tab>
</Tabs>
Wenn Sie eine Client-GUI benötigen, empfehlen wir [redis insight](https://redis.io/insight/) (kostenlose Version verfügbar)
Wenn Sie eine Client-GUI benötigen, empfehlen wir [Redis Insight](https://redis.io/insight/) (kostenlose Version verfügbar).
## Schritt 5: Einrichten von Umgebungsvariablen
Verwenden Sie Umgebungsvariablen oder `.env`-Dateien, um Ihr Projekt zu konfigurieren. Weitere Informationen [hier](/l/de/developers/self-host/capabilities/setup)
Verwenden Sie Umgebungsvariablen oder `.env`-Dateien, um Ihr Projekt zu konfigurieren. Weitere Informationen [hier](/l/de/developers/self-host/capabilities/setup).
Kopieren Sie die `.env.example`-Dateien in `/front` und `/server`:
@@ -64,11 +64,17 @@ yarn twenty function:execute --preInstall
# Die Post-Installationsfunktion ausführen
yarn twenty function:execute --postInstall
# Die Anwendung für die Verteilung erstellen
yarn twenty app:build
# Die Anwendung auf npm oder einen Twenty-Server veröffentlichen
yarn twenty app:publish
# Die Anwendung aus dem aktuellen Arbeitsbereich deinstallieren
yarn twenty app:uninstall
# Hilfe zu Befehlen anzeigen
yarn twenty help},{
yarn twenty help
```
Siehe auch: die CLI-Referenzseiten für [create-twenty-app](https://www.npmjs.com/package/create-twenty-app) und [twenty-sdk CLI](https://www.npmjs.com/package/twenty-sdk).
@@ -1240,6 +1246,113 @@ Hauptpunkte:
Ein minimales End-to-End-Beispiel, das Objekte, Logikfunktionen, Frontend-Komponenten und mehrere Trigger demonstriert, finden Sie [hier](https://github.com/twentyhq/twenty/tree/main/packages/twenty-apps/hello-world):
## Erstellen Ihrer App
Sobald Sie Ihre App mit `app:dev` entwickelt haben, verwenden Sie `app:build`, um sie in ein verteilbares Paket zu kompilieren.
```bash filename="Terminal"
# Die App erstellen (Ausgabe nach .twenty/output/)
yarn twenty app:build
# Build ausführen und ein Tarball (.tgz) für die Verteilung erstellen
yarn twenty app:build --tarball
```
Der Build-Prozess:
1. **Parst und validiert das Manifest** — liest alle `defineX()`-Entitäten aus Ihren Quelldateien und validiert die Manifeststruktur.
2. **Kompiliert Logikfunktionen und Front-Komponenten** — bündelt TypeScript-Quellcode in ESM `.mjs`-Dateien mit esbuild.
3. **Erzeugt Checksummen** — berechnet MD5-Hashes für jede erstellte Datei, die im Manifest als `builtHandlerChecksum` / `builtComponentChecksum` gespeichert werden.
4. **Generiert den typisierten API-Client** — führt eine Introspektion des GraphQL-Schemas durch und generiert die typisierten Clients `CoreApiClient` und `MetadataApiClient`.
5. **Führt eine TypeScript-Typprüfung aus** — führt `tsc --noEmit` aus, um Typfehler vor der Veröffentlichung zu erkennen.
6. **Baut mit dem generierten Client neu** — führt einen zweiten Kompiliervorgang durch, damit die generierten Client-Typen enthalten sind.
7. **Erstellt optional einen Tarball** — wenn `--tarball` übergeben wird, wird `npm pack` ausgeführt, um eine `.tgz`-Datei zu erstellen, die für die Verteilung bereit ist.
Der Build-Output in `.twenty/output/` enthält:
```text
.twenty/output/
├── manifest.json # Manifest with checksums for all built files
├── package.json # Copied from app root
├── yarn.lock # Copied from app root
├── src/
│ ├── logic-functions/ # Compiled .mjs logic function files
│ └── front-components/ # Compiled .mjs front component files
├── public/ # Static assets (if any)
└── my-app-1.0.0.tgz # Only with --tarball flag
```
| Option | Beschreibung |
| ----------- | -------------------------------------------------------------- |
| `[appPath]` | Pfad zum App-Verzeichnis (standardmäßig aktuelles Verzeichnis) |
| `--tarball` | Den Output zusätzlich in einen `.tgz`-Tarball packen |
## Veröffentlichen Ihrer App
Verwenden Sie `app:publish`, um Ihre App zu verteilen — entweder zur npm-Registry oder direkt zu einem Twenty-Server.
### Bei npm veröffentlichen (Standard)
```bash filename="Terminal"
# Publish to npm (requires npm login)
yarn twenty app:publish
# Publish with a dist-tag (e.g. beta, next)
yarn twenty app:publish --tag beta
```
Dies baut die App und führt `npm publish` aus dem Verzeichnis `.twenty/output/` aus. Das veröffentlichte Paket kann dann von jedem Arbeitsbereich über den Twenty-Marktplatz installiert werden.
### Auf einem Twenty-Server veröffentlichen
```bash filename="Terminal"
# Publish directly to a Twenty server
yarn twenty app:publish --server https://app.twenty.com
```
Dies erstellt beim Build einen Tarball, lädt ihn über die GraphQL-Mutation `uploadAppTarball` auf den Server hoch und stößt die Installation in einem Schritt an. Dies ist nützlich für private Bereitstellungen oder Tests gegen einen bestimmten Server.
| Option | Beschreibung |
| ----------------- | ------------------------------------------------------------------ |
| `[appPath]` | Pfad zum App-Verzeichnis (standardmäßig aktuelles Verzeichnis) |
| `--server <url>` | Auf einen Twenty-Server anstelle von npm veröffentlichen |
| `--token <token>` | Authentifizierungstoken für den Zielserver |
| `--tag <tag>` | npm dist-tag (z. B. `beta`, `next`) — nur für npm-Veröffentlichung |
## Anwendungsregistrierung
Bevor eine App in einem Arbeitsbereich installiert werden kann, muss sie **registriert** werden. Eine Registrierung ist ein Metadatensatz, der beschreibt, woher die App stammt und wie sie authentifiziert wird. Dies wird in den meisten Fällen automatisch durch die CLI erledigt.
### Quelltypen
Jede Registrierung hat einen **Quelltyp**, der bestimmt, wie die Dateien der App während der Installation aufgelöst werden:
| Quelltyp | Wie Dateien aufgelöst werden | Typischer Anwendungsfall |
| --------- | ---------------------------------------------------------------------------------------------- | ------------------------------------------------------ |
| `LOCAL` | Dateien werden in Echtzeit vom CLI-Watcher synchronisiert — die Installation wird übersprungen | Entwicklung mit `app:dev` |
| `NPM` | Über das Feld `sourcePackage` aus der npm-Registry abgerufen | Veröffentlichte Apps auf npm |
| `TARBALL` | Aus einer hochgeladenen, auf dem Server gespeicherten `.tgz`-Datei extrahiert | Private Apps, die mit `--server` veröffentlicht wurden |
### Wie die Registrierung erfolgt
* **`app:dev`** — erstellt beim ersten Ausführen des Dev-Modus für einen Arbeitsbereich automatisch eine `LOCAL`-Registrierung.
* **`app:publish --server`** — lädt einen Tarball hoch und erstellt (oder aktualisiert) eine `TARBALL`-Registrierung und installiert anschließend die App.
* **npm-Marktplatz** — `NPM`-Registrierungen werden erstellt, wenn Apps aus der npm-Registry in den Twenty-Marktplatzkatalog synchronisiert werden.
* **GraphQL-API** — Sie können Registrierungen auch programmgesteuert über die Mutation `createApplicationRegistration` erstellen.
### Registrierung vs. Installation
**Registrierung** und **Installation** sind unterschiedliche Konzepte:
* Eine **Registrierung** (`ApplicationRegistration`) ist ein globaler Metadatensatz, der die App beschreibt: ihren Namen, den Quelltyp, die OAuth-Anmeldedaten und den Status der Marktplatzlistung. Sie existiert unabhängig von jedem Arbeitsbereich.
* Eine **Installation** (`Application`) ist eine Instanz pro Arbeitsbereich. Wenn ein Benutzer eine App installiert, ermittelt Twenty das Paket aus der Quelle der Registrierung, schreibt die erstellten Dateien in den Speicher und synchronisiert das Manifest (wobei Objekte, Felder, Logikfunktionen usw. erstellt werden) in diesem Arbeitsbereich.
Eine Registrierung kann in vielen Arbeitsbereichen installiert werden. Jeder Arbeitsbereich erhält seine eigene Kopie der Dateien und des Datenmodells der App.
### OAuth-Anmeldedaten
Jede Registrierung enthält OAuth-Anmeldedaten (`oAuthClientId` und `oAuthClientSecret`), die bei der Erstellung generiert werden. Diese werden von der App verwendet, um API-Anfragen im Namen der Benutzer zu authentifizieren. Das Client-Secret wird bei der Erstellung **einmalig** zurückgegeben — bewahren Sie es sicher auf. Sie können es später über die Mutation `rotateApplicationRegistrationClientSecret` rotieren.
## Manuelle Einrichtung (ohne Scaffolder)
Wir empfehlen zwar `create-twenty-app` für das beste Einstiegserlebnis, Sie können ein Projekt aber auch manuell einrichten. Installieren Sie die CLI nicht global. Fügen Sie stattdessen `twenty-sdk` als lokale Abhängigkeit hinzu und binden Sie ein einzelnes Skript in Ihrer package.json ein:
@@ -3,7 +3,7 @@ title: 1-Klick mit Docker Compose
---
<Warning>
Docker-Container sind für die Produktion oder das Selbsthosten bestimmt. Für Beiträge siehe bitte das [Lokale Setup](/l/de/developers/contribute/capabilities/local-setup).
Docker-Container sind für produktives Hosting oder Selbsthosting vorgesehen. Zum Mitwirken siehe [Lokale Einrichtung](/l/de/developers/contribute/capabilities/local-setup).
</Warning>
## Überblick
@@ -12,7 +12,7 @@ Diese Anleitung enthält Schritt-für-Schritt-Anweisungen, um die Twenty-Anwendu
**Wichtig:** Ändern Sie nur die in dieser Anleitung explizit erwähnten Einstellungen. Andere Konfigurationen zu ändern, kann zu Problemen führen.
Siehe die Dokumentation [Umgebungsvariablen einrichten](/l/de/developers/self-host/capabilities/setup) zur erweiterten Konfiguration. Alle Umgebungsvariablen müssen in der Datei docker-compose.yml auf Server- und/oder Worker-Ebene deklariert werden, je nach Variable.
Siehe die Dokumentation [Umgebungsvariablen einrichten](/l/de/developers/self-host/capabilities/setup) zur erweiterten Konfiguration. Alle Umgebungsvariablen müssen in der Datei `docker-compose.yml` auf Server- und/oder Worker-Ebene deklariert werden, je nach Variable.
## Systemanforderungen
@@ -297,46 +297,60 @@ yarn command:prod cron:workflow:automated-cron-trigger
**Nur-Umgebungsmodus:** Wenn Sie `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false` setzen, fügen Sie diese Variablen stattdessen Ihrer `.env`-Datei hinzu.
</Warning>
## Logikfunktionen
## Logikfunktionen & Code-Interpreter
Twenty unterstützt Logikfunktionen für Workflows und benutzerdefinierte Logik. Die Ausführungsumgebung wird über die Umgebungsvariable `SERVERLESS_TYPE` konfiguriert.
Twenty unterstützt Logikfunktionen für Workflows und den Code-Interpreter für KI-Datenanalyse. Beide führen vom Benutzer bereitgestellten Code aus und erfordern aus Sicherheitsgründen eine explizite Konfiguration.
### Sicherheits-Standardeinstellungen
**In Produktion (NODE_ENV=production):** Sowohl Logikfunktionen als auch der Code-Interpreter sind standardmäßig **deaktiviert**. Sie müssen sie, wenn Sie diese Funktionen benötigen, explizit mit `LOGIC_FUNCTION_TYPE` und `CODE_INTERPRETER_TYPE` aktivieren.
**In der Entwicklung (NODE_ENV=development):** Beide sind der Einfachheit halber beim lokalen Betrieb standardmäßig **LOCAL**.
<Warning>
**Sicherheitshinweis:** Der lokale Treiber (`SERVERLESS_TYPE=LOCAL`) führt Code ohne Sandbox direkt auf dem Host in einem Node.js-Prozess aus. Er sollte nur für vertrauenswürdigen Code in der Entwicklung verwendet werden. Für Produktivbereitstellungen, die nicht vertrauenswürdigen Code verarbeiten, empfehlen wir nachdrücklich, `SERVERLESS_TYPE=LAMBDA` oder `SERVERLESS_TYPE=DISABLED` zu verwenden.
**Sicherheitshinweis:** Der lokale Treiber (`LOGIC_FUNCTION_TYPE=LOCAL` oder `CODE_INTERPRETER_TYPE=LOCAL`) führt Code ohne Sandbox direkt auf dem Host in einem Node.js-Prozess aus. Er sollte nur für vertrauenswürdigen Code in der Entwicklung verwendet werden. Für Produktionsbereitstellungen, die nicht vertrauenswürdigen Code verarbeiten, verwenden Sie `LOGIC_FUNCTION_TYPE=LAMBDA` oder `CODE_INTERPRETER_TYPE=E2B` (mit Sandbox-Isolierung), oder lassen Sie sie deaktiviert.
</Warning>
### Verfügbare Treiber
### Logikfunktionen - Verfügbare Treiber
| Treiber | Umgebungsvariable | Anwendungsfall | Sicherheitsstufe |
| ----------- | -------------------------- | -------------------------------------------------- | ---------------------------------- |
| Deaktiviert | `SERVERLESS_TYPE=DISABLED` | Logikfunktionen vollständig deaktivieren | N/A |
| Lokal | `SERVERLESS_TYPE=LOCAL` | Entwicklung und vertrauenswürdige Umgebungen | Niedrig (keine Sandbox) |
| Lambda | `SERVERLESS_TYPE=LAMBDA` | Produktivbetrieb mit nicht vertrauenswürdigem Code | Hoch (Isolation auf Hardwareebene) |
| Treiber | Umgebungsvariable | Anwendungsfall | Sicherheitsstufe |
| ----------- | ------------------------------ | -------------------------------------------------- | ---------------------------------- |
| Deaktiviert | `LOGIC_FUNCTION_TYPE=DISABLED` | Logikfunktionen vollständig deaktivieren | N/A |
| Lokal | `LOGIC_FUNCTION_TYPE=LOCAL` | Entwicklung und vertrauenswürdige Umgebungen | Niedrig (keine Sandbox) |
| Lambda | `LOGIC_FUNCTION_TYPE=LAMBDA` | Produktivbetrieb mit nicht vertrauenswürdigem Code | Hoch (Isolation auf Hardwareebene) |
### Empfohlene Konfiguration
### Logikfunktionen - Empfohlene Konfiguration
**Für die Entwicklung:**
```bash
SERVERLESS_TYPE=LOCAL # default
LOGIC_FUNCTION_TYPE=LOCAL # default when NODE_ENV=development
```
**Für den Produktivbetrieb (AWS):**
```bash
SERVERLESS_TYPE=LAMBDA
SERVERLESS_LAMBDA_REGION=us-east-1
SERVERLESS_LAMBDA_ROLE=arn:aws:iam::123456789:role/your-lambda-role
SERVERLESS_LAMBDA_ACCESS_KEY_ID=your-access-key
SERVERLESS_LAMBDA_SECRET_ACCESS_KEY=your-secret-key
LOGIC_FUNCTION_TYPE=LAMBDA
LOGIC_FUNCTION_LAMBDA_REGION=us-east-1
LOGIC_FUNCTION_LAMBDA_ROLE=arn:aws:iam::123456789:role/your-lambda-role
LOGIC_FUNCTION_LAMBDA_ACCESS_KEY_ID=your-access-key
LOGIC_FUNCTION_LAMBDA_SECRET_ACCESS_KEY=your-secret-key
```
**Zum Deaktivieren von Logikfunktionen:**
```bash
SERVERLESS_TYPE=DISABLED
LOGIC_FUNCTION_TYPE=DISABLED # default when NODE_ENV=production
```
### Code-Interpreter - Verfügbare Treiber
| Treiber | Umgebungsvariable | Anwendungsfall | Sicherheitsstufe |
| ----------- | -------------------------------- | ------------------------------------------ | ------------------------ |
| Deaktiviert | `CODE_INTERPRETER_TYPE=DISABLED` | KI-Codeausführung deaktivieren | N/A |
| Lokal | `CODE_INTERPRETER_TYPE=LOCAL` | Nur für die Entwicklung | Niedrig (keine Sandbox) |
| E2B | `CODE_INTERPRETER_TYPE=E_2_B` | Produktion mit Ausführung in einer Sandbox | Hoch (isolierte Sandbox) |
<Note>
Bei Verwendung von `SERVERLESS_TYPE=DISABLED` führt jeder Versuch, eine Logikfunktion auszuführen, zu einem Fehler. Dies ist nützlich, wenn Sie Twenty ohne Unterstützung für Logikfunktionen betreiben möchten.
Bei Verwendung von `LOGIC_FUNCTION_TYPE=DISABLED` oder `CODE_INTERPRETER_TYPE=DISABLED` führt jeder Ausführungsversuch zu einem Fehler. Dies ist nützlich, wenn Sie Twenty ohne diese Funktionen betreiben möchten.
</Note>
@@ -6,7 +6,7 @@ description: La guida per i collaboratori (o sviluppatori curiosi) che vogliono
## Prerequisiti
<Tabs>
<Tab title="Linux e MacOS">
<Tab title="Linux e macOS">
Prima di poter installare e usare Twenty, assicurati di installare quanto segue sul tuo computer:
* [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)
@@ -129,8 +129,8 @@ Dovresti eseguire tutti i comandi nei passaggi successivi dalla radice del proge
brew services list
```
L'installatore potrebbe non creare l'utente `postgres` di default quando si installa
tramite Homebrew su MacOS. Invece, crea un ruolo di PostgreSQL che corrisponde al tuo nome utente macOS
Il programma di installazione potrebbe non creare l'utente `postgres` per impostazione predefinita quando si installa
tramite Homebrew su macOS. Invece, crea un ruolo di PostgreSQL che corrisponde al tuo nome utente macOS
(es., "john").
Per controllare e creare l'utente `postgres` se necessario, segui questi passaggi:
```bash
@@ -174,7 +174,7 @@ Dovresti eseguire tutti i comandi nei passaggi successivi dalla radice del proge
Tutti i passaggi seguenti devono essere eseguiti nel terminale WSL (all'interno della tua macchina virtuale)
**Opzione 1:** Per predisporre PostgreSQL in locale:
Usa il seguente link per installare PostgreSQL nella tua macchina virtuale Linux: [Installazione di PostgreSQL](https://www.postgresql.org/download/linux/)
Usa il seguente link per installare PostgreSQL sulla tua macchina virtuale Linux: [Installazione di PostgreSQL](https://www.postgresql.org/download/linux/)
```bash
psql postgres -c "CREATE DATABASE \"default\";" -c "CREATE DATABASE test;"
```
@@ -189,11 +189,13 @@ Dovresti eseguire tutti i comandi nei passaggi successivi dalla radice del proge
</Tab>
</Tabs>
Puoi ora accedere al database su [localhost:5432](localhost:5432), con utente `postgres` e password `postgres`.
Ora puoi accedere al database all'indirizzo `localhost:5432`.
Se hai utilizzato l'opzione Docker sopra, le credenziali predefinite sono utente `postgres` e password `postgres`. Per le installazioni native di PostgreSQL, usa le credenziali e i ruoli configurati sulla tua macchina.
## Passaggio 4: Configura un database Redis (cache)
Twenty richiede una cache Redis per offrire le migliori prestazioni
Twenty richiede una cache Redis per offrire le migliori prestazioni.
<Tabs>
<Tab title="Linux">
@@ -211,7 +213,9 @@ Twenty richiede una cache Redis per offrire le migliori prestazioni
brew install redis
```
Avvia il tuo server Redis:
`brew services start redis`
```bash
brew services start redis
```
**Opzione 2:** Se hai Docker installato:
```bash
@@ -229,11 +233,11 @@ Twenty richiede una cache Redis per offrire le migliori prestazioni
</Tab>
</Tabs>
Se hai bisogno di una GUI client, ti consigliamo [Redis Insight](https://redis.io/insight/) (versione gratuita disponibile)
Se hai bisogno di una GUI client, ti consigliamo [Redis Insight](https://redis.io/insight/) (versione gratuita disponibile).
## Passaggio 5: Configura le variabili d'ambiente
Usa variabili d'ambiente o file `.env` per configurare il tuo progetto. Maggiori informazioni [qui](/l/it/developers/self-host/capabilities/setup)
Usa variabili d'ambiente o file `.env` per configurare il tuo progetto. Maggiori informazioni [qui](/l/it/developers/self-host/capabilities/setup).
Copia i file `.env.example` in `/front` e `/server`:
@@ -64,6 +64,12 @@ yarn twenty function:execute --preInstall
# Esegui la funzione post-installazione
yarn twenty function:execute --postInstall
# Compila l'app per la distribuzione
yarn twenty app:build
# Pubblica l'app su npm o su un server Twenty
yarn twenty app:publish
# Disinstalla l'applicazione dallo spazio di lavoro corrente
yarn twenty app:uninstall
@@ -1240,6 +1246,113 @@ Punti chiave:
Esplora un esempio minimale end-to-end che dimostra oggetti, funzioni logiche, componenti front-end e trigger multipli [qui](https://github.com/twentyhq/twenty/tree/main/packages/twenty-apps/hello-world):
## Compilazione della tua app
Una volta che hai sviluppato la tua app con `app:dev`, usa `app:build` per compilarla in un pacchetto distribuibile.
```bash filename="Terminal"
# Compila l'app (l'output va in .twenty/output/)
yarn twenty app:build
# Compila e crea un tarball (.tgz) per la distribuzione
yarn twenty app:build --tarball
```
Il processo di compilazione:
1. **Analizza e convalida il manifest** — legge tutte le entità `defineX()` dai tuoi file sorgente e convalida la struttura del manifest.
2. **Compila le funzioni di logica e i componenti front-end** — raggruppa i sorgenti TypeScript in file ESM `.mjs` usando esbuild.
3. **Genera i checksum** — calcola gli hash MD5 per ogni file compilato, memorizzati nel manifest come `builtHandlerChecksum` / `builtComponentChecksum`.
4. **Genera il client API tipizzato** — esegue l'analisi dello schema GraphQL e genera i client tipizzati `CoreApiClient` e `MetadataApiClient`.
5. **Esegue un controllo dei tipi di TypeScript** — esegue `tsc --noEmit` per intercettare gli errori di tipo prima della pubblicazione.
6. **Ricompila con il client generato** — esegue una seconda passata di compilazione in modo da includere i tipi del client generato.
7. **Crea facoltativamente un tarball** — se viene passato `--tarball`, esegue `npm pack` per creare un file `.tgz` pronto per la distribuzione.
L'output della build in `.twenty/output/` contiene:
```text
.twenty/output/
├── manifest.json # Manifest con checksum per tutti i file compilati
├── package.json # Copiato dalla radice dell'app
├── yarn.lock # Copiato dalla radice dell'app
├── src/
│ ├── logic-functions/ # File .mjs compilati delle funzioni logiche
│ └── front-components/ # File .mjs compilati dei componenti front-end
├── public/ # Asset statici (se presenti)
└── my-app-1.0.0.tgz # Solo con il flag --tarball
```
| Opzione | Descrizione |
| ----------- | ------------------------------------------------------------------- |
| `[appPath]` | Percorso della directory dell'app (predefinito: directory corrente) |
| `--tarball` | Imballa anche l'output in un tarball `.tgz` |
## Pubblicazione della tua app
Usa `app:publish` per distribuire la tua app — al registro npm oppure direttamente a un server Twenty.
### Pubblica su npm (predefinito)
```bash filename="Terminal"
# Pubblica su npm (richiede l'accesso a npm)
yarn twenty app:publish
# Pubblica con un dist-tag (ad es. beta, next)
yarn twenty app:publish --tag beta
```
Questo compila l'app ed esegue `npm publish` dalla directory `.twenty/output/`. Il pacchetto pubblicato può quindi essere installato dal marketplace di Twenty da qualsiasi area di lavoro.
### Pubblica su un server Twenty
```bash filename="Terminal"
# Pubblica direttamente su un server Twenty
yarn twenty app:publish --server https://app.twenty.com
```
Questo compila l'app con un tarball, lo carica sul server tramite la mutation GraphQL `uploadAppTarball` e avvia l'installazione in un unico passaggio. Questo è utile per distribuzioni private o per effettuare test su un server specifico.
| Opzione | Descrizione |
| ----------------- | -------------------------------------------------------------------------- |
| `[appPath]` | Percorso della directory dell'app (predefinito: directory corrente) |
| `--server <url>` | Pubblica su un server Twenty invece di npm |
| `--token <token>` | Token di autenticazione per il server di destinazione |
| `--tag <tag>` | dist-tag di npm (ad es. `beta`, `next`) — solo per la pubblicazione su npm |
## Registrazione dell'applicazione
Prima che un'app possa essere installata in un'area di lavoro, deve essere **registrata**. Una registrazione è un record di metadati che descrive l'origine dell'app e come autenticarla. Nella maggior parte dei casi questo è gestito automaticamente dalla CLI.
### Tipi di origine
Ogni registrazione ha un **tipo di origine** che determina come vengono risolti i file dell'app durante l'installazione:
| Tipo di origine | Come vengono risolti i file | Caso d'uso tipico |
| --------------- | ---------------------------------------------------------------------------------------------- | ------------------------------------- |
| `LOCAL` | I file sono sincronizzati in tempo reale dal watcher della CLI — l'installazione viene saltata | Sviluppo con `app:dev` |
| `NPM` | Recuperati dal registro npm tramite il campo `sourcePackage` | App pubblicate su npm |
| `TARBALL` | Estratti da un file `.tgz` caricato e archiviato sul server | App private pubblicate con `--server` |
### Come avviene la registrazione
* **`app:dev`** — crea automaticamente una registrazione `LOCAL` la prima volta che esegui la modalità di sviluppo su un'area di lavoro.
* **`app:publish --server`** — carica un tarball e crea (o aggiorna) una registrazione `TARBALL`, quindi installa l'app.
* **Marketplace npm** — le registrazioni `NPM` vengono create quando le app vengono sincronizzate dal registro npm nel catalogo del marketplace di Twenty.
* **GraphQL API** — puoi anche creare registrazioni in modo programmatico tramite la mutation `createApplicationRegistration`.
### Registrazione vs installazione
**Registrazione** e **installazione** sono concetti distinti:
* Una **registrazione** (`ApplicationRegistration`) è un record di metadati globale che descrive l'app: il suo nome, il tipo di origine, le credenziali OAuth e lo stato di pubblicazione nel marketplace. Esiste indipendentemente da qualsiasi area di lavoro.
* Un'**installazione** (`Application`) è un'istanza per area di lavoro. Quando un utente installa un'app, Twenty risolve il pacchetto dalla sorgente della registrazione, scrive i file compilati nell'archiviazione e sincronizza il manifest (creando oggetti, campi, funzioni logiche, ecc.) in quell'area di lavoro.
Una registrazione può essere installata in molte aree di lavoro. Ogni area di lavoro ottiene la propria copia dei file dell'app e del modello di dati.
### Credenziali OAuth
Ogni registrazione include credenziali OAuth (`oAuthClientId` e `oAuthClientSecret`) generate al momento della creazione. Queste vengono utilizzate dall'app per autenticare le richieste API per conto degli utenti. Il client secret viene restituito **una sola volta** alla creazione — conservalo in modo sicuro. Puoi ruotarlo in seguito tramite la mutation `rotateApplicationRegistrationClientSecret`.
## Configurazione manuale (senza lo scaffolder)
Sebbene consigliamo di utilizzare `create-twenty-app` per la migliore esperienza iniziale, puoi anche configurare un progetto manualmente. Non installare la CLI globalmente. Invece, aggiungi `twenty-sdk` come dipendenza locale e collega un unico script nel tuo package.json:
@@ -3,7 +3,7 @@ title: 1-Click con Docker Compose
---
<Warning>
I container Docker sono per hosting in produzione o auto-hosting, per il contributo consulta il [Setup Locale](/l/it/developers/contribute/capabilities/local-setup).
I container Docker sono destinati all'hosting in produzione o al self-hosting. Per contribuire, consulta [Configurazione locale](/l/it/developers/contribute/capabilities/local-setup).
</Warning>
## Panoramica
@@ -12,7 +12,7 @@ Questa guida fornisce istruzioni passo passo per installare e configurare l'appl
**Importante:** Modifica solo le impostazioni esplicitamente menzionate in questa guida. Modificare altre configurazioni potrebbe portare a problemi.
Consulta i documenti [Configurazione delle Variabili di Ambiente](/l/it/developers/self-host/capabilities/setup) per configurazioni avanzate. Tutte le variabili di ambiente devono essere dichiarate nel file docker-compose.yml a livello di server e/o di worker a seconda della variabile.
Consulta [Configurazione delle variabili di ambiente](/l/it/developers/self-host/capabilities/setup) per configurazioni avanzate. Tutte le variabili di ambiente devono essere dichiarate nel file `docker-compose.yml` a livello di server e/o di worker, a seconda della variabile.
## Requisiti di Sistema
@@ -296,46 +296,60 @@ yarn command:prod cron:workflow:automated-cron-trigger
**Modalità solo ambiente:** Se imposti `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false`, aggiungi queste variabili al tuo file `.env` invece.
</Warning>
## Funzioni logiche
## Funzioni logiche & interprete del codice
Twenty supporta le funzioni logiche per i workflow e la logica personalizzata. L'ambiente di esecuzione è configurato tramite la variabile di ambiente `SERVERLESS_TYPE`.
Twenty supporta le funzioni logiche per i workflow e l'interprete del codice per l'analisi dei dati con IA. Entrambi eseguono codice fornito dall'utente e richiedono una configurazione esplicita per motivi di sicurezza.
### Impostazioni di sicurezza predefinite
**In produzione (NODE_ENV=production):** Sia le funzioni logiche sia l'interprete del codice hanno come impostazione predefinita **Disabilitato**. È necessario abilitarli esplicitamente con `LOGIC_FUNCTION_TYPE` e `CODE_INTERPRETER_TYPE` se queste funzionalità sono necessarie.
**In sviluppo (NODE_ENV=development):** Entrambi sono impostati su **LOCAL** per comodità quando vengono eseguiti in locale.
<Warning>
**Avviso di sicurezza:** Il driver locale (`SERVERLESS_TYPE=LOCAL`) esegue il codice direttamente sull'host in un processo Node.js senza sandboxing. Dovrebbe essere utilizzato solo per codice attendibile in fase di sviluppo. Per le distribuzioni in produzione che gestiscono codice non attendibile, consigliamo vivamente di usare `SERVERLESS_TYPE=LAMBDA` o `SERVERLESS_TYPE=DISABLED`.
**Avviso di sicurezza:** Il driver locale (`LOGIC_FUNCTION_TYPE=LOCAL` o `CODE_INTERPRETER_TYPE=LOCAL`) esegue il codice direttamente sull'host in un processo Node.js senza sandboxing. Dovrebbe essere utilizzato solo per codice attendibile in fase di sviluppo. Per le distribuzioni in produzione che gestiscono codice non affidabile, usa `LOGIC_FUNCTION_TYPE=LAMBDA` o `CODE_INTERPRETER_TYPE=E2B` (con sandboxing), oppure lasciali disabilitati.
</Warning>
### Driver disponibili
### Funzioni logiche - Driver disponibili
| Driver | Variabile di ambiente | Caso d'uso | Livello di sicurezza |
| ------------ | -------------------------- | -------------------------------------------- | ------------------------------------ |
| Disabilitato | `SERVERLESS_TYPE=DISABLED` | Disabilita completamente le funzioni logiche | N/A |
| Locale | `SERVERLESS_TYPE=LOCAL` | Ambienti di sviluppo e attendibili | Basso (nessuna sandbox) |
| Lambda | `SERVERLESS_TYPE=LAMBDA` | Produzione con codice non attendibile | Alto (isolamento a livello hardware) |
| Driver | Variabile di ambiente | Caso d'uso | Livello di sicurezza |
| ------------ | ------------------------------ | -------------------------------------------- | ------------------------------------ |
| Disabilitato | `LOGIC_FUNCTION_TYPE=DISABLED` | Disabilita completamente le funzioni logiche | N/A |
| Locale | `LOGIC_FUNCTION_TYPE=LOCAL` | Ambienti di sviluppo e attendibili | Basso (nessuna sandbox) |
| Lambda | `LOGIC_FUNCTION_TYPE=LAMBDA` | Produzione con codice non attendibile | Alto (isolamento a livello hardware) |
### Configurazione consigliata
### Funzioni logiche - Configurazione consigliata
**Per lo sviluppo:**
```bash
SERVERLESS_TYPE=LOCAL # default
LOGIC_FUNCTION_TYPE=LOCAL # default when NODE_ENV=development
```
**Per la produzione (AWS):**
```bash
SERVERLESS_TYPE=LAMBDA
SERVERLESS_LAMBDA_REGION=us-east-1
SERVERLESS_LAMBDA_ROLE=arn:aws:iam::123456789:role/your-lambda-role
SERVERLESS_LAMBDA_ACCESS_KEY_ID=your-access-key
SERVERLESS_LAMBDA_SECRET_ACCESS_KEY=your-secret-key
LOGIC_FUNCTION_TYPE=LAMBDA
LOGIC_FUNCTION_LAMBDA_REGION=us-east-1
LOGIC_FUNCTION_LAMBDA_ROLE=arn:aws:iam::123456789:role/your-lambda-role
LOGIC_FUNCTION_LAMBDA_ACCESS_KEY_ID=your-access-key
LOGIC_FUNCTION_LAMBDA_SECRET_ACCESS_KEY=your-secret-key
```
**Per disabilitare le funzioni logiche:**
```bash
SERVERLESS_TYPE=DISABLED
LOGIC_FUNCTION_TYPE=DISABLED # default when NODE_ENV=production
```
### Interprete del codice - Driver disponibili
| Driver | Variabile di ambiente | Caso d'uso | Livello di sicurezza |
| ------------ | -------------------------------- | ------------------------------------- | ----------------------- |
| Disabilitato | `CODE_INTERPRETER_TYPE=DISABLED` | Disabilita l'esecuzione del codice IA | N/A |
| Locale | `CODE_INTERPRETER_TYPE=LOCAL` | Solo per lo sviluppo | Basso (nessuna sandbox) |
| E2B | `CODE_INTERPRETER_TYPE=E_2_B` | Produzione con esecuzione in sandbox | Alta (sandbox isolata) |
<Note>
Quando si utilizza `SERVERLESS_TYPE=DISABLED`, qualsiasi tentativo di eseguire una funzione logica restituirà un errore. Ciò è utile se si desidera eseguire Twenty senza il supporto per le funzioni logiche.
Quando si utilizza `LOGIC_FUNCTION_TYPE=DISABLED` o `CODE_INTERPRETER_TYPE=DISABLED`, qualsiasi tentativo di esecuzione restituirà un errore. Ciò è utile se si desidera eseguire Twenty senza queste funzionalità.
</Note>
@@ -6,7 +6,7 @@ description: O guia para contribuidores (ou desenvolvedores curiosos) que deseja
## Pré-requisitos
<Tabs>
<Tab title="Linux e MacOS">
<Tab title="Linux e macOS">
Antes de instalar e usar o Twenty, certifique-se de instalar o seguinte em seu computador:
* [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)
@@ -30,7 +30,7 @@ wsl --install
```
Você deve agora ver um aviso para reiniciar o computador. Caso contrário, reinicie-o manualmente.
Ao reiniciar, uma janela do powershell será aberta e instalará o Ubuntu. Isso pode levar algum tempo.
Ao reiniciar, uma janela do PowerShell será aberta e instalará o Ubuntu. Isso pode levar algum tempo.
Você verá uma solicitação para criar um nome de usuário e senha para sua instalação do Ubuntu.
2. Instalar e configurar o git
@@ -102,8 +102,8 @@ Você deve executar todos os comandos nas etapas seguintes a partir da raiz do p
<Tabs>
<Tab title="Linux">
**Opção 1 (preferencial):** Para prover seu banco de dados localmente:
Use o seguinte link para instalar o Postgresql na sua máquina Linux: [Instalação do Postgresql](https://www.postgresql.org/download/linux/)
**Opção 1 (preferencial):** Para provisionar seu banco de dados localmente:
Use o seguinte link para instalar o PostgreSQL na sua máquina Linux: [Instalação do PostgreSQL](https://www.postgresql.org/download/linux/)
```bash
psql postgres -c "CREATE DATABASE \"default\";" -c "CREATE DATABASE test;"
```
@@ -130,7 +130,7 @@ Você deve executar todos os comandos nas etapas seguintes a partir da raiz do p
```
O instalador pode não criar o usuário `postgres` por padrão ao instalar
via Homebrew no MacOS. Em vez disso, ele cria uma função PostgreSQL que corresponde ao seu nome de usuário do macOS
via Homebrew no macOS. Em vez disso, ele cria uma função PostgreSQL que corresponde ao seu nome de usuário do macOS
(por exemplo, "john").
Para verificar e criar o usuário `postgres`, se necessário, siga estas etapas:
```bash
@@ -173,8 +173,8 @@ Você deve executar todos os comandos nas etapas seguintes a partir da raiz do p
<Tab title="Windows (WSL)">
Todos os passos a seguir devem ser executados no terminal WSL (dentro da sua máquina virtual)
**Opção 1:** Para provisionar seu Postgresql localmente:
Use o seguinte link para instalar o Postgresql em sua máquina virtual Linux: [Instalação do Postgresql](https://www.postgresql.org/download/linux/)
**Opção 1:** Para provisionar seu PostgreSQL localmente:
Use o seguinte link para instalar o PostgreSQL na sua máquina virtual Linux: [Instalação do PostgreSQL](https://www.postgresql.org/download/linux/)
```bash
psql postgres -c "CREATE DATABASE \"default\";" -c "CREATE DATABASE test;"
```
@@ -189,11 +189,13 @@ Você deve executar todos os comandos nas etapas seguintes a partir da raiz do p
</Tab>
</Tabs>
Você pode agora acessar o banco de dados em [localhost:5432](localhost:5432), com o usuário `postgres` e senha `postgres`.
Agora você pode acessar o banco de dados em `localhost:5432`.
Se você usou a opção do Docker acima, as credenciais padrão são usuário `postgres` e senha `postgres`. Para instalações nativas do PostgreSQL, use as credenciais e os papéis configurados na sua máquina.
## Passo 4: Configurar um Banco de Dados Redis (cache)
O Twenty requer um cache redis para oferecer o melhor desempenho
O Twenty requer um cache Redis para oferecer o melhor desempenho.
<Tabs>
<Tab title="Linux">
@@ -210,8 +212,10 @@ O Twenty requer um cache redis para oferecer o melhor desempenho
```bash
brew install redis
```
Inicie seu servidor redis:
`brew services start redis`
Inicie o servidor Redis:
```bash
brew services start redis
```
**Opção 2:** Se você tem o docker instalado:
```bash
@@ -229,11 +233,11 @@ O Twenty requer um cache redis para oferecer o melhor desempenho
</Tab>
</Tabs>
Se precisar de uma GUI de Cliente, recomendamos o [redis insight](https://redis.io/insight/) (versão gratuita disponível)
Se você precisar de uma GUI de cliente, recomendamos o [Redis Insight](https://redis.io/insight/) (versão gratuita disponível).
## Passo 5: Configurar variáveis de ambiente
Use variáveis de ambiente ou arquivos `.env` para configurar seu projeto. Mais informações [aqui](/l/pt/developers/self-host/capabilities/setup)
Use variáveis de ambiente ou arquivos `.env` para configurar seu projeto. Mais informações [aqui](/l/pt/developers/self-host/capabilities/setup).
Copie os arquivos `.env.example` em `/front` e `/server`:
@@ -49,25 +49,31 @@ npx create-twenty-app@latest my-app --minimal
A partir daqui você pode:
```bash filename="Terminal"
# Add a new entity to your application (guided)
# Adicionar uma nova entidade à sua aplicação (assistido)
yarn twenty entity:add
# Watch your application's function logs
# Acompanhar os logs das funções da sua aplicação
yarn twenty function:logs
# Execute a function by name
# Executar uma função pelo nome
yarn twenty function:execute -n my-function -p '{"name": "test"}'
# Execute the pre-install function
# Executar a função de pré-instalação
yarn twenty function:execute --preInstall
# Execute the post-install function
# Executar a função de pós-instalação
yarn twenty function:execute --postInstall
# Uninstall the application from the current workspace
# Compilar a aplicação para distribuição
yarn twenty app:build
# Publicar a aplicação no npm ou em um servidor Twenty
yarn twenty app:publish
# Desinstalar a aplicação do espaço de trabalho atual
yarn twenty app:uninstall
# Display commands' help
# Exibir a ajuda dos comandos
yarn twenty help
```
@@ -1241,6 +1247,113 @@ Pontos-chave:
Explore um exemplo mínimo de ponta a ponta que demonstra objetos, funções de lógica, componentes de front-end e vários gatilhos [aqui](https://github.com/twentyhq/twenty/tree/main/packages/twenty-apps/hello-world):
## Compilando seu app
Depois de desenvolver seu app com `app:dev`, use `app:build` para compilá-lo em um pacote distribuível.
```bash filename="Terminal"
# Compilar o app (a saída vai para .twenty/output/)
yarn twenty app:build
# Compilar e criar um tarball (.tgz) para distribuição
yarn twenty app:build --tarball
```
O processo de build:
1. **Analisa e valida o manifesto** — lê todas as entidades `defineX()` dos seus arquivos de código-fonte e valida a estrutura do manifesto.
2. **Compila funções de lógica e componentes de front-end** — empacota o código-fonte TypeScript em arquivos ESM `.mjs` usando o esbuild.
3. **Gera checksums** — calcula hashes MD5 para cada arquivo gerado, armazenados no manifesto como `builtHandlerChecksum` / `builtComponentChecksum`.
4. **Gera o cliente de API tipado** — inspeciona o esquema GraphQL e gera clientes tipados `CoreApiClient` e `MetadataApiClient`.
5. **Executa uma verificação de tipos do TypeScript** — executa `tsc --noEmit` para detectar erros de tipo antes da publicação.
6. **Reconstrói com o cliente gerado** — realiza uma segunda passagem de compilação para que os tipos do cliente gerado sejam incluídos.
7. **Opcionalmente cria um tarball** — se `--tarball` for passado, executa `npm pack` para criar um arquivo `.tgz` pronto para distribuição.
A saída da compilação em `.twenty/output/` contém:
```text
.twenty/output/
├── manifest.json # Manifesto com somas de verificação para todos os arquivos compilados
├── package.json # Copiado da raiz do aplicativo
├── yarn.lock # Copiado da raiz do aplicativo
├── src/
│ ├── logic-functions/ # Arquivos .mjs compilados de funções de lógica
│ └── front-components/ # Arquivos .mjs compilados de componentes de front-end
├── public/ # Recursos estáticos (se houver)
└── my-app-1.0.0.tgz # Apenas com a opção --tarball
```
| Opção | Descrição |
| ----------- | --------------------------------------------------------- |
| `[appPath]` | Caminho para o diretório do app (padrão: diretório atual) |
| `--tarball` | Também empacota a saída em um tarball `.tgz` |
## Publicando seu app
Use `app:publish` para distribuir seu app — ou para o registro do npm ou diretamente para um servidor Twenty.
### Publicar no npm (padrão)
```bash filename="Terminal"
# Publish to npm (requires npm login)
yarn twenty app:publish
# Publish with a dist-tag (e.g. beta, next)
yarn twenty app:publish --tag beta
```
Isso compila o app e executa `npm publish` a partir do diretório `.twenty/output/`. O pacote publicado pode então ser instalado no marketplace da Twenty por qualquer espaço de trabalho.
### Publicar em um servidor Twenty
```bash filename="Terminal"
# Publish directly to a Twenty server
yarn twenty app:publish --server https://app.twenty.com
```
Isso compila o app com um tarball, faz o upload para o servidor via a mutação GraphQL `uploadAppTarball` e aciona a instalação em uma única etapa. Isso é útil para implantações privadas ou para testar em um servidor específico.
| Opção | Descrição |
| ----------------- | --------------------------------------------------------------------- |
| `[appPath]` | Caminho para o diretório do app (padrão: diretório atual) |
| `--server <url>` | Publicar em um servidor Twenty em vez de no npm |
| `--token <token>` | Token de autenticação para o servidor de destino |
| `--tag <tag>` | dist-tag do npm (ex.: `beta`, `next`) — apenas para publicação no npm |
## Registro de aplicação
Antes que um app possa ser instalado em um espaço de trabalho, ele precisa ser **registrado**. Um registro é um registro de metadados que descreve de onde o app vem e como autenticá-lo. Isso é tratado automaticamente pela CLI na maioria dos casos.
### Tipos de origem
Cada registro tem um **tipo de origem** que determina como os arquivos do app são resolvidos durante a instalação:
| Tipo de origem | Como os arquivos são resolvidos | Caso de uso típico |
| -------------- | ------------------------------------------------------------------------------------------- | --------------------------------------- |
| `LOCAL` | Os arquivos são sincronizados em tempo real pelo observador da CLI — a instalação é omitida | Desenvolvimento com `app:dev` |
| `NPM` | Obtidos do registro npm por meio do campo `sourcePackage` | Apps publicados no npm |
| `TARBALL` | Extraídos de um arquivo `.tgz` enviado e armazenado no servidor | Apps privados publicados com `--server` |
### Como o registro acontece
* **`app:dev`** — cria automaticamente um registro `LOCAL` na primeira vez que você executa o modo de desenvolvimento em um espaço de trabalho.
* **`app:publish --server`** — faz o upload de um tarball e cria (ou atualiza) um registro `TARBALL`, e em seguida instala o app.
* **marketplace do npm** — registros `NPM` são criados quando apps são sincronizados do registro npm para o catálogo do marketplace da Twenty.
* **API GraphQL** — você também pode criar registros programaticamente por meio da mutação `createApplicationRegistration`.
### Registro vs instalação
**Registro** e **instalação** são conceitos distintos:
* Um **registro** (`ApplicationRegistration`) é um registro global de metadados que descreve o app: seu nome, tipo de origem, credenciais OAuth e status de listagem no marketplace. Ele existe independentemente de qualquer espaço de trabalho.
* Uma **instalação** (`Application`) é uma instância por espaço de trabalho. Quando um usuário instala um app, a Twenty resolve o pacote a partir da origem do registro, grava os arquivos compilados no armazenamento e sincroniza o manifesto (criando objetos, campos, funções de lógica etc.). naquele espaço de trabalho.
Um registro pode ser instalado em muitos espaços de trabalho. Cada espaço de trabalho recebe sua própria cópia dos arquivos e do modelo de dados do app.
### Credenciais OAuth
Cada registro inclui credenciais OAuth (`oAuthClientId` e `oAuthClientSecret`) geradas no momento da criação. Elas são usadas pelo app para autenticar requisições de API em nome dos usuários. O segredo do cliente é retornado **uma única vez** na criação — armazene-o com segurança. Você pode rotacioná-lo posteriormente por meio da mutação `rotateApplicationRegistrationClientSecret`.
## Configuração manual (sem o gerador)
Embora recomendemos usar `create-twenty-app` para a melhor experiência inicial, você também pode configurar um projeto manualmente. Não instale a CLI globalmente. Em vez disso, adicione `twenty-sdk` como uma dependência local e configure um único script no seu package.json:
@@ -3,7 +3,7 @@ title: 1-Clique c/ Docker Compose
---
<Warning>
Contêineres Docker são para hospedagem de produção ou auto-hospedagem, para contribuições, por favor, verifique o [Setup Local](/l/pt/developers/contribute/capabilities/local-setup).
Os contêineres Docker são para hospedagem em produção ou auto-hospedagem. Para contribuir, consulte a [Configuração local](/l/pt/developers/contribute/capabilities/local-setup).
</Warning>
## Visão geral
@@ -12,7 +12,7 @@ Este guia fornece instruções passo a passo para instalar e configurar o aplica
**Importante:** Modifique apenas as configurações explicitamente mencionadas neste guia. Alterar outras configurações pode levar a problemas.
Veja a documentação [Configurar Variáveis de Ambiente](/l/pt/developers/self-host/capabilities/setup) para configuração avançada. Todas as variáveis de ambiente devem ser declaradas no arquivo docker-compose.yml no nível do servidor e/ou trabalhador, dependendo da variável.
Consulte [Configurar Variáveis de Ambiente](/l/pt/developers/self-host/capabilities/setup) para configuração avançada. Todas as variáveis de ambiente devem ser declaradas no arquivo `docker-compose.yml` no nível do servidor e/ou do trabalhador, dependendo da variável.
## Requisitos do Sistema
@@ -297,46 +297,60 @@ yarn command:prod cron:workflow:automated-cron-trigger
**Modo somente ambiente:** Se você definir `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false`, adicione estas variáveis ao seu arquivo `.env`.
</Warning>
## Funções lógicas
## Funções lógicas e interpretador de código
O Twenty oferece suporte a funções lógicas para fluxos de trabalho e lógica personalizada. O ambiente de execução é configurado por meio da variável de ambiente `SERVERLESS_TYPE`.
O Twenty oferece suporte a funções lógicas para fluxos de trabalho e ao interpretador de código para análise de dados com IA. Ambos executam código fornecido pelo usuário e exigem configuração explícita por motivos de segurança.
### Padrões de segurança
**Em produção (NODE_ENV=production):** Tanto as funções lógicas quanto o interpretador de código têm como padrão **Desativado**. Você deve habilitá-los explicitamente com `LOGIC_FUNCTION_TYPE` e `CODE_INTERPRETER_TYPE` se precisar desses recursos.
**Em desenvolvimento (NODE_ENV=development):** Ambos têm como padrão **LOCAL** por conveniência ao executar localmente.
<Warning>
**Aviso de segurança:** O driver local (`SERVERLESS_TYPE=LOCAL`) executa código diretamente no host em um processo Node.js sem sandbox. Deve ser usado apenas para código confiável em desenvolvimento. Para implantações de produção que lidam com código não confiável, recomendamos fortemente usar `SERVERLESS_TYPE=LAMBDA` ou `SERVERLESS_TYPE=DISABLED`.
**Aviso de segurança:** O driver local (`LOGIC_FUNCTION_TYPE=LOCAL` ou `CODE_INTERPRETER_TYPE=LOCAL`) executa código diretamente no host em um processo Node.js sem sandbox. Deve ser usado apenas para código confiável em desenvolvimento. Para implantações de produção que lidam com código não confiável, use `LOGIC_FUNCTION_TYPE=LAMBDA` ou `CODE_INTERPRETER_TYPE=E2B` (com sandbox), ou mantenha-os desativados.
</Warning>
### Drivers disponíveis
### Funções lógicas - Drivers disponíveis
| Driver | Variável de ambiente | Caso de uso | Nível de segurança |
| ---------- | -------------------------- | ------------------------------------------ | -------------------------------------- |
| Desativado | `SERVERLESS_TYPE=DISABLED` | Desativar completamente as funções lógicas | N/A |
| Local | `SERVERLESS_TYPE=LOCAL` | Desenvolvimento e ambientes confiáveis | Baixo (sem sandbox) |
| Lambda | `SERVERLESS_TYPE=LAMBDA` | Produção com código não confiável | Alto (isolamento em nível de hardware) |
| Driver | Variável de ambiente | Caso de uso | Nível de segurança |
| ---------- | ------------------------------ | ------------------------------------------ | -------------------------------------- |
| Desativado | `LOGIC_FUNCTION_TYPE=DISABLED` | Desativar completamente as funções lógicas | N/A |
| Local | `LOGIC_FUNCTION_TYPE=LOCAL` | Desenvolvimento e ambientes confiáveis | Baixo (sem sandbox) |
| Lambda | `LOGIC_FUNCTION_TYPE=LAMBDA` | Produção com código não confiável | Alto (isolamento em nível de hardware) |
### Configuração recomendada
### Funções lógicas - Configuração recomendada
**Para desenvolvimento:**
```bash
SERVERLESS_TYPE=LOCAL # default
LOGIC_FUNCTION_TYPE=LOCAL # default when NODE_ENV=development
```
**Para produção (AWS):**
```bash
SERVERLESS_TYPE=LAMBDA
SERVERLESS_LAMBDA_REGION=us-east-1
SERVERLESS_LAMBDA_ROLE=arn:aws:iam::123456789:role/your-lambda-role
SERVERLESS_LAMBDA_ACCESS_KEY_ID=your-access-key
SERVERLESS_LAMBDA_SECRET_ACCESS_KEY=your-secret-key
LOGIC_FUNCTION_TYPE=LAMBDA
LOGIC_FUNCTION_LAMBDA_REGION=us-east-1
LOGIC_FUNCTION_LAMBDA_ROLE=arn:aws:iam::123456789:role/your-lambda-role
LOGIC_FUNCTION_LAMBDA_ACCESS_KEY_ID=your-access-key
LOGIC_FUNCTION_LAMBDA_SECRET_ACCESS_KEY=your-secret-key
```
**Para desativar as funções lógicas:**
```bash
SERVERLESS_TYPE=DISABLED
LOGIC_FUNCTION_TYPE=DISABLED # default when NODE_ENV=production
```
### Interpretador de código - Drivers disponíveis
| Driver | Variável de ambiente | Caso de uso | Nível de segurança |
| ---------- | -------------------------------- | ------------------------------------ | ---------------------- |
| Desativado | `CODE_INTERPRETER_TYPE=DISABLED` | Desativar a execução de código de IA | N/A |
| Local | `CODE_INTERPRETER_TYPE=LOCAL` | Apenas para desenvolvimento | Baixo (sem sandbox) |
| E2B | `CODE_INTERPRETER_TYPE=E_2_B` | Produção com execução em sandbox | Alto (sandbox isolado) |
<Note>
Ao usar `SERVERLESS_TYPE=DISABLED`, qualquer tentativa de executar uma função lógica retornará um erro. Isso é útil se você quiser executar o Twenty sem recursos de funções lógicas.
Ao usar `LOGIC_FUNCTION_TYPE=DISABLED` ou `CODE_INTERPRETER_TYPE=DISABLED`, qualquer tentativa de execução retornará um erro. Isso é útil se você quiser executar o Twenty sem esses recursos.
</Note>
@@ -6,7 +6,7 @@ description: Ghidul pentru contribuitori (sau dezvoltatori curioși) care doresc
## Cerințe
<Tabs>
<Tab title="Linux și MacOS">
<Tab title="Linux și macOS">
Înainte de a instala și utiliza Twenty, asigurați-vă că instalați următoarele pe computerul dvs.:
* [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)
@@ -129,8 +129,8 @@ Trebuie să rulați toate comenzile în pașii următori de la rădăcina proiec
brew services list
```
Instalatorul s-ar putea să nu creeze implicit utilizatorul `postgres` atunci când instalați
prin Homebrew pe MacOS. În schimb, creează un rol PostgreSQL care se potrivește cu numele de utilizator al
Instalatorul s-ar putea să nu creeze implicit utilizatorul `postgres` la instalarea
prin Homebrew pe macOS. În schimb, creează un rol PostgreSQL care se potrivește cu numele de utilizator al
macOS-ului dvs. (de ex., "john").
Pentru a verifica și crea utilizatorul `postgres` dacă este necesar, urmați acești pași:
```bash
@@ -189,11 +189,13 @@ Trebuie să rulați toate comenzile în pașii următori de la rădăcina proiec
</Tab>
</Tabs>
Acum puteți accesa baza de date la [localhost:5432](localhost:5432), cu utilizator `postgres` și parolă `postgres`.
Acum puteți accesa baza de date la `localhost:5432`.
Dacă ați folosit opțiunea Docker de mai sus, datele implicite de autentificare sunt utilizatorul `postgres` și parola `postgres`. Pentru instalările native PostgreSQL, folosiți datele de autentificare și rolurile configurate pe mașina dvs.
## Pasul 4: Configurați o bază de date Redis (cache)
Twenty necesită un cache Redis pentru a oferi cea mai bună performanță
Twenty necesită un cache Redis pentru a oferi cea mai bună performanță.
<Tabs>
<Tab title="Linux">
@@ -211,7 +213,9 @@ Twenty necesită un cache Redis pentru a oferi cea mai bună performanță
brew install redis
```
Porniți serverul Redis:
`brew services start redis`
```bash
brew services start redis
```
**Opțiunea 2:** Dacă aveți docker instalat:
```bash
@@ -229,11 +233,11 @@ Twenty necesită un cache Redis pentru a oferi cea mai bună performanță
</Tab>
</Tabs>
Dacă aveți nevoie de o interfață grafică pentru client, vă recomandăm [Redis Insight](https://redis.io/insight/) (versiune gratuită disponibilă)
Dacă aveți nevoie de o interfață grafică pentru client, vă recomandăm [Redis Insight](https://redis.io/insight/) (versiune gratuită disponibilă).
## Pasul 5: Configurați variabilele de mediu
Utilizați variabile de mediu sau fișiere `.env` pentru a configura proiectul dvs. Mai multe informații [aici](/l/ro/developers/self-host/capabilities/setup)
Utilizați variabile de mediu sau fișiere `.env` pentru a configura proiectul dvs. Mai multe informații [aici](/l/ro/developers/self-host/capabilities/setup).
Copiați fișierele `.env.example` din `/front` și `/server`:
@@ -49,26 +49,32 @@ npx create-twenty-app@latest my-app --minimal
De aici puteți:
```bash filename="Terminal"
# Adaugă o entitate nouă în aplicația ta (ghidat)
# Add a new entity to your application (guided)
yarn twenty entity:add
# Urmărește jurnalele funcțiilor aplicației tale
# Watch your application's function logs
yarn twenty function:logs
# Execută o funcție după nume
# Execute a function by name
yarn twenty function:execute -n my-function -p '{"name": "test"}'
# Execută funcția de pre-instalare
# Execute the pre-install function
yarn twenty function:execute --preInstall
# Execută funcția post-instalare
# Execute the post-install function
yarn twenty function:execute --postInstall
# Dezinstalează aplicația din spațiul de lucru curent
# Build the app for distribution
yarn twenty app:build
# Publish the app to npm or a Twenty server
yarn twenty app:publish
# Uninstall the application from the current workspace
yarn twenty app:uninstall
# Afișează ajutorul pentru comenzi
yarn twenty help},{
# Display commands' help
yarn twenty help
```
Consultați și: paginile de referință CLI pentru [create-twenty-app](https://www.npmjs.com/package/create-twenty-app) și [twenty-sdk CLI](https://www.npmjs.com/package/twenty-sdk).
@@ -1240,6 +1246,113 @@ Puncte cheie:
Explorați un exemplu minim, cap la cap, care demonstrează obiecte, funcții de logică, componente Front și declanșatoare multiple [aici](https://github.com/twentyhq/twenty/tree/main/packages/twenty-apps/hello-world):
## Building your app
Once you've developed your app with `app:dev`, use `app:build` to compile it into a distributable package.
```bash filename="Terminal"
# Build the app (output goes to .twenty/output/)
yarn twenty app:build
# Build and create a tarball (.tgz) for distribution
yarn twenty app:build --tarball
```
The build process:
1. **Parses and validates the manifest** — reads all `defineX()` entities from your source files and validates the manifest structure.
2. **Compiles logic functions and front components** — bundles TypeScript sources into ESM `.mjs` files using esbuild.
3. **Generates checksums** — computes MD5 hashes for each built file, stored in the manifest as `builtHandlerChecksum` / `builtComponentChecksum`.
4. **Generează clientul API tipizat** — examinează schema GraphQL și generează clienți tipizați `CoreApiClient` și `MetadataApiClient`.
5. **Rulează o verificare a tipurilor TypeScript** — rulează `tsc --noEmit` pentru a detecta erorile de tip înainte de publicare.
6. **Reconstruiește cu clientul generat** — efectuează o a doua trecere de compilare astfel încât tipurile clientului generat să fie incluse.
7. **Creează opțional un tarball** — dacă se trece `--tarball`, rulează `npm pack` pentru a crea un fișier `.tgz` gata pentru distribuire.
Rezultatul build-ului din `.twenty/output/` conține:
```text
.twenty/output/
├── manifest.json # Manifest cu sume de control pentru toate fișierele generate
├── package.json # Copiat din rădăcina aplicației
├── yarn.lock # Copiat din rădăcina aplicației
├── src/
│ ├── logic-functions/ # Fișiere .mjs de funcții de logică compilate
│ └── front-components/ # Fișiere .mjs de componente front-end compilate
├── public/ # Resurse statice (dacă există)
└── my-app-1.0.0.tgz # Doar cu opțiunea --tarball
```
| Opțiune | Descriere |
| ----------- | -------------------------------------------------------------- |
| `[appPath]` | Calea către directorul aplicației (implicit directorul curent) |
| `--tarball` | De asemenea, împachetează rezultatul într-un tarball `.tgz` |
## Publicarea aplicației
Folosește `app:publish` pentru a distribui aplicația — fie în registrul npm, fie direct pe un server Twenty.
### Publicare pe npm (implicit)
```bash filename="Terminal"
# Publicare pe npm (necesită autentificare npm)
yarn twenty app:publish
# Publicare cu un dist-tag (de ex. beta, next)
yarn twenty app:publish --tag beta
```
Aceasta construiește aplicația și rulează `npm publish` din directorul `.twenty/output/`. Pachetul publicat poate fi apoi instalat din marketplace-ul Twenty de către orice spațiu de lucru.
### Publicare pe un server Twenty
```bash filename="Terminal"
# Publicare direct pe un server Twenty
yarn twenty app:publish --server https://app.twenty.com
```
Aceasta construiește aplicația cu un tarball, o încarcă pe server prin mutația GraphQL `uploadAppTarball` și declanșează instalarea într-un singur pas. Acest lucru este util pentru implementări private sau pentru testare pe un server specific.
| Opțiune | Descriere |
| ----------------- | -------------------------------------------------------------------- |
| `[appPath]` | Calea către directorul aplicației (implicit directorul curent) |
| `--server <url>` | Publică pe un server Twenty în loc de npm |
| `--token <token>` | Jeton de autentificare pentru serverul țintă |
| `--tag <tag>` | npm dist-tag (de ex. `beta`, `next`) — doar pentru publicarea pe npm |
## Înregistrarea aplicației
Înainte ca o aplicație să poată fi instalată într-un spațiu de lucru, aceasta trebuie să fie **înregistrată**. O înregistrare este o înregistrare de metadate care descrie de unde provine aplicația și cum se autentifică. Acest lucru este gestionat automat de CLI în cele mai multe cazuri.
### Tipuri de sursă
Fiecare înregistrare are un **tip de sursă** care determină modul în care fișierele aplicației sunt preluate în timpul instalării:
| Tip de sursă | Cum sunt preluate fișierele | Caz de utilizare tipic |
| ------------ | ---------------------------------------------------------------------------------------- | ----------------------------------------- |
| `LOCAL` | Fișierele sunt sincronizate în timp real de către watcher-ul CLI — instalarea este omisă | Dezvoltare cu `app:dev` |
| `NPM` | Obținute din registrul npm prin câmpul `sourcePackage` | Aplicații publicate pe npm |
| `TARBALL` | Extrase dintr-un fișier `.tgz` încărcat, stocat pe server | Aplicații private publicate cu `--server` |
### Cum are loc înregistrarea
* **`app:dev`** — creează automat o înregistrare `LOCAL` prima dată când rulezi modul de dezvoltare pentru un spațiu de lucru.
* **`app:publish --server`** — încarcă un tarball și creează (sau actualizează) o înregistrare `TARBALL`, apoi instalează aplicația.
* **marketplace-ul npm** — înregistrările `NPM` sunt create când aplicațiile sunt sincronizate din registrul npm în catalogul marketplace-ului Twenty.
* **API GraphQL** — poți de asemenea să creezi înregistrări programatic prin mutația `createApplicationRegistration`.
### Înregistrare vs instalare
**Înregistrarea** și **instalarea** sunt concepte separate:
* O **înregistrare** (`ApplicationRegistration`) este o înregistrare globală de metadate care descrie aplicația: numele ei, tipul de sursă, acreditările OAuth și statutul listării în marketplace. Există independent de orice spațiu de lucru.
* O **instalare** (`Application`) este o instanță per spațiu de lucru. Când un utilizator instalează o aplicație, Twenty rezolvă pachetul din sursa înregistrării, scrie fișierele compilate în stocare și sincronizează manifestul (creând obiecte, câmpuri, funcții de logică etc.) în acel spațiu de lucru.
O singură înregistrare poate fi instalată în multe spații de lucru. Fiecare spațiu de lucru primește propria copie a fișierelor și a modelului de date al aplicației.
### Acreditări OAuth
Fiecare înregistrare include acreditări OAuth (`oAuthClientId` și `oAuthClientSecret`) generate la momentul creării. Acestea sunt folosite de aplicație pentru a autentifica cererile API în numele utilizatorilor. Secretul clientului este returnat **o singură dată** la creare — păstrează-l în siguranță. Îl poți roti ulterior prin mutația `rotateApplicationRegistrationClientSecret`.
## Configurare manuală (fără generator)
Deși recomandăm utilizarea `create-twenty-app` pentru cea mai bună experiență de început, puteți configura și un proiect manual. Nu instalați CLI-ul global. În schimb, adăugați `twenty-sdk` ca dependență locală și conectați un singur script în package.json-ul dvs.:
@@ -3,7 +3,7 @@ title: 1-Click cu Docker Compose
---
<Warning>
Containerele Docker sunt pentru găzduire în producție sau auto-găzduire; pentru a contribui, consultați [Configurare locală](/l/ro/developers/contribute/capabilities/local-setup).
Containerele Docker sunt destinate găzduirii în producție sau auto-găzduirii. Pentru a contribui, consultați [Configurarea locală](/l/ro/developers/contribute/capabilities/local-setup).
</Warning>
## Prezentare generală
@@ -12,7 +12,7 @@ Acest ghid oferă instrucțiuni pas cu pas pentru a instala și configura aplica
**Important:** Modificați numai setările menționate explicit în acest ghid. Modificarea altor configurații poate duce la probleme.
Consultați documentația [Setup Environment Variables](/l/ro/developers/self-host/capabilities/setup) pentru configurare avansată. Toate variabilele de mediu trebuie declarate în fișierul docker-compose.yml la nivel de server și/sau de lucru, în funcție de variabilă.
Consultați [Setup Environment Variables](/l/ro/developers/self-host/capabilities/setup) pentru configurare avansată. Toate variabilele de mediu trebuie declarate în fișierul `docker-compose.yml` la nivel de server și/sau de lucru, în funcție de variabilă.
## Cerințe de Sistem
@@ -297,46 +297,60 @@ yarn command:prod cron:workflow:automated-cron-trigger
**Mod doar pentru mediu:** Dacă setați `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false`, adăugați aceste variabile în fișierul dvs. `.env` în schimb.
</Warning>
## Funcții logice
## Funcții logice și interpretor de cod
Twenty acceptă funcții logice pentru fluxuri de lucru și logică personalizată. Mediul de execuție este configurat prin variabila de mediu `SERVERLESS_TYPE`.
Twenty acceptă funcții logice pentru fluxuri de lucru și interpretorul de cod pentru analiza datelor cu AI. Ambele rulează cod furnizat de utilizator și necesită o configurare explicită din motive de securitate.
### Valori implicite de securitate
**În producție (NODE_ENV=production):** Atât funcțiile logice, cât și interpretorul de cod au implicit valoarea **Dezactivat**. Trebuie să le activezi explicit cu `LOGIC_FUNCTION_TYPE` și `CODE_INTERPRETER_TYPE` dacă ai nevoie de aceste funcționalități.
**În dezvoltare (NODE_ENV=development):** Ambele au implicit valoarea **LOCAL** pentru comoditate când rulezi local.
<Warning>
**Atenționare de securitate:** Driverul local (`SERVERLESS_TYPE=LOCAL`) rulează codul direct pe gazdă într-un proces Node.js, fără sandboxing. Ar trebui utilizat doar pentru cod de încredere, în dezvoltare. Pentru implementări de producție care gestionează cod neverificat, recomandăm cu tărie utilizarea `SERVERLESS_TYPE=LAMBDA` sau `SERVERLESS_TYPE=DISABLED`.
**Atenționare de securitate:** Driverul local (`LOGIC_FUNCTION_TYPE=LOCAL` sau `CODE_INTERPRETER_TYPE=LOCAL`) rulează codul direct pe gazdă într-un proces Node.js, fără sandboxing. Ar trebui utilizat doar pentru cod de încredere, în dezvoltare. Pentru implementări în producție care gestionează cod neverificat, folosiți `LOGIC_FUNCTION_TYPE=LAMBDA` sau `CODE_INTERPRETER_TYPE=E2B` (cu sandboxing) ori păstrați-le dezactivate.
</Warning>
### Drivere disponibile
### Funcții logice - Drivere disponibile
| Driver | Variabilă de mediu | Caz de utilizare | Nivel de securitate |
| ---------- | -------------------------- | ------------------------------------- | -------------------------------------- |
| Dezactivat | `SERVERLESS_TYPE=DISABLED` | Dezactivează complet funcțiile logice | N/A |
| Local | `SERVERLESS_TYPE=LOCAL` | Dezvoltare și medii de încredere | Scăzut (fără sandboxing) |
| Lambda | `SERVERLESS_TYPE=LAMBDA` | Producție cu cod neverificat | Ridicat (izolare la nivel de hardware) |
| Driver | Variabilă de mediu | Caz de utilizare | Nivel de securitate |
| ---------- | ------------------------------ | ------------------------------------- | -------------------------------------- |
| Dezactivat | `LOGIC_FUNCTION_TYPE=DISABLED` | Dezactivează complet funcțiile logice | N/A |
| Local | `LOGIC_FUNCTION_TYPE=LOCAL` | Dezvoltare și medii de încredere | Scăzut (fără sandboxing) |
| Lambda | `LOGIC_FUNCTION_TYPE=LAMBDA` | Producție cu cod neverificat | Ridicat (izolare la nivel de hardware) |
### Configurație recomandată
### Funcții logice - Configurare recomandată
**Pentru dezvoltare:**
```bash
SERVERLESS_TYPE=LOCAL # default
LOGIC_FUNCTION_TYPE=LOCAL # default when NODE_ENV=development
```
**Pentru producție (AWS):**
```bash
SERVERLESS_TYPE=LAMBDA
SERVERLESS_LAMBDA_REGION=us-east-1
SERVERLESS_LAMBDA_ROLE=arn:aws:iam::123456789:role/your-lambda-role
SERVERLESS_LAMBDA_ACCESS_KEY_ID=your-access-key
SERVERLESS_LAMBDA_SECRET_ACCESS_KEY=your-secret-key
LOGIC_FUNCTION_TYPE=LAMBDA
LOGIC_FUNCTION_LAMBDA_REGION=us-east-1
LOGIC_FUNCTION_LAMBDA_ROLE=arn:aws:iam::123456789:role/your-lambda-role
LOGIC_FUNCTION_LAMBDA_ACCESS_KEY_ID=your-access-key
LOGIC_FUNCTION_LAMBDA_SECRET_ACCESS_KEY=your-secret-key
```
**Pentru a dezactiva funcțiile logice:**
```bash
SERVERLESS_TYPE=DISABLED
LOGIC_FUNCTION_TYPE=DISABLED # default when NODE_ENV=production
```
### Interpretor de cod - Drivere disponibile
| Driver | Variabilă de mediu | Caz de utilizare | Nivel de securitate |
| ---------- | -------------------------------- | ---------------------------------------- | ------------------------ |
| Dezactivat | `CODE_INTERPRETER_TYPE=DISABLED` | Dezactivați execuția codului de către AI | N/A |
| Local | `CODE_INTERPRETER_TYPE=LOCAL` | Doar pentru dezvoltare | Scăzut (fără sandboxing) |
| E2B | `CODE_INTERPRETER_TYPE=E_2_B` | Producție cu execuție în sandbox | Ridicat (sandbox izolat) |
<Note>
Când se utilizează `SERVERLESS_TYPE=DISABLED`, orice încercare de a executa o funcție logică va returna o eroare. Acest lucru este util dacă doriți să rulați Twenty fără capabilități de funcții logice.
Când utilizați `LOGIC_FUNCTION_TYPE=DISABLED` sau `CODE_INTERPRETER_TYPE=DISABLED`, orice încercare de execuție va returna o eroare. Acest lucru este util dacă doriți să rulați Twenty fără aceste capabilități.
</Note>
@@ -8,7 +8,7 @@ title: Руководство по стилю
Для этого лучше быть немного более многословными, чем слишком краткими.
Всегда держите в голове, что код читают чаще, чем пишут, особенно в проекте с открытым исходным кодом, где к нему может присоединиться кто угодно.
Всегда помните, что код читают чаще, чем пишут, особенно в проекте с открытым исходным кодом, в который может внести вклад кто угодно.
Существует много правил, которые здесь не описаны, но автоматически проверяются линтерами.
@@ -150,7 +150,7 @@ type MyType = {
### Используйте строковые литералы вместо перечислений.
[Строковые литералы](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#literal-types) - это основной способ обработки значений, напоминающих перечисление, в TypeScript. Они легче расширяются с помощью Pick и Omit и обеспечивают лучшее взаимодействие с разработчиком, особенно с автозаполнением кода.
[Строковые литералы](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#literal-types) - это основной способ обработки значений, напоминающих перечисление, в TypeScript. Их проще расширять с помощью Pick и Omit, и они обеспечивают более удобную работу разработчика, особенно благодаря автодополнению кода.
Вы можете увидеть, почему TypeScript рекомендует избегать перечислений [здесь](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#enums).
@@ -6,7 +6,7 @@ description: Руководство для участников (или любо
## Требования
<Tabs>
<Tab title="Linux и MacOS">
<Tab title="Linux и macOS">
Прежде чем установить и использовать Twenty, убедитесь, что у вас установлено следующее:
* [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)
@@ -30,7 +30,7 @@ wsl --install
```
Теперь должно появиться приглашение на перезагрузку компьютера. Если нет, перезагрузите его вручную.
После перезагрузки откроется окно PowerShell и установит Ubuntu. Это может занять некоторое время.
После перезагрузки откроется окно PowerShell и начнётся установка Ubuntu. Это может занять некоторое время.
Появится запрос на создание имени пользователя и пароля для вашей установки Ubuntu.
2. Установите и настройте git
@@ -102,8 +102,8 @@ cd twenty
<Tabs>
<Tab title="Linux">
**Опция 1 (предпочтительно):** Чтобы настроить вашу базу данных локально:
Используйте следующую ссылку для установки Postgresql на вашу Linux машину: [Установка Postgresql](https://www.postgresql.org/download/linux/)
**Опция 1 (предпочтительно):** Чтобы настроить базу данных локально:
Используйте следующую ссылку для установки PostgreSQL на компьютер с Linux: [Установка PostgreSQL](https://www.postgresql.org/download/linux/)
```bash
psql postgres -c "CREATE DATABASE \"default\";" -c "CREATE DATABASE test;"
```
@@ -130,7 +130,7 @@ cd twenty
```
Установщик может не создать пользователя `postgres` по умолчанию при установке
через Homebrew на MacOS. Вместо этого он создает роль PostgreSQL, которая совпадает с вашим именем пользователя в MacOS
через Homebrew на macOS. Вместо этого он создает роль PostgreSQL, которая совпадает с вашим именем пользователя в MacOS
например, "john".
Чтобы проверить и создать пользователя `postgres`, при необходимости выполните следующие шаги:
```bash
@@ -173,8 +173,8 @@ cd twenty
<Tab title="Windows (WSL)">
Все последующие шаги следует выполнять в терминале WSL (внутри вашей виртуальной машины)
**Опция 1:** Чтобы настроить вашу базу данных Postgresql локально:
Используйте следующую ссылку для установки Postgresql на вашу Linux виртуальную машину: [Установка Postgresql](https://www.postgresql.org/download/linux/)
**Опция 1:** Чтобы настроить PostgreSQL локально:
Используйте следующую ссылку для установки PostgreSQL на виртуальную машину с Linux: [Установка PostgreSQL](https://www.postgresql.org/download/linux/)
```bash
psql postgres -c "CREATE DATABASE \"default\";" -c "CREATE DATABASE test;"
```
@@ -189,11 +189,13 @@ cd twenty
</Tab>
</Tabs>
Теперь вы можете получить доступ к базе данных по адресу [localhost:5432](localhost:5432), с пользователем `postgres` и паролем `postgres`.
Теперь вы можете получить доступ к базе данных по адресу `localhost:5432`.
Если вы использовали вариант с Docker выше, учетные данные по умолчанию: пользователь `postgres` и пароль `postgres`. Для нативных установок PostgreSQL используйте учетные данные и роли, настроенные на вашей машине.
## Шаг 4: Настройка базы данных Redis (кэш)
Twenty требует кэша Redis для обеспечения наилучшей производительности
Twenty требует кэша Redis для обеспечения наилучшей производительности.
<Tabs>
<Tab title="Linux">
@@ -210,8 +212,10 @@ Twenty требует кэша Redis для обеспечения наилуч
```bash
brew install redis
```
Запустите сервер redis:
`brew services start redis`
Запустите сервер Redis:
```bash
brew services start redis
```
**Опция 2:** Если у вас установлен docker:
```bash
@@ -229,11 +233,11 @@ Twenty требует кэша Redis для обеспечения наилуч
</Tab>
</Tabs>
Если вам нужен графический интерфейс клиента, мы рекомендуем [redis insight](https://redis.io/insight/) (доступна бесплатная версия)
Если вам нужен графический интерфейс клиента, мы рекомендуем [Redis Insight](https://redis.io/insight/) (доступна бесплатная версия).
## Шаг 5: Настройка переменных окружения
Используйте переменные окружения или файлы `.env` для настройки вашего проекта. Подробнее [здесь](/l/ru/developers/self-host/capabilities/setup)
Используйте переменные окружения или файлы `.env` для настройки вашего проекта. Подробнее [здесь](/l/ru/developers/self-host/capabilities/setup).
Скопируйте `.env.example` файлы в `/front` и `/server`:
@@ -64,6 +64,12 @@ yarn twenty function:execute --preInstall
# Выполнить послеустановочную функцию
yarn twenty function:execute --postInstall
# Собрать приложение для распространения
yarn twenty app:build
# Опубликовать приложение в npm или на сервер Twenty
yarn twenty app:publish
# Удалить приложение из текущего рабочего пространства
yarn twenty app:uninstall
@@ -1240,6 +1246,113 @@ uploadFile(
Ознакомьтесь с минимальным сквозным примером, демонстрирующим объекты, логические функции, фронт-компоненты и несколько триггеров, [здесь](https://github.com/twentyhq/twenty/tree/main/packages/twenty-apps/hello-world):
## Сборка вашего приложения
После того как вы разработали приложение с помощью `app:dev`, используйте `app:build`, чтобы скомпилировать его в распространяемый пакет.
```bash filename="Terminal"
# Собрать приложение (результат сохраняется в .twenty/output/)
yarn twenty app:build
# Собрать и создать tarball (.tgz) для распространения
yarn twenty app:build --tarball
```
Процесс сборки:
1. **Разбирает и проверяет манифест** — читает все сущности `defineX()` из ваших исходных файлов и проверяет структуру манифеста.
2. **Компилирует логические функции и фронтенд-компоненты** — упаковывает исходники TypeScript в ESM-файлы `.mjs` с помощью esbuild.
3. **Генерирует контрольные суммы** — вычисляет хэши MD5 для каждого собранного файла, сохраняемые в манифесте как `builtHandlerChecksum` / `builtComponentChecksum`.
4. **Генерирует типизированный клиент API** — проводит интроспекцию схемы GraphQL и генерирует типизированные клиенты `CoreApiClient` и `MetadataApiClient`.
5. **Запускает проверку типов TypeScript** — выполняет `tsc --noEmit`, чтобы обнаружить ошибки типов перед публикацией.
6. **Пересобирает со сгенерированным клиентом** — выполняет второй проход компиляции, чтобы включить сгенерированные типы клиента.
7. **Опционально создаёт tar-архив** — если передан `--tarball`, выполняет `npm pack` для создания файла `.tgz`, готового к распространению.
Результат сборки в `.twenty/output/` содержит:
```text
.twenty/output/
├── manifest.json # Manifest with checksums for all built files
├── package.json # Copied from app root
├── yarn.lock # Copied from app root
├── src/
│ ├── logic-functions/ # Compiled .mjs logic function files
│ └── front-components/ # Compiled .mjs front component files
├── public/ # Static assets (if any)
└── my-app-1.0.0.tgz # Only with --tarball flag
```
| Вариант | Описание |
| ----------- | ----------------------------------------------------------- |
| `[appPath]` | Путь к каталогу приложения (по умолчанию — текущий каталог) |
| `--tarball` | Также упаковать результат в tar-архив `.tgz` |
## Публикация вашего приложения
Используйте `app:publish` для распространения вашего приложения — либо в реестр npm, либо напрямую на сервер Twenty.
### Публикация в npm (по умолчанию)
```bash filename="Terminal"
# Publish to npm (requires npm login)
yarn twenty app:publish
# Publish with a dist-tag (e.g. beta, next)
yarn twenty app:publish --tag beta
```
Это собирает приложение и выполняет `npm publish` из каталога `.twenty/output/`. Опубликованный пакет затем может быть установлен из маркетплейса Twenty любым рабочим пространством.
### Публикация на сервер Twenty
```bash filename="Terminal"
# Publish directly to a Twenty server
yarn twenty app:publish --server https://app.twenty.com
```
Это собирает приложение с tar-архивом, загружает его на сервер через мутацию GraphQL `uploadAppTarball` и запускает установку в один шаг. Это полезно для приватных развёртываний или тестирования на конкретном сервере.
| Вариант | Описание |
| ----------------- | --------------------------------------------------------------------- |
| `[appPath]` | Путь к каталогу приложения (по умолчанию — текущий каталог) |
| `--server <url>` | Публиковать на сервер Twenty вместо npm |
| `--token <token>` | Токен аутентификации для целевого сервера |
| `--tag <tag>` | dist-тег npm (например, `beta`, `next`) — только для публикации в npm |
## Регистрация приложения
Прежде чем приложение можно будет установить в рабочем пространстве, его необходимо **зарегистрировать**. Регистрация — это запись метаданных, описывающая, откуда берётся приложение и как его аутентифицировать. В большинстве случаев это делает CLI автоматически.
### Типы источников
У каждой регистрации есть **тип источника**, который определяет, как файлы приложения будут получены при установке:
| Тип источника | Как получаются файлы | Типичный сценарий использования |
| ------------- | ----------------------------------------------------------------------------------- | ------------------------------------------------- |
| `LOCAL` | Файлы синхронизируются в реальном времени наблюдателем CLI — установка пропускается | Разработка с `app:dev` |
| `NPM` | Получается из реестра npm через поле `sourcePackage` | Опубликованные приложения в npm |
| `TARBALL` | Извлекается из загруженного файла `.tgz`, хранящегося на сервере | Приватные приложения, опубликованные с `--server` |
### Как происходит регистрация
* **`app:dev`** — автоматически создаёт регистрацию `LOCAL` при первом запуске режима разработки для рабочего пространства.
* **`app:publish --server`** — загружает tar-архив и создаёт (или обновляет) регистрацию `TARBALL`, затем устанавливает приложение.
* **маркетплейс npm** — регистрации `NPM` создаются, когда приложения синхронизируются из реестра npm в каталог маркетплейса Twenty.
* **GraphQL API** — вы также можете создавать регистрации программно через мутацию `createApplicationRegistration`.
### Регистрация и установка
**Регистрация** и **установка** — это разные понятия:
* **Регистрация** (`ApplicationRegistration`) — это глобальная запись метаданных, описывающая приложение: его имя, тип источника, учётные данные OAuth и статус публикации в маркетплейсе. Она существует независимо от какого-либо рабочего пространства.
* **Установка** (`Application`) — это экземпляр для каждого рабочего пространства. Когда пользователь устанавливает приложение, Twenty получает пакет из источника, указанного в регистрации, записывает собранные файлы в хранилище и синхронизирует манифест (создавая объекты, поля, логические функции и т. д.) в этом рабочем пространстве.
Одну и ту же регистрацию можно установить во многих рабочих пространствах. Каждое рабочее пространство получает свою собственную копию файлов приложения и модели данных.
### Учётные данные OAuth
Каждая регистрация включает учётные данные OAuth (`oAuthClientId` и `oAuthClientSecret`), сгенерированные при создании. Они используются приложением для аутентификации запросов к API от имени пользователей. Секрет клиента возвращается **один раз** при создании — храните его в надёжном месте. Позже вы можете сменить его через мутацию `rotateApplicationRegistrationClientSecret`.
## Ручная настройка (без генератора)
Хотя мы рекомендуем использовать `create-twenty-app` для наилучшего старта, вы также можете настроить проект вручную. Не устанавливайте CLI глобально. Вместо этого добавьте `twenty-sdk` как локальную зависимость и настройте один скрипт в вашем package.json:
@@ -3,7 +3,7 @@ title: В один клик с Docker Compose
---
<Warning>
Контейнеры Docker предназначены для продакшен-размещения или самостоятельного хостинга; для участия в разработке ознакомьтесь с разделом [Локальная установка](/l/ru/developers/contribute/capabilities/local-setup).
Контейнеры Docker предназначены для продакшен-хостинга или саморазмещения. Для участия в разработке см. [Локальная настройка](/l/ru/developers/contribute/capabilities/local-setup).
</Warning>
## Обзор
@@ -12,7 +12,7 @@ title: В один клик с Docker Compose
**Важно:** изменяйте только те настройки, которые явно упоминаются в этом руководстве. Изменение других конфигураций может привести к проблемам.
См. документацию [Настройка переменных окружения](/l/ru/developers/self-host/capabilities/setup) для расширенной конфигурации. Все переменные окружения должны быть задекларированы в файле docker-compose.yml на уровне сервера и / или рабочего потока в зависимости от переменной.
См. [Настройка переменных окружения](/l/ru/developers/self-host/capabilities/setup) для расширенной конфигурации. Все переменные окружения должны быть задекларированы в файле `docker-compose.yml` на уровне сервера и/или воркера, в зависимости от переменной.
## Системные требования
@@ -296,46 +296,60 @@ yarn command:prod cron:workflow:automated-cron-trigger
**Режим только для среды:** если вы установили `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false`, добавьте эти переменные в свой `.env` файл вместо этого.
</Warning>
## Логические функции
## Логические функции и интерпретатор кода
Twenty поддерживает логические функции для рабочих процессов и пользовательской логики. Среда выполнения настраивается через переменную окружения `SERVERLESS_TYPE`.
Twenty поддерживает логические функции для рабочих процессов и интерпретатор кода для анализа данных ИИ. Оба запускают предоставленный пользователем код и требуют явной настройки в целях безопасности.
### Настройки безопасности по умолчанию
**В продакшене (NODE_ENV=production):** логические функции и интерпретатор кода по умолчанию — **Отключено**. Если вам нужны эти функции, вы должны явно включить их с помощью `LOGIC_FUNCTION_TYPE` и `CODE_INTERPRETER_TYPE`.
**В разработке (NODE_ENV=development):** оба по умолчанию — **LOCAL** для удобства при локальном запуске.
<Warning>
**Уведомление о безопасности:** локальный драйвер (`SERVERLESS_TYPE=LOCAL`) выполняет код напрямую на хосте в процессе Node.js без изоляции. Его следует использовать только для доверенного кода в разработке. Для промышленных развертываний, обрабатывающих недоверенный код, настоятельно рекомендуем использовать `SERVERLESS_TYPE=LAMBDA` или `SERVERLESS_TYPE=DISABLED`.
**Уведомление о безопасности:** локальный драйвер (`LOGIC_FUNCTION_TYPE=LOCAL` или `CODE_INTERPRETER_TYPE=LOCAL`) выполняет код напрямую на хосте в процессе Node.js без изоляции. Его следует использовать только для доверенного кода в разработке. Для рабочих развёртываний, обрабатывающих недоверенный код, используйте `LOGIC_FUNCTION_TYPE=LAMBDA` или `CODE_INTERPRETER_TYPE=E2B` (с песочницей) либо оставьте их отключёнными.
</Warning>
### Доступные драйверы
### Логические функции — доступные драйверы
| Драйвер | Переменная окружения | Сценарий использования | Уровень безопасности |
| --------- | -------------------------- | -------------------------------------- | ----------------------------------------- |
| Отключено | `SERVERLESS_TYPE=DISABLED` | Полностью отключить логические функции | Н/Д |
| Локальный | `SERVERLESS_TYPE=LOCAL` | Разработка и доверенные среды | Низкий (без изоляции) |
| Lambda | `SERVERLESS_TYPE=LAMBDA` | Продакшн с недоверенным кодом | Высокий (изоляция на уровне оборудования) |
| Драйвер | Переменная окружения | Сценарий использования | Уровень безопасности |
| --------- | ------------------------------ | -------------------------------------- | ----------------------------------------- |
| Отключено | `LOGIC_FUNCTION_TYPE=DISABLED` | Полностью отключить логические функции | Н/Д |
| Локальный | `LOGIC_FUNCTION_TYPE=LOCAL` | Разработка и доверенные среды | Низкий (без изоляции) |
| Lambda | `LOGIC_FUNCTION_TYPE=LAMBDA` | Продакшн с недоверенным кодом | Высокий (изоляция на уровне оборудования) |
### Рекомендуемая конфигурация
### Логические функции — рекомендуемая конфигурация
**Для разработки:**
```bash
SERVERLESS_TYPE=LOCAL # default
LOGIC_FUNCTION_TYPE=LOCAL # default when NODE_ENV=development
```
**Для продакшна (AWS):**
```bash
SERVERLESS_TYPE=LAMBDA
SERVERLESS_LAMBDA_REGION=us-east-1
SERVERLESS_LAMBDA_ROLE=arn:aws:iam::123456789:role/your-lambda-role
SERVERLESS_LAMBDA_ACCESS_KEY_ID=your-access-key
SERVERLESS_LAMBDA_SECRET_ACCESS_KEY=your-secret-key
LOGIC_FUNCTION_TYPE=LAMBDA
LOGIC_FUNCTION_LAMBDA_REGION=us-east-1
LOGIC_FUNCTION_LAMBDA_ROLE=arn:aws:iam::123456789:role/your-lambda-role
LOGIC_FUNCTION_LAMBDA_ACCESS_KEY_ID=your-access-key
LOGIC_FUNCTION_LAMBDA_SECRET_ACCESS_KEY=your-secret-key
```
**Чтобы отключить логические функции:**
```bash
SERVERLESS_TYPE=DISABLED
LOGIC_FUNCTION_TYPE=DISABLED # default when NODE_ENV=production
```
### Интерпретатор кода — доступные драйверы
| Драйвер | Переменная окружения | Сценарий использования | Уровень безопасности |
| --------- | -------------------------------- | ----------------------------------------------------- | --------------------------------- |
| Отключено | `CODE_INTERPRETER_TYPE=DISABLED` | Отключить выполнение кода ИИ | Н/Д |
| Локальный | `CODE_INTERPRETER_TYPE=LOCAL` | Только для разработки | Низкий (без изоляции) |
| E2B | `CODE_INTERPRETER_TYPE=E_2_B` | Рабочая среда с изолированным исполнением в песочнице | Высокий (изолированная песочница) |
<Note>
При использовании `SERVERLESS_TYPE=DISABLED` любая попытка выполнить логическую функцию вернет ошибку. Это полезно, если вы хотите запускать Twenty без возможностей логических функций.
При использовании `LOGIC_FUNCTION_TYPE=DISABLED` или `CODE_INTERPRETER_TYPE=DISABLED` любая попытка выполнения вернёт ошибку. Это полезно, если вы хотите запускать Twenty без этих возможностей.
</Note>
@@ -149,7 +149,7 @@ type MyType = {
### enum'lar yerine string literal'leri kullanın
[String literalleri](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#literal-types), TypeScript'te enum benzeri değerleri yönetmek için en iyi yöntemdir. Pick ve Omit ile genişletilmesi daha kolay olur ve özellikle kod tamamlama ile daha iyi bir geliştirici deneyimi sunarlar.
[String literalleri](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#literal-types), TypeScript'te enum benzeri değerleri yönetmek için en iyi yöntemdir. Pick ve Omit ile genişletilmeleri daha kolaydır ve özellikle kod tamamlama ile daha iyi bir geliştirici deneyimi sunarlar.
TypeScript, enum'ların neden kaçınılması gereken bir seçenek olduğunu [burada](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#enums) açıklamaktadır.
@@ -6,7 +6,7 @@ description: Twenty'i yerel olarak çalıştırmak isteyen katkıda bulunanlar (
## Ön Gereksinimler
<Tabs>
<Tab title="Linux ve MacOS">
<Tab title="Linux ve macOS">
Twenty'i yüklemeden ve kullanmadan önce bilgisayarınıza aşağıdakileri yüklediğinizden emin olun:
* [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)
@@ -30,7 +30,7 @@ wsl --install
```
Şimdi bilgisayarınızı yeniden başlatmanız gerektiğine dair bir uyarı göreceksiniz. Eğer görmüyorsanız, manuel olarak yeniden başlatın.
Yeniden başladıktan sonra bir powershell penceresi açılacak ve Ubuntu yüklenecek. Bu biraz zaman alabilir.
Yeniden başlatıldığında bir PowerShell penceresi açılacak ve Ubuntu yüklenecek. Bu biraz zaman alabilir.
Ubuntu kurulumunuz için bir kullanıcı adı ve şifre oluşturmanız gerektiğine dair bir uyarı göreceksiniz.
2. git'i Yükleyin ve Yapılandırın
@@ -102,8 +102,8 @@ Sonraki adımlardaki tüm komutları projenin kök dizininden çalıştırmalıs
<Tabs>
<Tab title="Linux">
**Seçenek 1 (tercih edilen):** Veritabanınızı yerel olarak kurmak için:
Linux makinenize Postgresql yüklemek için şu bağlantıyı kullanın: [Postgresql Kurulumu](https://www.postgresql.org/download/linux/)
**Seçenek 1 (tercih edilen):** Veritabanınızı yerel olarak hazırlamak için:
Linux makinenize PostgreSQL yüklemek için aşağıdaki bağlantıyı kullanın: [PostgreSQL Kurulumu](https://www.postgresql.org/download/linux/)
```bash
psql postgres -c "CREATE DATABASE \"default\";" -c "CREATE DATABASE test;"
```
@@ -129,7 +129,8 @@ Sonraki adımlardaki tüm komutları projenin kök dizininden çalıştırmalıs
brew services list
```
Yükleyici, MacOS'ta Homebrew ile yüklenirken varsayılan olarak `postgres` kullanıcısını oluşturmayabilir. Bunun yerine, macOS kullanıcı adınıza (ör. "john") uygun bir PostgreSQL rolü oluşturur.
Yükleyici, macOS'ta Homebrew aracılığıyla yüklenirken
varsayılan olarak `postgres` kullanıcısını oluşturmayabilir. Bunun yerine, macOS kullanıcı adınıza (ör. "john") uygun bir PostgreSQL rolü oluşturur.
Gerekiyorsa `postgres` kullanıcısını kontrol etmek ve oluşturtmak için şu adımları izleyin:
```bash
# PostgreSQL'e Bağlan
@@ -171,8 +172,8 @@ Sonraki adımlardaki tüm komutları projenin kök dizininden çalıştırmalıs
<Tab title="Windows (WSL)">
Aşağıdaki tüm adımlar WSL terminalinde (sanallaştırma makineniz içinde) çalıştırılmalıdır.
**Seçenek 1:** Postgresql'i yerel olarak sağlamak için:
Linux sanal makinenize Postgresql yüklemek için şu bağlantıyı kullanın: [Postgresql Kurulumu](https://www.postgresql.org/download/linux/)
**Seçenek 1:** PostgreSQL'i yerel olarak hazırlamak için:
Linux sanal makinenize PostgreSQL yüklemek için aşağıdaki bağlantıyı kullanın: [PostgreSQL Kurulumu](https://www.postgresql.org/download/linux/)
```bash
psql postgres -c "CREATE DATABASE \"default\";" -c "CREATE DATABASE test;"
```
@@ -187,11 +188,13 @@ Sonraki adımlardaki tüm komutları projenin kök dizininden çalıştırmalıs
</Tab>
</Tabs>
Veritabanına [localhost:5432](localhost:5432) adresinden, kullanıcı `postgres` ve şifre `postgres` ile şimdi erişebilirsiniz.
Artık veritabanına `localhost:5432` üzerinden erişebilirsiniz.
Yukarıdaki Docker seçeneğini kullandıysanız, varsayılan kimlik bilgileri kullanıcı adı `postgres` ve parola `postgres` şeklindedir. Yerel PostgreSQL kurulumları için, makinenizde yapılandırılmış kimlik bilgilerini ve rolleri kullanın.
## Adım 4: Redis Veritabanı (önbellek) Kurun
Twenty, en iyi performansı sağlamak için bir redis önbelleğe ihtiyaç duyar
Twenty, en iyi performansı sağlamak için bir Redis önbelleği gerektirir.
<Tabs>
<Tab title="Linux">
@@ -209,7 +212,9 @@ Twenty, en iyi performansı sağlamak için bir redis önbelleğe ihtiyaç duyar
brew install redis
```
Redis sunucunuzu başlatın:
`brew services start redis`
```bash
brew services start redis
```
**Seçenek 2:** Eğer docker yüklüyse:
```bash
@@ -227,11 +232,11 @@ Twenty, en iyi performansı sağlamak için bir redis önbelleğe ihtiyaç duyar
</Tab>
</Tabs>
Bir İstemci GUI'ye ihtiyacınız varsa, [redis insight](https://redis.io/insight/) (ücretsiz sürüm mevcut) öneriyoruz.
Bir istemci GUI'ye ihtiyacınız varsa, [Redis Insight](https://redis.io/insight/) (ücretsiz sürüm mevcut) öneriyoruz.
## Adım 5: Çevresel değişkenleri ayarlayın
## Adım 5: Ortam değişkenlerini ayarlayın
Projenizi yapılandırmak için çevresel değişkenler veya `.env` dosyaları kullanın. Daha fazla bilgi [burada](/l/tr/developers/self-host/capabilities/setup)
Projenizi yapılandırmak için çevresel değişkenler veya `.env` dosyaları kullanın. Daha fazla bilgi [burada](/l/tr/developers/self-host/capabilities/setup).
`.env.example` dosyalarını `/front` ve `/server` içine kopyalayın:
@@ -64,6 +64,12 @@ yarn twenty function:execute --preInstall
# Execute the post-install function
yarn twenty function:execute --postInstall
# Build the app for distribution
yarn twenty app:build
# Publish the app to npm or a Twenty server
yarn twenty app:publish
# Uninstall the application from the current workspace
yarn twenty app:uninstall
@@ -1240,6 +1246,113 @@ uploadFile(
Nesneleri, mantık fonksiyonlarını, ön uç bileşenlerini ve birden çok tetikleyiciyi gösteren minimal, uçtan uca bir örneği [buradan](https://github.com/twentyhq/twenty/tree/main/packages/twenty-apps/hello-world) inceleyin:
## Uygulamanızı derleme
Uygulamanızı `app:dev` ile geliştirdikten sonra, `app:build` kullanarak onu dağıtılabilir bir pakete derleyin.
```bash filename="Terminal"
# Build the app (output goes to .twenty/output/)
yarn twenty app:build
# Build and create a tarball (.tgz) for distribution
yarn twenty app:build --tarball
```
Derleme süreci:
1. **Manifesti ayrıştırır ve doğrular** — kaynak dosyalarınızdaki tüm `defineX()` varlıklarını okur ve manifest yapısını doğrular.
2. **Mantık işlevlerini ve ön bileşenleri derler** — TypeScript kaynaklarını esbuild kullanarak ESM `.mjs` dosyalarına paketler.
3. **Sağlama toplamları üretir** — her bir oluşturulan dosya için MD5 karmalarını hesaplar ve manifestte `builtHandlerChecksum` / `builtComponentChecksum` olarak saklar.
4. **Tipli API istemcisini oluşturur** — GraphQL şemasını inceleyip tipli `CoreApiClient` ve `MetadataApiClient` istemcilerini üretir.
5. **TypeScript tip denetimi çalıştırır** — yayımlamadan önce tip hatalarını yakalamak için `tsc --noEmit` çalıştırır.
6. **Oluşturulan istemciyle yeniden derler** — oluşturulan istemci tiplerinin dahil edilmesi için ikinci bir derleme geçişi yapar.
7. **İsteğe bağlı olarak bir tarball oluşturur** — `--tarball` iletilirse, dağıtıma hazır bir `.tgz` dosyası oluşturmak için `npm pack` çalıştırır.
`.twenty/output/` içindeki derleme çıktısı şunları içerir:
```text
.twenty/output/
├── manifest.json # Manifest with checksums for all built files
├── package.json # Copied from app root
├── yarn.lock # Copied from app root
├── src/
│ ├── logic-functions/ # Compiled .mjs logic function files
│ └── front-components/ # Compiled .mjs front component files
├── public/ # Static assets (if any)
└── my-app-1.0.0.tgz # Only with --tarball flag
```
| Seçenek | Açıklama |
| ----------- | --------------------------------------------------------- |
| `[appPath]` | Uygulama dizininin yolu (varsayılan olarak geçerli dizin) |
| `--tarball` | Çıktıyı ayrıca bir `.tgz` tarball olarak paketler |
## Uygulamanızı yayımlama
Uygulamanızı dağıtmak için `app:publish` komutunu kullanın — npm kayıt defterine ya da doğrudan bir Twenty sunucusuna yayımlayın.
### npm'ye yayımlama (varsayılan)
```bash filename="Terminal"
# Publish to npm (requires npm login)
yarn twenty app:publish
# Publish with a dist-tag (e.g. beta, next)
yarn twenty app:publish --tag beta
```
Bu, uygulamayı derler ve `.twenty/output/` dizininden `npm publish` çalıştırır. Yayımlanan paket daha sonra Twenty pazar yerinden herhangi bir çalışma alanı tarafından kurulabilir.
### Bir Twenty sunucusuna yayımlama
```bash filename="Terminal"
# Publish directly to a Twenty server
yarn twenty app:publish --server https://app.twenty.com
```
Bu, uygulamayı bir tarball ile derler, `uploadAppTarball` GraphQL mutasyonu aracılığıyla sunucuya yükler ve tek adımda kurulumu tetikler. Bu, özel dağıtımlar veya belirli bir sunucuya karşı test yapmak için kullanışlıdır.
| Seçenek | Açıklama |
| ----------------- | ---------------------------------------------------------------- |
| `[appPath]` | Uygulama dizininin yolu (varsayılan olarak geçerli dizin) |
| `--server <url>` | npm yerine bir Twenty sunucusuna yayımlar |
| `--token <token>` | Hedef sunucu için kimlik doğrulama belirteci |
| `--tag <tag>` | npm dist-tag (örn. `beta`, `next`) — yalnızca npm yayımlama için |
## Uygulama kaydı
Bir uygulama bir çalışma alanına kurulmadan önce kaydedilmelidir. Kayıt, uygulamanın nereden geldiğini ve nasıl kimlik doğrulanacağını açıklayan bir meta veri kaydıdır. Bu, çoğu durumda CLI tarafından otomatik olarak gerçekleştirilir.
### Kaynak türleri
Her kaydın, kurulum sırasında uygulamanın dosyalarının nasıl çözümleneceğini belirleyen bir kaynak türü vardır:
| Kaynak türü | Dosyaların nasıl çözümlendiği | Tipik kullanım durumu |
| ----------- | ----------------------------------------------------------------------------------- | ------------------------------------------ |
| `LOCAL` | Dosyalar, CLI izleyici tarafından gerçek zamanlı olarak eşitlenir — kurulum atlanır | `app:dev` ile geliştirme |
| `NPM` | `sourcePackage` alanı aracılığıyla npm kayıt defterinden alınır | npm'de yayımlanan uygulamalar |
| `TARBALL` | Sunucuda depolanan, yüklenmiş bir `.tgz` dosyasından çıkarılır | `--server` ile yayımlanan özel uygulamalar |
### Kayıt nasıl gerçekleşir
* **`app:dev`** — bir çalışma alanına karşı geliştirme modunu ilk kez çalıştırdığınızda otomatik olarak bir `LOCAL` kaydı oluşturur.
* **`app:publish --server`** — bir tarball yükler ve bir `TARBALL` kaydı oluşturur (veya günceller), ardından uygulamayı kurar.
* **npm pazar yeri** — uygulamalar npm kayıt defterinden Twenty pazar yeri kataloğuna eşitlendiğinde `NPM` kayıtları oluşturulur.
* **GraphQL API** — `createApplicationRegistration` mutasyonu aracılığıyla programatik olarak da kayıtlar oluşturabilirsiniz.
### Kayıt ve kurulum
**Kayıt** ve **kurulum** ayrı kavramlardır:
* Bir kayıt (`ApplicationRegistration`), uygulamayı tanımlayan genel bir meta veri kaydıdır: adı, kaynak türü, OAuth kimlik bilgileri ve pazar yeri listeleme durumu. Herhangi bir çalışma alanından bağımsız olarak var olur.
* Bir kurulum (`Application`), çalışma alanı başına bir örnektir. Bir kullanıcı bir uygulamayı kurduğunda, Twenty paketi kaydın kaynağından çözümler, derlenen dosyaları depolamaya yazar ve manifesti (nesneler, alanlar, mantık işlevleri vb. oluşturarak) eşitler o çalışma alanında.
Bir kayıt birçok çalışma alanına kurulabilir. Her çalışma alanı, uygulamanın dosyalarının ve veri modelinin kendi kopyasını alır.
### OAuth kimlik bilgileri
Her kayıt, oluşturma sırasında üretilen OAuth kimlik bilgilerini (`oAuthClientId` ve `oAuthClientSecret`) içerir. Bunlar, kullanıcılar adına API isteklerini kimlik doğrulamak için uygulama tarafından kullanılır. İstemci gizli anahtarı oluşturma sırasında yalnızca bir kez sağlanır — onu güvenli bir şekilde saklayın. Bunu daha sonra `rotateApplicationRegistrationClientSecret` mutasyonu aracılığıyla yenileyebilirsiniz.
## Manuel kurulum (scaffolder olmadan)
En iyi başlangıç deneyimi için `create-twenty-app` kullanmanızı önersek de, bir projeyi manuel olarak da kurabilirsiniz. CLI'yi global olarak kurmayın. Bunun yerine `twenty-sdk`'yi yerel bir bağımlılık olarak ekleyin ve package.json içinde tek bir betik tanımlayın:
@@ -3,7 +3,7 @@ title: 1-Tıklama ile Docker Compose
---
<Warning>
Docker konteynerleri, üretim ortamında veya kendi sunucunuzda barındırma içindir; katkıda bulunmak için [Yerel Kurulum](/l/tr/developers/contribute/capabilities/local-setup) sayfasına bakın.
Docker kapsayıcıları, üretim ortamında barındırma veya kendi kendine barındırma içindir. Katkıda bulunmak için lütfen [Yerel Kurulum](/l/tr/developers/contribute/capabilities/local-setup) bölümüne bakın.
</Warning>
## Genel Bakış
@@ -12,7 +12,7 @@ Bu kılavuz, Docker Compose kullanarak Twenty uygulamasını kurmak ve yapıland
**Önemli:** Yalnızca bu kılavuzda açıkça belirtilen ayarları değiştirin. Diğer yapılandırmaları değiştirmek sorunlara yol açabilir.
İleri düzey yapılandırma için belgelerdeki [Ortam Değişkenlerini Ayarlama](/l/tr/developers/self-host/capabilities/setup) bölümüne bakın. Tüm ortam değişkenleri, sunucu ve / veya işçi düzeyine bağlı olarak docker-compose.yml dosyasında ilan edilmelidir.
İleri düzey yapılandırma için [Ortam Değişkenlerini Ayarlama](/l/tr/developers/self-host/capabilities/setup) bölümüne bakın. Tüm ortam değişkenleri, değişkene bağlı olarak sunucu ve/veya işçi düzeyinde `docker-compose.yml` dosyasında tanımlanmalıdır.
## Sistem Gereksinimleri
@@ -297,46 +297,60 @@ yarn command:prod cron:workflow:automated-cron-trigger
**Çevre-yalnızca modu:** `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false` ayarlarsanız, bu değişkenleri `.env` dosyanıza ekleyin.
</Warning>
## Mantıksal işlevler
## Mantıksal İşlevler ve Kod Yorumlayıcısı
Twenty, iş akışları ve özel mantık için mantıksal işlevleri destekler. Yürütme ortamı, `SERVERLESS_TYPE` ortam değişkeni aracılığıyla yapılandırılır.
Twenty, iş akışları için mantıksal işlevleri ve yapay zekâ veri analizi için kod yorumlayıcısını destekler. Her ikisi de kullanıcı tarafından sağlanan kodu çalıştırır ve güvenlik için açık bir yapılandırma gerektirir.
### Güvenlik Varsayılanları
**Üretimde (NODE_ENV=production):** Hem mantıksal işlevler hem de kod yorumlayıcı varsayılan olarak **Devre Dışı**dır. Bu özelliklere ihtiyacınız varsa, onları `LOGIC_FUNCTION_TYPE` ve `CODE_INTERPRETER_TYPE` ile açıkça etkinleştirmeniz gerekir.
**Geliştirmede (NODE_ENV=development):** Yerel olarak çalıştırırken kolaylık olması için her ikisinin varsayılanı **LOCAL**dır.
<Warning>
**Güvenlik Notu:** Yerel sürücü (`SERVERLESS_TYPE=LOCAL`), herhangi bir sandbox olmadan kodu ana makinede doğrudan bir Node.js sürecinde çalıştırır. Yalnızca geliştirirken güvenilen kod için kullanılmalıdır. Güvenilmeyen kodu işleyen üretim dağıtımları için `SERVERLESS_TYPE=LAMBDA` veya `SERVERLESS_TYPE=DISABLED` kullanmanızı şiddetle öneririz.
**Güvenlik Notu:** Yerel sürücü (`LOGIC_FUNCTION_TYPE=LOCAL` veya `CODE_INTERPRETER_TYPE=LOCAL`), herhangi bir sandbox olmadan kodu ana makinede doğrudan bir Node.js sürecinde çalıştırır. Yalnızca geliştirirken güvenilen kod için kullanılmalıdır. Üretim dağıtımlarında güvenilmeyen kodu işlerken, `LOGIC_FUNCTION_TYPE=LAMBDA` veya `CODE_INTERPRETER_TYPE=E2B` (korumalı alanla) kullanın ya da bunları devre dışı bırakın.
</Warning>
### Kullanılabilir Sürücüler
### Mantıksal İşlevler - Kullanılabilir Sürücüler
| Sürücü | Ortam Değişkeni | Kullanım alanı | Güvenlik Düzeyi |
| ---------- | -------------------------- | ---------------------------------------------- | ------------------------------------ |
| Devre dışı | `SERVERLESS_TYPE=DISABLED` | Mantıksal işlevleri tamamen devre dışı bırakın | Uygulanamaz |
| Yerel | `SERVERLESS_TYPE=LOCAL` | Geliştirme ve güvenilir ortamlar | Düşük (sandbox yok) |
| Lambda | `SERVERLESS_TYPE=LAMBDA` | Güvenilmeyen kodla üretim | Yüksek (donanım düzeyinde izolasyon) |
| Sürücü | Ortam Değişkeni | Kullanım alanı | Güvenlik Düzeyi |
| ---------- | ------------------------------ | ---------------------------------------------- | ------------------------------------ |
| Devre dışı | `LOGIC_FUNCTION_TYPE=DISABLED` | Mantıksal işlevleri tamamen devre dışı bırakın | Uygulanamaz |
| Yerel | `LOGIC_FUNCTION_TYPE=LOCAL` | Geliştirme ve güvenilir ortamlar | Düşük (sandbox yok) |
| Lambda | `LOGIC_FUNCTION_TYPE=LAMBDA` | Güvenilmeyen kodla üretim | Yüksek (donanım düzeyinde izolasyon) |
### Önerilen Yapılandırma
### Mantıksal İşlevler - Önerilen Yapılandırma
**Geliştirme için:**
```bash
SERVERLESS_TYPE=LOCAL # default
LOGIC_FUNCTION_TYPE=LOCAL # default when NODE_ENV=development
```
**Üretim için (AWS):**
```bash
SERVERLESS_TYPE=LAMBDA
SERVERLESS_LAMBDA_REGION=us-east-1
SERVERLESS_LAMBDA_ROLE=arn:aws:iam::123456789:role/your-lambda-role
SERVERLESS_LAMBDA_ACCESS_KEY_ID=your-access-key
SERVERLESS_LAMBDA_SECRET_ACCESS_KEY=your-secret-key
LOGIC_FUNCTION_TYPE=LAMBDA
LOGIC_FUNCTION_LAMBDA_REGION=us-east-1
LOGIC_FUNCTION_LAMBDA_ROLE=arn:aws:iam::123456789:role/your-lambda-role
LOGIC_FUNCTION_LAMBDA_ACCESS_KEY_ID=your-access-key
LOGIC_FUNCTION_LAMBDA_SECRET_ACCESS_KEY=your-secret-key
```
**Mantıksal işlevleri devre dışı bırakmak için:**
```bash
SERVERLESS_TYPE=DISABLED
LOGIC_FUNCTION_TYPE=DISABLED # default when NODE_ENV=production
```
### Kod Yorumlayıcısı - Kullanılabilir Sürücüler
| Sürücü | Ortam Değişkeni | Kullanım Senaryosu | Güvenlik Düzeyi |
| ---------- | -------------------------------- | --------------------------------------------- | --------------------------------- |
| Devre dışı | `CODE_INTERPRETER_TYPE=DISABLED` | Yapay zekâ kod yürütmesini devre dışı bırakın | Uygulanamaz |
| Yerel | `CODE_INTERPRETER_TYPE=LOCAL` | Yalnızca geliştirme için | Düşük (sandbox yok) |
| E2B | `CODE_INTERPRETER_TYPE=E_2_B` | Korumalı alanlı yürütmeyle üretim | Yüksek (yalıtılmış korumalı alan) |
<Note>
`SERVERLESS_TYPE=DISABLED` kullanıldığında, bir mantıksal işlevi yürütmeye yönelik herhangi bir girişim bir hata döndürür. Bu, Twenty'yi mantıksal işlev yetenekleri olmadan çalıştırmak istiyorsanız kullanışlıdır.
`LOGIC_FUNCTION_TYPE=DISABLED` veya `CODE_INTERPRETER_TYPE=DISABLED` kullanıldığında, herhangi bir yürütme girişimi bir hata döndürür. Bu, Twenty'yi bu yetenekler olmadan çalıştırmak istiyorsanız kullanışlıdır.
</Note>
@@ -6,7 +6,7 @@ description: 本指南适用于希望在本地运行 Twenty 的贡献者或好
## 先决条件
<Tabs>
<Tab title="Linux 和 MacOS">
<Tab title="Linux 和 macOS">
在安装和使用 Twenty 之前,请确保在您的计算机上安装以下内容:
* [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)
@@ -30,7 +30,7 @@ wsl --install
```
现在您应该看到一个提示,要求您重启计算机。 如果没有,请手动重启。
重启后,一个 powershell 窗口将打开并安装 Ubuntu。 这可能需要一些时间。
重启后,将打开一个 PowerShell 窗口并安装 Ubuntu。 这可能需要一些时间。
您将看到一个提示,要求为您的 Ubuntu 安装创建用户名和密码。
2. 安装和配置 git
@@ -102,8 +102,8 @@ cd twenty
<Tabs>
<Tab title="Linux">
\*\*选项 1推荐):\*\*在本地供应您的数据库:
使用以下链接在 Linux 机器上安装 Postgresql[Postgresql 安装](https://www.postgresql.org/download/linux/)
\*\*选项 1首选):\*\*在本地预配您的数据库:
使用以下链接在 Linux 机器上安装 PostgreSQL[PostgreSQL 安装](https://www.postgresql.org/download/linux/)
```bash
psql postgres -c "CREATE DATABASE \"default\";" -c "CREATE DATABASE test;"
```
@@ -129,7 +129,8 @@ cd twenty
brew services list
```
安装器在通过 Homebrew 安装时可能不会默认创建 `postgres` 用户。 相反,它会创建一个与您的 macOS 用户名(例如,“john”)匹配的 PostgreSQL 角色。
macOS 上通过 Homebrew 安装时
安装程序可能不会默认创建 `postgres` 用户。 相反,它会创建一个与您的 macOS 用户名(例如,“john”)匹配的 PostgreSQL 角色。
按照以下步骤检查并在必要时创建 `postgres` 用户:
```bash
# Connect to PostgreSQL
@@ -171,8 +172,8 @@ cd twenty
<Tab title="Windows (WSL)">
以下所有步骤应在 WSL 终端(在您的虚拟机内)中运行
\*\*选项 1\*\*在本地提供您的 Postgresql
使用以下链接在 Linux 虚拟机上安装 Postgresql[Postgresql 安装](https://www.postgresql.org/download/linux/)
\*\*选项 1\*\*在本地预配您的 PostgreSQL
使用以下链接在 Linux 虚拟机上安装 PostgreSQL[PostgreSQL 安装](https://www.postgresql.org/download/linux/)
```bash
psql postgres -c "CREATE DATABASE \"default\";" -c "CREATE DATABASE test;"
```
@@ -187,11 +188,13 @@ cd twenty
</Tab>
</Tabs>
您现在可以在 [localhost:5432](localhost:5432) 访问数据库,用户名 `postgres`,密码 `postgres`
您现在可以通过 `localhost:5432` 访问数据库。
如果您使用了上面的 Docker 选项,默认凭据为用户 `postgres`、密码 `postgres`。 对于原生 PostgreSQL 安装,请使用在您的机器上已配置的凭据和角色。
## 步骤 4:设置 Redis 数据库(缓存)
Twenty 需要 Redis 缓存来提供最佳性能
Twenty 需要 Redis 缓存来提供最佳性能
<Tabs>
<Tab title="Linux">
@@ -208,8 +211,10 @@ Twenty 需要 Redis 缓存来提供最佳性能
```bash
brew install redis
```
启动您的 redis server
`brew services start redis`
启动您的 Redis 服务器
```bash
brew services start redis
```
\*\*选项 2\*\*如果您已安装 docker
```bash
@@ -227,11 +232,11 @@ Twenty 需要 Redis 缓存来提供最佳性能
</Tab>
</Tabs>
如果您需要客户端 GUI,我们推荐 [redis insight](https://redis.io/insight/)(提供免费版
如果您需要客户端 GUI,我们推荐 [Redis Insight](https://redis.io/insight/)(提供免费版本)。
## 步骤 5:设置环境变量
使用环境变量或 `.env` 文件配置您的项目。 更多信息请参见 [此处](/l/zh/developers/self-host/capabilities/setup)
使用环境变量或 `.env` 文件配置您的项目。 更多信息请参见 [此处](/l/zh/developers/self-host/capabilities/setup).
复制 `/front` 和 `/server` 目录中的 `.env.example` 文件:
@@ -49,25 +49,31 @@ npx create-twenty-app@latest my-app --minimal
从这里您可以:
```bash filename="Terminal"
# 向你的应用添加一个新实体(引导式)
# Add a new entity to your application (guided)
yarn twenty entity:add
# 监听你的应用函数日志
# Watch your application's function logs
yarn twenty function:logs
# 按名称执行一个函数
# Execute a function by name
yarn twenty function:execute -n my-function -p '{"name": "test"}'
# 执行安装前函数
# Execute the pre-install function
yarn twenty function:execute --preInstall
# 执行安装后函数
# Execute the post-install function
yarn twenty function:execute --postInstall
# 从当前工作区卸载该应用
# Build the app for distribution
yarn twenty app:build
# Publish the app to npm or a Twenty server
yarn twenty app:publish
# Uninstall the application from the current workspace
yarn twenty app:uninstall
# 显示命令帮助
# Display commands' help
yarn twenty help
```
@@ -1240,6 +1246,113 @@ uploadFile(
在[此处](https://github.com/twentyhq/twenty/tree/main/packages/twenty-apps/hello-world)查看一个最小的端到端示例,展示对象、逻辑函数、前端组件和多种触发器:
## Building your app
Once you've developed your app with `app:dev`, use `app:build` to compile it into a distributable package.
```bash filename="Terminal"
# Build the app (output goes to .twenty/output/)
yarn twenty app:build
# Build and create a tarball (.tgz) for distribution
yarn twenty app:build --tarball
```
The build process:
1. **Parses and validates the manifest** — reads all `defineX()` entities from your source files and validates the manifest structure.
2. **Compiles logic functions and front components** — bundles TypeScript sources into ESM `.mjs` files using esbuild.
3. **Generates checksums** — computes MD5 hashes for each built file, stored in the manifest as `builtHandlerChecksum` / `builtComponentChecksum`.
4. **生成类型化的 API 客户端** — 对 GraphQL 架构进行自省,并生成带类型的 `CoreApiClient` 和 `MetadataApiClient` 客户端。
5. **运行 TypeScript 类型检查** — 运行 `tsc --noEmit` 以在发布前捕获类型错误。
6. **使用生成的客户端重新构建** — 执行第二次编译,以便包含生成的客户端类型。
7. **可选地创建一个 tar 包** — 如果传入 `--tarball`,则运行 `npm pack` 以创建用于分发的 `.tgz` 文件。
`.twenty/output/` 中的构建产物包含:
```text
.twenty/output/
├── manifest.json # Manifest with checksums for all built files
├── package.json # Copied from app root
├── yarn.lock # Copied from app root
├── src/
│ ├── logic-functions/ # Compiled .mjs logic function files
│ └── front-components/ # Compiled .mjs front component files
├── public/ # Static assets (if any)
└── my-app-1.0.0.tgz # Only with --tarball flag
```
| 选项 | 描述 |
| ----------- | ----------------------- |
| `[appPath]` | 应用目录的路径(默认为当前目录) |
| `--tarball` | 同时将输出打包为一个 `.tgz` tar 包 |
## 发布你的应用
使用 `app:publish` 分发你的应用 — 可以发布到 npm 注册表,或直接发布到 Twenty 服务器。
### 发布到 npm(默认)
```bash filename="Terminal"
# Publish to npm (requires npm login)
yarn twenty app:publish
# Publish with a dist-tag (e.g. beta, next)
yarn twenty app:publish --tag beta
```
这会构建应用,并在 `.twenty/output/` 目录下运行 `npm publish`。 发布后的软件包可由任何工作区从 Twenty 市场进行安装。
### 发布到 Twenty 服务器
```bash filename="Terminal"
# Publish directly to a Twenty server
yarn twenty app:publish --server https://app.twenty.com
```
这会以 tar 包方式构建应用,通过 `uploadAppTarball` GraphQL 变更将其上传到服务器,并在一步中触发安装。 这对于私有部署或针对特定服务器进行测试非常有用。
| 选项 | 描述 |
| ----------------- | ------------------------------------------ |
| `[appPath]` | 应用目录的路径(默认为当前目录) |
| `--server <url>` | 发布到 Twenty 服务器(而非 npm) |
| `--token <token>` | 目标服务器的身份验证令牌 |
| `--tag <tag>` | npm dist-tag(例如 `beta`、`next`)— 仅用于发布到 npm |
## 应用注册
在应用安装到工作区之前,必须先进行**注册**。 注册是一条元数据记录,用于描述应用的来源以及如何对其进行身份验证。 在大多数情况下,CLI 会自动处理这一流程。
### 来源类型
每个注册都有一个**来源类型**,用于决定安装期间如何解析应用的文件:
| 来源类型 | 文件的解析方式 | 典型用例 |
| --------- | -------------------------------- | --------------------- |
| `LOCAL` | 文件由 CLI 监听器实时同步——跳过安装步骤 | 使用 `app:dev` 进行开发 |
| `NPM` | 通过 `sourcePackage` 字段从 npm 注册表获取 | 在 npm 上发布的应用 |
| `TARBALL` | 从存储在服务器上的已上传 `.tgz` 文件中解压获得 | 使用 `--server` 发布的私有应用 |
### 注册如何进行
* **`app:dev`** — 第一次针对某个工作区运行开发模式时,会自动创建一个 `LOCAL` 注册。
* **`app:publish --server`** — 上传一个 tar 包并创建(或更新)一个 `TARBALL` 注册,然后安装应用。
* **npm 市场** — 当应用从 npm 注册表同步到 Twenty 市场目录时,会创建 `NPM` 注册。
* **GraphQL API** — 你也可以通过 `createApplicationRegistration` 变更以编程方式创建注册。
### 注册与安装
**注册** 与 **安装** 是两个独立的概念:
* **注册**`ApplicationRegistration`)是一条全局元数据记录,用于描述应用:其名称、来源类型、OAuth 凭据以及在市场中的上架状态。 它独立于任何工作区存在。
* **安装**`Application`)是一个按工作区划分的实例。 当用户安装一个应用时,Twenty 会根据注册的来源解析软件包,将构建生成的文件写入存储,并同步清单(创建对象、字段、逻辑函数等) 到该工作区中。
一个注册可以安装到多个工作区。 每个工作区都会获得应用文件和数据模型的独立副本。
### OAuth 凭据
每个注册都包含在创建时生成的 OAuth 凭据(`oAuthClientId` 和 `oAuthClientSecret`)。 应用使用这些凭据代表用户对 API 请求进行身份验证。 客户端密钥在创建时只会返回**一次**——请妥善保管。 你可以稍后通过 `rotateApplicationRegistrationClientSecret` 变更来轮换它。
## 手动设置(不使用脚手架)
虽然我们建议使用 `create-twenty-app` 以获得最佳的上手体验,但你也可以手动设置项目。 不要全局安装 CLI。 相反,请将 `twenty-sdk` 添加为本地依赖,并在你的 package.json 中配置一个脚本:
@@ -3,7 +3,7 @@ title: 1-点击使用Docker Compose
---
<Warning>
Docker容器用于生产托管或自托管,关于贡献,请查看[本地设置](/l/zh/developers/contribute/capabilities/local-setup)。
Docker 容器用于生产环境托管或自托管。 如需参与贡献,请查看[本地设置](/l/zh/developers/contribute/capabilities/local-setup)。
</Warning>
## 概览
@@ -12,7 +12,7 @@ Docker容器用于生产托管或自托管,关于贡献,请查看[本地设
**重要:** 仅修改本指南中明确提到的设置。 更改其他配置可能会导致问题。
请参阅文档[设置环境变量](/l/zh/developers/self-host/capabilities/setup)获取高级配置。 所有环境变量必须在docker-compose.yml文件中根据变量声明在服务器和/或工作器级别
有关高级配置,请参阅[设置环境变量](/l/zh/developers/self-host/capabilities/setup)。 所有环境变量必须在 `docker-compose.yml` 文件中声明,具体在服务器和/或 worker 层级,取决于变量
## 系统要求
@@ -297,46 +297,60 @@ yarn command:prod cron:workflow:automated-cron-trigger
**仅限环境模式:** 如果你设置 `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false`,请将这些变量添加到 `.env` 文件中。
</Warning>
## 逻辑函数
## 逻辑函数与代码解释器
Twenty 支持用于工作流和自定义逻辑的逻辑函数。 执行环境通过 `SERVERLESS_TYPE` 环境变量进行配置
Twenty 支持用于工作流的逻辑函数,以及用于 AI 数据分析的代码解释器。 二者都会运行用户提供的代码,并要求进行显式配置以确保安全
### 安全默认设置
**在生产环境(NODE_ENV=production):** 逻辑函数和代码解释器的默认设置为**禁用**。 如需这些功能,必须通过 `LOGIC_FUNCTION_TYPE` 和 `CODE_INTERPRETER_TYPE` 显式启用它们。
**在开发环境(NODE_ENV=development):** 为方便在本地运行,二者默认均为**LOCAL**。
<Warning>
\*\*安全提示:\*\*本地驱动(`SERVERLESS_TYPE=LOCAL`)在没有沙箱的情况下,在主机上的 Node.js 进程中直接运行代码。 它应仅在开发环境中用于可信代码。 对于在生产环境中处理不受信任代码的部署,我们强烈建议使用 `SERVERLESS_TYPE=LAMBDA` 或 `SERVERLESS_TYPE=DISABLED`
**安全提示:** 本地驱动(`LOGIC_FUNCTION_TYPE=LOCAL` 或 `CODE_INTERPRETER_TYPE=LOCAL`在没有沙箱的情况下,在主机上的 Node.js 进程中直接运行代码。 它应仅在开发环境中用于可信代码。 对于在生产环境中处理不受信任代码的部署,请使用 `LOGIC_FUNCTION_TYPE=LAMBDA` 或 `CODE_INTERPRETER_TYPE=E2B`(使用沙盒),或将它们保持禁用
</Warning>
### 可用驱动
### 逻辑函数 - 可用驱动程序
| 驱动 | 环境变量 | 用例 | 安全级别 |
| ------ | -------------------------- | -------------- | -------- |
| 禁用 | `SERVERLESS_TYPE=DISABLED` | 完全禁用逻辑函数 | 不适用 |
| 本地 | `SERVERLESS_TYPE=LOCAL` | 开发和可信环境 | 低(无沙箱) |
| Lambda | `SERVERLESS_TYPE=LAMBDA` | 生产环境(处理不受信任代码) | 高(硬件级隔离) |
| 驱动 | 环境变量 | 用例 | 安全级别 |
| ------ | ------------------------------ | -------------- | -------- |
| 禁用 | `LOGIC_FUNCTION_TYPE=DISABLED` | 完全禁用逻辑函数 | 不适用 |
| 本地 | `LOGIC_FUNCTION_TYPE=LOCAL` | 开发和可信环境 | 低(无沙箱) |
| Lambda | `LOGIC_FUNCTION_TYPE=LAMBDA` | 生产环境(处理不受信任代码) | 高(硬件级隔离) |
### 推荐配置
### 逻辑函数 - 推荐配置
**用于开发:**
```bash
SERVERLESS_TYPE=LOCAL # default
LOGIC_FUNCTION_TYPE=LOCAL # default when NODE_ENV=development
```
**用于生产(AWS):**
```bash
SERVERLESS_TYPE=LAMBDA
SERVERLESS_LAMBDA_REGION=us-east-1
SERVERLESS_LAMBDA_ROLE=arn:aws:iam::123456789:role/your-lambda-role
SERVERLESS_LAMBDA_ACCESS_KEY_ID=your-access-key
SERVERLESS_LAMBDA_SECRET_ACCESS_KEY=your-secret-key
LOGIC_FUNCTION_TYPE=LAMBDA
LOGIC_FUNCTION_LAMBDA_REGION=us-east-1
LOGIC_FUNCTION_LAMBDA_ROLE=arn:aws:iam::123456789:role/your-lambda-role
LOGIC_FUNCTION_LAMBDA_ACCESS_KEY_ID=your-access-key
LOGIC_FUNCTION_LAMBDA_SECRET_ACCESS_KEY=your-secret-key
```
**要禁用逻辑函数:**
```bash
SERVERLESS_TYPE=DISABLED
LOGIC_FUNCTION_TYPE=DISABLED # default when NODE_ENV=production
```
### 代码解释器 - 可用驱动程序
| 驱动 | 环境变量 | 用例 | 安全级别 |
| --- | -------------------------------- | ----------- | ------- |
| 禁用 | `CODE_INTERPRETER_TYPE=DISABLED` | 禁用 AI 代码执行 | 不适用 |
| 本地 | `CODE_INTERPRETER_TYPE=LOCAL` | 仅限开发环境 | 低(无沙箱) |
| E2B | `CODE_INTERPRETER_TYPE=E_2_B` | 生产环境(沙盒化执行) | 高(隔离沙盒) |
<Note>
使用 `SERVERLESS_TYPE=DISABLED` 时,任何尝试执行逻辑函数的操作都会返回错误。 如果你想在不启用逻辑函数能力的情况下运行 Twenty,这将很有用。
使用 `LOGIC_FUNCTION_TYPE=DISABLED` 或 `CODE_INTERPRETER_TYPE=DISABLED` 时,任何执行尝试都会返回错误。 如果你想在不启用这些功能的情况下运行 Twenty,这将很有用。
</Note>
@@ -0,0 +1,139 @@
---
title: MCP Server
description: Connect AI assistants to your Twenty workspace using the Model Context Protocol.
---
<Warning>
MCP is currently in **alpha** and is only available on some workspaces. It may not be enabled for your workspace yet.
</Warning>
Twenty exposes an [MCP](https://modelcontextprotocol.io/) server so that AI assistants — Claude Desktop, Claude Code, Cursor, ChatGPT, and others — can read and write your CRM data through natural language.
Use your **workspace URL** (the URL you use to access Twenty) as the MCP endpoint. On Twenty Cloud, your workspace URL might be `https://{mycompany}.twenty.com` or a custom domain. The server is available at:
| Environment | MCP Endpoint |
|-------------|-------------|
| **Cloud** | `https://{your-workspace-url}/mcp` (e.g. `https://mycompany.twenty.com/mcp`) |
| **Self-Hosted** | `https://{your-domain}/mcp` |
## Authentication Methods
You have two ways to authenticate your MCP client: **OAuth** (recommended) or **API Key**.
### Option A — OAuth (Recommended)
With OAuth, your MCP client opens a browser window for you to log in. No secrets are stored in config files, and tokens refresh automatically.
<Note>
OAuth requires an MCP client that supports the [MCP Authorization specification](https://modelcontextprotocol.io/specification/2025-03-26/basic/authorization). Claude Desktop, Claude Code, Cursor, and ChatGPT support it.
</Note>
Add this to your MCP client configuration, replacing `{your-workspace-url}` with your workspace host (e.g. `mycompany.twenty.com`):
```json
{
"mcpServers": {
"twenty": {
"type": "streamable-http",
"url": "https://{your-workspace-url}/mcp"
}
}
}
```
That's it — no API key needed. When the client connects for the first time it will:
1. Discover Twenty's OAuth metadata via `/.well-known/oauth-protected-resource` and `/.well-known/oauth-authorization-server`
2. Register itself as an OAuth client via dynamic client registration (RFC 7591)
3. Open your browser to authorize access
4. Receive tokens and connect to the MCP server
Subsequent connections reuse the stored tokens and refresh them automatically.
### Option B — API Key
If your MCP client does not support OAuth, or you prefer static credentials, pass an API key in the `Authorization` header:
```json
{
"mcpServers": {
"twenty": {
"type": "streamable-http",
"url": "https://{your-workspace-url}/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}
```
<Warning>
Your API key grants access to workspace data. Keep it out of version control and shared dotfiles.
</Warning>
To create an API key, go to **Settings > APIs & Webhooks > + Create key**. See [APIs](/developers/extend/api#create-an-api-key) for details.
## Quick Start
### 1. Copy the config
Go to **Settings > AI > More > MCP Server** in Twenty. Choose your authentication method (OAuth or API Key), copy the JSON snippet (it will already use your workspace URL), and paste it into your MCP client's config file.
| Client | Config file location |
|--------|---------------------|
| **Claude Desktop** | `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or `%APPDATA%\Claude\claude_desktop_config.json` (Windows) |
| **Claude Code** | `~/.claude.json` (user) or `.mcp.json` (project) |
| **Cursor** | `.cursor/mcp.json` in your project, or `~/.cursor/mcp.json` globally |
| **ChatGPT** | Turn on Developer Mode in **Settings > Apps & Connectors > Advanced settings**, then use **Create** in **Settings > Apps & Connectors** to add the MCP server |
### 2. Connect
Restart your MCP client (or reload the config). If using OAuth you will be redirected to Twenty to authorize access. If using an API key the connection is immediate.
### 3. Start using it
Ask your AI assistant to interact with your CRM:
- *"Show me the 5 most recently created companies"*
- *"Create a new person named Jane Doe at Acme Corp"*
- *"Find all open opportunities worth more than $10k"*
## Available Tools
Once connected, the MCP server exposes tools that mirror the Twenty API. The recommended workflow is:
1. **`get_tool_catalog`** — discover all available tools
2. **`learn_tools`** — get the input schema for specific tools
3. **`execute_tool`** — run a tool
You don't need to remember tool names. Ask your AI assistant what it can do and it will call `get_tool_catalog` automatically.
## Permissions
MCP connections inherit the permissions of the authenticated user (OAuth) or the role assigned to the API key. To restrict what the MCP server can do:
- **OAuth**: The user's workspace role applies.
- **API Key**: Assign a role to the API key under **Settings > Roles**. See [Permissions](/user-guide/permissions-access/capabilities/permissions).
## Self-Hosted Configuration
For self-hosted instances, replace `{your-workspace-url}` with your server URL. Make sure `SERVER_URL` in your environment matches the public URL of your Twenty instance — this is used to generate the OAuth discovery metadata.
```bash
SERVER_URL=https://twenty.yourcompany.com
```
The MCP endpoint, OAuth endpoints, and discovery metadata all derive from this value.
## Troubleshooting
**"Unauthorized" or 401 errors**
- OAuth: re-authorize by clearing the stored tokens in your MCP client and reconnecting.
- API Key: verify the key is valid and hasn't expired. Regenerate it if needed.
**OAuth flow doesn't open a browser**
- Ensure your MCP client supports MCP Authorization. Fall back to the API Key method if it doesn't.
**Connection timeout**
- Confirm the MCP endpoint URL is reachable from your machine. For self-hosted instances, check that the server is running and `SERVER_URL` is set correctly.
+1 -4
View File
@@ -45,13 +45,10 @@ module.exports = {
plugins: [
'typescript',
'typescript-operations',
'typescript-react-apollo',
'typed-document-node',
],
config: {
skipTypename: false,
withHooks: true,
withHOC: false,
withComponent: false,
scalars: {
DateTime: 'string',
UUID: 'string',
+1 -4
View File
@@ -21,13 +21,10 @@ module.exports = {
plugins: [
'typescript',
'typescript-operations',
'typescript-react-apollo',
'typed-document-node',
],
config: {
skipTypename: false,
withHooks: true,
withHOC: false,
withComponent: false,
scalars: {
DateTime: 'string',
},
+5 -5
View File
@@ -24,12 +24,12 @@ const jestConfig = {
testEnvironmentOptions: {},
transformIgnorePatterns: [
'/node_modules/(?!(twenty-ui)/.*)',
'../../node_modules/(?!(twenty-ui)/.*)',
'/node_modules/(?!(twenty-ui|apollo-upload-client|extract-files|is-plain-obj)/.*)',
'../../node_modules/(?!(twenty-ui|apollo-upload-client|extract-files|is-plain-obj)/.*)',
'../../twenty-ui/',
],
transform: {
'^.+\\.(ts|js|tsx|jsx)$': [
'^.+\\.(ts|js|tsx|jsx|mjs)$': [
'@swc/jest',
{
jsc: {
@@ -61,8 +61,8 @@ const jestConfig = {
extensionsToTreatAsEsm: ['.ts', '.tsx'],
coverageThreshold: {
global: {
statements: 49.1,
lines: 47.7,
statements: 48.5,
lines: 47.0,
functions: 39.5,
},
},
+3 -4
View File
@@ -30,7 +30,7 @@
},
"dependencies": {
"@ai-sdk/react": "3.0.99",
"@apollo/client": "^3.7.17",
"@apollo/client": "^4.0.0",
"@blocknote/mantine": "^0.47.1",
"@blocknote/react": "^0.47.1",
"@blocknote/xl-docx-exporter": "^0.47.1",
@@ -77,8 +77,8 @@
"@types/marked": "^6.0.0",
"@xyflow/react": "^12.4.2",
"ai": "6.0.97",
"apollo-link-rest": "^0.9.0",
"apollo-upload-client": "^17.0.0",
"apollo-link-rest": "^0.10.0-rc.2",
"apollo-upload-client": "^19.0.0",
"buffer": "^6.0.3",
"cron-parser": "5.1.1",
"date-fns": "^2.30.0",
@@ -126,7 +126,6 @@
"@lingui/vite-plugin": "^5.1.2",
"@playwright/test": "^1.56.1",
"@tiptap/suggestion": "3.4.2",
"@types/apollo-upload-client": "^17.0.2",
"@types/file-saver": "^2.0.7",
"@types/js-cookie": "^3.0.3",
"@types/json-logic-js": "^2",
@@ -1,19 +1,23 @@
/* oxlint-disable no-console */
import { generateApiKeys } from './mock-data/generate-api-keys.js';
import { generateBillingPlans } from './mock-data/generate-billing-plans.js';
import { generateMetadata } from './mock-data/generate-metadata.js';
import { generateObjectMetadata } from './mock-data/generate-object-metadata.js';
import { generateMinimalMetadata } from './mock-data/generate-minimal-metadata.js';
import { generateRecordData } from './mock-data/generate-record-data.js';
import { generateRoles } from './mock-data/generate-roles.js';
import { generateNavigationMenuItems } from './mock-data/generate-navigation-menu-items.js';
import { generateViews } from './mock-data/generate-views.js';
import { authenticate } from './mock-data/utils.js';
const main = async () => {
const token = await authenticate();
const metadata = await generateMetadata(token);
const metadata = await generateObjectMetadata(token);
await generateMinimalMetadata(token);
await generateRecordData(token, metadata);
await generateRoles(token);
await generateViews(token);
await generateNavigationMenuItems(token);
try {
await generateBillingPlans(token);
@@ -0,0 +1,51 @@
/* oxlint-disable no-console */
import { graphqlRequest, writeGeneratedFile } from './utils.js';
const MINIMAL_METADATA_QUERY = `
query FindMinimalMetadata {
minimalMetadata {
objectMetadataItems {
id
nameSingular
namePlural
labelSingular
labelPlural
icon
isCustom
isActive
isSystem
isRemote
}
views {
id
type
key
objectMetadataId
}
collectionHashes {
collectionName
hash
}
}
}
`;
export const generateMinimalMetadata = async (token: string) => {
console.log('Fetching minimal metadata from /metadata ...');
const data = (await graphqlRequest(
'/metadata',
MINIMAL_METADATA_QUERY,
token,
)) as {
minimalMetadata: Record<string, unknown>;
};
writeGeneratedFile(
'metadata/minimal/mock-minimal-metadata.ts',
'mockedMinimalMetadata',
'MinimalMetadata',
"import { type MinimalMetadata } from '@/metadata-store/types/MinimalMetadata';",
data.minimalMetadata,
);
};
@@ -0,0 +1,50 @@
/* oxlint-disable no-console, lingui/no-unlocalized-strings */
import { graphqlRequest, writeGeneratedFile } from './utils.js';
const FIND_MANY_NAVIGATION_MENU_ITEMS_QUERY = `
query FindManyNavigationMenuItems {
navigationMenuItems {
id
userWorkspaceId
targetRecordId
targetObjectMetadataId
viewId
folderId
name
link
icon
color
position
applicationId
createdAt
updatedAt
targetRecordIdentifier {
id
labelIdentifier
imageIdentifier
}
}
}
`;
export const generateNavigationMenuItems = async (token: string) => {
console.log('Fetching navigation menu items from /metadata ...');
const data = (await graphqlRequest(
'/metadata',
FIND_MANY_NAVIGATION_MENU_ITEMS_QUERY,
token,
)) as {
navigationMenuItems: Record<string, unknown>[];
};
console.log(` Got ${data.navigationMenuItems.length} navigation menu items.`);
writeGeneratedFile(
'metadata/navigation-menu-items/mock-navigation-menu-items-data.ts',
'mockedNavigationMenuItems',
'NavigationMenuItem[]',
"import { type NavigationMenuItem } from '~/generated-metadata/graphql';",
data.navigationMenuItems,
);
};
@@ -141,7 +141,7 @@ const METADATA_QUERY = `
}
`;
export const generateMetadata = async (token: string) => {
export const generateObjectMetadata = async (token: string) => {
console.log('Fetching object metadata from /metadata ...');
const metadata = await graphqlRequest('/metadata', METADATA_QUERY, token);
@@ -1,9 +1,9 @@
/* oxlint-disable no-console, lingui/no-unlocalized-strings */
import { graphqlRequest, writeGeneratedFile } from './utils.js';
const FIND_ALL_CORE_VIEWS_QUERY = `
query FindAllCoreViews {
getCoreViews {
const FIND_ALL_VIEWS_QUERY = `
query FindAllViews {
getViews {
id
name
objectMetadataId
@@ -101,19 +101,19 @@ export const generateViews = async (token: string) => {
const data = (await graphqlRequest(
'/metadata',
FIND_ALL_CORE_VIEWS_QUERY,
FIND_ALL_VIEWS_QUERY,
token,
)) as {
getCoreViews: Record<string, unknown>[];
getViews: Record<string, unknown>[];
};
console.log(` Got ${data.getCoreViews.length} views.`);
console.log(` Got ${data.getViews.length} views.`);
writeGeneratedFile(
'metadata/views/mock-views-data.ts',
'mockedCoreViews',
'CoreViewWithRelations[]',
"import { type CoreViewWithRelations } from '@/views/types/CoreViewWithRelations';",
data.getCoreViews,
'mockedViews',
'ViewWithRelations[]',
"import { type ViewWithRelations } from '@/views/types/ViewWithRelations';",
data.getViews,
);
};
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
@@ -1,4 +1,4 @@
import { useIsLogged } from '@/auth/hooks/useIsLogged';
import { useHasAccessTokenPair } from '@/auth/hooks/useHasAccessTokenPair';
import { useDefaultHomePagePath } from '@/navigation/hooks/useDefaultHomePagePath';
import { useOnboardingStatus } from '@/onboarding/hooks/useOnboardingStatus';
import { useIsWorkspaceActivationStatusEqualsTo } from '@/workspace/hooks/useIsWorkspaceActivationStatusEqualsTo';
@@ -39,9 +39,9 @@ const setupMockIsMatchingLocation = (pathname: string) => {
);
};
jest.mock('@/auth/hooks/useIsLogged');
const setupMockIsLogged = (isLogged: boolean) => {
jest.mocked(useIsLogged).mockReturnValueOnce(isLogged);
jest.mock('@/auth/hooks/useHasAccessTokenPair');
const setupMockHasAccessTokenPair = (hasAccessTokenPair: boolean) => {
jest.mocked(useHasAccessTokenPair).mockReturnValueOnce(hasAccessTokenPair);
};
const defaultHomePagePath = '/objects/companies';
@@ -83,7 +83,7 @@ const setupMockState = (
// prettier-ignore
const testCases: {
loc: AppPath;
isLoggedIn: boolean;
hasAccessTokenPair: boolean;
isWorkspaceSuspended: boolean;
onboardingStatus: OnboardingStatus | undefined;
res: string | undefined;
@@ -93,248 +93,248 @@ const testCases: {
verifyEmailRedirectPath?: string;
returnToPath?: string;
}[] = [
{ loc: AppPath.Verify, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PLAN_REQUIRED, res: AppPath.PlanRequired },
{ loc: AppPath.Verify, isLoggedIn: true, isWorkspaceSuspended: true, onboardingStatus: OnboardingStatus.COMPLETED, res: getSettingsPath(SettingsPath.Billing) },
{ loc: AppPath.Verify, isLoggedIn: false, isWorkspaceSuspended: false, onboardingStatus: undefined, res: undefined },
{ loc: AppPath.Verify, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.WORKSPACE_ACTIVATION, res: AppPath.CreateWorkspace },
{ loc: AppPath.Verify, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PROFILE_CREATION, res: AppPath.CreateProfile },
{ loc: AppPath.Verify, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.SYNC_EMAIL, res: AppPath.SyncEmails },
{ loc: AppPath.Verify, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.INVITE_TEAM, res: AppPath.InviteTeam },
{ loc: AppPath.Verify, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.BOOK_ONBOARDING, res: AppPath.BookCallDecision },
{ loc: AppPath.Verify, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: defaultHomePagePath },
{ loc: AppPath.Verify, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PLAN_REQUIRED, res: AppPath.PlanRequired },
{ loc: AppPath.Verify, hasAccessTokenPair: true, isWorkspaceSuspended: true, onboardingStatus: OnboardingStatus.COMPLETED, res: getSettingsPath(SettingsPath.Billing) },
{ loc: AppPath.Verify, hasAccessTokenPair: false, isWorkspaceSuspended: false, onboardingStatus: undefined, res: undefined },
{ loc: AppPath.Verify, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.WORKSPACE_ACTIVATION, res: AppPath.CreateWorkspace },
{ loc: AppPath.Verify, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PROFILE_CREATION, res: AppPath.CreateProfile },
{ loc: AppPath.Verify, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.SYNC_EMAIL, res: AppPath.SyncEmails },
{ loc: AppPath.Verify, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.INVITE_TEAM, res: AppPath.InviteTeam },
{ loc: AppPath.Verify, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.BOOK_ONBOARDING, res: AppPath.BookCallDecision },
{ loc: AppPath.Verify, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: defaultHomePagePath },
{ loc: AppPath.SignInUp, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PLAN_REQUIRED, res: AppPath.PlanRequired },
{ loc: AppPath.SignInUp, isLoggedIn: true, isWorkspaceSuspended: true, onboardingStatus: OnboardingStatus.COMPLETED, res: getSettingsPath(SettingsPath.Billing) },
{ loc: AppPath.SignInUp, isLoggedIn: false, isWorkspaceSuspended: false, onboardingStatus: undefined, res: undefined },
{ loc: AppPath.SignInUp, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.WORKSPACE_ACTIVATION, res: AppPath.CreateWorkspace },
{ loc: AppPath.SignInUp, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PROFILE_CREATION, res: AppPath.CreateProfile },
{ loc: AppPath.SignInUp, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.SYNC_EMAIL, res: AppPath.SyncEmails },
{ loc: AppPath.SignInUp, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.INVITE_TEAM, res: AppPath.InviteTeam },
{ loc: AppPath.SignInUp, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.BOOK_ONBOARDING, res: AppPath.BookCallDecision },
{ loc: AppPath.SignInUp, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: defaultHomePagePath },
{ loc: AppPath.SignInUp, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PLAN_REQUIRED, res: AppPath.PlanRequired },
{ loc: AppPath.SignInUp, hasAccessTokenPair: true, isWorkspaceSuspended: true, onboardingStatus: OnboardingStatus.COMPLETED, res: getSettingsPath(SettingsPath.Billing) },
{ loc: AppPath.SignInUp, hasAccessTokenPair: false, isWorkspaceSuspended: false, onboardingStatus: undefined, res: undefined },
{ loc: AppPath.SignInUp, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.WORKSPACE_ACTIVATION, res: AppPath.CreateWorkspace },
{ loc: AppPath.SignInUp, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PROFILE_CREATION, res: AppPath.CreateProfile },
{ loc: AppPath.SignInUp, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.SYNC_EMAIL, res: AppPath.SyncEmails },
{ loc: AppPath.SignInUp, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.INVITE_TEAM, res: AppPath.InviteTeam },
{ loc: AppPath.SignInUp, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.BOOK_ONBOARDING, res: AppPath.BookCallDecision },
{ loc: AppPath.SignInUp, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: defaultHomePagePath },
{ loc: AppPath.Invite, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PLAN_REQUIRED, res: '/plan-required' },
{ loc: AppPath.Invite, isLoggedIn: true, isWorkspaceSuspended: true, onboardingStatus: OnboardingStatus.COMPLETED, res: getSettingsPath(SettingsPath.Billing) },
{ loc: AppPath.Invite, isLoggedIn: false, isWorkspaceSuspended: false, onboardingStatus: undefined, res: undefined },
{ loc: AppPath.Invite, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.WORKSPACE_ACTIVATION, res: '/create/workspace' },
{ loc: AppPath.Invite, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PROFILE_CREATION, res: '/create/profile' },
{ loc: AppPath.Invite, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.SYNC_EMAIL, res: '/sync/emails' },
{ loc: AppPath.Invite, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.INVITE_TEAM, res: '/invite-team' },
{ loc: AppPath.Invite, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.BOOK_ONBOARDING, res: AppPath.BookCallDecision },
{ loc: AppPath.Invite, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: defaultHomePagePath },
{ loc: AppPath.Invite, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PLAN_REQUIRED, res: '/plan-required' },
{ loc: AppPath.Invite, hasAccessTokenPair: true, isWorkspaceSuspended: true, onboardingStatus: OnboardingStatus.COMPLETED, res: getSettingsPath(SettingsPath.Billing) },
{ loc: AppPath.Invite, hasAccessTokenPair: false, isWorkspaceSuspended: false, onboardingStatus: undefined, res: undefined },
{ loc: AppPath.Invite, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.WORKSPACE_ACTIVATION, res: '/create/workspace' },
{ loc: AppPath.Invite, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PROFILE_CREATION, res: '/create/profile' },
{ loc: AppPath.Invite, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.SYNC_EMAIL, res: '/sync/emails' },
{ loc: AppPath.Invite, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.INVITE_TEAM, res: '/invite-team' },
{ loc: AppPath.Invite, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.BOOK_ONBOARDING, res: AppPath.BookCallDecision },
{ loc: AppPath.Invite, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: defaultHomePagePath },
{ loc: AppPath.ResetPassword, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PLAN_REQUIRED, res: '/plan-required' },
{ loc: AppPath.ResetPassword, isLoggedIn: true, isWorkspaceSuspended: true, onboardingStatus: OnboardingStatus.COMPLETED, res: getSettingsPath(SettingsPath.Billing) },
{ loc: AppPath.ResetPassword, isLoggedIn: false, isWorkspaceSuspended: false, onboardingStatus: undefined, res: undefined },
{ loc: AppPath.ResetPassword, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.WORKSPACE_ACTIVATION, res: '/create/workspace' },
{ loc: AppPath.ResetPassword, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PROFILE_CREATION, res: '/create/profile' },
{ loc: AppPath.ResetPassword, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.SYNC_EMAIL, res: '/sync/emails' },
{ loc: AppPath.ResetPassword, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.INVITE_TEAM, res: '/invite-team' },
{ loc: AppPath.ResetPassword, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.BOOK_ONBOARDING, res: AppPath.BookCallDecision },
{ loc: AppPath.ResetPassword, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: undefined },
{ loc: AppPath.ResetPassword, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PLAN_REQUIRED, res: '/plan-required' },
{ loc: AppPath.ResetPassword, hasAccessTokenPair: true, isWorkspaceSuspended: true, onboardingStatus: OnboardingStatus.COMPLETED, res: getSettingsPath(SettingsPath.Billing) },
{ loc: AppPath.ResetPassword, hasAccessTokenPair: false, isWorkspaceSuspended: false, onboardingStatus: undefined, res: undefined },
{ loc: AppPath.ResetPassword, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.WORKSPACE_ACTIVATION, res: '/create/workspace' },
{ loc: AppPath.ResetPassword, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PROFILE_CREATION, res: '/create/profile' },
{ loc: AppPath.ResetPassword, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.SYNC_EMAIL, res: '/sync/emails' },
{ loc: AppPath.ResetPassword, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.INVITE_TEAM, res: '/invite-team' },
{ loc: AppPath.ResetPassword, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.BOOK_ONBOARDING, res: AppPath.BookCallDecision },
{ loc: AppPath.ResetPassword, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: undefined },
{ loc: AppPath.VerifyEmail, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PLAN_REQUIRED, res: AppPath.PlanRequired },
{ loc: AppPath.VerifyEmail, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PLAN_REQUIRED, verifyEmailRedirectPath: '/nextPath?key=value', res: '/nextPath?key=value' },
{ loc: AppPath.VerifyEmail, isLoggedIn: true, isWorkspaceSuspended: true, onboardingStatus: OnboardingStatus.COMPLETED, res: getSettingsPath(SettingsPath.Billing) },
{ loc: AppPath.VerifyEmail, isLoggedIn: false, isWorkspaceSuspended: false, onboardingStatus: undefined, verifyEmailRedirectPath: '/nextPath?key=value', res: undefined },
{ loc: AppPath.VerifyEmail, isLoggedIn: false, isWorkspaceSuspended: false, onboardingStatus: undefined, res: undefined },
{ loc: AppPath.VerifyEmail, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.WORKSPACE_ACTIVATION, res: AppPath.CreateWorkspace },
{ loc: AppPath.VerifyEmail, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PROFILE_CREATION, res: AppPath.CreateProfile },
{ loc: AppPath.VerifyEmail, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.SYNC_EMAIL, res: AppPath.SyncEmails },
{ loc: AppPath.VerifyEmail, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.INVITE_TEAM, res: AppPath.InviteTeam },
{ loc: AppPath.VerifyEmail, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.BOOK_ONBOARDING, res: AppPath.BookCallDecision },
{ loc: AppPath.VerifyEmail, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: defaultHomePagePath },
{ loc: AppPath.VerifyEmail, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PLAN_REQUIRED, res: AppPath.PlanRequired },
{ loc: AppPath.VerifyEmail, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PLAN_REQUIRED, verifyEmailRedirectPath: '/nextPath?key=value', res: '/nextPath?key=value' },
{ loc: AppPath.VerifyEmail, hasAccessTokenPair: true, isWorkspaceSuspended: true, onboardingStatus: OnboardingStatus.COMPLETED, res: getSettingsPath(SettingsPath.Billing) },
{ loc: AppPath.VerifyEmail, hasAccessTokenPair: false, isWorkspaceSuspended: false, onboardingStatus: undefined, verifyEmailRedirectPath: '/nextPath?key=value', res: undefined },
{ loc: AppPath.VerifyEmail, hasAccessTokenPair: false, isWorkspaceSuspended: false, onboardingStatus: undefined, res: undefined },
{ loc: AppPath.VerifyEmail, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.WORKSPACE_ACTIVATION, res: AppPath.CreateWorkspace },
{ loc: AppPath.VerifyEmail, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PROFILE_CREATION, res: AppPath.CreateProfile },
{ loc: AppPath.VerifyEmail, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.SYNC_EMAIL, res: AppPath.SyncEmails },
{ loc: AppPath.VerifyEmail, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.INVITE_TEAM, res: AppPath.InviteTeam },
{ loc: AppPath.VerifyEmail, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.BOOK_ONBOARDING, res: AppPath.BookCallDecision },
{ loc: AppPath.VerifyEmail, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: defaultHomePagePath },
{ loc: AppPath.CreateWorkspace, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PLAN_REQUIRED, res: AppPath.PlanRequired },
{ loc: AppPath.CreateWorkspace, isLoggedIn: true, isWorkspaceSuspended: true, onboardingStatus: OnboardingStatus.COMPLETED, res: getSettingsPath(SettingsPath.Billing) },
{ loc: AppPath.CreateWorkspace, isLoggedIn: false, isWorkspaceSuspended: false, onboardingStatus: undefined, res: AppPath.SignInUp },
{ loc: AppPath.CreateWorkspace, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.WORKSPACE_ACTIVATION, res: undefined },
{ loc: AppPath.CreateWorkspace, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PROFILE_CREATION, res: AppPath.CreateProfile },
{ loc: AppPath.CreateWorkspace, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.SYNC_EMAIL, res: AppPath.SyncEmails },
{ loc: AppPath.CreateWorkspace, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.INVITE_TEAM, res: AppPath.InviteTeam },
{ loc: AppPath.CreateWorkspace, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.BOOK_ONBOARDING, res: AppPath.BookCallDecision },
{ loc: AppPath.CreateWorkspace, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: defaultHomePagePath },
{ loc: AppPath.CreateWorkspace, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PLAN_REQUIRED, res: AppPath.PlanRequired },
{ loc: AppPath.CreateWorkspace, hasAccessTokenPair: true, isWorkspaceSuspended: true, onboardingStatus: OnboardingStatus.COMPLETED, res: getSettingsPath(SettingsPath.Billing) },
{ loc: AppPath.CreateWorkspace, hasAccessTokenPair: false, isWorkspaceSuspended: false, onboardingStatus: undefined, res: AppPath.SignInUp },
{ loc: AppPath.CreateWorkspace, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.WORKSPACE_ACTIVATION, res: undefined },
{ loc: AppPath.CreateWorkspace, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PROFILE_CREATION, res: AppPath.CreateProfile },
{ loc: AppPath.CreateWorkspace, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.SYNC_EMAIL, res: AppPath.SyncEmails },
{ loc: AppPath.CreateWorkspace, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.INVITE_TEAM, res: AppPath.InviteTeam },
{ loc: AppPath.CreateWorkspace, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.BOOK_ONBOARDING, res: AppPath.BookCallDecision },
{ loc: AppPath.CreateWorkspace, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: defaultHomePagePath },
{ loc: AppPath.CreateProfile, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PLAN_REQUIRED, res: AppPath.PlanRequired },
{ loc: AppPath.CreateProfile, isLoggedIn: true, isWorkspaceSuspended: true, onboardingStatus: OnboardingStatus.COMPLETED, res: getSettingsPath(SettingsPath.Billing) },
{ loc: AppPath.CreateProfile, isLoggedIn: false, isWorkspaceSuspended: false, onboardingStatus: undefined, res: AppPath.SignInUp },
{ loc: AppPath.CreateProfile, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.WORKSPACE_ACTIVATION, res: AppPath.CreateWorkspace },
{ loc: AppPath.CreateProfile, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PROFILE_CREATION, res: undefined },
{ loc: AppPath.CreateProfile, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.SYNC_EMAIL, res: AppPath.SyncEmails },
{ loc: AppPath.CreateProfile, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.INVITE_TEAM, res: AppPath.InviteTeam },
{ loc: AppPath.CreateProfile, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.BOOK_ONBOARDING, res: AppPath.BookCallDecision },
{ loc: AppPath.CreateProfile, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: defaultHomePagePath },
{ loc: AppPath.CreateProfile, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PLAN_REQUIRED, res: AppPath.PlanRequired },
{ loc: AppPath.CreateProfile, hasAccessTokenPair: true, isWorkspaceSuspended: true, onboardingStatus: OnboardingStatus.COMPLETED, res: getSettingsPath(SettingsPath.Billing) },
{ loc: AppPath.CreateProfile, hasAccessTokenPair: false, isWorkspaceSuspended: false, onboardingStatus: undefined, res: AppPath.SignInUp },
{ loc: AppPath.CreateProfile, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.WORKSPACE_ACTIVATION, res: AppPath.CreateWorkspace },
{ loc: AppPath.CreateProfile, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PROFILE_CREATION, res: undefined },
{ loc: AppPath.CreateProfile, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.SYNC_EMAIL, res: AppPath.SyncEmails },
{ loc: AppPath.CreateProfile, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.INVITE_TEAM, res: AppPath.InviteTeam },
{ loc: AppPath.CreateProfile, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.BOOK_ONBOARDING, res: AppPath.BookCallDecision },
{ loc: AppPath.CreateProfile, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: defaultHomePagePath },
{ loc: AppPath.SyncEmails, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PLAN_REQUIRED, res: AppPath.PlanRequired },
{ loc: AppPath.SyncEmails, isLoggedIn: true, isWorkspaceSuspended: true, onboardingStatus: OnboardingStatus.COMPLETED, res: getSettingsPath(SettingsPath.Billing) },
{ loc: AppPath.SyncEmails, isLoggedIn: false, isWorkspaceSuspended: false, onboardingStatus: undefined, res: AppPath.SignInUp },
{ loc: AppPath.SyncEmails, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.WORKSPACE_ACTIVATION, res: AppPath.CreateWorkspace },
{ loc: AppPath.SyncEmails, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PROFILE_CREATION, res: AppPath.CreateProfile },
{ loc: AppPath.SyncEmails, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.SYNC_EMAIL, res: undefined },
{ loc: AppPath.SyncEmails, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.INVITE_TEAM, res: AppPath.InviteTeam },
{ loc: AppPath.SyncEmails, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.BOOK_ONBOARDING, res: AppPath.BookCallDecision },
{ loc: AppPath.SyncEmails, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: defaultHomePagePath },
{ loc: AppPath.SyncEmails, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PLAN_REQUIRED, res: AppPath.PlanRequired },
{ loc: AppPath.SyncEmails, hasAccessTokenPair: true, isWorkspaceSuspended: true, onboardingStatus: OnboardingStatus.COMPLETED, res: getSettingsPath(SettingsPath.Billing) },
{ loc: AppPath.SyncEmails, hasAccessTokenPair: false, isWorkspaceSuspended: false, onboardingStatus: undefined, res: AppPath.SignInUp },
{ loc: AppPath.SyncEmails, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.WORKSPACE_ACTIVATION, res: AppPath.CreateWorkspace },
{ loc: AppPath.SyncEmails, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PROFILE_CREATION, res: AppPath.CreateProfile },
{ loc: AppPath.SyncEmails, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.SYNC_EMAIL, res: undefined },
{ loc: AppPath.SyncEmails, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.INVITE_TEAM, res: AppPath.InviteTeam },
{ loc: AppPath.SyncEmails, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.BOOK_ONBOARDING, res: AppPath.BookCallDecision },
{ loc: AppPath.SyncEmails, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: defaultHomePagePath },
{ loc: AppPath.InviteTeam, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PLAN_REQUIRED, res: AppPath.PlanRequired },
{ loc: AppPath.InviteTeam, isLoggedIn: true, isWorkspaceSuspended: true, onboardingStatus: OnboardingStatus.COMPLETED, res: getSettingsPath(SettingsPath.Billing) },
{ loc: AppPath.InviteTeam, isLoggedIn: false, isWorkspaceSuspended: false, onboardingStatus: undefined, res: AppPath.SignInUp },
{ loc: AppPath.InviteTeam, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.WORKSPACE_ACTIVATION, res: AppPath.CreateWorkspace },
{ loc: AppPath.InviteTeam, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PROFILE_CREATION, res: AppPath.CreateProfile },
{ loc: AppPath.InviteTeam, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.SYNC_EMAIL, res: AppPath.SyncEmails },
{ loc: AppPath.InviteTeam, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.INVITE_TEAM, res: undefined },
{ loc: AppPath.InviteTeam, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.BOOK_ONBOARDING, res: AppPath.BookCallDecision },
{ loc: AppPath.InviteTeam, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: defaultHomePagePath },
{ loc: AppPath.InviteTeam, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PLAN_REQUIRED, res: AppPath.PlanRequired },
{ loc: AppPath.InviteTeam, hasAccessTokenPair: true, isWorkspaceSuspended: true, onboardingStatus: OnboardingStatus.COMPLETED, res: getSettingsPath(SettingsPath.Billing) },
{ loc: AppPath.InviteTeam, hasAccessTokenPair: false, isWorkspaceSuspended: false, onboardingStatus: undefined, res: AppPath.SignInUp },
{ loc: AppPath.InviteTeam, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.WORKSPACE_ACTIVATION, res: AppPath.CreateWorkspace },
{ loc: AppPath.InviteTeam, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PROFILE_CREATION, res: AppPath.CreateProfile },
{ loc: AppPath.InviteTeam, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.SYNC_EMAIL, res: AppPath.SyncEmails },
{ loc: AppPath.InviteTeam, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.INVITE_TEAM, res: undefined },
{ loc: AppPath.InviteTeam, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.BOOK_ONBOARDING, res: AppPath.BookCallDecision },
{ loc: AppPath.InviteTeam, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: defaultHomePagePath },
{ loc: AppPath.BookCallDecision, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PLAN_REQUIRED, res: undefined },
{ loc: AppPath.BookCallDecision, isLoggedIn: true, isWorkspaceSuspended: true, onboardingStatus: OnboardingStatus.COMPLETED, res: getSettingsPath(SettingsPath.Billing) },
{ loc: AppPath.BookCallDecision, isLoggedIn: false, isWorkspaceSuspended: false, onboardingStatus: undefined, res: AppPath.SignInUp },
{ loc: AppPath.BookCallDecision, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.WORKSPACE_ACTIVATION, res: undefined },
{ loc: AppPath.BookCallDecision, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PROFILE_CREATION, res: AppPath.CreateProfile },
{ loc: AppPath.BookCallDecision, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.SYNC_EMAIL, res: AppPath.SyncEmails },
{ loc: AppPath.BookCallDecision, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.INVITE_TEAM, res: AppPath.InviteTeam },
{ loc: AppPath.BookCallDecision, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.BOOK_ONBOARDING, res: undefined },
{ loc: AppPath.BookCallDecision, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: defaultHomePagePath },
{ loc: AppPath.BookCallDecision, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PLAN_REQUIRED, res: undefined },
{ loc: AppPath.BookCallDecision, hasAccessTokenPair: true, isWorkspaceSuspended: true, onboardingStatus: OnboardingStatus.COMPLETED, res: getSettingsPath(SettingsPath.Billing) },
{ loc: AppPath.BookCallDecision, hasAccessTokenPair: false, isWorkspaceSuspended: false, onboardingStatus: undefined, res: AppPath.SignInUp },
{ loc: AppPath.BookCallDecision, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.WORKSPACE_ACTIVATION, res: undefined },
{ loc: AppPath.BookCallDecision, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PROFILE_CREATION, res: AppPath.CreateProfile },
{ loc: AppPath.BookCallDecision, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.SYNC_EMAIL, res: AppPath.SyncEmails },
{ loc: AppPath.BookCallDecision, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.INVITE_TEAM, res: AppPath.InviteTeam },
{ loc: AppPath.BookCallDecision, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.BOOK_ONBOARDING, res: undefined },
{ loc: AppPath.BookCallDecision, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: defaultHomePagePath },
{ loc: AppPath.BookCall, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PLAN_REQUIRED, res: undefined },
{ loc: AppPath.BookCall, isLoggedIn: true, isWorkspaceSuspended: true, onboardingStatus: OnboardingStatus.COMPLETED, res: getSettingsPath(SettingsPath.Billing) },
{ loc: AppPath.BookCall, isLoggedIn: false, isWorkspaceSuspended: false, onboardingStatus: undefined, res: AppPath.SignInUp },
{ loc: AppPath.BookCall, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.WORKSPACE_ACTIVATION, res: undefined },
{ loc: AppPath.BookCall, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PROFILE_CREATION, res: AppPath.CreateProfile },
{ loc: AppPath.BookCall, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.SYNC_EMAIL, res: AppPath.SyncEmails },
{ loc: AppPath.BookCall, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.INVITE_TEAM, res: AppPath.InviteTeam },
{ loc: AppPath.BookCall, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.BOOK_ONBOARDING, res: undefined },
{ loc: AppPath.BookCall, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: defaultHomePagePath },
{ loc: AppPath.BookCall, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PLAN_REQUIRED, res: undefined },
{ loc: AppPath.BookCall, hasAccessTokenPair: true, isWorkspaceSuspended: true, onboardingStatus: OnboardingStatus.COMPLETED, res: getSettingsPath(SettingsPath.Billing) },
{ loc: AppPath.BookCall, hasAccessTokenPair: false, isWorkspaceSuspended: false, onboardingStatus: undefined, res: AppPath.SignInUp },
{ loc: AppPath.BookCall, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.WORKSPACE_ACTIVATION, res: undefined },
{ loc: AppPath.BookCall, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PROFILE_CREATION, res: AppPath.CreateProfile },
{ loc: AppPath.BookCall, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.SYNC_EMAIL, res: AppPath.SyncEmails },
{ loc: AppPath.BookCall, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.INVITE_TEAM, res: AppPath.InviteTeam },
{ loc: AppPath.BookCall, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.BOOK_ONBOARDING, res: undefined },
{ loc: AppPath.BookCall, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: defaultHomePagePath },
{ loc: AppPath.PlanRequired, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PLAN_REQUIRED, res: undefined },
{ loc: AppPath.PlanRequired, isLoggedIn: true, isWorkspaceSuspended: true, onboardingStatus: OnboardingStatus.COMPLETED, res: getSettingsPath(SettingsPath.Billing) },
{ loc: AppPath.PlanRequired, isLoggedIn: false, isWorkspaceSuspended: false, onboardingStatus: undefined, res: AppPath.SignInUp },
{ loc: AppPath.PlanRequired, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.WORKSPACE_ACTIVATION, res: AppPath.CreateWorkspace },
{ loc: AppPath.PlanRequired, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PROFILE_CREATION, res: AppPath.CreateProfile },
{ loc: AppPath.PlanRequired, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.SYNC_EMAIL, res: AppPath.SyncEmails },
{ loc: AppPath.PlanRequired, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.INVITE_TEAM, res: AppPath.InviteTeam },
{ loc: AppPath.PlanRequired, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.BOOK_ONBOARDING, res: AppPath.BookCallDecision },
{ loc: AppPath.PlanRequired, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: defaultHomePagePath },
{ loc: AppPath.PlanRequired, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PLAN_REQUIRED, res: undefined },
{ loc: AppPath.PlanRequired, hasAccessTokenPair: true, isWorkspaceSuspended: true, onboardingStatus: OnboardingStatus.COMPLETED, res: getSettingsPath(SettingsPath.Billing) },
{ loc: AppPath.PlanRequired, hasAccessTokenPair: false, isWorkspaceSuspended: false, onboardingStatus: undefined, res: AppPath.SignInUp },
{ loc: AppPath.PlanRequired, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.WORKSPACE_ACTIVATION, res: AppPath.CreateWorkspace },
{ loc: AppPath.PlanRequired, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PROFILE_CREATION, res: AppPath.CreateProfile },
{ loc: AppPath.PlanRequired, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.SYNC_EMAIL, res: AppPath.SyncEmails },
{ loc: AppPath.PlanRequired, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.INVITE_TEAM, res: AppPath.InviteTeam },
{ loc: AppPath.PlanRequired, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.BOOK_ONBOARDING, res: AppPath.BookCallDecision },
{ loc: AppPath.PlanRequired, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: defaultHomePagePath },
{ loc: AppPath.PlanRequiredSuccess, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PLAN_REQUIRED, res: undefined },
{ loc: AppPath.PlanRequiredSuccess, isLoggedIn: true, isWorkspaceSuspended: true, onboardingStatus: OnboardingStatus.COMPLETED, res: getSettingsPath(SettingsPath.Billing) },
{ loc: AppPath.PlanRequiredSuccess, isLoggedIn: false, isWorkspaceSuspended: false, onboardingStatus: undefined, res: AppPath.SignInUp },
{ loc: AppPath.PlanRequiredSuccess, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.WORKSPACE_ACTIVATION, res: AppPath.CreateWorkspace },
{ loc: AppPath.PlanRequiredSuccess, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PROFILE_CREATION, res: AppPath.CreateProfile },
{ loc: AppPath.PlanRequiredSuccess, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.SYNC_EMAIL, res: AppPath.SyncEmails },
{ loc: AppPath.PlanRequiredSuccess, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.INVITE_TEAM, res: AppPath.InviteTeam },
{ loc: AppPath.PlanRequiredSuccess, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.BOOK_ONBOARDING, res: AppPath.BookCallDecision },
{ loc: AppPath.PlanRequiredSuccess, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: defaultHomePagePath },
{ loc: AppPath.PlanRequiredSuccess, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PLAN_REQUIRED, res: undefined },
{ loc: AppPath.PlanRequiredSuccess, hasAccessTokenPair: true, isWorkspaceSuspended: true, onboardingStatus: OnboardingStatus.COMPLETED, res: getSettingsPath(SettingsPath.Billing) },
{ loc: AppPath.PlanRequiredSuccess, hasAccessTokenPair: false, isWorkspaceSuspended: false, onboardingStatus: undefined, res: AppPath.SignInUp },
{ loc: AppPath.PlanRequiredSuccess, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.WORKSPACE_ACTIVATION, res: AppPath.CreateWorkspace },
{ loc: AppPath.PlanRequiredSuccess, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PROFILE_CREATION, res: AppPath.CreateProfile },
{ loc: AppPath.PlanRequiredSuccess, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.SYNC_EMAIL, res: AppPath.SyncEmails },
{ loc: AppPath.PlanRequiredSuccess, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.INVITE_TEAM, res: AppPath.InviteTeam },
{ loc: AppPath.PlanRequiredSuccess, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.BOOK_ONBOARDING, res: AppPath.BookCallDecision },
{ loc: AppPath.PlanRequiredSuccess, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: defaultHomePagePath },
{ loc: AppPath.Index, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PLAN_REQUIRED, res: AppPath.PlanRequired },
{ loc: AppPath.Index, isLoggedIn: true, isWorkspaceSuspended: true, onboardingStatus: OnboardingStatus.COMPLETED, res: getSettingsPath(SettingsPath.Billing) },
{ loc: AppPath.Index, isLoggedIn: false, isWorkspaceSuspended: false, onboardingStatus: undefined, res: AppPath.SignInUp },
{ loc: AppPath.Index, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.WORKSPACE_ACTIVATION, res: AppPath.CreateWorkspace },
{ loc: AppPath.Index, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PROFILE_CREATION, res: AppPath.CreateProfile },
{ loc: AppPath.Index, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.SYNC_EMAIL, res: AppPath.SyncEmails },
{ loc: AppPath.Index, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.INVITE_TEAM, res: AppPath.InviteTeam },
{ loc: AppPath.Index, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.BOOK_ONBOARDING, res: AppPath.BookCallDecision },
{ loc: AppPath.Index, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: defaultHomePagePath },
{ loc: AppPath.Index, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PLAN_REQUIRED, res: AppPath.PlanRequired },
{ loc: AppPath.Index, hasAccessTokenPair: true, isWorkspaceSuspended: true, onboardingStatus: OnboardingStatus.COMPLETED, res: getSettingsPath(SettingsPath.Billing) },
{ loc: AppPath.Index, hasAccessTokenPair: false, isWorkspaceSuspended: false, onboardingStatus: undefined, res: AppPath.SignInUp },
{ loc: AppPath.Index, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.WORKSPACE_ACTIVATION, res: AppPath.CreateWorkspace },
{ loc: AppPath.Index, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PROFILE_CREATION, res: AppPath.CreateProfile },
{ loc: AppPath.Index, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.SYNC_EMAIL, res: AppPath.SyncEmails },
{ loc: AppPath.Index, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.INVITE_TEAM, res: AppPath.InviteTeam },
{ loc: AppPath.Index, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.BOOK_ONBOARDING, res: AppPath.BookCallDecision },
{ loc: AppPath.Index, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: defaultHomePagePath },
{ loc: AppPath.TasksPage, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PLAN_REQUIRED, res: AppPath.PlanRequired },
{ loc: AppPath.TasksPage, isLoggedIn: true, isWorkspaceSuspended: true, onboardingStatus: OnboardingStatus.COMPLETED, res: getSettingsPath(SettingsPath.Billing) },
{ loc: AppPath.TasksPage, isLoggedIn: false, isWorkspaceSuspended: false, onboardingStatus: undefined, res: AppPath.SignInUp },
{ loc: AppPath.TasksPage, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.WORKSPACE_ACTIVATION, res: AppPath.CreateWorkspace },
{ loc: AppPath.TasksPage, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PROFILE_CREATION, res: AppPath.CreateProfile },
{ loc: AppPath.TasksPage, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.SYNC_EMAIL, res: AppPath.SyncEmails },
{ loc: AppPath.TasksPage, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.INVITE_TEAM, res: AppPath.InviteTeam },
{ loc: AppPath.TasksPage, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.BOOK_ONBOARDING, res: AppPath.BookCallDecision },
{ loc: AppPath.TasksPage, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: undefined },
{ loc: AppPath.TasksPage, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PLAN_REQUIRED, res: AppPath.PlanRequired },
{ loc: AppPath.TasksPage, hasAccessTokenPair: true, isWorkspaceSuspended: true, onboardingStatus: OnboardingStatus.COMPLETED, res: getSettingsPath(SettingsPath.Billing) },
{ loc: AppPath.TasksPage, hasAccessTokenPair: false, isWorkspaceSuspended: false, onboardingStatus: undefined, res: AppPath.SignInUp },
{ loc: AppPath.TasksPage, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.WORKSPACE_ACTIVATION, res: AppPath.CreateWorkspace },
{ loc: AppPath.TasksPage, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PROFILE_CREATION, res: AppPath.CreateProfile },
{ loc: AppPath.TasksPage, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.SYNC_EMAIL, res: AppPath.SyncEmails },
{ loc: AppPath.TasksPage, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.INVITE_TEAM, res: AppPath.InviteTeam },
{ loc: AppPath.TasksPage, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.BOOK_ONBOARDING, res: AppPath.BookCallDecision },
{ loc: AppPath.TasksPage, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: undefined },
{ loc: AppPath.OpportunitiesPage, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PLAN_REQUIRED, res: AppPath.PlanRequired },
{ loc: AppPath.OpportunitiesPage, isLoggedIn: true, isWorkspaceSuspended: true, onboardingStatus: OnboardingStatus.COMPLETED, res: getSettingsPath(SettingsPath.Billing) },
{ loc: AppPath.OpportunitiesPage, isLoggedIn: false, isWorkspaceSuspended: false, onboardingStatus: undefined, res: AppPath.SignInUp },
{ loc: AppPath.OpportunitiesPage, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.WORKSPACE_ACTIVATION, res: AppPath.CreateWorkspace },
{ loc: AppPath.OpportunitiesPage, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PROFILE_CREATION, res: AppPath.CreateProfile },
{ loc: AppPath.OpportunitiesPage, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.SYNC_EMAIL, res: AppPath.SyncEmails },
{ loc: AppPath.OpportunitiesPage, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.INVITE_TEAM, res: AppPath.InviteTeam },
{ loc: AppPath.OpportunitiesPage, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.BOOK_ONBOARDING, res: AppPath.BookCallDecision },
{ loc: AppPath.OpportunitiesPage, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: undefined },
{ loc: AppPath.OpportunitiesPage, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PLAN_REQUIRED, res: AppPath.PlanRequired },
{ loc: AppPath.OpportunitiesPage, hasAccessTokenPair: true, isWorkspaceSuspended: true, onboardingStatus: OnboardingStatus.COMPLETED, res: getSettingsPath(SettingsPath.Billing) },
{ loc: AppPath.OpportunitiesPage, hasAccessTokenPair: false, isWorkspaceSuspended: false, onboardingStatus: undefined, res: AppPath.SignInUp },
{ loc: AppPath.OpportunitiesPage, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.WORKSPACE_ACTIVATION, res: AppPath.CreateWorkspace },
{ loc: AppPath.OpportunitiesPage, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PROFILE_CREATION, res: AppPath.CreateProfile },
{ loc: AppPath.OpportunitiesPage, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.SYNC_EMAIL, res: AppPath.SyncEmails },
{ loc: AppPath.OpportunitiesPage, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.INVITE_TEAM, res: AppPath.InviteTeam },
{ loc: AppPath.OpportunitiesPage, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.BOOK_ONBOARDING, res: AppPath.BookCallDecision },
{ loc: AppPath.OpportunitiesPage, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: undefined },
{ loc: AppPath.RecordIndexPage, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PLAN_REQUIRED, res: AppPath.PlanRequired },
{ loc: AppPath.RecordIndexPage, isLoggedIn: true, isWorkspaceSuspended: true, onboardingStatus: OnboardingStatus.COMPLETED, res: getSettingsPath(SettingsPath.Billing) },
{ loc: AppPath.RecordIndexPage, isLoggedIn: false, isWorkspaceSuspended: false, onboardingStatus: undefined, res: AppPath.SignInUp },
{ loc: AppPath.RecordIndexPage, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.WORKSPACE_ACTIVATION, res: AppPath.CreateWorkspace },
{ loc: AppPath.RecordIndexPage, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PROFILE_CREATION, res: AppPath.CreateProfile },
{ loc: AppPath.RecordIndexPage, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.SYNC_EMAIL, res: AppPath.SyncEmails },
{ loc: AppPath.RecordIndexPage, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.INVITE_TEAM, res: AppPath.InviteTeam },
{ loc: AppPath.RecordIndexPage, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.BOOK_ONBOARDING, res: AppPath.BookCallDecision },
{ loc: AppPath.RecordIndexPage, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: undefined },
{ loc: AppPath.RecordIndexPage, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: undefined, objectNamePluralFromParams: 'existing-object', objectNamePluralFromMetadata: 'existing-object' },
{ loc: AppPath.RecordIndexPage, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: AppPath.NotFound, objectNamePluralFromParams: 'non-existing-object', objectNamePluralFromMetadata: 'existing-object' },
{ loc: AppPath.RecordIndexPage, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PLAN_REQUIRED, res: AppPath.PlanRequired },
{ loc: AppPath.RecordIndexPage, hasAccessTokenPair: true, isWorkspaceSuspended: true, onboardingStatus: OnboardingStatus.COMPLETED, res: getSettingsPath(SettingsPath.Billing) },
{ loc: AppPath.RecordIndexPage, hasAccessTokenPair: false, isWorkspaceSuspended: false, onboardingStatus: undefined, res: AppPath.SignInUp },
{ loc: AppPath.RecordIndexPage, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.WORKSPACE_ACTIVATION, res: AppPath.CreateWorkspace },
{ loc: AppPath.RecordIndexPage, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PROFILE_CREATION, res: AppPath.CreateProfile },
{ loc: AppPath.RecordIndexPage, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.SYNC_EMAIL, res: AppPath.SyncEmails },
{ loc: AppPath.RecordIndexPage, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.INVITE_TEAM, res: AppPath.InviteTeam },
{ loc: AppPath.RecordIndexPage, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.BOOK_ONBOARDING, res: AppPath.BookCallDecision },
{ loc: AppPath.RecordIndexPage, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: undefined },
{ loc: AppPath.RecordIndexPage, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: undefined, objectNamePluralFromParams: 'existing-object', objectNamePluralFromMetadata: 'existing-object' },
{ loc: AppPath.RecordIndexPage, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: AppPath.NotFound, objectNamePluralFromParams: 'non-existing-object', objectNamePluralFromMetadata: 'existing-object' },
{ loc: AppPath.RecordShowPage, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PLAN_REQUIRED, res: AppPath.PlanRequired },
{ loc: AppPath.RecordShowPage, isLoggedIn: true, isWorkspaceSuspended: true, onboardingStatus: OnboardingStatus.COMPLETED, res: getSettingsPath(SettingsPath.Billing) },
{ loc: AppPath.RecordShowPage, isLoggedIn: false, isWorkspaceSuspended: false, onboardingStatus: undefined, res: AppPath.SignInUp },
{ loc: AppPath.RecordShowPage, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.WORKSPACE_ACTIVATION, res: AppPath.CreateWorkspace },
{ loc: AppPath.RecordShowPage, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PROFILE_CREATION, res: AppPath.CreateProfile },
{ loc: AppPath.RecordShowPage, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.SYNC_EMAIL, res: AppPath.SyncEmails },
{ loc: AppPath.RecordShowPage, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.INVITE_TEAM, res: AppPath.InviteTeam },
{ loc: AppPath.RecordShowPage, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.BOOK_ONBOARDING, res: AppPath.BookCallDecision },
{ loc: AppPath.RecordShowPage, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: undefined },
{ loc: AppPath.RecordShowPage, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PLAN_REQUIRED, res: AppPath.PlanRequired },
{ loc: AppPath.RecordShowPage, hasAccessTokenPair: true, isWorkspaceSuspended: true, onboardingStatus: OnboardingStatus.COMPLETED, res: getSettingsPath(SettingsPath.Billing) },
{ loc: AppPath.RecordShowPage, hasAccessTokenPair: false, isWorkspaceSuspended: false, onboardingStatus: undefined, res: AppPath.SignInUp },
{ loc: AppPath.RecordShowPage, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.WORKSPACE_ACTIVATION, res: AppPath.CreateWorkspace },
{ loc: AppPath.RecordShowPage, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PROFILE_CREATION, res: AppPath.CreateProfile },
{ loc: AppPath.RecordShowPage, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.SYNC_EMAIL, res: AppPath.SyncEmails },
{ loc: AppPath.RecordShowPage, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.INVITE_TEAM, res: AppPath.InviteTeam },
{ loc: AppPath.RecordShowPage, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.BOOK_ONBOARDING, res: AppPath.BookCallDecision },
{ loc: AppPath.RecordShowPage, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: undefined },
{ loc: AppPath.SettingsCatchAll, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PLAN_REQUIRED, res: AppPath.PlanRequired },
{ loc: AppPath.SettingsCatchAll, isLoggedIn: true, isWorkspaceSuspended: true, onboardingStatus: OnboardingStatus.COMPLETED, res: undefined },
{ loc: AppPath.SettingsCatchAll, isLoggedIn: false, isWorkspaceSuspended: false, onboardingStatus: undefined, res: AppPath.SignInUp },
{ loc: AppPath.SettingsCatchAll, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.WORKSPACE_ACTIVATION, res: AppPath.CreateWorkspace },
{ loc: AppPath.SettingsCatchAll, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PROFILE_CREATION, res: AppPath.CreateProfile },
{ loc: AppPath.SettingsCatchAll, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.SYNC_EMAIL, res: AppPath.SyncEmails },
{ loc: AppPath.SettingsCatchAll, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.INVITE_TEAM, res: AppPath.InviteTeam },
{ loc: AppPath.SettingsCatchAll, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.BOOK_ONBOARDING, res: AppPath.BookCallDecision },
{ loc: AppPath.SettingsCatchAll, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: undefined },
{ loc: AppPath.SettingsCatchAll, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PLAN_REQUIRED, res: AppPath.PlanRequired },
{ loc: AppPath.SettingsCatchAll, hasAccessTokenPair: true, isWorkspaceSuspended: true, onboardingStatus: OnboardingStatus.COMPLETED, res: undefined },
{ loc: AppPath.SettingsCatchAll, hasAccessTokenPair: false, isWorkspaceSuspended: false, onboardingStatus: undefined, res: AppPath.SignInUp },
{ loc: AppPath.SettingsCatchAll, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.WORKSPACE_ACTIVATION, res: AppPath.CreateWorkspace },
{ loc: AppPath.SettingsCatchAll, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PROFILE_CREATION, res: AppPath.CreateProfile },
{ loc: AppPath.SettingsCatchAll, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.SYNC_EMAIL, res: AppPath.SyncEmails },
{ loc: AppPath.SettingsCatchAll, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.INVITE_TEAM, res: AppPath.InviteTeam },
{ loc: AppPath.SettingsCatchAll, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.BOOK_ONBOARDING, res: AppPath.BookCallDecision },
{ loc: AppPath.SettingsCatchAll, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: undefined },
{ loc: AppPath.DevelopersCatchAll, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PLAN_REQUIRED, res: AppPath.PlanRequired },
{ loc: AppPath.DevelopersCatchAll, isLoggedIn: true, isWorkspaceSuspended: true, onboardingStatus: OnboardingStatus.COMPLETED, res: getSettingsPath(SettingsPath.Billing) },
{ loc: AppPath.DevelopersCatchAll, isLoggedIn: false, isWorkspaceSuspended: false, onboardingStatus: undefined, res: AppPath.SignInUp },
{ loc: AppPath.DevelopersCatchAll, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.WORKSPACE_ACTIVATION, res: AppPath.CreateWorkspace },
{ loc: AppPath.DevelopersCatchAll, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PROFILE_CREATION, res: AppPath.CreateProfile },
{ loc: AppPath.DevelopersCatchAll, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.SYNC_EMAIL, res: AppPath.SyncEmails },
{ loc: AppPath.DevelopersCatchAll, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.INVITE_TEAM, res: AppPath.InviteTeam },
{ loc: AppPath.DevelopersCatchAll, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.BOOK_ONBOARDING, res: AppPath.BookCallDecision },
{ loc: AppPath.DevelopersCatchAll, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: undefined },
{ loc: AppPath.DevelopersCatchAll, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PLAN_REQUIRED, res: AppPath.PlanRequired },
{ loc: AppPath.DevelopersCatchAll, hasAccessTokenPair: true, isWorkspaceSuspended: true, onboardingStatus: OnboardingStatus.COMPLETED, res: getSettingsPath(SettingsPath.Billing) },
{ loc: AppPath.DevelopersCatchAll, hasAccessTokenPair: false, isWorkspaceSuspended: false, onboardingStatus: undefined, res: AppPath.SignInUp },
{ loc: AppPath.DevelopersCatchAll, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.WORKSPACE_ACTIVATION, res: AppPath.CreateWorkspace },
{ loc: AppPath.DevelopersCatchAll, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PROFILE_CREATION, res: AppPath.CreateProfile },
{ loc: AppPath.DevelopersCatchAll, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.SYNC_EMAIL, res: AppPath.SyncEmails },
{ loc: AppPath.DevelopersCatchAll, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.INVITE_TEAM, res: AppPath.InviteTeam },
{ loc: AppPath.DevelopersCatchAll, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.BOOK_ONBOARDING, res: AppPath.BookCallDecision },
{ loc: AppPath.DevelopersCatchAll, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: undefined },
{ loc: AppPath.Authorize, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PLAN_REQUIRED, res: AppPath.PlanRequired },
{ loc: AppPath.Authorize, isLoggedIn: true, isWorkspaceSuspended: true, onboardingStatus: OnboardingStatus.COMPLETED, res: getSettingsPath(SettingsPath.Billing) },
{ loc: AppPath.Authorize, isLoggedIn: false, isWorkspaceSuspended: false, onboardingStatus: undefined, res: AppPath.SignInUp },
{ loc: AppPath.Authorize, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.WORKSPACE_ACTIVATION, res: AppPath.CreateWorkspace },
{ loc: AppPath.Authorize, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PROFILE_CREATION, res: AppPath.CreateProfile },
{ loc: AppPath.Authorize, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.SYNC_EMAIL, res: AppPath.SyncEmails },
{ loc: AppPath.Authorize, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.INVITE_TEAM, res: AppPath.InviteTeam },
{ loc: AppPath.Authorize, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.BOOK_ONBOARDING, res: AppPath.BookCallDecision },
{ loc: AppPath.Authorize, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: undefined },
{ loc: AppPath.Authorize, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PLAN_REQUIRED, res: AppPath.PlanRequired },
{ loc: AppPath.Authorize, hasAccessTokenPair: true, isWorkspaceSuspended: true, onboardingStatus: OnboardingStatus.COMPLETED, res: getSettingsPath(SettingsPath.Billing) },
{ loc: AppPath.Authorize, hasAccessTokenPair: false, isWorkspaceSuspended: false, onboardingStatus: undefined, res: AppPath.SignInUp },
{ loc: AppPath.Authorize, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.WORKSPACE_ACTIVATION, res: AppPath.CreateWorkspace },
{ loc: AppPath.Authorize, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PROFILE_CREATION, res: AppPath.CreateProfile },
{ loc: AppPath.Authorize, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.SYNC_EMAIL, res: AppPath.SyncEmails },
{ loc: AppPath.Authorize, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.INVITE_TEAM, res: AppPath.InviteTeam },
{ loc: AppPath.Authorize, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.BOOK_ONBOARDING, res: AppPath.BookCallDecision },
{ loc: AppPath.Authorize, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: undefined },
{ loc: AppPath.NotFoundWildcard, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PLAN_REQUIRED, res: AppPath.PlanRequired },
{ loc: AppPath.NotFoundWildcard, isLoggedIn: true, isWorkspaceSuspended: true, onboardingStatus: OnboardingStatus.COMPLETED, res: getSettingsPath(SettingsPath.Billing) },
{ loc: AppPath.NotFoundWildcard, isLoggedIn: false, isWorkspaceSuspended: false, onboardingStatus: undefined, res: AppPath.SignInUp },
{ loc: AppPath.NotFoundWildcard, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.WORKSPACE_ACTIVATION, res: AppPath.CreateWorkspace },
{ loc: AppPath.NotFoundWildcard, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PROFILE_CREATION, res: AppPath.CreateProfile },
{ loc: AppPath.NotFoundWildcard, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.SYNC_EMAIL, res: AppPath.SyncEmails },
{ loc: AppPath.NotFoundWildcard, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.INVITE_TEAM, res: AppPath.InviteTeam },
{ loc: AppPath.NotFoundWildcard, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.BOOK_ONBOARDING, res: AppPath.BookCallDecision },
{ loc: AppPath.NotFoundWildcard, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: undefined },
{ loc: AppPath.NotFoundWildcard, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PLAN_REQUIRED, res: AppPath.PlanRequired },
{ loc: AppPath.NotFoundWildcard, hasAccessTokenPair: true, isWorkspaceSuspended: true, onboardingStatus: OnboardingStatus.COMPLETED, res: getSettingsPath(SettingsPath.Billing) },
{ loc: AppPath.NotFoundWildcard, hasAccessTokenPair: false, isWorkspaceSuspended: false, onboardingStatus: undefined, res: AppPath.SignInUp },
{ loc: AppPath.NotFoundWildcard, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.WORKSPACE_ACTIVATION, res: AppPath.CreateWorkspace },
{ loc: AppPath.NotFoundWildcard, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PROFILE_CREATION, res: AppPath.CreateProfile },
{ loc: AppPath.NotFoundWildcard, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.SYNC_EMAIL, res: AppPath.SyncEmails },
{ loc: AppPath.NotFoundWildcard, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.INVITE_TEAM, res: AppPath.InviteTeam },
{ loc: AppPath.NotFoundWildcard, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.BOOK_ONBOARDING, res: AppPath.BookCallDecision },
{ loc: AppPath.NotFoundWildcard, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: undefined },
{ loc: AppPath.NotFound, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PLAN_REQUIRED, res: AppPath.PlanRequired },
{ loc: AppPath.NotFound, isLoggedIn: true, isWorkspaceSuspended: true, onboardingStatus: OnboardingStatus.COMPLETED, res: getSettingsPath(SettingsPath.Billing) },
{ loc: AppPath.NotFound, isLoggedIn: false, isWorkspaceSuspended: false, onboardingStatus: undefined, res: AppPath.SignInUp },
{ loc: AppPath.NotFound, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.WORKSPACE_ACTIVATION, res: AppPath.CreateWorkspace },
{ loc: AppPath.NotFound, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PROFILE_CREATION, res: AppPath.CreateProfile },
{ loc: AppPath.NotFound, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.SYNC_EMAIL, res: AppPath.SyncEmails },
{ loc: AppPath.NotFound, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.INVITE_TEAM, res: AppPath.InviteTeam },
{ loc: AppPath.NotFound, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.BOOK_ONBOARDING, res: AppPath.BookCallDecision },
{ loc: AppPath.NotFound, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: undefined },
{ loc: AppPath.NotFound, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PLAN_REQUIRED, res: AppPath.PlanRequired },
{ loc: AppPath.NotFound, hasAccessTokenPair: true, isWorkspaceSuspended: true, onboardingStatus: OnboardingStatus.COMPLETED, res: getSettingsPath(SettingsPath.Billing) },
{ loc: AppPath.NotFound, hasAccessTokenPair: false, isWorkspaceSuspended: false, onboardingStatus: undefined, res: AppPath.SignInUp },
{ loc: AppPath.NotFound, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.WORKSPACE_ACTIVATION, res: AppPath.CreateWorkspace },
{ loc: AppPath.NotFound, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PROFILE_CREATION, res: AppPath.CreateProfile },
{ loc: AppPath.NotFound, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.SYNC_EMAIL, res: AppPath.SyncEmails },
{ loc: AppPath.NotFound, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.INVITE_TEAM, res: AppPath.InviteTeam },
{ loc: AppPath.NotFound, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.BOOK_ONBOARDING, res: AppPath.BookCallDecision },
{ loc: AppPath.NotFound, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: undefined },
// returnToPath: should redirect to saved path instead of defaultHomePagePath
{ loc: AppPath.Verify, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, returnToPath: '/authorize?clientId=abc', res: '/authorize?clientId=abc' },
{ loc: AppPath.SignInUp, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, returnToPath: '/objects/tasks', res: '/objects/tasks' },
{ loc: AppPath.Index, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, returnToPath: '/settings/api-keys', res: '/settings/api-keys' },
{ loc: AppPath.Verify, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, returnToPath: '/authorize?clientId=abc', res: '/authorize?clientId=abc' },
{ loc: AppPath.SignInUp, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, returnToPath: '/objects/tasks', res: '/objects/tasks' },
{ loc: AppPath.Index, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, returnToPath: '/settings/api-keys', res: '/settings/api-keys' },
// isOnAWorkspace:false — on default domain, don't redirect to returnToPath or defaultHomePagePath from auth pages
{ loc: AppPath.Verify, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, isOnAWorkspace: false, res: undefined },
{ loc: AppPath.SignInUp, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, isOnAWorkspace: false, res: undefined },
{ loc: AppPath.Verify, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, isOnAWorkspace: false, res: undefined },
{ loc: AppPath.SignInUp, hasAccessTokenPair: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, isOnAWorkspace: false, res: undefined },
];
describe('usePageChangeEffectNavigateLocation', () => {
@@ -344,7 +344,7 @@ describe('usePageChangeEffectNavigateLocation', () => {
loc,
onboardingStatus,
isWorkspaceSuspended,
isLoggedIn,
hasAccessTokenPair,
isOnAWorkspace,
objectNamePluralFromParams,
objectNamePluralFromMetadata,
@@ -355,7 +355,7 @@ describe('usePageChangeEffectNavigateLocation', () => {
setupMockIsMatchingLocation(loc);
setupMockOnboardingStatus(onboardingStatus);
setupMockIsWorkspaceActivationStatusEqualsTo(isWorkspaceSuspended);
setupMockIsLogged(isLoggedIn);
setupMockHasAccessTokenPair(hasAccessTokenPair);
setupMockIsOnAWorkspace(isOnAWorkspace ?? true);
setupMockUseParams(objectNamePluralFromParams);
setupMockState(
@@ -1,7 +1,7 @@
import { verifyEmailRedirectPathState } from '@/app/states/verifyEmailRedirectPathState';
import { ONBOARDING_PATHS } from '@/auth/constants/OnboardingPaths';
import { ONGOING_USER_CREATION_PATHS } from '@/auth/constants/OngoingUserCreationPaths';
import { useIsLogged } from '@/auth/hooks/useIsLogged';
import { useHasAccessTokenPair } from '@/auth/hooks/useHasAccessTokenPair';
import { returnToPathState } from '@/auth/states/returnToPathState';
import { calendarBookingPageIdState } from '@/client-config/states/calendarBookingPageIdState';
import { useIsCurrentLocationOnAWorkspace } from '@/domain-manager/hooks/useIsCurrentLocationOnAWorkspace';
@@ -26,7 +26,7 @@ const readReturnToPathFromUrlSearchParams = (): string | null => {
};
export const usePageChangeEffectNavigateLocation = () => {
const isLoggedIn = useIsLogged();
const hasAccessTokenPair = useHasAccessTokenPair();
const { isOnAWorkspace } = useIsCurrentLocationOnAWorkspace();
const onboardingStatus = useOnboardingStatus();
const isWorkspaceSuspended = useIsWorkspaceActivationStatusEqualsTo(
@@ -54,7 +54,7 @@ export const usePageChangeEffectNavigateLocation = () => {
: readReturnToPathFromUrlSearchParams();
if (
(!isLoggedIn || (isLoggedIn && !isOnAWorkspace)) &&
(!hasAccessTokenPair || (hasAccessTokenPair && !isOnAWorkspace)) &&
!someMatchingLocationOf([
...ONGOING_USER_CREATION_PATHS,
AppPath.ResetPassword,
@@ -140,13 +140,13 @@ export const usePageChangeEffectNavigateLocation = () => {
...ONGOING_USER_CREATION_PATHS,
]) &&
!isMatchingLocation(location, AppPath.ResetPassword) &&
isLoggedIn &&
hasAccessTokenPair &&
isOnAWorkspace
) {
return resolvedReturnToPath ?? defaultHomePagePath;
}
if (isMatchingLocation(location, AppPath.Index) && isLoggedIn) {
if (isMatchingLocation(location, AppPath.Index) && hasAccessTokenPair) {
return resolvedReturnToPath ?? defaultHomePagePath;
}
@@ -6,11 +6,11 @@ import {
PageDecorator,
type PageDecoratorArgs,
} from '~/testing/decorators/PageDecorator';
import { PrefetchLoadingDecorator } from '~/testing/decorators/PrefetchLoadingDecorator';
import { LoadingDecorator } from '~/testing/decorators/LoadingDecorator';
import { graphqlMocks } from '~/testing/graphqlMocks';
const meta: Meta<PageDecoratorArgs> = {
title: 'App/Loading/PrefetchLoading',
title: 'App/Loading',
component: RecordIndexPage,
args: {
routePath: '/objects/:objectNamePlural',
@@ -20,7 +20,7 @@ const meta: Meta<PageDecoratorArgs> = {
},
parameters: {
msw: graphqlMocks,
prefetchLoadingSetDelay: 1000,
loadingSetDelay: 1000,
},
tags: ['no-tests'],
};
@@ -32,7 +32,7 @@ export type Story = StoryObj<typeof RecordIndexPage>;
export const Default: Story = {
// oxlint-disable-next-line @typescripttypescript/ban-ts-comment
// @ts-ignore
decorators: [PrefetchLoadingDecorator, PageDecorator],
decorators: [LoadingDecorator, PageDecorator],
play: async ({ canvasElement }) => {
const canvas = within(canvasElement);
@@ -1,4 +1,4 @@
import { getOperationName } from '@apollo/client/utilities';
import { getOperationName } from '~/utils/getOperationName';
import { type Meta, type StoryObj } from '@storybook/react-vite';
import { HttpResponse, graphql, http } from 'msw';
import { expect, within } from 'storybook/test';
+343 -80
View File
@@ -663,10 +663,10 @@ msgstr "Oor hierdie werkruimte"
msgid "Access workspace data"
msgstr ""
#. js-lingui-id: c2UA7k
#. js-lingui-id: W5nhmk
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Access your workspace data from your favorite MCP client like Claude Desktop, Windsurf or Cursor."
msgstr "Kry toegang tot jou werksruimte data vanaf jou gunsteling MCP-kliënt soos Claude Desktop, Windsurf of Cursor."
msgid "Access your workspace data from your favorite MCP client like Claude Desktop, Claude Code, Cursor, or ChatGPT. Once connected, try: \"Show me the 5 most recently created companies\" or \"Create a new person named Jane Doe\"."
msgstr ""
#. js-lingui-id: u2Cycw
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionTabEnvironmentVariablesSection.tsx
@@ -752,23 +752,37 @@ msgid "Actions users can perform on this object"
msgstr "Aksies gebruikers kan uitvoer op hierdie voorwerp"
#. js-lingui-id: FQBaXG
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/data-model/SettingsObjectFieldEdit.tsx
#: src/pages/settings/ai/SettingsSkillForm.tsx
#: src/pages/settings/ai/components/SettingsSkillInactiveMenuDropDown.tsx
#: src/modules/settings/security/components/SSO/SettingsSecuritySSORowDropdownMenu.tsx
#: src/modules/settings/data-model/objects/components/SettingsObjectInactiveMenuDropDown.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectFieldDisabledActionDropdown.tsx
#: src/modules/information-banner/components/enterprise/InformationBannerLegacyEnterpriseKey.tsx
#: src/modules/command-menu-item/record/constants/WorkflowCommandMenuItemsConfig.tsx
msgid "Activate"
msgstr "Aktiveer"
#. js-lingui-id: eqeFkF
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Activate Enterprise Key"
msgstr ""
#. js-lingui-id: tu8A/k
#: src/modules/command-menu-item/record/constants/WorkflowCommandMenuItemsConfig.tsx
msgid "Activate Workflow"
msgstr "Aktiveer Werkstroom"
#. js-lingui-id: jSZacs
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Activating..."
msgstr ""
#. js-lingui-id: F6pfE9
#: src/pages/settings/SettingsProfile.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/settings/domains/components/SettingsWorkspaceDomainCard.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobsTable.tsx
msgid "Active"
@@ -806,6 +820,13 @@ msgstr "Voeg \"{trimmedName}\" by opsies"
msgid "Add a {objectLabelSingular}"
msgstr "Voeg 'n {objectLabelSingular} by"
#. js-lingui-id: 7W8nJr
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationUngroupedEditor.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
msgid "Add a Group"
msgstr ""
#. js-lingui-id: CZDwqQ
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
@@ -818,16 +839,10 @@ msgid "Add a node"
msgstr "Voeg 'n nodus by"
#. js-lingui-id: nGv1DN
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubView.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
msgid "Add a record"
msgstr ""
#. js-lingui-id: r8W+9y
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationUngroupedEditor.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
msgid "Add a Section"
msgstr ""
#. js-lingui-id: eMc2xs
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
msgid "Add a step"
@@ -915,11 +930,6 @@ msgstr "Voeg filterreël by"
msgid "Add first filter"
msgstr "Voeg eerste filter by"
#. js-lingui-id: //rVZt
#: src/modules/favorites/favorite-folder-picker/components/FavoriteFolderPickerFooter.tsx
msgid "Add folder"
msgstr "Voeg vouer by"
#. js-lingui-id: 7XzAKI
#: src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowEditActionFormBuilder.tsx
msgid "Add inputs to your form"
@@ -1085,7 +1095,6 @@ msgid "Add to Favorite"
msgstr "Voeg by tot gunstelinge"
#. js-lingui-id: pBsoKL
#: src/modules/favorites/components/PageFavoriteButton.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/mock/command-menu-items.mock.tsx
@@ -1429,7 +1438,7 @@ msgid "All set!"
msgstr "Alles reg!"
#. js-lingui-id: CHvT6e
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemObjectFlow.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemObjectSystemPickerSubPage.tsx
msgid "All system objects are already in the sidebar"
msgstr ""
@@ -1574,6 +1583,7 @@ msgstr "'n Fout het voorgekom tydens die oplaai van die prent."
#. js-lingui-id: XyOToQ
#: src/utils/get-error-message-from-apollo-error.util.ts
#: src/utils/get-error-message-from-apollo-error.util.ts
#: src/modules/views/hooks/internal/usePerformViewSortAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
@@ -1664,12 +1674,14 @@ msgstr "API"
#. js-lingui-id: 0RqpZr
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "API & Webhooks"
msgstr "API & Webtuistes"
#. js-lingui-id: yRnk5W
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
#: src/modules/settings/playground/components/PlaygroundSetupForm.tsx
msgid "API Key"
msgstr "API-sleutel"
@@ -1940,6 +1952,7 @@ msgstr "Oplopend"
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/constants/EngineComponentKeyComponentMap.tsx
msgid "Ask AI"
msgstr "Vra AI"
@@ -2078,6 +2091,11 @@ msgstr ""
msgid "Attachments"
msgstr "Aanhegsels"
#. js-lingui-id: y2W2Hg
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Audit logs"
msgstr ""
#. js-lingui-id: EPEFrH
#: src/pages/settings/security/SettingsSecurity.tsx
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
@@ -2114,6 +2132,11 @@ msgstr "Magtiging"
msgid "Authentication failed"
msgstr "Magtiging het misluk"
#. js-lingui-id: TxT0ER
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Authentication method"
msgstr ""
#. js-lingui-id: H7qgYQ
#: src/pages/settings/SettingsTwoFactorAuthenticationMethod.tsx
msgid "Authenticator app"
@@ -2306,6 +2329,11 @@ msgstr "tussen die {startOrdinal} en {endOrdinal} van die maand"
msgid "Billing"
msgstr "Fakturering"
#. js-lingui-id: dSjFxR
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Billing history"
msgstr ""
#. js-lingui-id: nJGwRf
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
msgid "Billing interval"
@@ -2563,6 +2591,7 @@ msgid "Cancel metered tier switching?"
msgstr "Kanselleer gemeterde vlakwisseling?"
#. js-lingui-id: rRK/Lf
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/SettingsBillingContent.tsx
msgid "Cancel Plan"
msgstr "Kanselleer Plan"
@@ -2578,10 +2607,26 @@ msgid "Cancel plan switching?"
msgstr "Kanselleer planwisseling?"
#. js-lingui-id: N6gPiD
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/SettingsBillingContent.tsx
msgid "Cancel your subscription"
msgstr "Kanselleer jou intekening"
#. js-lingui-id: GGWsTU
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Canceled"
msgstr ""
#. js-lingui-id: y4uH7j
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Cancelling"
msgstr ""
#. js-lingui-id: WbPx+C
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Cancels on"
msgstr ""
#. js-lingui-id: XDbjjW
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCustomView.tsx
msgid "Cannot delete the only view"
@@ -3077,11 +3122,6 @@ msgstr ""
msgid "Configure fallback login methods for users with SSO bypass permissions"
msgstr "Konfigureer terugval-aanmeldmetodes vir gebruikers met SSO omseil toestemmings"
#. js-lingui-id: c7wznw
#: src/modules/side-panel/pages/page-layout/utils/getPageLayoutPageTitle.ts
msgid "Configure filters"
msgstr "Stel filters op"
#. js-lingui-id: ghdb7+
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelsGeneral.tsx
msgid "Configure how we should display your events in your calendar"
@@ -3279,6 +3319,7 @@ msgstr ""
#: src/modules/spreadsheet-import/steps/components/SelectHeaderStep/SelectHeaderStep.tsx
#: src/modules/spreadsheet-import/steps/components/MatchColumnsStep/MatchColumnsStep.tsx
#: src/modules/spreadsheet-import/components/StepNavigationButton.tsx
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
#: src/modules/auth/sign-in-up/components/internal/SignInUpWithCredentials.tsx
msgid "Continue"
msgstr "Gaan voort"
@@ -3438,6 +3479,21 @@ msgstr "Koste per 1k ekstra krediette"
msgid "Could not delete approved access domain"
msgstr "Kon nie goedgekeurde toegangsdomein uitvee nie"
#. js-lingui-id: KqYYBp
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Could not open billing portal. Please check your enterprise key is present, or contact support."
msgstr ""
#. js-lingui-id: ZuI4Sl
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Could not open Stripe. Please contact support."
msgstr ""
#. js-lingui-id: wVw4Am
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Could not refresh validity token. Please contact support."
msgstr ""
#. js-lingui-id: s8lFtq
#: src/hooks/useCopyToClipboard.tsx
msgid "Couldn't copy to clipboard"
@@ -3815,6 +3871,7 @@ msgstr "Pasgemaakte domein opgedateer"
#. js-lingui-id: 8skTDV
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Custom objects"
msgstr "Pasgemaakte voorwerpe"
@@ -4249,7 +4306,6 @@ msgstr "verwyder"
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
@@ -4337,7 +4393,6 @@ msgstr "Verwyder veld"
#. js-lingui-id: 97QUV6
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItems.tsx
#: src/modules/favorites/components/CurrentWorkspaceMemberFavorites.tsx
msgid "Delete Folder"
msgstr "Verwyder vouer"
@@ -4917,6 +4972,8 @@ msgid "Edit own profile information"
msgstr ""
#. js-lingui-id: h2KoTu
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/SettingsBillingContent.tsx
msgid "Edit payment method, see your invoices and more"
msgstr "Redigeer betalingsmetode, sien jou fakture en meer"
@@ -5216,6 +5273,11 @@ msgstr "Verhoog sekuriteit deur 'n kode saam met jou wagwoord te vereis"
msgid "Enjoy a {withCreditCardTrialPeriodDuration}-days free trial"
msgstr "Geniet 'n {withCreditCardTrialPeriodDuration}-dae gratis proeftydperk"
#. js-lingui-id: 6iUnle
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Enjoy a 30-day free trial"
msgstr ""
#. js-lingui-id: T/N+2Z
#: src/modules/workflow/workflow-trigger/components/WorkflowEditTriggerWebhookForm.tsx
#: src/modules/object-record/record-field/ui/form-types/components/FormRawJsonFieldInput.tsx
@@ -5422,6 +5484,9 @@ msgstr "Voer jou API-sleutel in"
#. js-lingui-id: GpB8YV
#: src/pages/settings/security/SettingsSecurity.tsx
#: src/pages/settings/security/SettingsSecurity.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
msgid "Enterprise"
msgstr "Onderneming"
@@ -5430,6 +5495,22 @@ msgstr "Onderneming"
msgid "Enterprise Feature"
msgstr ""
#. js-lingui-id: S5c4pl
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Enterprise License"
msgstr ""
#. js-lingui-id: KGE5g0
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Enterprise license activated successfully"
msgstr ""
#. js-lingui-id: SLuq/l
#: src/modules/settings/security/components/SSO/SettingsSSOSAMLForm.tsx
msgid "Entity ID"
@@ -5470,6 +5551,11 @@ msgstr "Easy wiping van rekords wat sag verwyder is"
msgid "Error"
msgstr "Fout"
#. js-lingui-id: VouTsQ
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Error activating enterprise license"
msgstr ""
#. js-lingui-id: GHKxvg
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
msgid "Error deleting api key."
@@ -5495,11 +5581,6 @@ msgstr "Fout met die verwydering van SSO Identiteitsverskaffer"
msgid "Error editing SSO Identity Provider"
msgstr "Fout met die redigering van SSO Identiteitsverskaffer"
#. js-lingui-id: GsIfmO
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkerMetricsGraph.tsx
msgid "Error fetching worker metrics: {errorMessage}"
msgstr "Fout met die ophaal van werkermetrieke: {errorMessage}"
#. js-lingui-id: GdBN5t
#: src/modules/error-handler/components/AppRootErrorFallback.tsx
msgid "Error illustration"
@@ -5530,11 +5611,26 @@ msgstr "Fout met die laai van boodskap"
msgid "Error Message"
msgstr "Foutboodskap"
#. js-lingui-id: Mox63G
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Error opening billing portal"
msgstr ""
#. js-lingui-id: e/eieW
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Error opening Stripe"
msgstr ""
#. js-lingui-id: bT/0cM
#: src/modules/ui/field/display/components/PhonesDisplay.tsx
msgid "Error parsing additional phones: {error}"
msgstr "Fout met ontleding van bykomende fone: {error}"
#. js-lingui-id: zRXcyv
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Error refreshing validity token. Please contact support."
msgstr ""
#. js-lingui-id: PfAip2
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
msgid "Error regenerating api key."
@@ -5997,6 +6093,11 @@ msgstr ""
msgid "Failed to {translatedOperationType} {translatedMetadataName}. Related {relatedEntityNames} validation failed. Please check your configuration and try again."
msgstr ""
#. js-lingui-id: R1XJV1
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Failed to activate enterprise license. Please check your key or contact support."
msgstr ""
#. js-lingui-id: vJiM7T
#: src/pages/settings/ai/components/SettingsSkillsTable.tsx
msgid "Failed to activate skill"
@@ -6208,7 +6309,6 @@ msgstr ""
#. js-lingui-id: X9kySA
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItemFolders.tsx
#: src/modules/favorites/components/CurrentWorkspaceMemberFavoritesFolders.tsx
msgid "Favorites"
msgstr "Gunstelinge"
@@ -6374,7 +6474,6 @@ msgstr ""
#: src/modules/views/components/ViewBarFilterDropdownFieldSelectMenu.tsx
#: src/modules/views/components/ViewBarFilterButton.tsx
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
#: src/modules/side-panel/pages/page-layout/components/ChartFiltersSettings.tsx
#: src/modules/settings/roles/components/SettingsRolesList.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectRelationsTable.tsx
#: src/modules/object-record/record-table/record-table-header/components/RecordTableColumnHeadDropdownMenu.tsx
@@ -6397,6 +6496,7 @@ msgid "Filter group rule options"
msgstr "Opsies vir filterreëlgroep"
#. js-lingui-id: cSev+j
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/settings/developers/components/SettingsDevelopersWebhookForm.tsx
msgid "Filters"
msgstr "Filtreerders"
@@ -6467,6 +6567,11 @@ msgstr "Voornaam"
msgid "First name can not be empty"
msgstr "Voornaam kan nie leeg wees nie"
#. js-lingui-id: JREYkg
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Fix the payment issue to keep your enterprise features active."
msgstr ""
#. js-lingui-id: ylQd2j
#: src/modules/workflow/workflow-steps/workflow-actions/utils/getActionHeaderTypeOrThrow.ts
#: src/modules/side-panel/pages/workflow/action/components/SidePanelWorkflowSelectAction.tsx
@@ -6486,7 +6591,7 @@ msgid "Folder name"
msgstr ""
#. js-lingui-id: HSh8u/
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubPage.tsx
#: src/modules/settings/accounts/components/message-folders/SettingsAccountsMessageFoldersCard.tsx
msgid "Folders"
msgstr "Lêers"
@@ -6635,6 +6740,22 @@ msgstr "Gegenereerde lêers"
msgid "German"
msgstr "Duits"
#. js-lingui-id: sqtljx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Get Enterprise"
msgstr ""
#. js-lingui-id: o2kSwB
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Get Enterprise Key"
msgstr ""
#. js-lingui-id: NXEW3h
#: src/pages/onboarding/InviteTeam.tsx
msgid "Get the most out of your workspace by inviting your team."
@@ -6655,6 +6776,12 @@ msgstr "Globaal"
msgid "Go Back"
msgstr ""
#. js-lingui-id: Hb4Cgz
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Go to billing portal"
msgstr ""
#. js-lingui-id: mUbv8L
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
msgid "Go to Companies"
@@ -7240,6 +7367,11 @@ msgstr ""
msgid "Inbox"
msgstr "Inboks"
#. js-lingui-id: mtGDyy
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Incomplete"
msgstr ""
#. js-lingui-id: O5wNUa
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
msgid "index"
@@ -7882,9 +8014,8 @@ msgid "Launch manually"
msgstr "Begin handmatig"
#. js-lingui-id: rdU729
#: src/modules/side-panel/pages/page-layout/utils/getPageLayoutPageTitle.ts
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsLayout.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCustomView.tsx
msgid "Layout"
@@ -7957,6 +8088,12 @@ msgstr ""
msgid "Less than or equal"
msgstr "Kleiner as of gelyk aan"
#. js-lingui-id: 3qg5Ro
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Licensee"
msgstr ""
#. js-lingui-id: 1njn7W
#: src/pages/settings/profile/appearance/components/SettingsExperience.tsx
#: src/modules/ui/navigation/navigation-drawer/components/MultiWorkspaceDropdown/internal/MultiWorkspaceDropdownThemesComponents.tsx
@@ -8260,6 +8397,8 @@ msgid "Manage billing and subscriptions"
msgstr "Bestuur rekening en intekeninge"
#. js-lingui-id: nvgUPq
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/SettingsBillingContent.tsx
msgid "Manage billing information"
msgstr "Bestuur faktuurinligting"
@@ -8612,6 +8751,11 @@ msgstr "Maand van die jaar"
msgid "monthly"
msgstr "maandeliks"
#. js-lingui-id: Sew/cK
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Monthly subscription"
msgstr ""
#. js-lingui-id: 6jefe3
#: src/modules/side-panel/pages/page-layout/utils/getDateGranularityPluralLabel.ts
#: src/modules/side-panel/pages/page-layout/utils/getDateGranularityPluralLabel.ts
@@ -8673,7 +8817,7 @@ msgid "Move right"
msgstr "Skuif regs"
#. js-lingui-id: 6qDVmw
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
msgid "Move to a folder"
msgstr ""
@@ -9274,21 +9418,15 @@ msgid "No Files"
msgstr "Geen Lêers Nie"
#. js-lingui-id: pYblOw
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/favorites/favorite-folder-picker/components/FavoriteFolderPickerList.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubPage.tsx
msgid "No folder"
msgstr "Geen vouer"
#. js-lingui-id: 6XMhqL
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubPage.tsx
msgid "No folders available"
msgstr ""
#. js-lingui-id: aywdyd
#: src/modules/favorites/favorite-folder-picker/components/FavoriteFolderPickerList.tsx
msgid "No folders found"
msgstr "Geen vouers gevind nie"
#. js-lingui-id: 1jgsYC
#: src/modules/settings/accounts/components/message-folders/SettingsMessageFoldersEmptyStateCard.tsx
msgid "No folders found for this account"
@@ -9454,8 +9592,8 @@ msgstr "Geen Resultate"
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewSystemSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewObjectPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubPage.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubPage.tsx
#: src/modules/side-panel/components/SidePanelList.tsx
msgid "No results found"
msgstr "Geen resultate gevind nie"
@@ -9666,6 +9804,7 @@ msgstr ""
#. js-lingui-id: b/j06W
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "OAuth"
msgstr ""
@@ -9674,6 +9813,11 @@ msgstr ""
msgid "OAuth Credentials"
msgstr ""
#. js-lingui-id: LNLTJB
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "OAuth or API Key"
msgstr ""
#. js-lingui-id: pNEViR
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
msgid "object"
@@ -10188,11 +10332,26 @@ msgstr "Wagwoord herstel skakel is na die e-pos gestuur"
msgid "Paste the code below"
msgstr "Plak die kode hieronder"
#. js-lingui-id: raz2Pm
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Paste your enterprise key below to activate"
msgstr ""
#. js-lingui-id: dNdgvF
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Paste your enterprise key here"
msgstr ""
#. js-lingui-id: I6gXOa
#: src/modules/settings/logic-functions/components/tabs/SettingsLogicFunctionTriggersTab.tsx
msgid "Path"
msgstr "Pad"
#. js-lingui-id: QmXBEc
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Payment issue"
msgstr ""
#. js-lingui-id: UbRKMZ
#: src/pages/settings/emailing-domains/utils/getEmailingDomainStatusText.ts
#: src/modules/settings/security/components/approvedAccessDomains/SettingsApprovedAccessDomainsListCard.tsx
@@ -10329,13 +10488,13 @@ msgid "Pick a {objectLabel} record"
msgstr "Kies 'n {objectLabel} rekord"
#. js-lingui-id: JqqNlC
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewPickerSubView.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
msgid "Pick a view"
msgstr ""
#. js-lingui-id: Wlba2h
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelObjectPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewObjectPickerSubView.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
msgid "Pick an object"
msgstr ""
@@ -10953,6 +11112,16 @@ msgstr "Vrystellings"
msgid "Reload"
msgstr "Herlaai"
#. js-lingui-id: qbM5In
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Reload validity token"
msgstr ""
#. js-lingui-id: MZWnSC
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Reloading..."
msgstr ""
#. js-lingui-id: qlAIQ1
#: src/modules/object-metadata/components/RemoteNavigationDrawerSection.tsx
msgid "Remote"
@@ -10965,16 +11134,6 @@ msgstr "Afstand"
msgid "Remove"
msgstr "Verwyder"
#. js-lingui-id: gleHgw
#: src/modules/favorites/components/CurrentWorkspaceMemberFavorites.tsx
msgid "Remove {favoriteCount} favorite?"
msgstr "Verwyder {favoriteCount} gunsteling?"
#. js-lingui-id: 1VQkMD
#: src/modules/favorites/components/CurrentWorkspaceMemberFavorites.tsx
msgid "Remove {favoriteCount} favorites?"
msgstr "Verwyder {favoriteCount} gunstelinge?"
#. js-lingui-id: 0Urj9q
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItems.tsx
msgid "Remove {navigationMenuItemCount} navigation menu item?"
@@ -11006,7 +11165,6 @@ msgid "Remove Deleted filter"
msgstr "Verwyder Gedeleteerde filter"
#. js-lingui-id: T/pF0Z
#: src/modules/favorites/components/PageFavoriteButton.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
msgid "Remove from favorites"
@@ -11061,7 +11219,6 @@ msgstr "Verwyder veranderlike"
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
msgid "Rename"
msgstr "Hernoem"
@@ -11228,7 +11385,7 @@ msgstr "Resultaat"
#. js-lingui-id: kx0s+n
#: src/modules/side-panel/pages/search/hooks/useSidePanelSearchRecords.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubPage.tsx
msgid "Results"
msgstr "Resultate"
@@ -11367,6 +11524,11 @@ msgstr ""
msgid "row level permission predicate group"
msgstr ""
#. js-lingui-id: xPaeO2
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Row-level security"
msgstr ""
#. js-lingui-id: 7jTlsu
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectFormOptionRow.tsx
msgid "Ruby"
@@ -11485,6 +11647,8 @@ msgstr ""
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/constants/EngineComponentKeyComponentMap.tsx
#: src/modules/command-menu-item/constants/EngineComponentKeyComponentMap.tsx
msgid "Search"
msgstr "Soek"
@@ -11521,7 +11685,7 @@ msgid "Search a field..."
msgstr "Soek 'n veld..."
#. js-lingui-id: ITQFzL
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubPage.tsx
msgid "Search a folder..."
msgstr ""
@@ -11689,7 +11853,7 @@ msgid "Search records"
msgstr "Soek rekords"
#. js-lingui-id: rRklUH
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubPage.tsx
msgid "Search records..."
msgstr ""
@@ -11724,11 +11888,13 @@ msgid "Searching the web for {query}"
msgstr ""
#. js-lingui-id: 8sgZS9
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
#: src/modules/billing/components/SubscriptionPrice.tsx
msgid "seat / month"
msgstr "sitplek / maand"
#. js-lingui-id: aQnWwf
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
#: src/modules/billing/components/SubscriptionPrice.tsx
msgid "seat / month - billed yearly"
msgstr "sitplek / maand - jaarliks gefaktureer"
@@ -12556,6 +12722,7 @@ msgstr "EGS"
#. js-lingui-id: vlvAkg
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "SSO (SAML / OIDC)"
msgstr "SSO (SAML / OIDC)"
@@ -12600,6 +12767,16 @@ msgstr ""
msgid "Start"
msgstr "Begin"
#. js-lingui-id: ASqWQi
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Start a new enterprise subscription to re-enable enterprise features."
msgstr ""
#. js-lingui-id: OC6rnK
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Start a new enterprise subscription."
msgstr ""
#. js-lingui-id: D3iCkb
#: src/pages/settings/security/event-logs/components/EventLogFilters.tsx
msgid "Start Date"
@@ -12625,6 +12802,11 @@ msgid "State"
msgstr "Staat"
#. js-lingui-id: uAQUqI
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/admin-panel/SettingsAdminIndicatorHealthStatus.tsx
#: src/modules/settings/components/SettingsDnsRecordsTable.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
@@ -12920,11 +13102,11 @@ msgstr ""
#. js-lingui-id: 0apULK
#: src/pages/settings/data-model/SettingsObjectTable.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelSystemObjectPickerSubView.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelSystemObjectPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelObjectPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewSystemSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewSystemSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewObjectPickerSubView.tsx
msgid "System objects"
msgstr ""
@@ -13227,6 +13409,11 @@ msgstr "Daar is vereiste kolomme wat nie ooreenstem of geïgnoreer is nie. Wil j
msgid "There are still some rows that contain errors. Rows with errors will be ignored when submitting."
msgstr "Daar is nog steeds rye wat foute bevat. Rye met foute sal geïgnoreer word wanneer ingedien word."
#. js-lingui-id: CA9PTn
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "There is a payment issue with your subscription. Please update your payment method."
msgstr ""
#. js-lingui-id: WQk7Cf
#: src/modules/activities/timeline-activities/components/TimelineCard.tsx
msgid "There is no activity associated with this record."
@@ -13299,16 +13486,6 @@ msgstr "Hierdie aksie kan nie ongedaan gemaak word nie. Dit sal permanent jou li
msgid "This action cannot be undone. This will permanently reset your two factor authentication method. <0/> Please type in your email to confirm."
msgstr "Hierdie aksie kan nie ongedaan gemaak word nie. Dit sal jou twee-faktor-verifikasiemetode permanent terugstel. <0/> Tik asseblief jou e-pos in om te bevestig."
#. js-lingui-id: XdFYs2
#: src/modules/favorites/components/CurrentWorkspaceMemberFavorites.tsx
msgid "This action will delete this favorite folder and all {favoriteCount} favorites inside. Do you want to continue?"
msgstr "Hierdie aksie sal hierdie gunstelingvouer en al {favoriteCount} gunstelinge daarin uitvee. Wil jy voortgaan?"
#. js-lingui-id: pFXbgz
#: src/modules/favorites/components/CurrentWorkspaceMemberFavorites.tsx
msgid "This action will delete this favorite folder and the favorite inside. Do you want to continue?"
msgstr "Hierdie aksie sal hierdie gunstelingvouer en die gunsteling daarin uitvee. Wil jy voortgaan?"
#. js-lingui-id: lAHIY2
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItems.tsx
msgid "This action will delete this folder and all {navigationMenuItemCount} navigation menu items inside. Do you want to continue?"
@@ -13339,9 +13516,9 @@ msgstr ""
msgid "This database value overrides environment settings. "
msgstr "Hierdie databasis waarde oorskry omgewingsinstellings."
#. js-lingui-id: qHAJQ2
#. js-lingui-id: 8IRnd6
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelSection.tsx
msgid "This feature is part of the Organization Plan"
msgid "This feature is part of the Enterprise Plan"
msgstr ""
#. js-lingui-id: own57K
@@ -13650,6 +13827,8 @@ msgid "Transfer ownership"
msgstr ""
#. js-lingui-id: lhkaAC
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/internal/PlansTags.tsx
msgid "Trial"
msgstr "Proeflopie"
@@ -13829,7 +14008,7 @@ msgid "Type"
msgstr "Tipe"
#. js-lingui-id: SKD2e4
#: src/modules/activities/components/ActivityRichTextEditor.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/RichTextFieldEditor.tsx
msgid "Type '/' for commands, '@' for mentions"
msgstr ""
@@ -13840,7 +14019,7 @@ msgid "Type anything..."
msgstr "Tik enigiets..."
#. js-lingui-id: UhqKcC
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubPage.tsx
msgid "Type to search records"
msgstr ""
@@ -13998,6 +14177,11 @@ msgstr "Onbeperkte kontakte"
msgid "Unlisted"
msgstr "Ongepubliseer"
#. js-lingui-id: Ep1uUU
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Unlock enterprise features like SSO, row-level security, and audit logs."
msgstr ""
#. js-lingui-id: eQMhFX
#: src/modules/advanced-text-editor/extensions/slash-command/DefaultSlashCommands.ts
msgid "unordered"
@@ -14067,6 +14251,11 @@ msgstr "opdateer"
msgid "Update"
msgstr "Opdateer"
#. js-lingui-id: Y69tSP
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Update payment method"
msgstr ""
#. js-lingui-id: 0KAL3W
#: src/modules/side-panel/hooks/useOpenUpdateMultipleRecordsPageInSidePanel.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
@@ -14305,11 +14494,22 @@ msgstr "Gebruik verstek toepassing waarde. Stel in via omgewingsveranderlikes."
msgid "Using default value. Set a custom value to override."
msgstr "Gebruik verstek waarde. Stel 'n pasgemaakte waarde om te oorskryf."
#. js-lingui-id: zzp4XX
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Valid until"
msgstr ""
#. js-lingui-id: Clr4qp
#: src/modules/spreadsheet-import/steps/components/SpreadsheetImportStepperContainer.tsx
msgid "Validate Data"
msgstr "Valideer data"
#. js-lingui-id: PWZBIT
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Validity token refreshed successfully"
msgstr ""
#. js-lingui-id: wMHvYH
#: src/pages/settings/applications/tabs/SettingsApplicationDetailEnvironmentVariablesTable.tsx
#: src/modules/workflow/workflow-steps/workflow-actions/http-request-action/components/KeyValuePairInput.tsx
@@ -14436,6 +14636,8 @@ msgid "View and filter events, page views, object changes"
msgstr ""
#. js-lingui-id: KANz0G
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/SettingsBillingContent.tsx
msgid "View billing details"
msgstr "Sien faktuurbesonderhede"
@@ -14485,6 +14687,11 @@ msgstr "bekyk Groep"
msgid "View installed app"
msgstr ""
#. js-lingui-id: B02hom
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "View invoices"
msgstr ""
#. js-lingui-id: lh5BED
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkerQueueMetricsSection.tsx
msgid "View Jobs"
@@ -14503,6 +14710,7 @@ msgstr ""
#. js-lingui-id: ecVcAx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/constants/EngineComponentKeyComponentMap.tsx
msgid "View Previous AI Chats"
msgstr "Sien Vorige KI-kletse"
@@ -14852,6 +15060,7 @@ msgstr "Werksvloeie"
#: src/pages/settings/members/SettingsWorkspaceMember.tsx
#: src/pages/settings/logic-functions/SettingsLogicFunctionDetail.tsx
#: src/pages/settings/logic-functions/SettingsLogicFunctionDetail.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/emailing-domains/SettingsNewEmailingDomain.tsx
#: src/pages/settings/emailing-domains/SettingsEmailingDomainDetail.tsx
#: src/pages/settings/domains/SettingsDomains.tsx
@@ -14894,7 +15103,6 @@ msgstr "Werksvloeie"
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownVisibilityContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCustomView.tsx
#: src/modules/navigation-menu-item/components/WorkspaceNavigationMenuItems.tsx
#: src/modules/favorites/components/WorkspaceFavorites.tsx
msgid "Workspace"
msgstr "Werkruimte"
@@ -15018,6 +15226,11 @@ msgstr "Jaar"
msgid "yearly"
msgstr "jaarliks"
#. js-lingui-id: Y1GwUe
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Yearly subscription"
msgstr ""
#. js-lingui-id: +BGee5
#: src/modules/side-panel/pages/page-layout/utils/getDateGranularityPluralLabel.ts
msgid "years"
@@ -15150,6 +15363,36 @@ msgstr "Jou e-posonderwerpe en vergadertitels sal met jou span gedeel word."
msgid "Your emails and events content will be shared with your team."
msgstr "Jou e-pos en gebeurtenisinhalte sal met jou span gedeel word."
#. js-lingui-id: ahEwS4
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your enterprise features are active"
msgstr ""
#. js-lingui-id: XMZLU/
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your enterprise features are active but your enterprise key is missing or invalid. This may be expected, but if not, please set a valid signed enterprise key to manage your subscription, or contact support."
msgstr ""
#. js-lingui-id: AxcwNj
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your enterprise features will be disabled"
msgstr ""
#. js-lingui-id: PT137K
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your enterprise features will remain active until {cancelAtDate}."
msgstr ""
#. js-lingui-id: 69Siss
#: src/modules/information-banner/components/enterprise/InformationBannerLegacyEnterpriseKey.tsx
msgid "Your enterprise key format is deprecated. Please activate a new key to keep enterprise features."
msgstr ""
#. js-lingui-id: NTpA4U
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your enterprise subscription has been canceled."
msgstr ""
#. js-lingui-id: 9ivpwk
#: src/pages/settings/SettingsProfile.tsx
msgid "Your name as it will be displayed"
@@ -15160,6 +15403,26 @@ msgstr "Jou naam soos dit vertoon sal word"
msgid "Your name as it will be displayed on the app"
msgstr "Jou naam soos dit op die app vertoon sal word"
#. js-lingui-id: 319YPG
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your subscription is active but your validity token is invalid or has expired. Try reloading it or contact support."
msgstr ""
#. js-lingui-id: Fx0axg
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your subscription is scheduled for cancellation"
msgstr ""
#. js-lingui-id: XgIa/8
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your subscription setup was not completed."
msgstr ""
#. js-lingui-id: Z9kbt6
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your subscription status is: {statusLabel}"
msgstr ""
#. js-lingui-id: QOd24n
#: src/modules/billing/hooks/useBillingWording.ts
msgid "Your trial period will end, and "
+343 -80
View File
@@ -663,10 +663,10 @@ msgstr "عن مساحة العمل هذه"
msgid "Access workspace data"
msgstr ""
#. js-lingui-id: c2UA7k
#. js-lingui-id: W5nhmk
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Access your workspace data from your favorite MCP client like Claude Desktop, Windsurf or Cursor."
msgstr "الوصول إلى بيانات مساحة العمل الخاصة بك من عميل MCP المفضل لديك مثل Claude Desktop و Windsurf أو Cursor."
msgid "Access your workspace data from your favorite MCP client like Claude Desktop, Claude Code, Cursor, or ChatGPT. Once connected, try: \"Show me the 5 most recently created companies\" or \"Create a new person named Jane Doe\"."
msgstr ""
#. js-lingui-id: u2Cycw
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionTabEnvironmentVariablesSection.tsx
@@ -752,23 +752,37 @@ msgid "Actions users can perform on this object"
msgstr "الإجراءات التي يمكن للمستخدمين تنفيذها على هذا الكائن"
#. js-lingui-id: FQBaXG
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/data-model/SettingsObjectFieldEdit.tsx
#: src/pages/settings/ai/SettingsSkillForm.tsx
#: src/pages/settings/ai/components/SettingsSkillInactiveMenuDropDown.tsx
#: src/modules/settings/security/components/SSO/SettingsSecuritySSORowDropdownMenu.tsx
#: src/modules/settings/data-model/objects/components/SettingsObjectInactiveMenuDropDown.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectFieldDisabledActionDropdown.tsx
#: src/modules/information-banner/components/enterprise/InformationBannerLegacyEnterpriseKey.tsx
#: src/modules/command-menu-item/record/constants/WorkflowCommandMenuItemsConfig.tsx
msgid "Activate"
msgstr "تفعيل"
#. js-lingui-id: eqeFkF
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Activate Enterprise Key"
msgstr ""
#. js-lingui-id: tu8A/k
#: src/modules/command-menu-item/record/constants/WorkflowCommandMenuItemsConfig.tsx
msgid "Activate Workflow"
msgstr "تفعيل سير العمل"
#. js-lingui-id: jSZacs
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Activating..."
msgstr ""
#. js-lingui-id: F6pfE9
#: src/pages/settings/SettingsProfile.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/settings/domains/components/SettingsWorkspaceDomainCard.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobsTable.tsx
msgid "Active"
@@ -806,6 +820,13 @@ msgstr "أضف \"{trimmedName}\" إلى الخيارات"
msgid "Add a {objectLabelSingular}"
msgstr "أضف {objectLabelSingular}"
#. js-lingui-id: 7W8nJr
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationUngroupedEditor.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
msgid "Add a Group"
msgstr ""
#. js-lingui-id: CZDwqQ
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
@@ -818,16 +839,10 @@ msgid "Add a node"
msgstr "إضافة عقدة"
#. js-lingui-id: nGv1DN
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubView.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
msgid "Add a record"
msgstr ""
#. js-lingui-id: r8W+9y
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationUngroupedEditor.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
msgid "Add a Section"
msgstr ""
#. js-lingui-id: eMc2xs
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
msgid "Add a step"
@@ -915,11 +930,6 @@ msgstr "إضافة قاعدة تصفية"
msgid "Add first filter"
msgstr "أضف أول فلتر"
#. js-lingui-id: //rVZt
#: src/modules/favorites/favorite-folder-picker/components/FavoriteFolderPickerFooter.tsx
msgid "Add folder"
msgstr "إضافة مجلد"
#. js-lingui-id: 7XzAKI
#: src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowEditActionFormBuilder.tsx
msgid "Add inputs to your form"
@@ -1085,7 +1095,6 @@ msgid "Add to Favorite"
msgstr "إضافة إلى المفضلة"
#. js-lingui-id: pBsoKL
#: src/modules/favorites/components/PageFavoriteButton.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/mock/command-menu-items.mock.tsx
@@ -1429,7 +1438,7 @@ msgid "All set!"
msgstr "كل شيء جاهز!"
#. js-lingui-id: CHvT6e
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemObjectFlow.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemObjectSystemPickerSubPage.tsx
msgid "All system objects are already in the sidebar"
msgstr ""
@@ -1574,6 +1583,7 @@ msgstr "حدث خطأ أثناء تحميل الصورة."
#. js-lingui-id: XyOToQ
#: src/utils/get-error-message-from-apollo-error.util.ts
#: src/utils/get-error-message-from-apollo-error.util.ts
#: src/modules/views/hooks/internal/usePerformViewSortAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
@@ -1664,12 +1674,14 @@ msgstr "واجهة برمجة التطبيقات"
#. js-lingui-id: 0RqpZr
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "API & Webhooks"
msgstr "واجهة برمجة التطبيقات والويب هوك"
#. js-lingui-id: yRnk5W
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
#: src/modules/settings/playground/components/PlaygroundSetupForm.tsx
msgid "API Key"
msgstr "مفتاح واجهة برمجة التطبيقات"
@@ -1940,6 +1952,7 @@ msgstr "تصاعدي"
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/constants/EngineComponentKeyComponentMap.tsx
msgid "Ask AI"
msgstr "اسأل الذكاء الاصطناعي"
@@ -2078,6 +2091,11 @@ msgstr ""
msgid "Attachments"
msgstr "المرفقات"
#. js-lingui-id: y2W2Hg
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Audit logs"
msgstr ""
#. js-lingui-id: EPEFrH
#: src/pages/settings/security/SettingsSecurity.tsx
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
@@ -2114,6 +2132,11 @@ msgstr "المصادقة"
msgid "Authentication failed"
msgstr "فشل المصادقة"
#. js-lingui-id: TxT0ER
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Authentication method"
msgstr ""
#. js-lingui-id: H7qgYQ
#: src/pages/settings/SettingsTwoFactorAuthenticationMethod.tsx
msgid "Authenticator app"
@@ -2306,6 +2329,11 @@ msgstr "بين {startOrdinal} و {endOrdinal} من الشهر"
msgid "Billing"
msgstr "الفوترة"
#. js-lingui-id: dSjFxR
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Billing history"
msgstr ""
#. js-lingui-id: nJGwRf
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
msgid "Billing interval"
@@ -2563,6 +2591,7 @@ msgid "Cancel metered tier switching?"
msgstr "إلغاء تبديل الطبقة المقاسة؟"
#. js-lingui-id: rRK/Lf
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/SettingsBillingContent.tsx
msgid "Cancel Plan"
msgstr "إلغاء الخطة"
@@ -2578,10 +2607,26 @@ msgid "Cancel plan switching?"
msgstr "إلغاء تبديل الخطة؟"
#. js-lingui-id: N6gPiD
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/SettingsBillingContent.tsx
msgid "Cancel your subscription"
msgstr "إلغاء الاشتراك"
#. js-lingui-id: GGWsTU
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Canceled"
msgstr ""
#. js-lingui-id: y4uH7j
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Cancelling"
msgstr ""
#. js-lingui-id: WbPx+C
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Cancels on"
msgstr ""
#. js-lingui-id: XDbjjW
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCustomView.tsx
msgid "Cannot delete the only view"
@@ -3077,11 +3122,6 @@ msgstr ""
msgid "Configure fallback login methods for users with SSO bypass permissions"
msgstr "تكوين طرق تسجيل دخول احتياطية للمستخدمين الذين لديهم صلاحيات تجاوز SSO"
#. js-lingui-id: c7wznw
#: src/modules/side-panel/pages/page-layout/utils/getPageLayoutPageTitle.ts
msgid "Configure filters"
msgstr "تكوين الفلاتر"
#. js-lingui-id: ghdb7+
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelsGeneral.tsx
msgid "Configure how we should display your events in your calendar"
@@ -3279,6 +3319,7 @@ msgstr ""
#: src/modules/spreadsheet-import/steps/components/SelectHeaderStep/SelectHeaderStep.tsx
#: src/modules/spreadsheet-import/steps/components/MatchColumnsStep/MatchColumnsStep.tsx
#: src/modules/spreadsheet-import/components/StepNavigationButton.tsx
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
#: src/modules/auth/sign-in-up/components/internal/SignInUpWithCredentials.tsx
msgid "Continue"
msgstr "استمر"
@@ -3438,6 +3479,21 @@ msgstr "التكلفة لكل 1k من الإعتمادات الإضافية"
msgid "Could not delete approved access domain"
msgstr "تعذر حذف نطاق الوصول الموافق عليه"
#. js-lingui-id: KqYYBp
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Could not open billing portal. Please check your enterprise key is present, or contact support."
msgstr ""
#. js-lingui-id: ZuI4Sl
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Could not open Stripe. Please contact support."
msgstr ""
#. js-lingui-id: wVw4Am
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Could not refresh validity token. Please contact support."
msgstr ""
#. js-lingui-id: s8lFtq
#: src/hooks/useCopyToClipboard.tsx
msgid "Couldn't copy to clipboard"
@@ -3815,6 +3871,7 @@ msgstr "النطاق المخصص محدث"
#. js-lingui-id: 8skTDV
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Custom objects"
msgstr "كائنات مخصصة"
@@ -4249,7 +4306,6 @@ msgstr "حذف"
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
@@ -4337,7 +4393,6 @@ msgstr "حذف الحقل"
#. js-lingui-id: 97QUV6
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItems.tsx
#: src/modules/favorites/components/CurrentWorkspaceMemberFavorites.tsx
msgid "Delete Folder"
msgstr "حذف المجلد"
@@ -4917,6 +4972,8 @@ msgid "Edit own profile information"
msgstr ""
#. js-lingui-id: h2KoTu
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/SettingsBillingContent.tsx
msgid "Edit payment method, see your invoices and more"
msgstr "تعديل طريقة الدفع، ومشاهدة الفواتير والمزيد"
@@ -5216,6 +5273,11 @@ msgstr "يعزز الأمان من خلال طلب رمز مع كلمة المر
msgid "Enjoy a {withCreditCardTrialPeriodDuration}-days free trial"
msgstr "استمتع بفترة تجربة مجانية لمدة {withCreditCardTrialPeriodDuration} أيام"
#. js-lingui-id: 6iUnle
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Enjoy a 30-day free trial"
msgstr ""
#. js-lingui-id: T/N+2Z
#: src/modules/workflow/workflow-trigger/components/WorkflowEditTriggerWebhookForm.tsx
#: src/modules/object-record/record-field/ui/form-types/components/FormRawJsonFieldInput.tsx
@@ -5422,6 +5484,9 @@ msgstr "أدخل مفتاح API الخاص بك"
#. js-lingui-id: GpB8YV
#: src/pages/settings/security/SettingsSecurity.tsx
#: src/pages/settings/security/SettingsSecurity.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
msgid "Enterprise"
msgstr "مؤسسة"
@@ -5430,6 +5495,22 @@ msgstr "مؤسسة"
msgid "Enterprise Feature"
msgstr ""
#. js-lingui-id: S5c4pl
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Enterprise License"
msgstr ""
#. js-lingui-id: KGE5g0
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Enterprise license activated successfully"
msgstr ""
#. js-lingui-id: SLuq/l
#: src/modules/settings/security/components/SSO/SettingsSSOSAMLForm.tsx
msgid "Entity ID"
@@ -5470,6 +5551,11 @@ msgstr "محو السجلات المحذوفة مؤقتًا"
msgid "Error"
msgstr "خطأ"
#. js-lingui-id: VouTsQ
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Error activating enterprise license"
msgstr ""
#. js-lingui-id: GHKxvg
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
msgid "Error deleting api key."
@@ -5495,11 +5581,6 @@ msgstr "خطأ في حذف موفر هوية الدخول الأحادي SSO"
msgid "Error editing SSO Identity Provider"
msgstr "خطأ في تحرير موفر هوية الدخول الأحادي SSO"
#. js-lingui-id: GsIfmO
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkerMetricsGraph.tsx
msgid "Error fetching worker metrics: {errorMessage}"
msgstr "خطأ في جلب مقاييس العامل: {errorMessage}"
#. js-lingui-id: GdBN5t
#: src/modules/error-handler/components/AppRootErrorFallback.tsx
msgid "Error illustration"
@@ -5530,11 +5611,26 @@ msgstr "خطأ في تحميل الرسالة"
msgid "Error Message"
msgstr "رسالة الخطأ"
#. js-lingui-id: Mox63G
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Error opening billing portal"
msgstr ""
#. js-lingui-id: e/eieW
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Error opening Stripe"
msgstr ""
#. js-lingui-id: bT/0cM
#: src/modules/ui/field/display/components/PhonesDisplay.tsx
msgid "Error parsing additional phones: {error}"
msgstr "خطأ في تحليل أرقام الهواتف الإضافية: {error}"
#. js-lingui-id: zRXcyv
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Error refreshing validity token. Please contact support."
msgstr ""
#. js-lingui-id: PfAip2
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
msgid "Error regenerating api key."
@@ -5997,6 +6093,11 @@ msgstr ""
msgid "Failed to {translatedOperationType} {translatedMetadataName}. Related {relatedEntityNames} validation failed. Please check your configuration and try again."
msgstr ""
#. js-lingui-id: R1XJV1
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Failed to activate enterprise license. Please check your key or contact support."
msgstr ""
#. js-lingui-id: vJiM7T
#: src/pages/settings/ai/components/SettingsSkillsTable.tsx
msgid "Failed to activate skill"
@@ -6208,7 +6309,6 @@ msgstr ""
#. js-lingui-id: X9kySA
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItemFolders.tsx
#: src/modules/favorites/components/CurrentWorkspaceMemberFavoritesFolders.tsx
msgid "Favorites"
msgstr "المفضلة"
@@ -6374,7 +6474,6 @@ msgstr ""
#: src/modules/views/components/ViewBarFilterDropdownFieldSelectMenu.tsx
#: src/modules/views/components/ViewBarFilterButton.tsx
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
#: src/modules/side-panel/pages/page-layout/components/ChartFiltersSettings.tsx
#: src/modules/settings/roles/components/SettingsRolesList.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectRelationsTable.tsx
#: src/modules/object-record/record-table/record-table-header/components/RecordTableColumnHeadDropdownMenu.tsx
@@ -6397,6 +6496,7 @@ msgid "Filter group rule options"
msgstr "خيارات قواعد مجموعة التصفية"
#. js-lingui-id: cSev+j
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/settings/developers/components/SettingsDevelopersWebhookForm.tsx
msgid "Filters"
msgstr "الفلاتر"
@@ -6467,6 +6567,11 @@ msgstr "الاسم الأول"
msgid "First name can not be empty"
msgstr "لا يمكن أن يكون الاسم الأول فارغًا"
#. js-lingui-id: JREYkg
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Fix the payment issue to keep your enterprise features active."
msgstr ""
#. js-lingui-id: ylQd2j
#: src/modules/workflow/workflow-steps/workflow-actions/utils/getActionHeaderTypeOrThrow.ts
#: src/modules/side-panel/pages/workflow/action/components/SidePanelWorkflowSelectAction.tsx
@@ -6486,7 +6591,7 @@ msgid "Folder name"
msgstr ""
#. js-lingui-id: HSh8u/
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubPage.tsx
#: src/modules/settings/accounts/components/message-folders/SettingsAccountsMessageFoldersCard.tsx
msgid "Folders"
msgstr "مجلدات"
@@ -6635,6 +6740,22 @@ msgstr "الملفات المُولَّدة"
msgid "German"
msgstr "الألمانية"
#. js-lingui-id: sqtljx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Get Enterprise"
msgstr ""
#. js-lingui-id: o2kSwB
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Get Enterprise Key"
msgstr ""
#. js-lingui-id: NXEW3h
#: src/pages/onboarding/InviteTeam.tsx
msgid "Get the most out of your workspace by inviting your team."
@@ -6655,6 +6776,12 @@ msgstr "عالمي"
msgid "Go Back"
msgstr ""
#. js-lingui-id: Hb4Cgz
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Go to billing portal"
msgstr ""
#. js-lingui-id: mUbv8L
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
msgid "Go to Companies"
@@ -7240,6 +7367,11 @@ msgstr ""
msgid "Inbox"
msgstr "صندوق الوارد"
#. js-lingui-id: mtGDyy
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Incomplete"
msgstr ""
#. js-lingui-id: O5wNUa
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
msgid "index"
@@ -7882,9 +8014,8 @@ msgid "Launch manually"
msgstr "التشغيل يدويًا"
#. js-lingui-id: rdU729
#: src/modules/side-panel/pages/page-layout/utils/getPageLayoutPageTitle.ts
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsLayout.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCustomView.tsx
msgid "Layout"
@@ -7957,6 +8088,12 @@ msgstr ""
msgid "Less than or equal"
msgstr "أقل من أو يساوي"
#. js-lingui-id: 3qg5Ro
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Licensee"
msgstr ""
#. js-lingui-id: 1njn7W
#: src/pages/settings/profile/appearance/components/SettingsExperience.tsx
#: src/modules/ui/navigation/navigation-drawer/components/MultiWorkspaceDropdown/internal/MultiWorkspaceDropdownThemesComponents.tsx
@@ -8260,6 +8397,8 @@ msgid "Manage billing and subscriptions"
msgstr "إدارة الفوترة والاشتراكات"
#. js-lingui-id: nvgUPq
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/SettingsBillingContent.tsx
msgid "Manage billing information"
msgstr "إدارة معلومات الفوترة"
@@ -8612,6 +8751,11 @@ msgstr "شهر من السنة"
msgid "monthly"
msgstr "شهري"
#. js-lingui-id: Sew/cK
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Monthly subscription"
msgstr ""
#. js-lingui-id: 6jefe3
#: src/modules/side-panel/pages/page-layout/utils/getDateGranularityPluralLabel.ts
#: src/modules/side-panel/pages/page-layout/utils/getDateGranularityPluralLabel.ts
@@ -8673,7 +8817,7 @@ msgid "Move right"
msgstr "نقل إلى اليمين"
#. js-lingui-id: 6qDVmw
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
msgid "Move to a folder"
msgstr ""
@@ -9274,21 +9418,15 @@ msgid "No Files"
msgstr "لا توجد ملفات"
#. js-lingui-id: pYblOw
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/favorites/favorite-folder-picker/components/FavoriteFolderPickerList.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubPage.tsx
msgid "No folder"
msgstr "لا يوجد مجلد"
#. js-lingui-id: 6XMhqL
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubPage.tsx
msgid "No folders available"
msgstr ""
#. js-lingui-id: aywdyd
#: src/modules/favorites/favorite-folder-picker/components/FavoriteFolderPickerList.tsx
msgid "No folders found"
msgstr "لم يتم العثور على مجلدات"
#. js-lingui-id: 1jgsYC
#: src/modules/settings/accounts/components/message-folders/SettingsMessageFoldersEmptyStateCard.tsx
msgid "No folders found for this account"
@@ -9454,8 +9592,8 @@ msgstr "لا توجد نتائج"
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewSystemSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewObjectPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubPage.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubPage.tsx
#: src/modules/side-panel/components/SidePanelList.tsx
msgid "No results found"
msgstr "لم يتم العثور على نتائج"
@@ -9666,6 +9804,7 @@ msgstr ""
#. js-lingui-id: b/j06W
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "OAuth"
msgstr ""
@@ -9674,6 +9813,11 @@ msgstr ""
msgid "OAuth Credentials"
msgstr ""
#. js-lingui-id: LNLTJB
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "OAuth or API Key"
msgstr ""
#. js-lingui-id: pNEViR
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
msgid "object"
@@ -10188,11 +10332,26 @@ msgstr "تم إرسال رابط إعادة تعيين كلمة السر إلى
msgid "Paste the code below"
msgstr "الصق الرمز أدناه"
#. js-lingui-id: raz2Pm
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Paste your enterprise key below to activate"
msgstr ""
#. js-lingui-id: dNdgvF
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Paste your enterprise key here"
msgstr ""
#. js-lingui-id: I6gXOa
#: src/modules/settings/logic-functions/components/tabs/SettingsLogicFunctionTriggersTab.tsx
msgid "Path"
msgstr "مسار"
#. js-lingui-id: QmXBEc
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Payment issue"
msgstr ""
#. js-lingui-id: UbRKMZ
#: src/pages/settings/emailing-domains/utils/getEmailingDomainStatusText.ts
#: src/modules/settings/security/components/approvedAccessDomains/SettingsApprovedAccessDomainsListCard.tsx
@@ -10329,13 +10488,13 @@ msgid "Pick a {objectLabel} record"
msgstr "اختر سجل {objectLabel}"
#. js-lingui-id: JqqNlC
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewPickerSubView.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
msgid "Pick a view"
msgstr ""
#. js-lingui-id: Wlba2h
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelObjectPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewObjectPickerSubView.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
msgid "Pick an object"
msgstr ""
@@ -10953,6 +11112,16 @@ msgstr "\\\\"
msgid "Reload"
msgstr "إعادة تحميل"
#. js-lingui-id: qbM5In
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Reload validity token"
msgstr ""
#. js-lingui-id: MZWnSC
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Reloading..."
msgstr ""
#. js-lingui-id: qlAIQ1
#: src/modules/object-metadata/components/RemoteNavigationDrawerSection.tsx
msgid "Remote"
@@ -10965,16 +11134,6 @@ msgstr "عن بعد"
msgid "Remove"
msgstr "\\\\"
#. js-lingui-id: gleHgw
#: src/modules/favorites/components/CurrentWorkspaceMemberFavorites.tsx
msgid "Remove {favoriteCount} favorite?"
msgstr "إزالة {favoriteCount} من المفضلات؟"
#. js-lingui-id: 1VQkMD
#: src/modules/favorites/components/CurrentWorkspaceMemberFavorites.tsx
msgid "Remove {favoriteCount} favorites?"
msgstr "إزالة {favoriteCount} من المفضلات؟"
#. js-lingui-id: 0Urj9q
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItems.tsx
msgid "Remove {navigationMenuItemCount} navigation menu item?"
@@ -11006,7 +11165,6 @@ msgid "Remove Deleted filter"
msgstr "إزالة الفلتر المحذوف"
#. js-lingui-id: T/pF0Z
#: src/modules/favorites/components/PageFavoriteButton.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
msgid "Remove from favorites"
@@ -11061,7 +11219,6 @@ msgstr "إزالة المتغير"
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
msgid "Rename"
msgstr "إعادة التسمية"
@@ -11228,7 +11385,7 @@ msgstr "النتيجة"
#. js-lingui-id: kx0s+n
#: src/modules/side-panel/pages/search/hooks/useSidePanelSearchRecords.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubPage.tsx
msgid "Results"
msgstr "\\\\"
@@ -11367,6 +11524,11 @@ msgstr ""
msgid "row level permission predicate group"
msgstr ""
#. js-lingui-id: xPaeO2
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Row-level security"
msgstr ""
#. js-lingui-id: 7jTlsu
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectFormOptionRow.tsx
msgid "Ruby"
@@ -11485,6 +11647,8 @@ msgstr ""
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/constants/EngineComponentKeyComponentMap.tsx
#: src/modules/command-menu-item/constants/EngineComponentKeyComponentMap.tsx
msgid "Search"
msgstr "\\\\"
@@ -11521,7 +11685,7 @@ msgid "Search a field..."
msgstr "ابحث عن حقل..."
#. js-lingui-id: ITQFzL
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubPage.tsx
msgid "Search a folder..."
msgstr ""
@@ -11689,7 +11853,7 @@ msgid "Search records"
msgstr "\\\\"
#. js-lingui-id: rRklUH
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubPage.tsx
msgid "Search records..."
msgstr ""
@@ -11724,11 +11888,13 @@ msgid "Searching the web for {query}"
msgstr ""
#. js-lingui-id: 8sgZS9
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
#: src/modules/billing/components/SubscriptionPrice.tsx
msgid "seat / month"
msgstr "مقعد / شهر"
#. js-lingui-id: aQnWwf
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
#: src/modules/billing/components/SubscriptionPrice.tsx
msgid "seat / month - billed yearly"
msgstr "مقعد / شهر - مدفوع سنويًا"
@@ -12556,6 +12722,7 @@ msgstr "التسجيل الموحد"
#. js-lingui-id: vlvAkg
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "SSO (SAML / OIDC)"
msgstr "تسجيل الدخول الأحادي (SAML / OIDC)"
@@ -12600,6 +12767,16 @@ msgstr ""
msgid "Start"
msgstr "ابدأ"
#. js-lingui-id: ASqWQi
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Start a new enterprise subscription to re-enable enterprise features."
msgstr ""
#. js-lingui-id: OC6rnK
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Start a new enterprise subscription."
msgstr ""
#. js-lingui-id: D3iCkb
#: src/pages/settings/security/event-logs/components/EventLogFilters.tsx
msgid "Start Date"
@@ -12625,6 +12802,11 @@ msgid "State"
msgstr "الولاية"
#. js-lingui-id: uAQUqI
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/admin-panel/SettingsAdminIndicatorHealthStatus.tsx
#: src/modules/settings/components/SettingsDnsRecordsTable.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
@@ -12920,11 +13102,11 @@ msgstr ""
#. js-lingui-id: 0apULK
#: src/pages/settings/data-model/SettingsObjectTable.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelSystemObjectPickerSubView.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelSystemObjectPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelObjectPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewSystemSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewSystemSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewObjectPickerSubView.tsx
msgid "System objects"
msgstr ""
@@ -13227,6 +13409,11 @@ msgstr "هناك أعمدة مطلوبة لم يتم مطابقتها أو تج
msgid "There are still some rows that contain errors. Rows with errors will be ignored when submitting."
msgstr "لا تزال هناك بعض الصفوف التي تحتوي على أخطاء. سيتم تجاهل الصفوف التي تحتوي على أخطاء عند الإرسال."
#. js-lingui-id: CA9PTn
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "There is a payment issue with your subscription. Please update your payment method."
msgstr ""
#. js-lingui-id: WQk7Cf
#: src/modules/activities/timeline-activities/components/TimelineCard.tsx
msgid "There is no activity associated with this record."
@@ -13299,16 +13486,6 @@ msgstr "لا يمكن التراجع عن هذا الإجراء. سيؤدي ذل
msgid "This action cannot be undone. This will permanently reset your two factor authentication method. <0/> Please type in your email to confirm."
msgstr "لا يمكن التراجع عن هذا الإجراء. سيؤدي ذلك إلى إعادة تعيين طريقة المصادقة الثنائية الخاصة بك بشكل دائم. <0/> الرجاء إدخال بريدك الإلكتروني للتأكيد."
#. js-lingui-id: XdFYs2
#: src/modules/favorites/components/CurrentWorkspaceMemberFavorites.tsx
msgid "This action will delete this favorite folder and all {favoriteCount} favorites inside. Do you want to continue?"
msgstr "سيؤدي هذا الإجراء إلى حذف مجلد المفضلات هذا وجميع المفضلات البالغ عددها {favoriteCount} بداخله. هل تريد المتابعة؟"
#. js-lingui-id: pFXbgz
#: src/modules/favorites/components/CurrentWorkspaceMemberFavorites.tsx
msgid "This action will delete this favorite folder and the favorite inside. Do you want to continue?"
msgstr "سيؤدي هذا الإجراء إلى حذف مجلد المفضلات هذا والمفضلة الموجودة بداخله. هل تريد المتابعة؟"
#. js-lingui-id: lAHIY2
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItems.tsx
msgid "This action will delete this folder and all {navigationMenuItemCount} navigation menu items inside. Do you want to continue?"
@@ -13339,9 +13516,9 @@ msgstr ""
msgid "This database value overrides environment settings. "
msgstr "هذه القيمة في قاعدة البيانات تتخطى إعدادات البيئة."
#. js-lingui-id: qHAJQ2
#. js-lingui-id: 8IRnd6
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelSection.tsx
msgid "This feature is part of the Organization Plan"
msgid "This feature is part of the Enterprise Plan"
msgstr ""
#. js-lingui-id: own57K
@@ -13650,6 +13827,8 @@ msgid "Transfer ownership"
msgstr ""
#. js-lingui-id: lhkaAC
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/internal/PlansTags.tsx
msgid "Trial"
msgstr "تجربة"
@@ -13829,7 +14008,7 @@ msgid "Type"
msgstr "النوع"
#. js-lingui-id: SKD2e4
#: src/modules/activities/components/ActivityRichTextEditor.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/RichTextFieldEditor.tsx
msgid "Type '/' for commands, '@' for mentions"
msgstr ""
@@ -13840,7 +14019,7 @@ msgid "Type anything..."
msgstr "اكتب أي شيء..."
#. js-lingui-id: UhqKcC
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubPage.tsx
msgid "Type to search records"
msgstr ""
@@ -13998,6 +14177,11 @@ msgstr "جهات اتصال غير محدودة"
msgid "Unlisted"
msgstr "غير مدرج"
#. js-lingui-id: Ep1uUU
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Unlock enterprise features like SSO, row-level security, and audit logs."
msgstr ""
#. js-lingui-id: eQMhFX
#: src/modules/advanced-text-editor/extensions/slash-command/DefaultSlashCommands.ts
msgid "unordered"
@@ -14067,6 +14251,11 @@ msgstr "تحديث"
msgid "Update"
msgstr "تحديث"
#. js-lingui-id: Y69tSP
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Update payment method"
msgstr ""
#. js-lingui-id: 0KAL3W
#: src/modules/side-panel/hooks/useOpenUpdateMultipleRecordsPageInSidePanel.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
@@ -14305,11 +14494,22 @@ msgstr "يتم استخدام قيمة التطبيق الافتراضية. قم
msgid "Using default value. Set a custom value to override."
msgstr "يتم استخدام القيمة الافتراضية. اضبط قيمة مخصصة للتجاوز."
#. js-lingui-id: zzp4XX
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Valid until"
msgstr ""
#. js-lingui-id: Clr4qp
#: src/modules/spreadsheet-import/steps/components/SpreadsheetImportStepperContainer.tsx
msgid "Validate Data"
msgstr "تحقق من البيانات"
#. js-lingui-id: PWZBIT
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Validity token refreshed successfully"
msgstr ""
#. js-lingui-id: wMHvYH
#: src/pages/settings/applications/tabs/SettingsApplicationDetailEnvironmentVariablesTable.tsx
#: src/modules/workflow/workflow-steps/workflow-actions/http-request-action/components/KeyValuePairInput.tsx
@@ -14436,6 +14636,8 @@ msgid "View and filter events, page views, object changes"
msgstr ""
#. js-lingui-id: KANz0G
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/SettingsBillingContent.tsx
msgid "View billing details"
msgstr "عرض تفاصيل الفوترة"
@@ -14485,6 +14687,11 @@ msgstr "مجموعة العرض"
msgid "View installed app"
msgstr ""
#. js-lingui-id: B02hom
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "View invoices"
msgstr ""
#. js-lingui-id: lh5BED
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkerQueueMetricsSection.tsx
msgid "View Jobs"
@@ -14503,6 +14710,7 @@ msgstr ""
#. js-lingui-id: ecVcAx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/constants/EngineComponentKeyComponentMap.tsx
msgid "View Previous AI Chats"
msgstr "عرض الذكاءات الاصطناعية السابقة"
@@ -14850,6 +15058,7 @@ msgstr "سير العمل"
#: src/pages/settings/members/SettingsWorkspaceMember.tsx
#: src/pages/settings/logic-functions/SettingsLogicFunctionDetail.tsx
#: src/pages/settings/logic-functions/SettingsLogicFunctionDetail.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/emailing-domains/SettingsNewEmailingDomain.tsx
#: src/pages/settings/emailing-domains/SettingsEmailingDomainDetail.tsx
#: src/pages/settings/domains/SettingsDomains.tsx
@@ -14892,7 +15101,6 @@ msgstr "سير العمل"
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownVisibilityContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCustomView.tsx
#: src/modules/navigation-menu-item/components/WorkspaceNavigationMenuItems.tsx
#: src/modules/favorites/components/WorkspaceFavorites.tsx
msgid "Workspace"
msgstr "مساحة العمل"
@@ -15016,6 +15224,11 @@ msgstr "عام"
msgid "yearly"
msgstr "سنوي"
#. js-lingui-id: Y1GwUe
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Yearly subscription"
msgstr ""
#. js-lingui-id: +BGee5
#: src/modules/side-panel/pages/page-layout/utils/getDateGranularityPluralLabel.ts
msgid "years"
@@ -15148,6 +15361,36 @@ msgstr "سوف يتم مشاركة مواضيع بريدك واجتماعاتك
msgid "Your emails and events content will be shared with your team."
msgstr "محتوى بريدك وأحداثك سوف يتم مشاركته مع فريقك."
#. js-lingui-id: ahEwS4
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your enterprise features are active"
msgstr ""
#. js-lingui-id: XMZLU/
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your enterprise features are active but your enterprise key is missing or invalid. This may be expected, but if not, please set a valid signed enterprise key to manage your subscription, or contact support."
msgstr ""
#. js-lingui-id: AxcwNj
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your enterprise features will be disabled"
msgstr ""
#. js-lingui-id: PT137K
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your enterprise features will remain active until {cancelAtDate}."
msgstr ""
#. js-lingui-id: 69Siss
#: src/modules/information-banner/components/enterprise/InformationBannerLegacyEnterpriseKey.tsx
msgid "Your enterprise key format is deprecated. Please activate a new key to keep enterprise features."
msgstr ""
#. js-lingui-id: NTpA4U
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your enterprise subscription has been canceled."
msgstr ""
#. js-lingui-id: 9ivpwk
#: src/pages/settings/SettingsProfile.tsx
msgid "Your name as it will be displayed"
@@ -15158,6 +15401,26 @@ msgstr "اسمك كما سيتم عرضه"
msgid "Your name as it will be displayed on the app"
msgstr "اسمك كما سيتم عرضه على التطبيق"
#. js-lingui-id: 319YPG
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your subscription is active but your validity token is invalid or has expired. Try reloading it or contact support."
msgstr ""
#. js-lingui-id: Fx0axg
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your subscription is scheduled for cancellation"
msgstr ""
#. js-lingui-id: XgIa/8
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your subscription setup was not completed."
msgstr ""
#. js-lingui-id: Z9kbt6
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your subscription status is: {statusLabel}"
msgstr ""
#. js-lingui-id: QOd24n
#: src/modules/billing/hooks/useBillingWording.ts
msgid "Your trial period will end, and "
+343 -80
View File
@@ -663,10 +663,10 @@ msgstr "Sobre aquest espai de treball"
msgid "Access workspace data"
msgstr ""
#. js-lingui-id: c2UA7k
#. js-lingui-id: W5nhmk
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Access your workspace data from your favorite MCP client like Claude Desktop, Windsurf or Cursor."
msgstr "Accediu a les dades del vostre espai de treball des del vostre client MCP preferit, com Claude Desktop, Windsurf o Cursor."
msgid "Access your workspace data from your favorite MCP client like Claude Desktop, Claude Code, Cursor, or ChatGPT. Once connected, try: \"Show me the 5 most recently created companies\" or \"Create a new person named Jane Doe\"."
msgstr ""
#. js-lingui-id: u2Cycw
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionTabEnvironmentVariablesSection.tsx
@@ -752,23 +752,37 @@ msgid "Actions users can perform on this object"
msgstr "Accions que poden realitzar els usuaris en aquest objecte"
#. js-lingui-id: FQBaXG
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/data-model/SettingsObjectFieldEdit.tsx
#: src/pages/settings/ai/SettingsSkillForm.tsx
#: src/pages/settings/ai/components/SettingsSkillInactiveMenuDropDown.tsx
#: src/modules/settings/security/components/SSO/SettingsSecuritySSORowDropdownMenu.tsx
#: src/modules/settings/data-model/objects/components/SettingsObjectInactiveMenuDropDown.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectFieldDisabledActionDropdown.tsx
#: src/modules/information-banner/components/enterprise/InformationBannerLegacyEnterpriseKey.tsx
#: src/modules/command-menu-item/record/constants/WorkflowCommandMenuItemsConfig.tsx
msgid "Activate"
msgstr "Activa"
#. js-lingui-id: eqeFkF
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Activate Enterprise Key"
msgstr ""
#. js-lingui-id: tu8A/k
#: src/modules/command-menu-item/record/constants/WorkflowCommandMenuItemsConfig.tsx
msgid "Activate Workflow"
msgstr "Activa el flux de treball"
#. js-lingui-id: jSZacs
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Activating..."
msgstr ""
#. js-lingui-id: F6pfE9
#: src/pages/settings/SettingsProfile.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/settings/domains/components/SettingsWorkspaceDomainCard.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobsTable.tsx
msgid "Active"
@@ -806,6 +820,13 @@ msgstr "Afegeix \"{trimmedName}\" a les opcions"
msgid "Add a {objectLabelSingular}"
msgstr "Afegeix un {objectLabelSingular}"
#. js-lingui-id: 7W8nJr
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationUngroupedEditor.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
msgid "Add a Group"
msgstr ""
#. js-lingui-id: CZDwqQ
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
@@ -818,16 +839,10 @@ msgid "Add a node"
msgstr "Afegeix un node"
#. js-lingui-id: nGv1DN
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubView.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
msgid "Add a record"
msgstr ""
#. js-lingui-id: r8W+9y
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationUngroupedEditor.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
msgid "Add a Section"
msgstr ""
#. js-lingui-id: eMc2xs
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
msgid "Add a step"
@@ -915,11 +930,6 @@ msgstr "Afegeix una regla de filtre"
msgid "Add first filter"
msgstr "Afegeix el primer filtre"
#. js-lingui-id: //rVZt
#: src/modules/favorites/favorite-folder-picker/components/FavoriteFolderPickerFooter.tsx
msgid "Add folder"
msgstr "Afegeix una carpeta"
#. js-lingui-id: 7XzAKI
#: src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowEditActionFormBuilder.tsx
msgid "Add inputs to your form"
@@ -1085,7 +1095,6 @@ msgid "Add to Favorite"
msgstr "Afegeix a les preferides"
#. js-lingui-id: pBsoKL
#: src/modules/favorites/components/PageFavoriteButton.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/mock/command-menu-items.mock.tsx
@@ -1429,7 +1438,7 @@ msgid "All set!"
msgstr "Tot a punt!"
#. js-lingui-id: CHvT6e
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemObjectFlow.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemObjectSystemPickerSubPage.tsx
msgid "All system objects are already in the sidebar"
msgstr ""
@@ -1574,6 +1583,7 @@ msgstr "S'ha produït un error en carregar la imatge."
#. js-lingui-id: XyOToQ
#: src/utils/get-error-message-from-apollo-error.util.ts
#: src/utils/get-error-message-from-apollo-error.util.ts
#: src/modules/views/hooks/internal/usePerformViewSortAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
@@ -1664,12 +1674,14 @@ msgstr "API"
#. js-lingui-id: 0RqpZr
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "API & Webhooks"
msgstr "API i Webhooks"
#. js-lingui-id: yRnk5W
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
#: src/modules/settings/playground/components/PlaygroundSetupForm.tsx
msgid "API Key"
msgstr "Clau d'API"
@@ -1940,6 +1952,7 @@ msgstr "Ascendent"
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/constants/EngineComponentKeyComponentMap.tsx
msgid "Ask AI"
msgstr "Pregunta a l'IA"
@@ -2078,6 +2091,11 @@ msgstr ""
msgid "Attachments"
msgstr "Adjunts"
#. js-lingui-id: y2W2Hg
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Audit logs"
msgstr ""
#. js-lingui-id: EPEFrH
#: src/pages/settings/security/SettingsSecurity.tsx
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
@@ -2114,6 +2132,11 @@ msgstr "Autenticació"
msgid "Authentication failed"
msgstr "Error en l'autenticació"
#. js-lingui-id: TxT0ER
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Authentication method"
msgstr ""
#. js-lingui-id: H7qgYQ
#: src/pages/settings/SettingsTwoFactorAuthenticationMethod.tsx
msgid "Authenticator app"
@@ -2306,6 +2329,11 @@ msgstr "entre el {startOrdinal} i el {endOrdinal} del mes"
msgid "Billing"
msgstr "Facturació"
#. js-lingui-id: dSjFxR
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Billing history"
msgstr ""
#. js-lingui-id: nJGwRf
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
msgid "Billing interval"
@@ -2563,6 +2591,7 @@ msgid "Cancel metered tier switching?"
msgstr "Cancel·lar el canvi de nivell mesurat?"
#. js-lingui-id: rRK/Lf
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/SettingsBillingContent.tsx
msgid "Cancel Plan"
msgstr "Cancel·la el pla"
@@ -2578,10 +2607,26 @@ msgid "Cancel plan switching?"
msgstr "Cancel·lar el canvi de pla?"
#. js-lingui-id: N6gPiD
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/SettingsBillingContent.tsx
msgid "Cancel your subscription"
msgstr "Cancel·la la subscripció"
#. js-lingui-id: GGWsTU
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Canceled"
msgstr ""
#. js-lingui-id: y4uH7j
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Cancelling"
msgstr ""
#. js-lingui-id: WbPx+C
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Cancels on"
msgstr ""
#. js-lingui-id: XDbjjW
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCustomView.tsx
msgid "Cannot delete the only view"
@@ -3077,11 +3122,6 @@ msgstr ""
msgid "Configure fallback login methods for users with SSO bypass permissions"
msgstr "Configura els mètodes de connexió d'emergència per a usuaris amb permisos per saltar SSO"
#. js-lingui-id: c7wznw
#: src/modules/side-panel/pages/page-layout/utils/getPageLayoutPageTitle.ts
msgid "Configure filters"
msgstr "Configuració de filtres"
#. js-lingui-id: ghdb7+
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelsGeneral.tsx
msgid "Configure how we should display your events in your calendar"
@@ -3279,6 +3319,7 @@ msgstr ""
#: src/modules/spreadsheet-import/steps/components/SelectHeaderStep/SelectHeaderStep.tsx
#: src/modules/spreadsheet-import/steps/components/MatchColumnsStep/MatchColumnsStep.tsx
#: src/modules/spreadsheet-import/components/StepNavigationButton.tsx
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
#: src/modules/auth/sign-in-up/components/internal/SignInUpWithCredentials.tsx
msgid "Continue"
msgstr "Continua"
@@ -3438,6 +3479,21 @@ msgstr "Cost per 1 k Crèdits Extres"
msgid "Could not delete approved access domain"
msgstr "No s'ha pogut eliminar el domini d'accés aprovat"
#. js-lingui-id: KqYYBp
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Could not open billing portal. Please check your enterprise key is present, or contact support."
msgstr ""
#. js-lingui-id: ZuI4Sl
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Could not open Stripe. Please contact support."
msgstr ""
#. js-lingui-id: wVw4Am
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Could not refresh validity token. Please contact support."
msgstr ""
#. js-lingui-id: s8lFtq
#: src/hooks/useCopyToClipboard.tsx
msgid "Couldn't copy to clipboard"
@@ -3815,6 +3871,7 @@ msgstr "Domini personalitzat actualitzat"
#. js-lingui-id: 8skTDV
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Custom objects"
msgstr "Objectes personalitzats"
@@ -4249,7 +4306,6 @@ msgstr "elimina"
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
@@ -4337,7 +4393,6 @@ msgstr "Esborra camp"
#. js-lingui-id: 97QUV6
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItems.tsx
#: src/modules/favorites/components/CurrentWorkspaceMemberFavorites.tsx
msgid "Delete Folder"
msgstr "Elimina la carpeta"
@@ -4917,6 +4972,8 @@ msgid "Edit own profile information"
msgstr ""
#. js-lingui-id: h2KoTu
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/SettingsBillingContent.tsx
msgid "Edit payment method, see your invoices and more"
msgstr "Edita el mètode de pagament, veure les factures i més"
@@ -5216,6 +5273,11 @@ msgstr "Millora la seguretat requerint un codi juntament amb la teva contrasenya
msgid "Enjoy a {withCreditCardTrialPeriodDuration}-days free trial"
msgstr "Gaudeix d'un període de prova gratuït de {withCreditCardTrialPeriodDuration} dies"
#. js-lingui-id: 6iUnle
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Enjoy a 30-day free trial"
msgstr ""
#. js-lingui-id: T/N+2Z
#: src/modules/workflow/workflow-trigger/components/WorkflowEditTriggerWebhookForm.tsx
#: src/modules/object-record/record-field/ui/form-types/components/FormRawJsonFieldInput.tsx
@@ -5422,6 +5484,9 @@ msgstr "Introdueix la teva clau API"
#. js-lingui-id: GpB8YV
#: src/pages/settings/security/SettingsSecurity.tsx
#: src/pages/settings/security/SettingsSecurity.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
msgid "Enterprise"
msgstr "Empresa"
@@ -5430,6 +5495,22 @@ msgstr "Empresa"
msgid "Enterprise Feature"
msgstr ""
#. js-lingui-id: S5c4pl
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Enterprise License"
msgstr ""
#. js-lingui-id: KGE5g0
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Enterprise license activated successfully"
msgstr ""
#. js-lingui-id: SLuq/l
#: src/modules/settings/security/components/SSO/SettingsSSOSAMLForm.tsx
msgid "Entity ID"
@@ -5470,6 +5551,11 @@ msgstr "Esborrament de registres eliminats suaument"
msgid "Error"
msgstr "Error"
#. js-lingui-id: VouTsQ
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Error activating enterprise license"
msgstr ""
#. js-lingui-id: GHKxvg
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
msgid "Error deleting api key."
@@ -5495,11 +5581,6 @@ msgstr "Error en eliminar el Proveïdor d'Identitats SSO"
msgid "Error editing SSO Identity Provider"
msgstr "Error en editar el Proveïdor d'Identitats SSO"
#. js-lingui-id: GsIfmO
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkerMetricsGraph.tsx
msgid "Error fetching worker metrics: {errorMessage}"
msgstr "Error en obtenir les mètriques del worker: {errorMessage}"
#. js-lingui-id: GdBN5t
#: src/modules/error-handler/components/AppRootErrorFallback.tsx
msgid "Error illustration"
@@ -5530,11 +5611,26 @@ msgstr "Error carregant el missatge"
msgid "Error Message"
msgstr "Missatge d'error"
#. js-lingui-id: Mox63G
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Error opening billing portal"
msgstr ""
#. js-lingui-id: e/eieW
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Error opening Stripe"
msgstr ""
#. js-lingui-id: bT/0cM
#: src/modules/ui/field/display/components/PhonesDisplay.tsx
msgid "Error parsing additional phones: {error}"
msgstr "Error en analitzar els telèfons addicionals: {error}"
#. js-lingui-id: zRXcyv
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Error refreshing validity token. Please contact support."
msgstr ""
#. js-lingui-id: PfAip2
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
msgid "Error regenerating api key."
@@ -5997,6 +6093,11 @@ msgstr ""
msgid "Failed to {translatedOperationType} {translatedMetadataName}. Related {relatedEntityNames} validation failed. Please check your configuration and try again."
msgstr ""
#. js-lingui-id: R1XJV1
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Failed to activate enterprise license. Please check your key or contact support."
msgstr ""
#. js-lingui-id: vJiM7T
#: src/pages/settings/ai/components/SettingsSkillsTable.tsx
msgid "Failed to activate skill"
@@ -6208,7 +6309,6 @@ msgstr ""
#. js-lingui-id: X9kySA
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItemFolders.tsx
#: src/modules/favorites/components/CurrentWorkspaceMemberFavoritesFolders.tsx
msgid "Favorites"
msgstr "Preferits"
@@ -6374,7 +6474,6 @@ msgstr ""
#: src/modules/views/components/ViewBarFilterDropdownFieldSelectMenu.tsx
#: src/modules/views/components/ViewBarFilterButton.tsx
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
#: src/modules/side-panel/pages/page-layout/components/ChartFiltersSettings.tsx
#: src/modules/settings/roles/components/SettingsRolesList.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectRelationsTable.tsx
#: src/modules/object-record/record-table/record-table-header/components/RecordTableColumnHeadDropdownMenu.tsx
@@ -6397,6 +6496,7 @@ msgid "Filter group rule options"
msgstr "Opcions de regles del grup de filtres"
#. js-lingui-id: cSev+j
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/settings/developers/components/SettingsDevelopersWebhookForm.tsx
msgid "Filters"
msgstr "Filtres"
@@ -6467,6 +6567,11 @@ msgstr "Nom"
msgid "First name can not be empty"
msgstr "El nom no pot estar buit"
#. js-lingui-id: JREYkg
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Fix the payment issue to keep your enterprise features active."
msgstr ""
#. js-lingui-id: ylQd2j
#: src/modules/workflow/workflow-steps/workflow-actions/utils/getActionHeaderTypeOrThrow.ts
#: src/modules/side-panel/pages/workflow/action/components/SidePanelWorkflowSelectAction.tsx
@@ -6486,7 +6591,7 @@ msgid "Folder name"
msgstr ""
#. js-lingui-id: HSh8u/
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubPage.tsx
#: src/modules/settings/accounts/components/message-folders/SettingsAccountsMessageFoldersCard.tsx
msgid "Folders"
msgstr "Carpetes"
@@ -6635,6 +6740,22 @@ msgstr "Fitxers generats"
msgid "German"
msgstr "Alemany"
#. js-lingui-id: sqtljx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Get Enterprise"
msgstr ""
#. js-lingui-id: o2kSwB
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Get Enterprise Key"
msgstr ""
#. js-lingui-id: NXEW3h
#: src/pages/onboarding/InviteTeam.tsx
msgid "Get the most out of your workspace by inviting your team."
@@ -6655,6 +6776,12 @@ msgstr "Global"
msgid "Go Back"
msgstr ""
#. js-lingui-id: Hb4Cgz
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Go to billing portal"
msgstr ""
#. js-lingui-id: mUbv8L
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
msgid "Go to Companies"
@@ -7240,6 +7367,11 @@ msgstr ""
msgid "Inbox"
msgstr "Bústia d'entrada"
#. js-lingui-id: mtGDyy
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Incomplete"
msgstr ""
#. js-lingui-id: O5wNUa
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
msgid "index"
@@ -7882,9 +8014,8 @@ msgid "Launch manually"
msgstr "Llança manualment"
#. js-lingui-id: rdU729
#: src/modules/side-panel/pages/page-layout/utils/getPageLayoutPageTitle.ts
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsLayout.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCustomView.tsx
msgid "Layout"
@@ -7957,6 +8088,12 @@ msgstr ""
msgid "Less than or equal"
msgstr "Menor o igual"
#. js-lingui-id: 3qg5Ro
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Licensee"
msgstr ""
#. js-lingui-id: 1njn7W
#: src/pages/settings/profile/appearance/components/SettingsExperience.tsx
#: src/modules/ui/navigation/navigation-drawer/components/MultiWorkspaceDropdown/internal/MultiWorkspaceDropdownThemesComponents.tsx
@@ -8260,6 +8397,8 @@ msgid "Manage billing and subscriptions"
msgstr "Gestionar facturació i subscripcions"
#. js-lingui-id: nvgUPq
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/SettingsBillingContent.tsx
msgid "Manage billing information"
msgstr "Gestiona la informació de facturació"
@@ -8612,6 +8751,11 @@ msgstr "Mes de l'any"
msgid "monthly"
msgstr "mensual"
#. js-lingui-id: Sew/cK
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Monthly subscription"
msgstr ""
#. js-lingui-id: 6jefe3
#: src/modules/side-panel/pages/page-layout/utils/getDateGranularityPluralLabel.ts
#: src/modules/side-panel/pages/page-layout/utils/getDateGranularityPluralLabel.ts
@@ -8673,7 +8817,7 @@ msgid "Move right"
msgstr "Moure a la dreta"
#. js-lingui-id: 6qDVmw
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
msgid "Move to a folder"
msgstr ""
@@ -9274,21 +9418,15 @@ msgid "No Files"
msgstr "Sense fitxers"
#. js-lingui-id: pYblOw
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/favorites/favorite-folder-picker/components/FavoriteFolderPickerList.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubPage.tsx
msgid "No folder"
msgstr "Sense carpeta"
#. js-lingui-id: 6XMhqL
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubPage.tsx
msgid "No folders available"
msgstr ""
#. js-lingui-id: aywdyd
#: src/modules/favorites/favorite-folder-picker/components/FavoriteFolderPickerList.tsx
msgid "No folders found"
msgstr "No s'ha trobat cap carpeta"
#. js-lingui-id: 1jgsYC
#: src/modules/settings/accounts/components/message-folders/SettingsMessageFoldersEmptyStateCard.tsx
msgid "No folders found for this account"
@@ -9454,8 +9592,8 @@ msgstr "Cap resultat"
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewSystemSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewObjectPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubPage.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubPage.tsx
#: src/modules/side-panel/components/SidePanelList.tsx
msgid "No results found"
msgstr "No s'han trobat resultats"
@@ -9666,6 +9804,7 @@ msgstr ""
#. js-lingui-id: b/j06W
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "OAuth"
msgstr ""
@@ -9674,6 +9813,11 @@ msgstr ""
msgid "OAuth Credentials"
msgstr ""
#. js-lingui-id: LNLTJB
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "OAuth or API Key"
msgstr ""
#. js-lingui-id: pNEViR
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
msgid "object"
@@ -10188,11 +10332,26 @@ msgstr "S'ha enviat l'enllaç de restabliment de la contrasenya al correu electr
msgid "Paste the code below"
msgstr "Enganxa el codi a continuació"
#. js-lingui-id: raz2Pm
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Paste your enterprise key below to activate"
msgstr ""
#. js-lingui-id: dNdgvF
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Paste your enterprise key here"
msgstr ""
#. js-lingui-id: I6gXOa
#: src/modules/settings/logic-functions/components/tabs/SettingsLogicFunctionTriggersTab.tsx
msgid "Path"
msgstr "Camí"
#. js-lingui-id: QmXBEc
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Payment issue"
msgstr ""
#. js-lingui-id: UbRKMZ
#: src/pages/settings/emailing-domains/utils/getEmailingDomainStatusText.ts
#: src/modules/settings/security/components/approvedAccessDomains/SettingsApprovedAccessDomainsListCard.tsx
@@ -10329,13 +10488,13 @@ msgid "Pick a {objectLabel} record"
msgstr "Tria un registre de {objectLabel}"
#. js-lingui-id: JqqNlC
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewPickerSubView.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
msgid "Pick a view"
msgstr ""
#. js-lingui-id: Wlba2h
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelObjectPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewObjectPickerSubView.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
msgid "Pick an object"
msgstr ""
@@ -10953,6 +11112,16 @@ msgstr "Versions"
msgid "Reload"
msgstr "Tornar a carregar"
#. js-lingui-id: qbM5In
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Reload validity token"
msgstr ""
#. js-lingui-id: MZWnSC
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Reloading..."
msgstr ""
#. js-lingui-id: qlAIQ1
#: src/modules/object-metadata/components/RemoteNavigationDrawerSection.tsx
msgid "Remote"
@@ -10965,16 +11134,6 @@ msgstr "Remote"
msgid "Remove"
msgstr "Elimina"
#. js-lingui-id: gleHgw
#: src/modules/favorites/components/CurrentWorkspaceMemberFavorites.tsx
msgid "Remove {favoriteCount} favorite?"
msgstr "Vols eliminar {favoriteCount} preferit?"
#. js-lingui-id: 1VQkMD
#: src/modules/favorites/components/CurrentWorkspaceMemberFavorites.tsx
msgid "Remove {favoriteCount} favorites?"
msgstr "Vols eliminar {favoriteCount} preferits?"
#. js-lingui-id: 0Urj9q
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItems.tsx
msgid "Remove {navigationMenuItemCount} navigation menu item?"
@@ -11006,7 +11165,6 @@ msgid "Remove Deleted filter"
msgstr "Elimina filtre Eliminat"
#. js-lingui-id: T/pF0Z
#: src/modules/favorites/components/PageFavoriteButton.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
msgid "Remove from favorites"
@@ -11061,7 +11219,6 @@ msgstr "Elimina la variable"
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
msgid "Rename"
msgstr "Canvia el nom"
@@ -11228,7 +11385,7 @@ msgstr "Resultat"
#. js-lingui-id: kx0s+n
#: src/modules/side-panel/pages/search/hooks/useSidePanelSearchRecords.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubPage.tsx
msgid "Results"
msgstr "Resultats"
@@ -11367,6 +11524,11 @@ msgstr ""
msgid "row level permission predicate group"
msgstr ""
#. js-lingui-id: xPaeO2
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Row-level security"
msgstr ""
#. js-lingui-id: 7jTlsu
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectFormOptionRow.tsx
msgid "Ruby"
@@ -11485,6 +11647,8 @@ msgstr ""
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/constants/EngineComponentKeyComponentMap.tsx
#: src/modules/command-menu-item/constants/EngineComponentKeyComponentMap.tsx
msgid "Search"
msgstr "Cerca"
@@ -11521,7 +11685,7 @@ msgid "Search a field..."
msgstr "Cerca un camp..."
#. js-lingui-id: ITQFzL
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubPage.tsx
msgid "Search a folder..."
msgstr ""
@@ -11689,7 +11853,7 @@ msgid "Search records"
msgstr "Cerca enregistraments"
#. js-lingui-id: rRklUH
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubPage.tsx
msgid "Search records..."
msgstr ""
@@ -11724,11 +11888,13 @@ msgid "Searching the web for {query}"
msgstr ""
#. js-lingui-id: 8sgZS9
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
#: src/modules/billing/components/SubscriptionPrice.tsx
msgid "seat / month"
msgstr ""
#. js-lingui-id: aQnWwf
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
#: src/modules/billing/components/SubscriptionPrice.tsx
msgid "seat / month - billed yearly"
msgstr ""
@@ -12556,6 +12722,7 @@ msgstr "SSO"
#. js-lingui-id: vlvAkg
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "SSO (SAML / OIDC)"
msgstr "SSO (SAML / OIDC)"
@@ -12600,6 +12767,16 @@ msgstr ""
msgid "Start"
msgstr "Comença"
#. js-lingui-id: ASqWQi
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Start a new enterprise subscription to re-enable enterprise features."
msgstr ""
#. js-lingui-id: OC6rnK
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Start a new enterprise subscription."
msgstr ""
#. js-lingui-id: D3iCkb
#: src/pages/settings/security/event-logs/components/EventLogFilters.tsx
msgid "Start Date"
@@ -12625,6 +12802,11 @@ msgid "State"
msgstr "Estat"
#. js-lingui-id: uAQUqI
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/admin-panel/SettingsAdminIndicatorHealthStatus.tsx
#: src/modules/settings/components/SettingsDnsRecordsTable.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
@@ -12920,11 +13102,11 @@ msgstr ""
#. js-lingui-id: 0apULK
#: src/pages/settings/data-model/SettingsObjectTable.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelSystemObjectPickerSubView.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelSystemObjectPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelObjectPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewSystemSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewSystemSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewObjectPickerSubView.tsx
msgid "System objects"
msgstr ""
@@ -13227,6 +13409,11 @@ msgstr "Hi ha columnes requerides que no coincideixen o s'han ignorat. Vols cont
msgid "There are still some rows that contain errors. Rows with errors will be ignored when submitting."
msgstr "Encara hi ha files que contenen errors. Les files amb errors s'ignoraran en enviar."
#. js-lingui-id: CA9PTn
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "There is a payment issue with your subscription. Please update your payment method."
msgstr ""
#. js-lingui-id: WQk7Cf
#: src/modules/activities/timeline-activities/components/TimelineCard.tsx
msgid "There is no activity associated with this record."
@@ -13299,16 +13486,6 @@ msgstr "Aquesta acció no es pot desfer. Això eliminarà permanentment la teva
msgid "This action cannot be undone. This will permanently reset your two factor authentication method. <0/> Please type in your email to confirm."
msgstr "Aquesta acció no es pot desfer. Això restablirà permanentment el teu mètode d'autenticació de dos factors. <0/> Si us plau, escriu el teu correu electrònic per confirmar."
#. js-lingui-id: XdFYs2
#: src/modules/favorites/components/CurrentWorkspaceMemberFavorites.tsx
msgid "This action will delete this favorite folder and all {favoriteCount} favorites inside. Do you want to continue?"
msgstr "Aquesta acció suprimirà aquesta carpeta de preferits i tots els {favoriteCount} preferits que conté. Vols continuar?"
#. js-lingui-id: pFXbgz
#: src/modules/favorites/components/CurrentWorkspaceMemberFavorites.tsx
msgid "This action will delete this favorite folder and the favorite inside. Do you want to continue?"
msgstr "Aquesta acció suprimirà aquesta carpeta de preferits i el preferit que conté. Vols continuar?"
#. js-lingui-id: lAHIY2
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItems.tsx
msgid "This action will delete this folder and all {navigationMenuItemCount} navigation menu items inside. Do you want to continue?"
@@ -13339,9 +13516,9 @@ msgstr ""
msgid "This database value overrides environment settings. "
msgstr "Aquest valor de la base de dades supera la configuració de l'entorn."
#. js-lingui-id: qHAJQ2
#. js-lingui-id: 8IRnd6
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelSection.tsx
msgid "This feature is part of the Organization Plan"
msgid "This feature is part of the Enterprise Plan"
msgstr ""
#. js-lingui-id: own57K
@@ -13650,6 +13827,8 @@ msgid "Transfer ownership"
msgstr ""
#. js-lingui-id: lhkaAC
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/internal/PlansTags.tsx
msgid "Trial"
msgstr "Prova"
@@ -13829,7 +14008,7 @@ msgid "Type"
msgstr "Tipus"
#. js-lingui-id: SKD2e4
#: src/modules/activities/components/ActivityRichTextEditor.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/RichTextFieldEditor.tsx
msgid "Type '/' for commands, '@' for mentions"
msgstr ""
@@ -13840,7 +14019,7 @@ msgid "Type anything..."
msgstr "Teclegeu qualsevol cosa..."
#. js-lingui-id: UhqKcC
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubPage.tsx
msgid "Type to search records"
msgstr ""
@@ -13998,6 +14177,11 @@ msgstr "Contactes il·limitats"
msgid "Unlisted"
msgstr "No Llistat"
#. js-lingui-id: Ep1uUU
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Unlock enterprise features like SSO, row-level security, and audit logs."
msgstr ""
#. js-lingui-id: eQMhFX
#: src/modules/advanced-text-editor/extensions/slash-command/DefaultSlashCommands.ts
msgid "unordered"
@@ -14067,6 +14251,11 @@ msgstr "actualitza"
msgid "Update"
msgstr "Actualitza"
#. js-lingui-id: Y69tSP
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Update payment method"
msgstr ""
#. js-lingui-id: 0KAL3W
#: src/modules/side-panel/hooks/useOpenUpdateMultipleRecordsPageInSidePanel.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
@@ -14305,11 +14494,22 @@ msgstr "Utilitzant valor predeterminat de l'aplicació. Configureu mitjançant v
msgid "Using default value. Set a custom value to override."
msgstr "Utilitzant valor per defecte. Establiu un valor personalitzat per superar-lo."
#. js-lingui-id: zzp4XX
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Valid until"
msgstr ""
#. js-lingui-id: Clr4qp
#: src/modules/spreadsheet-import/steps/components/SpreadsheetImportStepperContainer.tsx
msgid "Validate Data"
msgstr "Verifica les dades"
#. js-lingui-id: PWZBIT
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Validity token refreshed successfully"
msgstr ""
#. js-lingui-id: wMHvYH
#: src/pages/settings/applications/tabs/SettingsApplicationDetailEnvironmentVariablesTable.tsx
#: src/modules/workflow/workflow-steps/workflow-actions/http-request-action/components/KeyValuePairInput.tsx
@@ -14436,6 +14636,8 @@ msgid "View and filter events, page views, object changes"
msgstr ""
#. js-lingui-id: KANz0G
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/SettingsBillingContent.tsx
msgid "View billing details"
msgstr "Veure els detalls de facturació"
@@ -14485,6 +14687,11 @@ msgstr "grup de vista"
msgid "View installed app"
msgstr ""
#. js-lingui-id: B02hom
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "View invoices"
msgstr ""
#. js-lingui-id: lh5BED
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkerQueueMetricsSection.tsx
msgid "View Jobs"
@@ -14503,6 +14710,7 @@ msgstr ""
#. js-lingui-id: ecVcAx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/constants/EngineComponentKeyComponentMap.tsx
msgid "View Previous AI Chats"
msgstr "Veure els xats d'IA anteriors"
@@ -14852,6 +15060,7 @@ msgstr "Fluxos de treball"
#: src/pages/settings/members/SettingsWorkspaceMember.tsx
#: src/pages/settings/logic-functions/SettingsLogicFunctionDetail.tsx
#: src/pages/settings/logic-functions/SettingsLogicFunctionDetail.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/emailing-domains/SettingsNewEmailingDomain.tsx
#: src/pages/settings/emailing-domains/SettingsEmailingDomainDetail.tsx
#: src/pages/settings/domains/SettingsDomains.tsx
@@ -14894,7 +15103,6 @@ msgstr "Fluxos de treball"
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownVisibilityContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCustomView.tsx
#: src/modules/navigation-menu-item/components/WorkspaceNavigationMenuItems.tsx
#: src/modules/favorites/components/WorkspaceFavorites.tsx
msgid "Workspace"
msgstr "Espai de treball"
@@ -15018,6 +15226,11 @@ msgstr "Any"
msgid "yearly"
msgstr "anual"
#. js-lingui-id: Y1GwUe
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Yearly subscription"
msgstr ""
#. js-lingui-id: +BGee5
#: src/modules/side-panel/pages/page-layout/utils/getDateGranularityPluralLabel.ts
msgid "years"
@@ -15150,6 +15363,36 @@ msgstr "Els teus assumptes de correus electrònics i títols de reunions seran c
msgid "Your emails and events content will be shared with your team."
msgstr "El contingut dels teus correus electrònics i esdeveniments seran compartits amb el teu equip."
#. js-lingui-id: ahEwS4
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your enterprise features are active"
msgstr ""
#. js-lingui-id: XMZLU/
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your enterprise features are active but your enterprise key is missing or invalid. This may be expected, but if not, please set a valid signed enterprise key to manage your subscription, or contact support."
msgstr ""
#. js-lingui-id: AxcwNj
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your enterprise features will be disabled"
msgstr ""
#. js-lingui-id: PT137K
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your enterprise features will remain active until {cancelAtDate}."
msgstr ""
#. js-lingui-id: 69Siss
#: src/modules/information-banner/components/enterprise/InformationBannerLegacyEnterpriseKey.tsx
msgid "Your enterprise key format is deprecated. Please activate a new key to keep enterprise features."
msgstr ""
#. js-lingui-id: NTpA4U
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your enterprise subscription has been canceled."
msgstr ""
#. js-lingui-id: 9ivpwk
#: src/pages/settings/SettingsProfile.tsx
msgid "Your name as it will be displayed"
@@ -15160,6 +15403,26 @@ msgstr "El vostre nom tal com serà mostrat"
msgid "Your name as it will be displayed on the app"
msgstr "El vostre nom tal com serà mostrat a l'aplicació"
#. js-lingui-id: 319YPG
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your subscription is active but your validity token is invalid or has expired. Try reloading it or contact support."
msgstr ""
#. js-lingui-id: Fx0axg
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your subscription is scheduled for cancellation"
msgstr ""
#. js-lingui-id: XgIa/8
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your subscription setup was not completed."
msgstr ""
#. js-lingui-id: Z9kbt6
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your subscription status is: {statusLabel}"
msgstr ""
#. js-lingui-id: QOd24n
#: src/modules/billing/hooks/useBillingWording.ts
msgid "Your trial period will end, and "
+343 -80
View File
@@ -663,10 +663,10 @@ msgstr "O tomto pracovním prostoru"
msgid "Access workspace data"
msgstr ""
#. js-lingui-id: c2UA7k
#. js-lingui-id: W5nhmk
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Access your workspace data from your favorite MCP client like Claude Desktop, Windsurf or Cursor."
msgstr "Přistupujte ke svým pracovním datům z vašeho oblíbeného MCP klienta, jako je Claude Desktop, Windsurf nebo Cursor."
msgid "Access your workspace data from your favorite MCP client like Claude Desktop, Claude Code, Cursor, or ChatGPT. Once connected, try: \"Show me the 5 most recently created companies\" or \"Create a new person named Jane Doe\"."
msgstr ""
#. js-lingui-id: u2Cycw
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionTabEnvironmentVariablesSection.tsx
@@ -752,23 +752,37 @@ msgid "Actions users can perform on this object"
msgstr "Akce, které uživatelé mohou provádět na tomto objektu"
#. js-lingui-id: FQBaXG
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/data-model/SettingsObjectFieldEdit.tsx
#: src/pages/settings/ai/SettingsSkillForm.tsx
#: src/pages/settings/ai/components/SettingsSkillInactiveMenuDropDown.tsx
#: src/modules/settings/security/components/SSO/SettingsSecuritySSORowDropdownMenu.tsx
#: src/modules/settings/data-model/objects/components/SettingsObjectInactiveMenuDropDown.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectFieldDisabledActionDropdown.tsx
#: src/modules/information-banner/components/enterprise/InformationBannerLegacyEnterpriseKey.tsx
#: src/modules/command-menu-item/record/constants/WorkflowCommandMenuItemsConfig.tsx
msgid "Activate"
msgstr "Aktivovat"
#. js-lingui-id: eqeFkF
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Activate Enterprise Key"
msgstr ""
#. js-lingui-id: tu8A/k
#: src/modules/command-menu-item/record/constants/WorkflowCommandMenuItemsConfig.tsx
msgid "Activate Workflow"
msgstr "Aktivovat Workflow"
#. js-lingui-id: jSZacs
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Activating..."
msgstr ""
#. js-lingui-id: F6pfE9
#: src/pages/settings/SettingsProfile.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/settings/domains/components/SettingsWorkspaceDomainCard.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobsTable.tsx
msgid "Active"
@@ -806,6 +820,13 @@ msgstr "Přidat \"{trimmedName}\" do možností"
msgid "Add a {objectLabelSingular}"
msgstr "Přidat {objectLabelSingular}"
#. js-lingui-id: 7W8nJr
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationUngroupedEditor.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
msgid "Add a Group"
msgstr ""
#. js-lingui-id: CZDwqQ
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
@@ -818,16 +839,10 @@ msgid "Add a node"
msgstr "Přidat uzel"
#. js-lingui-id: nGv1DN
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubView.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
msgid "Add a record"
msgstr ""
#. js-lingui-id: r8W+9y
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationUngroupedEditor.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
msgid "Add a Section"
msgstr ""
#. js-lingui-id: eMc2xs
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
msgid "Add a step"
@@ -915,11 +930,6 @@ msgstr "Přidat pravidlo filtru"
msgid "Add first filter"
msgstr "Přidat první filtr"
#. js-lingui-id: //rVZt
#: src/modules/favorites/favorite-folder-picker/components/FavoriteFolderPickerFooter.tsx
msgid "Add folder"
msgstr "Přidat složku"
#. js-lingui-id: 7XzAKI
#: src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowEditActionFormBuilder.tsx
msgid "Add inputs to your form"
@@ -1085,7 +1095,6 @@ msgid "Add to Favorite"
msgstr "Přidat do oblíbených"
#. js-lingui-id: pBsoKL
#: src/modules/favorites/components/PageFavoriteButton.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/mock/command-menu-items.mock.tsx
@@ -1429,7 +1438,7 @@ msgid "All set!"
msgstr "Vše hotovo!"
#. js-lingui-id: CHvT6e
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemObjectFlow.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemObjectSystemPickerSubPage.tsx
msgid "All system objects are already in the sidebar"
msgstr ""
@@ -1574,6 +1583,7 @@ msgstr "Při nahrávání obrázku došlo k chybě."
#. js-lingui-id: XyOToQ
#: src/utils/get-error-message-from-apollo-error.util.ts
#: src/utils/get-error-message-from-apollo-error.util.ts
#: src/modules/views/hooks/internal/usePerformViewSortAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
@@ -1664,12 +1674,14 @@ msgstr "API"
#. js-lingui-id: 0RqpZr
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "API & Webhooks"
msgstr "API & Webhooks"
#. js-lingui-id: yRnk5W
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
#: src/modules/settings/playground/components/PlaygroundSetupForm.tsx
msgid "API Key"
msgstr "API klíč"
@@ -1940,6 +1952,7 @@ msgstr "Vzestupně"
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/constants/EngineComponentKeyComponentMap.tsx
msgid "Ask AI"
msgstr "Zeptejte se AI"
@@ -2078,6 +2091,11 @@ msgstr ""
msgid "Attachments"
msgstr "Přílohy"
#. js-lingui-id: y2W2Hg
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Audit logs"
msgstr ""
#. js-lingui-id: EPEFrH
#: src/pages/settings/security/SettingsSecurity.tsx
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
@@ -2114,6 +2132,11 @@ msgstr "Ověření"
msgid "Authentication failed"
msgstr "Ověření selhalo"
#. js-lingui-id: TxT0ER
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Authentication method"
msgstr ""
#. js-lingui-id: H7qgYQ
#: src/pages/settings/SettingsTwoFactorAuthenticationMethod.tsx
msgid "Authenticator app"
@@ -2306,6 +2329,11 @@ msgstr "mezi {startOrdinal} a {endOrdinal} měsíce"
msgid "Billing"
msgstr "Fakturace"
#. js-lingui-id: dSjFxR
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Billing history"
msgstr ""
#. js-lingui-id: nJGwRf
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
msgid "Billing interval"
@@ -2563,6 +2591,7 @@ msgid "Cancel metered tier switching?"
msgstr "Zrušit přepínání úrovně s měřením?"
#. js-lingui-id: rRK/Lf
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/SettingsBillingContent.tsx
msgid "Cancel Plan"
msgstr "Zrušit plán"
@@ -2578,10 +2607,26 @@ msgid "Cancel plan switching?"
msgstr "Zrušit změnu plánu?"
#. js-lingui-id: N6gPiD
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/SettingsBillingContent.tsx
msgid "Cancel your subscription"
msgstr "Zrušit vaše předplatné"
#. js-lingui-id: GGWsTU
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Canceled"
msgstr ""
#. js-lingui-id: y4uH7j
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Cancelling"
msgstr ""
#. js-lingui-id: WbPx+C
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Cancels on"
msgstr ""
#. js-lingui-id: XDbjjW
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCustomView.tsx
msgid "Cannot delete the only view"
@@ -3077,11 +3122,6 @@ msgstr ""
msgid "Configure fallback login methods for users with SSO bypass permissions"
msgstr "Nakonfigurujte alternativní metody přihlášení pro uživatele s oprávněními k obejití SSO"
#. js-lingui-id: c7wznw
#: src/modules/side-panel/pages/page-layout/utils/getPageLayoutPageTitle.ts
msgid "Configure filters"
msgstr "Nastavit filtry"
#. js-lingui-id: ghdb7+
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelsGeneral.tsx
msgid "Configure how we should display your events in your calendar"
@@ -3279,6 +3319,7 @@ msgstr ""
#: src/modules/spreadsheet-import/steps/components/SelectHeaderStep/SelectHeaderStep.tsx
#: src/modules/spreadsheet-import/steps/components/MatchColumnsStep/MatchColumnsStep.tsx
#: src/modules/spreadsheet-import/components/StepNavigationButton.tsx
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
#: src/modules/auth/sign-in-up/components/internal/SignInUpWithCredentials.tsx
msgid "Continue"
msgstr "Pokračovat"
@@ -3438,6 +3479,21 @@ msgstr "Cena za 1k dalších kreditů"
msgid "Could not delete approved access domain"
msgstr "Nelze odstranit schválenou přístupovou doménu"
#. js-lingui-id: KqYYBp
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Could not open billing portal. Please check your enterprise key is present, or contact support."
msgstr ""
#. js-lingui-id: ZuI4Sl
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Could not open Stripe. Please contact support."
msgstr ""
#. js-lingui-id: wVw4Am
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Could not refresh validity token. Please contact support."
msgstr ""
#. js-lingui-id: s8lFtq
#: src/hooks/useCopyToClipboard.tsx
msgid "Couldn't copy to clipboard"
@@ -3815,6 +3871,7 @@ msgstr "Vlastní doména aktualizována"
#. js-lingui-id: 8skTDV
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Custom objects"
msgstr "Vlastní objekty"
@@ -4249,7 +4306,6 @@ msgstr "smazat"
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
@@ -4337,7 +4393,6 @@ msgstr "Smazat pole"
#. js-lingui-id: 97QUV6
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItems.tsx
#: src/modules/favorites/components/CurrentWorkspaceMemberFavorites.tsx
msgid "Delete Folder"
msgstr "Smazat složku"
@@ -4917,6 +4972,8 @@ msgid "Edit own profile information"
msgstr ""
#. js-lingui-id: h2KoTu
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/SettingsBillingContent.tsx
msgid "Edit payment method, see your invoices and more"
msgstr "Upravit způsob platby, zobrazit faktury a další"
@@ -5216,6 +5273,11 @@ msgstr "Zvyšuje bezpečnost tím, že vyžaduje kód společně s vaším hesle
msgid "Enjoy a {withCreditCardTrialPeriodDuration}-days free trial"
msgstr "Užijte si {withCreditCardTrialPeriodDuration}-denní bezplatnou zkušební dobu"
#. js-lingui-id: 6iUnle
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Enjoy a 30-day free trial"
msgstr ""
#. js-lingui-id: T/N+2Z
#: src/modules/workflow/workflow-trigger/components/WorkflowEditTriggerWebhookForm.tsx
#: src/modules/object-record/record-field/ui/form-types/components/FormRawJsonFieldInput.tsx
@@ -5422,6 +5484,9 @@ msgstr "Zadejte svůj klíč API"
#. js-lingui-id: GpB8YV
#: src/pages/settings/security/SettingsSecurity.tsx
#: src/pages/settings/security/SettingsSecurity.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
msgid "Enterprise"
msgstr "Podnik"
@@ -5430,6 +5495,22 @@ msgstr "Podnik"
msgid "Enterprise Feature"
msgstr ""
#. js-lingui-id: S5c4pl
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Enterprise License"
msgstr ""
#. js-lingui-id: KGE5g0
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Enterprise license activated successfully"
msgstr ""
#. js-lingui-id: SLuq/l
#: src/modules/settings/security/components/SSO/SettingsSSOSAMLForm.tsx
msgid "Entity ID"
@@ -5470,6 +5551,11 @@ msgstr "Vymazání soft-deleted záznamů"
msgid "Error"
msgstr "Chyba"
#. js-lingui-id: VouTsQ
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Error activating enterprise license"
msgstr ""
#. js-lingui-id: GHKxvg
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
msgid "Error deleting api key."
@@ -5495,11 +5581,6 @@ msgstr "Chyba při mazání poskytovatele identity SSO"
msgid "Error editing SSO Identity Provider"
msgstr "Chyba při úpravě poskytovatele identity SSO"
#. js-lingui-id: GsIfmO
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkerMetricsGraph.tsx
msgid "Error fetching worker metrics: {errorMessage}"
msgstr "Chyba při získávání metrik pracovníka: {errorMessage}"
#. js-lingui-id: GdBN5t
#: src/modules/error-handler/components/AppRootErrorFallback.tsx
msgid "Error illustration"
@@ -5530,11 +5611,26 @@ msgstr "Chyba při načítání zprávy"
msgid "Error Message"
msgstr "Chybová zpráva"
#. js-lingui-id: Mox63G
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Error opening billing portal"
msgstr ""
#. js-lingui-id: e/eieW
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Error opening Stripe"
msgstr ""
#. js-lingui-id: bT/0cM
#: src/modules/ui/field/display/components/PhonesDisplay.tsx
msgid "Error parsing additional phones: {error}"
msgstr "Chyba při zpracování dalších telefonů: {error}"
#. js-lingui-id: zRXcyv
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Error refreshing validity token. Please contact support."
msgstr ""
#. js-lingui-id: PfAip2
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
msgid "Error regenerating api key."
@@ -5997,6 +6093,11 @@ msgstr ""
msgid "Failed to {translatedOperationType} {translatedMetadataName}. Related {relatedEntityNames} validation failed. Please check your configuration and try again."
msgstr ""
#. js-lingui-id: R1XJV1
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Failed to activate enterprise license. Please check your key or contact support."
msgstr ""
#. js-lingui-id: vJiM7T
#: src/pages/settings/ai/components/SettingsSkillsTable.tsx
msgid "Failed to activate skill"
@@ -6208,7 +6309,6 @@ msgstr ""
#. js-lingui-id: X9kySA
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItemFolders.tsx
#: src/modules/favorites/components/CurrentWorkspaceMemberFavoritesFolders.tsx
msgid "Favorites"
msgstr "Oblíbené"
@@ -6374,7 +6474,6 @@ msgstr ""
#: src/modules/views/components/ViewBarFilterDropdownFieldSelectMenu.tsx
#: src/modules/views/components/ViewBarFilterButton.tsx
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
#: src/modules/side-panel/pages/page-layout/components/ChartFiltersSettings.tsx
#: src/modules/settings/roles/components/SettingsRolesList.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectRelationsTable.tsx
#: src/modules/object-record/record-table/record-table-header/components/RecordTableColumnHeadDropdownMenu.tsx
@@ -6397,6 +6496,7 @@ msgid "Filter group rule options"
msgstr "Možnosti pravidel skupiny filtru"
#. js-lingui-id: cSev+j
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/settings/developers/components/SettingsDevelopersWebhookForm.tsx
msgid "Filters"
msgstr "Filtry"
@@ -6467,6 +6567,11 @@ msgstr "Jméno"
msgid "First name can not be empty"
msgstr "Křestní jméno nesmí být prázdné"
#. js-lingui-id: JREYkg
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Fix the payment issue to keep your enterprise features active."
msgstr ""
#. js-lingui-id: ylQd2j
#: src/modules/workflow/workflow-steps/workflow-actions/utils/getActionHeaderTypeOrThrow.ts
#: src/modules/side-panel/pages/workflow/action/components/SidePanelWorkflowSelectAction.tsx
@@ -6486,7 +6591,7 @@ msgid "Folder name"
msgstr ""
#. js-lingui-id: HSh8u/
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubPage.tsx
#: src/modules/settings/accounts/components/message-folders/SettingsAccountsMessageFoldersCard.tsx
msgid "Folders"
msgstr "Složky"
@@ -6635,6 +6740,22 @@ msgstr "Vygenerované soubory"
msgid "German"
msgstr "Němčina"
#. js-lingui-id: sqtljx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Get Enterprise"
msgstr ""
#. js-lingui-id: o2kSwB
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Get Enterprise Key"
msgstr ""
#. js-lingui-id: NXEW3h
#: src/pages/onboarding/InviteTeam.tsx
msgid "Get the most out of your workspace by inviting your team."
@@ -6655,6 +6776,12 @@ msgstr "Globální"
msgid "Go Back"
msgstr ""
#. js-lingui-id: Hb4Cgz
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Go to billing portal"
msgstr ""
#. js-lingui-id: mUbv8L
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
msgid "Go to Companies"
@@ -7240,6 +7367,11 @@ msgstr ""
msgid "Inbox"
msgstr "Schránka"
#. js-lingui-id: mtGDyy
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Incomplete"
msgstr ""
#. js-lingui-id: O5wNUa
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
msgid "index"
@@ -7882,9 +8014,8 @@ msgid "Launch manually"
msgstr "Spustit ručně"
#. js-lingui-id: rdU729
#: src/modules/side-panel/pages/page-layout/utils/getPageLayoutPageTitle.ts
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsLayout.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCustomView.tsx
msgid "Layout"
@@ -7957,6 +8088,12 @@ msgstr ""
msgid "Less than or equal"
msgstr "Menší nebo rovno"
#. js-lingui-id: 3qg5Ro
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Licensee"
msgstr ""
#. js-lingui-id: 1njn7W
#: src/pages/settings/profile/appearance/components/SettingsExperience.tsx
#: src/modules/ui/navigation/navigation-drawer/components/MultiWorkspaceDropdown/internal/MultiWorkspaceDropdownThemesComponents.tsx
@@ -8260,6 +8397,8 @@ msgid "Manage billing and subscriptions"
msgstr "Správa fakturace a předplatného"
#. js-lingui-id: nvgUPq
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/SettingsBillingContent.tsx
msgid "Manage billing information"
msgstr "Správa fakturačních údajů"
@@ -8612,6 +8751,11 @@ msgstr "Měsíc v roce"
msgid "monthly"
msgstr "měsíční"
#. js-lingui-id: Sew/cK
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Monthly subscription"
msgstr ""
#. js-lingui-id: 6jefe3
#: src/modules/side-panel/pages/page-layout/utils/getDateGranularityPluralLabel.ts
#: src/modules/side-panel/pages/page-layout/utils/getDateGranularityPluralLabel.ts
@@ -8673,7 +8817,7 @@ msgid "Move right"
msgstr "Posunout doprava"
#. js-lingui-id: 6qDVmw
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
msgid "Move to a folder"
msgstr ""
@@ -9274,21 +9418,15 @@ msgid "No Files"
msgstr "Žádné soubory"
#. js-lingui-id: pYblOw
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/favorites/favorite-folder-picker/components/FavoriteFolderPickerList.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubPage.tsx
msgid "No folder"
msgstr "Žádná složka"
#. js-lingui-id: 6XMhqL
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubPage.tsx
msgid "No folders available"
msgstr ""
#. js-lingui-id: aywdyd
#: src/modules/favorites/favorite-folder-picker/components/FavoriteFolderPickerList.tsx
msgid "No folders found"
msgstr "Žádné složky nenalezeny"
#. js-lingui-id: 1jgsYC
#: src/modules/settings/accounts/components/message-folders/SettingsMessageFoldersEmptyStateCard.tsx
msgid "No folders found for this account"
@@ -9454,8 +9592,8 @@ msgstr "Žádné výsledky"
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewSystemSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewObjectPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubPage.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubPage.tsx
#: src/modules/side-panel/components/SidePanelList.tsx
msgid "No results found"
msgstr "Nenalezeny žádné výsledky"
@@ -9666,6 +9804,7 @@ msgstr ""
#. js-lingui-id: b/j06W
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "OAuth"
msgstr ""
@@ -9674,6 +9813,11 @@ msgstr ""
msgid "OAuth Credentials"
msgstr ""
#. js-lingui-id: LNLTJB
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "OAuth or API Key"
msgstr ""
#. js-lingui-id: pNEViR
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
msgid "object"
@@ -10188,11 +10332,26 @@ msgstr "Odkaz pro resetování hesla byl odeslán na email"
msgid "Paste the code below"
msgstr "Vložte kód níže"
#. js-lingui-id: raz2Pm
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Paste your enterprise key below to activate"
msgstr ""
#. js-lingui-id: dNdgvF
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Paste your enterprise key here"
msgstr ""
#. js-lingui-id: I6gXOa
#: src/modules/settings/logic-functions/components/tabs/SettingsLogicFunctionTriggersTab.tsx
msgid "Path"
msgstr "Cesta"
#. js-lingui-id: QmXBEc
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Payment issue"
msgstr ""
#. js-lingui-id: UbRKMZ
#: src/pages/settings/emailing-domains/utils/getEmailingDomainStatusText.ts
#: src/modules/settings/security/components/approvedAccessDomains/SettingsApprovedAccessDomainsListCard.tsx
@@ -10329,13 +10488,13 @@ msgid "Pick a {objectLabel} record"
msgstr "Vyberte záznam {objectLabel}"
#. js-lingui-id: JqqNlC
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewPickerSubView.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
msgid "Pick a view"
msgstr ""
#. js-lingui-id: Wlba2h
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelObjectPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewObjectPickerSubView.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
msgid "Pick an object"
msgstr ""
@@ -10953,6 +11112,16 @@ msgstr "Verze"
msgid "Reload"
msgstr "Načíst znovu"
#. js-lingui-id: qbM5In
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Reload validity token"
msgstr ""
#. js-lingui-id: MZWnSC
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Reloading..."
msgstr ""
#. js-lingui-id: qlAIQ1
#: src/modules/object-metadata/components/RemoteNavigationDrawerSection.tsx
msgid "Remote"
@@ -10965,16 +11134,6 @@ msgstr "Vzdálený"
msgid "Remove"
msgstr "Odstranit"
#. js-lingui-id: gleHgw
#: src/modules/favorites/components/CurrentWorkspaceMemberFavorites.tsx
msgid "Remove {favoriteCount} favorite?"
msgstr "Odebrat {favoriteCount} oblíbenou položku?"
#. js-lingui-id: 1VQkMD
#: src/modules/favorites/components/CurrentWorkspaceMemberFavorites.tsx
msgid "Remove {favoriteCount} favorites?"
msgstr "Odebrat {favoriteCount} oblíbené položky?"
#. js-lingui-id: 0Urj9q
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItems.tsx
msgid "Remove {navigationMenuItemCount} navigation menu item?"
@@ -11006,7 +11165,6 @@ msgid "Remove Deleted filter"
msgstr "Odstranit smazaný filtr"
#. js-lingui-id: T/pF0Z
#: src/modules/favorites/components/PageFavoriteButton.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
msgid "Remove from favorites"
@@ -11061,7 +11219,6 @@ msgstr "Odstranit proměnnou"
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
msgid "Rename"
msgstr "Přejmenovat"
@@ -11228,7 +11385,7 @@ msgstr "Výsledek"
#. js-lingui-id: kx0s+n
#: src/modules/side-panel/pages/search/hooks/useSidePanelSearchRecords.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubPage.tsx
msgid "Results"
msgstr "Výsledky"
@@ -11367,6 +11524,11 @@ msgstr ""
msgid "row level permission predicate group"
msgstr ""
#. js-lingui-id: xPaeO2
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Row-level security"
msgstr ""
#. js-lingui-id: 7jTlsu
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectFormOptionRow.tsx
msgid "Ruby"
@@ -11485,6 +11647,8 @@ msgstr ""
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/constants/EngineComponentKeyComponentMap.tsx
#: src/modules/command-menu-item/constants/EngineComponentKeyComponentMap.tsx
msgid "Search"
msgstr "Hledat"
@@ -11521,7 +11685,7 @@ msgid "Search a field..."
msgstr "Hledat ve sloupci..."
#. js-lingui-id: ITQFzL
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubPage.tsx
msgid "Search a folder..."
msgstr ""
@@ -11689,7 +11853,7 @@ msgid "Search records"
msgstr "Hledání záznamů"
#. js-lingui-id: rRklUH
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubPage.tsx
msgid "Search records..."
msgstr ""
@@ -11724,11 +11888,13 @@ msgid "Searching the web for {query}"
msgstr ""
#. js-lingui-id: 8sgZS9
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
#: src/modules/billing/components/SubscriptionPrice.tsx
msgid "seat / month"
msgstr "sedadlo / měsíc"
#. js-lingui-id: aQnWwf
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
#: src/modules/billing/components/SubscriptionPrice.tsx
msgid "seat / month - billed yearly"
msgstr "sedadlo / měsíc - účtováno ročně"
@@ -12556,6 +12722,7 @@ msgstr "Jednotné přihlášení"
#. js-lingui-id: vlvAkg
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "SSO (SAML / OIDC)"
msgstr "SSO (SAML / OIDC)"
@@ -12600,6 +12767,16 @@ msgstr ""
msgid "Start"
msgstr "Spustit"
#. js-lingui-id: ASqWQi
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Start a new enterprise subscription to re-enable enterprise features."
msgstr ""
#. js-lingui-id: OC6rnK
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Start a new enterprise subscription."
msgstr ""
#. js-lingui-id: D3iCkb
#: src/pages/settings/security/event-logs/components/EventLogFilters.tsx
msgid "Start Date"
@@ -12625,6 +12802,11 @@ msgid "State"
msgstr "Stav"
#. js-lingui-id: uAQUqI
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/admin-panel/SettingsAdminIndicatorHealthStatus.tsx
#: src/modules/settings/components/SettingsDnsRecordsTable.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
@@ -12920,11 +13102,11 @@ msgstr ""
#. js-lingui-id: 0apULK
#: src/pages/settings/data-model/SettingsObjectTable.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelSystemObjectPickerSubView.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelSystemObjectPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelObjectPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewSystemSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewSystemSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewObjectPickerSubView.tsx
msgid "System objects"
msgstr ""
@@ -13227,6 +13409,11 @@ msgstr "Některé povinné sloupce nejsou spojené nebo ignorované. Chcete pokr
msgid "There are still some rows that contain errors. Rows with errors will be ignored when submitting."
msgstr "Stále existují některé řádky, které obsahují chyby. Řádky s chybami budou při odesílání ignorovány."
#. js-lingui-id: CA9PTn
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "There is a payment issue with your subscription. Please update your payment method."
msgstr ""
#. js-lingui-id: WQk7Cf
#: src/modules/activities/timeline-activities/components/TimelineCard.tsx
msgid "There is no activity associated with this record."
@@ -13299,16 +13486,6 @@ msgstr "Tato akce je nevratná. Tímto bude vaše členství v tomto pracovním
msgid "This action cannot be undone. This will permanently reset your two factor authentication method. <0/> Please type in your email to confirm."
msgstr "Tuto akci nelze vrátit zpět. Tímto dojde k trvalému resetování vaší metody dvoufaktorového ověřování. <0/> Pro potvrzení zadejte svůj e-mail."
#. js-lingui-id: XdFYs2
#: src/modules/favorites/components/CurrentWorkspaceMemberFavorites.tsx
msgid "This action will delete this favorite folder and all {favoriteCount} favorites inside. Do you want to continue?"
msgstr "Tato akce smaže tuto složku oblíbených a všech {favoriteCount} oblíbených položek uvnitř. Chcete pokračovat?"
#. js-lingui-id: pFXbgz
#: src/modules/favorites/components/CurrentWorkspaceMemberFavorites.tsx
msgid "This action will delete this favorite folder and the favorite inside. Do you want to continue?"
msgstr "Tato akce smaže tuto složku oblíbených a oblíbenou položku uvnitř. Chcete pokračovat?"
#. js-lingui-id: lAHIY2
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItems.tsx
msgid "This action will delete this folder and all {navigationMenuItemCount} navigation menu items inside. Do you want to continue?"
@@ -13339,9 +13516,9 @@ msgstr ""
msgid "This database value overrides environment settings. "
msgstr "Tato hodnota databáze přepisuje nastavení prostředí."
#. js-lingui-id: qHAJQ2
#. js-lingui-id: 8IRnd6
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelSection.tsx
msgid "This feature is part of the Organization Plan"
msgid "This feature is part of the Enterprise Plan"
msgstr ""
#. js-lingui-id: own57K
@@ -13650,6 +13827,8 @@ msgid "Transfer ownership"
msgstr ""
#. js-lingui-id: lhkaAC
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/internal/PlansTags.tsx
msgid "Trial"
msgstr "Zkušební verze"
@@ -13829,7 +14008,7 @@ msgid "Type"
msgstr "Typ"
#. js-lingui-id: SKD2e4
#: src/modules/activities/components/ActivityRichTextEditor.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/RichTextFieldEditor.tsx
msgid "Type '/' for commands, '@' for mentions"
msgstr ""
@@ -13840,7 +14019,7 @@ msgid "Type anything..."
msgstr "Napište cokoli..."
#. js-lingui-id: UhqKcC
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubPage.tsx
msgid "Type to search records"
msgstr ""
@@ -13998,6 +14177,11 @@ msgstr "Neomezený počet kontaktů"
msgid "Unlisted"
msgstr "Neveřejné"
#. js-lingui-id: Ep1uUU
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Unlock enterprise features like SSO, row-level security, and audit logs."
msgstr ""
#. js-lingui-id: eQMhFX
#: src/modules/advanced-text-editor/extensions/slash-command/DefaultSlashCommands.ts
msgid "unordered"
@@ -14067,6 +14251,11 @@ msgstr "aktualizovat"
msgid "Update"
msgstr "Aktualizovat"
#. js-lingui-id: Y69tSP
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Update payment method"
msgstr ""
#. js-lingui-id: 0KAL3W
#: src/modules/side-panel/hooks/useOpenUpdateMultipleRecordsPageInSidePanel.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
@@ -14305,11 +14494,22 @@ msgstr "Použita výchozí hodnota aplikace. Nakonfigurujte pomocí proměnných
msgid "Using default value. Set a custom value to override."
msgstr "Použita výchozí hodnota. Nastavte vlastní hodnotu pro přepsání."
#. js-lingui-id: zzp4XX
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Valid until"
msgstr ""
#. js-lingui-id: Clr4qp
#: src/modules/spreadsheet-import/steps/components/SpreadsheetImportStepperContainer.tsx
msgid "Validate Data"
msgstr "Ověřit data"
#. js-lingui-id: PWZBIT
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Validity token refreshed successfully"
msgstr ""
#. js-lingui-id: wMHvYH
#: src/pages/settings/applications/tabs/SettingsApplicationDetailEnvironmentVariablesTable.tsx
#: src/modules/workflow/workflow-steps/workflow-actions/http-request-action/components/KeyValuePairInput.tsx
@@ -14436,6 +14636,8 @@ msgid "View and filter events, page views, object changes"
msgstr ""
#. js-lingui-id: KANz0G
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/SettingsBillingContent.tsx
msgid "View billing details"
msgstr "Zobrazit detaily fakturace"
@@ -14485,6 +14687,11 @@ msgstr "zobrazit skupinu"
msgid "View installed app"
msgstr ""
#. js-lingui-id: B02hom
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "View invoices"
msgstr ""
#. js-lingui-id: lh5BED
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkerQueueMetricsSection.tsx
msgid "View Jobs"
@@ -14503,6 +14710,7 @@ msgstr ""
#. js-lingui-id: ecVcAx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/constants/EngineComponentKeyComponentMap.tsx
msgid "View Previous AI Chats"
msgstr "Zobrazit předchozí AI diskuse"
@@ -14852,6 +15060,7 @@ msgstr "Pracovní postupy"
#: src/pages/settings/members/SettingsWorkspaceMember.tsx
#: src/pages/settings/logic-functions/SettingsLogicFunctionDetail.tsx
#: src/pages/settings/logic-functions/SettingsLogicFunctionDetail.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/emailing-domains/SettingsNewEmailingDomain.tsx
#: src/pages/settings/emailing-domains/SettingsEmailingDomainDetail.tsx
#: src/pages/settings/domains/SettingsDomains.tsx
@@ -14894,7 +15103,6 @@ msgstr "Pracovní postupy"
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownVisibilityContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCustomView.tsx
#: src/modules/navigation-menu-item/components/WorkspaceNavigationMenuItems.tsx
#: src/modules/favorites/components/WorkspaceFavorites.tsx
msgid "Workspace"
msgstr "Pracovní prostor"
@@ -15018,6 +15226,11 @@ msgstr "Rok"
msgid "yearly"
msgstr "roční"
#. js-lingui-id: Y1GwUe
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Yearly subscription"
msgstr ""
#. js-lingui-id: +BGee5
#: src/modules/side-panel/pages/page-layout/utils/getDateGranularityPluralLabel.ts
msgid "years"
@@ -15150,6 +15363,36 @@ msgstr "Vaše předměty e-mailů a názvy schůzek budou sdíleny s vaším tý
msgid "Your emails and events content will be shared with your team."
msgstr "Obsah vašich e-mailů a událostí bude sdílen s vaším týmem."
#. js-lingui-id: ahEwS4
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your enterprise features are active"
msgstr ""
#. js-lingui-id: XMZLU/
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your enterprise features are active but your enterprise key is missing or invalid. This may be expected, but if not, please set a valid signed enterprise key to manage your subscription, or contact support."
msgstr ""
#. js-lingui-id: AxcwNj
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your enterprise features will be disabled"
msgstr ""
#. js-lingui-id: PT137K
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your enterprise features will remain active until {cancelAtDate}."
msgstr ""
#. js-lingui-id: 69Siss
#: src/modules/information-banner/components/enterprise/InformationBannerLegacyEnterpriseKey.tsx
msgid "Your enterprise key format is deprecated. Please activate a new key to keep enterprise features."
msgstr ""
#. js-lingui-id: NTpA4U
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your enterprise subscription has been canceled."
msgstr ""
#. js-lingui-id: 9ivpwk
#: src/pages/settings/SettingsProfile.tsx
msgid "Your name as it will be displayed"
@@ -15160,6 +15403,26 @@ msgstr "Vaše jméno, jak bude zobrazeno"
msgid "Your name as it will be displayed on the app"
msgstr "Vaše jméno, jak bude zobrazeno v aplikaci"
#. js-lingui-id: 319YPG
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your subscription is active but your validity token is invalid or has expired. Try reloading it or contact support."
msgstr ""
#. js-lingui-id: Fx0axg
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your subscription is scheduled for cancellation"
msgstr ""
#. js-lingui-id: XgIa/8
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your subscription setup was not completed."
msgstr ""
#. js-lingui-id: Z9kbt6
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your subscription status is: {statusLabel}"
msgstr ""
#. js-lingui-id: QOd24n
#: src/modules/billing/hooks/useBillingWording.ts
msgid "Your trial period will end, and "
+343 -80
View File
@@ -663,10 +663,10 @@ msgstr "Om dette arbejdsområde"
msgid "Access workspace data"
msgstr ""
#. js-lingui-id: c2UA7k
#. js-lingui-id: W5nhmk
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Access your workspace data from your favorite MCP client like Claude Desktop, Windsurf or Cursor."
msgstr "Adgang til dine arbejdsdata fra din foretrukne MCP-klient som Claude Desktop, Windsurf eller Cursor."
msgid "Access your workspace data from your favorite MCP client like Claude Desktop, Claude Code, Cursor, or ChatGPT. Once connected, try: \"Show me the 5 most recently created companies\" or \"Create a new person named Jane Doe\"."
msgstr ""
#. js-lingui-id: u2Cycw
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionTabEnvironmentVariablesSection.tsx
@@ -752,23 +752,37 @@ msgid "Actions users can perform on this object"
msgstr "Handlinger brugere kan udføre på denne genstand"
#. js-lingui-id: FQBaXG
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/data-model/SettingsObjectFieldEdit.tsx
#: src/pages/settings/ai/SettingsSkillForm.tsx
#: src/pages/settings/ai/components/SettingsSkillInactiveMenuDropDown.tsx
#: src/modules/settings/security/components/SSO/SettingsSecuritySSORowDropdownMenu.tsx
#: src/modules/settings/data-model/objects/components/SettingsObjectInactiveMenuDropDown.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectFieldDisabledActionDropdown.tsx
#: src/modules/information-banner/components/enterprise/InformationBannerLegacyEnterpriseKey.tsx
#: src/modules/command-menu-item/record/constants/WorkflowCommandMenuItemsConfig.tsx
msgid "Activate"
msgstr "Aktivér"
#. js-lingui-id: eqeFkF
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Activate Enterprise Key"
msgstr ""
#. js-lingui-id: tu8A/k
#: src/modules/command-menu-item/record/constants/WorkflowCommandMenuItemsConfig.tsx
msgid "Activate Workflow"
msgstr "Aktivér Arbejdsproces"
#. js-lingui-id: jSZacs
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Activating..."
msgstr ""
#. js-lingui-id: F6pfE9
#: src/pages/settings/SettingsProfile.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/settings/domains/components/SettingsWorkspaceDomainCard.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobsTable.tsx
msgid "Active"
@@ -806,6 +820,13 @@ msgstr "Tilføj \"{trimmedName}\" til muligheder"
msgid "Add a {objectLabelSingular}"
msgstr "Tilføj {objectLabelSingular}"
#. js-lingui-id: 7W8nJr
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationUngroupedEditor.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
msgid "Add a Group"
msgstr ""
#. js-lingui-id: CZDwqQ
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
@@ -818,16 +839,10 @@ msgid "Add a node"
msgstr "Tilføj en node"
#. js-lingui-id: nGv1DN
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubView.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
msgid "Add a record"
msgstr ""
#. js-lingui-id: r8W+9y
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationUngroupedEditor.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
msgid "Add a Section"
msgstr ""
#. js-lingui-id: eMc2xs
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
msgid "Add a step"
@@ -915,11 +930,6 @@ msgstr "Tilføj filterregel"
msgid "Add first filter"
msgstr "Tilføj første filter"
#. js-lingui-id: //rVZt
#: src/modules/favorites/favorite-folder-picker/components/FavoriteFolderPickerFooter.tsx
msgid "Add folder"
msgstr "Tilføj mappe"
#. js-lingui-id: 7XzAKI
#: src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowEditActionFormBuilder.tsx
msgid "Add inputs to your form"
@@ -1085,7 +1095,6 @@ msgid "Add to Favorite"
msgstr "Tilføj til Favorit"
#. js-lingui-id: pBsoKL
#: src/modules/favorites/components/PageFavoriteButton.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/mock/command-menu-items.mock.tsx
@@ -1429,7 +1438,7 @@ msgid "All set!"
msgstr "Alt klar!"
#. js-lingui-id: CHvT6e
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemObjectFlow.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemObjectSystemPickerSubPage.tsx
msgid "All system objects are already in the sidebar"
msgstr ""
@@ -1574,6 +1583,7 @@ msgstr "Der opstod en fejl under upload af billedet."
#. js-lingui-id: XyOToQ
#: src/utils/get-error-message-from-apollo-error.util.ts
#: src/utils/get-error-message-from-apollo-error.util.ts
#: src/modules/views/hooks/internal/usePerformViewSortAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
@@ -1664,12 +1674,14 @@ msgstr "API"
#. js-lingui-id: 0RqpZr
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "API & Webhooks"
msgstr "API & Webhooks"
#. js-lingui-id: yRnk5W
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
#: src/modules/settings/playground/components/PlaygroundSetupForm.tsx
msgid "API Key"
msgstr "API-nøgle"
@@ -1940,6 +1952,7 @@ msgstr "Stigende"
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/constants/EngineComponentKeyComponentMap.tsx
msgid "Ask AI"
msgstr "Spørg AI"
@@ -2078,6 +2091,11 @@ msgstr ""
msgid "Attachments"
msgstr "Vedhæftninger"
#. js-lingui-id: y2W2Hg
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Audit logs"
msgstr ""
#. js-lingui-id: EPEFrH
#: src/pages/settings/security/SettingsSecurity.tsx
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
@@ -2114,6 +2132,11 @@ msgstr "Godkendelse"
msgid "Authentication failed"
msgstr "Godkendelse mislykkedes"
#. js-lingui-id: TxT0ER
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Authentication method"
msgstr ""
#. js-lingui-id: H7qgYQ
#: src/pages/settings/SettingsTwoFactorAuthenticationMethod.tsx
msgid "Authenticator app"
@@ -2306,6 +2329,11 @@ msgstr "mellem den {startOrdinal} og {endOrdinal} i måneden"
msgid "Billing"
msgstr "Fakturering"
#. js-lingui-id: dSjFxR
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Billing history"
msgstr ""
#. js-lingui-id: nJGwRf
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
msgid "Billing interval"
@@ -2563,6 +2591,7 @@ msgid "Cancel metered tier switching?"
msgstr "Annuller skift til målt niveau?"
#. js-lingui-id: rRK/Lf
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/SettingsBillingContent.tsx
msgid "Cancel Plan"
msgstr "Annuller abonnement"
@@ -2578,10 +2607,26 @@ msgid "Cancel plan switching?"
msgstr "Annuller planskift?"
#. js-lingui-id: N6gPiD
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/SettingsBillingContent.tsx
msgid "Cancel your subscription"
msgstr "Annuller dit abonnement"
#. js-lingui-id: GGWsTU
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Canceled"
msgstr ""
#. js-lingui-id: y4uH7j
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Cancelling"
msgstr ""
#. js-lingui-id: WbPx+C
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Cancels on"
msgstr ""
#. js-lingui-id: XDbjjW
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCustomView.tsx
msgid "Cannot delete the only view"
@@ -3077,11 +3122,6 @@ msgstr ""
msgid "Configure fallback login methods for users with SSO bypass permissions"
msgstr "Konfigurer alternativer loginmetoder til brugere med SSO-forbigående tilladelser"
#. js-lingui-id: c7wznw
#: src/modules/side-panel/pages/page-layout/utils/getPageLayoutPageTitle.ts
msgid "Configure filters"
msgstr "Konfigurer filtre"
#. js-lingui-id: ghdb7+
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelsGeneral.tsx
msgid "Configure how we should display your events in your calendar"
@@ -3279,6 +3319,7 @@ msgstr ""
#: src/modules/spreadsheet-import/steps/components/SelectHeaderStep/SelectHeaderStep.tsx
#: src/modules/spreadsheet-import/steps/components/MatchColumnsStep/MatchColumnsStep.tsx
#: src/modules/spreadsheet-import/components/StepNavigationButton.tsx
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
#: src/modules/auth/sign-in-up/components/internal/SignInUpWithCredentials.tsx
msgid "Continue"
msgstr "Fortsæt"
@@ -3438,6 +3479,21 @@ msgstr "Pris per 1k ekstra kreditter"
msgid "Could not delete approved access domain"
msgstr "Kunne ikke slette godkendt adgangsdomæne"
#. js-lingui-id: KqYYBp
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Could not open billing portal. Please check your enterprise key is present, or contact support."
msgstr ""
#. js-lingui-id: ZuI4Sl
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Could not open Stripe. Please contact support."
msgstr ""
#. js-lingui-id: wVw4Am
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Could not refresh validity token. Please contact support."
msgstr ""
#. js-lingui-id: s8lFtq
#: src/hooks/useCopyToClipboard.tsx
msgid "Couldn't copy to clipboard"
@@ -3815,6 +3871,7 @@ msgstr "Brugerdefineret domæne opdateret"
#. js-lingui-id: 8skTDV
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Custom objects"
msgstr "Tilpassede objekter"
@@ -4249,7 +4306,6 @@ msgstr "slet"
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
@@ -4337,7 +4393,6 @@ msgstr "Slet felt"
#. js-lingui-id: 97QUV6
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItems.tsx
#: src/modules/favorites/components/CurrentWorkspaceMemberFavorites.tsx
msgid "Delete Folder"
msgstr "Slet mappe"
@@ -4917,6 +4972,8 @@ msgid "Edit own profile information"
msgstr ""
#. js-lingui-id: h2KoTu
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/SettingsBillingContent.tsx
msgid "Edit payment method, see your invoices and more"
msgstr "Rediger betalingsmetode, se dine fakturaer og mere"
@@ -5216,6 +5273,11 @@ msgstr "Forbedrer sikkerheden ved at kræve en kode sammen med din adgangskode"
msgid "Enjoy a {withCreditCardTrialPeriodDuration}-days free trial"
msgstr "Nyd en {withCreditCardTrialPeriodDuration}-dages gratis prøveperiode"
#. js-lingui-id: 6iUnle
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Enjoy a 30-day free trial"
msgstr ""
#. js-lingui-id: T/N+2Z
#: src/modules/workflow/workflow-trigger/components/WorkflowEditTriggerWebhookForm.tsx
#: src/modules/object-record/record-field/ui/form-types/components/FormRawJsonFieldInput.tsx
@@ -5422,6 +5484,9 @@ msgstr "Indtast din API-nøgle"
#. js-lingui-id: GpB8YV
#: src/pages/settings/security/SettingsSecurity.tsx
#: src/pages/settings/security/SettingsSecurity.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
msgid "Enterprise"
msgstr "Virksomhed"
@@ -5430,6 +5495,22 @@ msgstr "Virksomhed"
msgid "Enterprise Feature"
msgstr ""
#. js-lingui-id: S5c4pl
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Enterprise License"
msgstr ""
#. js-lingui-id: KGE5g0
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Enterprise license activated successfully"
msgstr ""
#. js-lingui-id: SLuq/l
#: src/modules/settings/security/components/SSO/SettingsSSOSAMLForm.tsx
msgid "Entity ID"
@@ -5470,6 +5551,11 @@ msgstr "Sletning af blødt slettede poster"
msgid "Error"
msgstr "Fejl"
#. js-lingui-id: VouTsQ
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Error activating enterprise license"
msgstr ""
#. js-lingui-id: GHKxvg
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
msgid "Error deleting api key."
@@ -5495,11 +5581,6 @@ msgstr "Fejl ved sletning af SSO Identitetsudbyder"
msgid "Error editing SSO Identity Provider"
msgstr "Fejl ved redigering af SSO Identitetsudbyder"
#. js-lingui-id: GsIfmO
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkerMetricsGraph.tsx
msgid "Error fetching worker metrics: {errorMessage}"
msgstr "Fejl ved hentning af worker-metrics: {errorMessage}"
#. js-lingui-id: GdBN5t
#: src/modules/error-handler/components/AppRootErrorFallback.tsx
msgid "Error illustration"
@@ -5530,11 +5611,26 @@ msgstr "Fejl ved indlæsning af meddelelse"
msgid "Error Message"
msgstr "Fejlmeddelelse"
#. js-lingui-id: Mox63G
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Error opening billing portal"
msgstr ""
#. js-lingui-id: e/eieW
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Error opening Stripe"
msgstr ""
#. js-lingui-id: bT/0cM
#: src/modules/ui/field/display/components/PhonesDisplay.tsx
msgid "Error parsing additional phones: {error}"
msgstr "Fejl ved fortolkning af ekstra telefonnumre: {error}"
#. js-lingui-id: zRXcyv
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Error refreshing validity token. Please contact support."
msgstr ""
#. js-lingui-id: PfAip2
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
msgid "Error regenerating api key."
@@ -5997,6 +6093,11 @@ msgstr ""
msgid "Failed to {translatedOperationType} {translatedMetadataName}. Related {relatedEntityNames} validation failed. Please check your configuration and try again."
msgstr ""
#. js-lingui-id: R1XJV1
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Failed to activate enterprise license. Please check your key or contact support."
msgstr ""
#. js-lingui-id: vJiM7T
#: src/pages/settings/ai/components/SettingsSkillsTable.tsx
msgid "Failed to activate skill"
@@ -6208,7 +6309,6 @@ msgstr ""
#. js-lingui-id: X9kySA
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItemFolders.tsx
#: src/modules/favorites/components/CurrentWorkspaceMemberFavoritesFolders.tsx
msgid "Favorites"
msgstr "Favoritter"
@@ -6374,7 +6474,6 @@ msgstr ""
#: src/modules/views/components/ViewBarFilterDropdownFieldSelectMenu.tsx
#: src/modules/views/components/ViewBarFilterButton.tsx
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
#: src/modules/side-panel/pages/page-layout/components/ChartFiltersSettings.tsx
#: src/modules/settings/roles/components/SettingsRolesList.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectRelationsTable.tsx
#: src/modules/object-record/record-table/record-table-header/components/RecordTableColumnHeadDropdownMenu.tsx
@@ -6397,6 +6496,7 @@ msgid "Filter group rule options"
msgstr "Indstillinger for filterregelgruppe"
#. js-lingui-id: cSev+j
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/settings/developers/components/SettingsDevelopersWebhookForm.tsx
msgid "Filters"
msgstr "Filtre"
@@ -6467,6 +6567,11 @@ msgstr "Fornavn"
msgid "First name can not be empty"
msgstr "Fornavn må ikke være tomt"
#. js-lingui-id: JREYkg
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Fix the payment issue to keep your enterprise features active."
msgstr ""
#. js-lingui-id: ylQd2j
#: src/modules/workflow/workflow-steps/workflow-actions/utils/getActionHeaderTypeOrThrow.ts
#: src/modules/side-panel/pages/workflow/action/components/SidePanelWorkflowSelectAction.tsx
@@ -6486,7 +6591,7 @@ msgid "Folder name"
msgstr ""
#. js-lingui-id: HSh8u/
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubPage.tsx
#: src/modules/settings/accounts/components/message-folders/SettingsAccountsMessageFoldersCard.tsx
msgid "Folders"
msgstr "Mapper"
@@ -6635,6 +6740,22 @@ msgstr "Genererede filer"
msgid "German"
msgstr "Tysk"
#. js-lingui-id: sqtljx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Get Enterprise"
msgstr ""
#. js-lingui-id: o2kSwB
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Get Enterprise Key"
msgstr ""
#. js-lingui-id: NXEW3h
#: src/pages/onboarding/InviteTeam.tsx
msgid "Get the most out of your workspace by inviting your team."
@@ -6655,6 +6776,12 @@ msgstr "Globalt"
msgid "Go Back"
msgstr ""
#. js-lingui-id: Hb4Cgz
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Go to billing portal"
msgstr ""
#. js-lingui-id: mUbv8L
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
msgid "Go to Companies"
@@ -7240,6 +7367,11 @@ msgstr ""
msgid "Inbox"
msgstr "Indbakke"
#. js-lingui-id: mtGDyy
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Incomplete"
msgstr ""
#. js-lingui-id: O5wNUa
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
msgid "index"
@@ -7882,9 +8014,8 @@ msgid "Launch manually"
msgstr "Start manuelt"
#. js-lingui-id: rdU729
#: src/modules/side-panel/pages/page-layout/utils/getPageLayoutPageTitle.ts
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsLayout.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCustomView.tsx
msgid "Layout"
@@ -7957,6 +8088,12 @@ msgstr ""
msgid "Less than or equal"
msgstr "Mindre end eller lig med"
#. js-lingui-id: 3qg5Ro
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Licensee"
msgstr ""
#. js-lingui-id: 1njn7W
#: src/pages/settings/profile/appearance/components/SettingsExperience.tsx
#: src/modules/ui/navigation/navigation-drawer/components/MultiWorkspaceDropdown/internal/MultiWorkspaceDropdownThemesComponents.tsx
@@ -8260,6 +8397,8 @@ msgid "Manage billing and subscriptions"
msgstr "Administrer fakturering og abonnementer"
#. js-lingui-id: nvgUPq
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/SettingsBillingContent.tsx
msgid "Manage billing information"
msgstr "Administrer faktureringsoplysninger"
@@ -8612,6 +8751,11 @@ msgstr "Måned i året"
msgid "monthly"
msgstr "månedligt"
#. js-lingui-id: Sew/cK
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Monthly subscription"
msgstr ""
#. js-lingui-id: 6jefe3
#: src/modules/side-panel/pages/page-layout/utils/getDateGranularityPluralLabel.ts
#: src/modules/side-panel/pages/page-layout/utils/getDateGranularityPluralLabel.ts
@@ -8673,7 +8817,7 @@ msgid "Move right"
msgstr "Flyt til højre"
#. js-lingui-id: 6qDVmw
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
msgid "Move to a folder"
msgstr ""
@@ -9274,21 +9418,15 @@ msgid "No Files"
msgstr "Ingen filer"
#. js-lingui-id: pYblOw
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/favorites/favorite-folder-picker/components/FavoriteFolderPickerList.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubPage.tsx
msgid "No folder"
msgstr "Ingen mappe"
#. js-lingui-id: 6XMhqL
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubPage.tsx
msgid "No folders available"
msgstr ""
#. js-lingui-id: aywdyd
#: src/modules/favorites/favorite-folder-picker/components/FavoriteFolderPickerList.tsx
msgid "No folders found"
msgstr "Ingen mapper fundet"
#. js-lingui-id: 1jgsYC
#: src/modules/settings/accounts/components/message-folders/SettingsMessageFoldersEmptyStateCard.tsx
msgid "No folders found for this account"
@@ -9454,8 +9592,8 @@ msgstr "Ingen resultater"
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewSystemSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewObjectPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubPage.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubPage.tsx
#: src/modules/side-panel/components/SidePanelList.tsx
msgid "No results found"
msgstr "Ingen resultater fundet"
@@ -9666,6 +9804,7 @@ msgstr ""
#. js-lingui-id: b/j06W
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "OAuth"
msgstr ""
@@ -9674,6 +9813,11 @@ msgstr ""
msgid "OAuth Credentials"
msgstr ""
#. js-lingui-id: LNLTJB
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "OAuth or API Key"
msgstr ""
#. js-lingui-id: pNEViR
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
msgid "object"
@@ -10188,11 +10332,26 @@ msgstr "Link til password nulstilling er blevet sendt til emailadressen"
msgid "Paste the code below"
msgstr "Indsæt koden nedenfor"
#. js-lingui-id: raz2Pm
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Paste your enterprise key below to activate"
msgstr ""
#. js-lingui-id: dNdgvF
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Paste your enterprise key here"
msgstr ""
#. js-lingui-id: I6gXOa
#: src/modules/settings/logic-functions/components/tabs/SettingsLogicFunctionTriggersTab.tsx
msgid "Path"
msgstr "Sti"
#. js-lingui-id: QmXBEc
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Payment issue"
msgstr ""
#. js-lingui-id: UbRKMZ
#: src/pages/settings/emailing-domains/utils/getEmailingDomainStatusText.ts
#: src/modules/settings/security/components/approvedAccessDomains/SettingsApprovedAccessDomainsListCard.tsx
@@ -10329,13 +10488,13 @@ msgid "Pick a {objectLabel} record"
msgstr "Vælg en {objectLabel} post"
#. js-lingui-id: JqqNlC
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewPickerSubView.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
msgid "Pick a view"
msgstr ""
#. js-lingui-id: Wlba2h
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelObjectPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewObjectPickerSubView.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
msgid "Pick an object"
msgstr ""
@@ -10953,6 +11112,16 @@ msgstr "Udgivelser"
msgid "Reload"
msgstr "Genindlæs"
#. js-lingui-id: qbM5In
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Reload validity token"
msgstr ""
#. js-lingui-id: MZWnSC
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Reloading..."
msgstr ""
#. js-lingui-id: qlAIQ1
#: src/modules/object-metadata/components/RemoteNavigationDrawerSection.tsx
msgid "Remote"
@@ -10965,16 +11134,6 @@ msgstr "Fjernforbindelse"
msgid "Remove"
msgstr "Fjern"
#. js-lingui-id: gleHgw
#: src/modules/favorites/components/CurrentWorkspaceMemberFavorites.tsx
msgid "Remove {favoriteCount} favorite?"
msgstr "Fjern {favoriteCount} favorit?"
#. js-lingui-id: 1VQkMD
#: src/modules/favorites/components/CurrentWorkspaceMemberFavorites.tsx
msgid "Remove {favoriteCount} favorites?"
msgstr "Fjern {favoriteCount} favoritter?"
#. js-lingui-id: 0Urj9q
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItems.tsx
msgid "Remove {navigationMenuItemCount} navigation menu item?"
@@ -11006,7 +11165,6 @@ msgid "Remove Deleted filter"
msgstr "Fjern slettet filter"
#. js-lingui-id: T/pF0Z
#: src/modules/favorites/components/PageFavoriteButton.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
msgid "Remove from favorites"
@@ -11061,7 +11219,6 @@ msgstr "Fjern variabel"
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
msgid "Rename"
msgstr "Omdøb"
@@ -11228,7 +11385,7 @@ msgstr "Resultat"
#. js-lingui-id: kx0s+n
#: src/modules/side-panel/pages/search/hooks/useSidePanelSearchRecords.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubPage.tsx
msgid "Results"
msgstr "Resultater"
@@ -11367,6 +11524,11 @@ msgstr ""
msgid "row level permission predicate group"
msgstr ""
#. js-lingui-id: xPaeO2
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Row-level security"
msgstr ""
#. js-lingui-id: 7jTlsu
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectFormOptionRow.tsx
msgid "Ruby"
@@ -11485,6 +11647,8 @@ msgstr ""
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/constants/EngineComponentKeyComponentMap.tsx
#: src/modules/command-menu-item/constants/EngineComponentKeyComponentMap.tsx
msgid "Search"
msgstr "Søg"
@@ -11521,7 +11685,7 @@ msgid "Search a field..."
msgstr "Søg i et felt..."
#. js-lingui-id: ITQFzL
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubPage.tsx
msgid "Search a folder..."
msgstr ""
@@ -11689,7 +11853,7 @@ msgid "Search records"
msgstr "Søg poster"
#. js-lingui-id: rRklUH
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubPage.tsx
msgid "Search records..."
msgstr ""
@@ -11724,11 +11888,13 @@ msgid "Searching the web for {query}"
msgstr ""
#. js-lingui-id: 8sgZS9
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
#: src/modules/billing/components/SubscriptionPrice.tsx
msgid "seat / month"
msgstr "sæde / måned"
#. js-lingui-id: aQnWwf
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
#: src/modules/billing/components/SubscriptionPrice.tsx
msgid "seat / month - billed yearly"
msgstr "sæde / måned - faktureres årligt"
@@ -12556,6 +12722,7 @@ msgstr "SSO"
#. js-lingui-id: vlvAkg
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "SSO (SAML / OIDC)"
msgstr "SSO (SAML / OIDC)"
@@ -12600,6 +12767,16 @@ msgstr ""
msgid "Start"
msgstr "Start"
#. js-lingui-id: ASqWQi
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Start a new enterprise subscription to re-enable enterprise features."
msgstr ""
#. js-lingui-id: OC6rnK
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Start a new enterprise subscription."
msgstr ""
#. js-lingui-id: D3iCkb
#: src/pages/settings/security/event-logs/components/EventLogFilters.tsx
msgid "Start Date"
@@ -12625,6 +12802,11 @@ msgid "State"
msgstr "Tilstand"
#. js-lingui-id: uAQUqI
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/admin-panel/SettingsAdminIndicatorHealthStatus.tsx
#: src/modules/settings/components/SettingsDnsRecordsTable.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
@@ -12920,11 +13102,11 @@ msgstr ""
#. js-lingui-id: 0apULK
#: src/pages/settings/data-model/SettingsObjectTable.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelSystemObjectPickerSubView.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelSystemObjectPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelObjectPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewSystemSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewSystemSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewObjectPickerSubView.tsx
msgid "System objects"
msgstr ""
@@ -13227,6 +13409,11 @@ msgstr "Der er nødvendige kolonner, der ikke er matchet eller ignoreret. Vil du
msgid "There are still some rows that contain errors. Rows with errors will be ignored when submitting."
msgstr "Der er stadig nogle rækker, der indeholder fejl. Rækker med fejl vil blive ignoreret ved indsendelse."
#. js-lingui-id: CA9PTn
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "There is a payment issue with your subscription. Please update your payment method."
msgstr ""
#. js-lingui-id: WQk7Cf
#: src/modules/activities/timeline-activities/components/TimelineCard.tsx
msgid "There is no activity associated with this record."
@@ -13301,16 +13488,6 @@ msgstr "Denne handling kan ikke fortrydes. Dette vil permanent fjerne dit medlem
msgid "This action cannot be undone. This will permanently reset your two factor authentication method. <0/> Please type in your email to confirm."
msgstr "Denne handling kan ikke fortrydes. Dette vil permanent nulstille din tofaktorgodkendelsesmetode. <0/> Indtast venligst din e-mail for at bekræfte."
#. js-lingui-id: XdFYs2
#: src/modules/favorites/components/CurrentWorkspaceMemberFavorites.tsx
msgid "This action will delete this favorite folder and all {favoriteCount} favorites inside. Do you want to continue?"
msgstr "Denne handling vil slette denne favoritmappe og alle de {favoriteCount} favoritter i den. Vil du fortsætte?"
#. js-lingui-id: pFXbgz
#: src/modules/favorites/components/CurrentWorkspaceMemberFavorites.tsx
msgid "This action will delete this favorite folder and the favorite inside. Do you want to continue?"
msgstr "Denne handling vil slette denne favoritmappe og favoritten i den. Vil du fortsætte?"
#. js-lingui-id: lAHIY2
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItems.tsx
msgid "This action will delete this folder and all {navigationMenuItemCount} navigation menu items inside. Do you want to continue?"
@@ -13341,9 +13518,9 @@ msgstr ""
msgid "This database value overrides environment settings. "
msgstr "Denne databaseværdi overskriver miljøindstillingerne."
#. js-lingui-id: qHAJQ2
#. js-lingui-id: 8IRnd6
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelSection.tsx
msgid "This feature is part of the Organization Plan"
msgid "This feature is part of the Enterprise Plan"
msgstr ""
#. js-lingui-id: own57K
@@ -13652,6 +13829,8 @@ msgid "Transfer ownership"
msgstr ""
#. js-lingui-id: lhkaAC
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/internal/PlansTags.tsx
msgid "Trial"
msgstr "Prøve"
@@ -13831,7 +14010,7 @@ msgid "Type"
msgstr "Type"
#. js-lingui-id: SKD2e4
#: src/modules/activities/components/ActivityRichTextEditor.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/RichTextFieldEditor.tsx
msgid "Type '/' for commands, '@' for mentions"
msgstr ""
@@ -13842,7 +14021,7 @@ msgid "Type anything..."
msgstr "Skriv noget..."
#. js-lingui-id: UhqKcC
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubPage.tsx
msgid "Type to search records"
msgstr ""
@@ -14000,6 +14179,11 @@ msgstr "Ubegrænsede kontakter"
msgid "Unlisted"
msgstr "Ikke opført"
#. js-lingui-id: Ep1uUU
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Unlock enterprise features like SSO, row-level security, and audit logs."
msgstr ""
#. js-lingui-id: eQMhFX
#: src/modules/advanced-text-editor/extensions/slash-command/DefaultSlashCommands.ts
msgid "unordered"
@@ -14069,6 +14253,11 @@ msgstr "opdater"
msgid "Update"
msgstr "Opdater"
#. js-lingui-id: Y69tSP
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Update payment method"
msgstr ""
#. js-lingui-id: 0KAL3W
#: src/modules/side-panel/hooks/useOpenUpdateMultipleRecordsPageInSidePanel.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
@@ -14307,11 +14496,22 @@ msgstr "Bruger standardappsværdi. Konfigurer via miljøvariabler."
msgid "Using default value. Set a custom value to override."
msgstr "Bruger standardværdi. Indstil en brugerdefineret værdi for at tilsidesætte."
#. js-lingui-id: zzp4XX
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Valid until"
msgstr ""
#. js-lingui-id: Clr4qp
#: src/modules/spreadsheet-import/steps/components/SpreadsheetImportStepperContainer.tsx
msgid "Validate Data"
msgstr "Valider data"
#. js-lingui-id: PWZBIT
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Validity token refreshed successfully"
msgstr ""
#. js-lingui-id: wMHvYH
#: src/pages/settings/applications/tabs/SettingsApplicationDetailEnvironmentVariablesTable.tsx
#: src/modules/workflow/workflow-steps/workflow-actions/http-request-action/components/KeyValuePairInput.tsx
@@ -14438,6 +14638,8 @@ msgid "View and filter events, page views, object changes"
msgstr ""
#. js-lingui-id: KANz0G
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/SettingsBillingContent.tsx
msgid "View billing details"
msgstr "Se faktureringsdetaljer"
@@ -14487,6 +14689,11 @@ msgstr "vis gruppe"
msgid "View installed app"
msgstr ""
#. js-lingui-id: B02hom
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "View invoices"
msgstr ""
#. js-lingui-id: lh5BED
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkerQueueMetricsSection.tsx
msgid "View Jobs"
@@ -14505,6 +14712,7 @@ msgstr ""
#. js-lingui-id: ecVcAx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/constants/EngineComponentKeyComponentMap.tsx
msgid "View Previous AI Chats"
msgstr "Se tidligere AI-chats"
@@ -14854,6 +15062,7 @@ msgstr "Arbejdsgange"
#: src/pages/settings/members/SettingsWorkspaceMember.tsx
#: src/pages/settings/logic-functions/SettingsLogicFunctionDetail.tsx
#: src/pages/settings/logic-functions/SettingsLogicFunctionDetail.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/emailing-domains/SettingsNewEmailingDomain.tsx
#: src/pages/settings/emailing-domains/SettingsEmailingDomainDetail.tsx
#: src/pages/settings/domains/SettingsDomains.tsx
@@ -14896,7 +15105,6 @@ msgstr "Arbejdsgange"
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownVisibilityContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCustomView.tsx
#: src/modules/navigation-menu-item/components/WorkspaceNavigationMenuItems.tsx
#: src/modules/favorites/components/WorkspaceFavorites.tsx
msgid "Workspace"
msgstr "Arbejdsområde"
@@ -15020,6 +15228,11 @@ msgstr "År"
msgid "yearly"
msgstr "årligt"
#. js-lingui-id: Y1GwUe
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Yearly subscription"
msgstr ""
#. js-lingui-id: +BGee5
#: src/modules/side-panel/pages/page-layout/utils/getDateGranularityPluralLabel.ts
msgid "years"
@@ -15152,6 +15365,36 @@ msgstr "Dine e-mail emner og mødetitler vil blive delt med dit team."
msgid "Your emails and events content will be shared with your team."
msgstr "Dine e-mails og begivenhedsindhold vil blive delt med dit team."
#. js-lingui-id: ahEwS4
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your enterprise features are active"
msgstr ""
#. js-lingui-id: XMZLU/
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your enterprise features are active but your enterprise key is missing or invalid. This may be expected, but if not, please set a valid signed enterprise key to manage your subscription, or contact support."
msgstr ""
#. js-lingui-id: AxcwNj
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your enterprise features will be disabled"
msgstr ""
#. js-lingui-id: PT137K
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your enterprise features will remain active until {cancelAtDate}."
msgstr ""
#. js-lingui-id: 69Siss
#: src/modules/information-banner/components/enterprise/InformationBannerLegacyEnterpriseKey.tsx
msgid "Your enterprise key format is deprecated. Please activate a new key to keep enterprise features."
msgstr ""
#. js-lingui-id: NTpA4U
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your enterprise subscription has been canceled."
msgstr ""
#. js-lingui-id: 9ivpwk
#: src/pages/settings/SettingsProfile.tsx
msgid "Your name as it will be displayed"
@@ -15162,6 +15405,26 @@ msgstr "Dit navn som det vil blive vist"
msgid "Your name as it will be displayed on the app"
msgstr "Dit navn som det vil blive vist i appen"
#. js-lingui-id: 319YPG
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your subscription is active but your validity token is invalid or has expired. Try reloading it or contact support."
msgstr ""
#. js-lingui-id: Fx0axg
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your subscription is scheduled for cancellation"
msgstr ""
#. js-lingui-id: XgIa/8
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your subscription setup was not completed."
msgstr ""
#. js-lingui-id: Z9kbt6
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your subscription status is: {statusLabel}"
msgstr ""
#. js-lingui-id: QOd24n
#: src/modules/billing/hooks/useBillingWording.ts
msgid "Your trial period will end, and "
+343 -80
View File
@@ -663,10 +663,10 @@ msgstr "Über diesen Arbeitsbereich"
msgid "Access workspace data"
msgstr ""
#. js-lingui-id: c2UA7k
#. js-lingui-id: W5nhmk
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Access your workspace data from your favorite MCP client like Claude Desktop, Windsurf or Cursor."
msgstr "Greifen Sie auf Ihre Workspace-Daten von Ihrem bevorzugten MCP-Client wie Claude Desktop, Windsurf oder Cursor zu."
msgid "Access your workspace data from your favorite MCP client like Claude Desktop, Claude Code, Cursor, or ChatGPT. Once connected, try: \"Show me the 5 most recently created companies\" or \"Create a new person named Jane Doe\"."
msgstr ""
#. js-lingui-id: u2Cycw
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionTabEnvironmentVariablesSection.tsx
@@ -752,23 +752,37 @@ msgid "Actions users can perform on this object"
msgstr "Aktionen, die Benutzer auf diesem Objekt durchführen können"
#. js-lingui-id: FQBaXG
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/data-model/SettingsObjectFieldEdit.tsx
#: src/pages/settings/ai/SettingsSkillForm.tsx
#: src/pages/settings/ai/components/SettingsSkillInactiveMenuDropDown.tsx
#: src/modules/settings/security/components/SSO/SettingsSecuritySSORowDropdownMenu.tsx
#: src/modules/settings/data-model/objects/components/SettingsObjectInactiveMenuDropDown.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectFieldDisabledActionDropdown.tsx
#: src/modules/information-banner/components/enterprise/InformationBannerLegacyEnterpriseKey.tsx
#: src/modules/command-menu-item/record/constants/WorkflowCommandMenuItemsConfig.tsx
msgid "Activate"
msgstr "Aktivieren"
#. js-lingui-id: eqeFkF
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Activate Enterprise Key"
msgstr ""
#. js-lingui-id: tu8A/k
#: src/modules/command-menu-item/record/constants/WorkflowCommandMenuItemsConfig.tsx
msgid "Activate Workflow"
msgstr "Workflow aktivieren"
#. js-lingui-id: jSZacs
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Activating..."
msgstr ""
#. js-lingui-id: F6pfE9
#: src/pages/settings/SettingsProfile.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/settings/domains/components/SettingsWorkspaceDomainCard.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobsTable.tsx
msgid "Active"
@@ -806,6 +820,13 @@ msgstr "\"{trimmedName}\" zu den Optionen hinzufügen"
msgid "Add a {objectLabelSingular}"
msgstr "Ein {objectLabelSingular} hinzufügen"
#. js-lingui-id: 7W8nJr
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationUngroupedEditor.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
msgid "Add a Group"
msgstr ""
#. js-lingui-id: CZDwqQ
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
@@ -818,16 +839,10 @@ msgid "Add a node"
msgstr "Knoten hinzufügen"
#. js-lingui-id: nGv1DN
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubView.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
msgid "Add a record"
msgstr ""
#. js-lingui-id: r8W+9y
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationUngroupedEditor.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
msgid "Add a Section"
msgstr ""
#. js-lingui-id: eMc2xs
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
msgid "Add a step"
@@ -915,11 +930,6 @@ msgstr "Filterregel hinzufügen"
msgid "Add first filter"
msgstr "Ersten Filter hinzufügen"
#. js-lingui-id: //rVZt
#: src/modules/favorites/favorite-folder-picker/components/FavoriteFolderPickerFooter.tsx
msgid "Add folder"
msgstr "Ordner hinzufügen"
#. js-lingui-id: 7XzAKI
#: src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowEditActionFormBuilder.tsx
msgid "Add inputs to your form"
@@ -1085,7 +1095,6 @@ msgid "Add to Favorite"
msgstr "Zu Favoriten hinzufügen"
#. js-lingui-id: pBsoKL
#: src/modules/favorites/components/PageFavoriteButton.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/mock/command-menu-items.mock.tsx
@@ -1429,7 +1438,7 @@ msgid "All set!"
msgstr "Alles bereit!"
#. js-lingui-id: CHvT6e
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemObjectFlow.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemObjectSystemPickerSubPage.tsx
msgid "All system objects are already in the sidebar"
msgstr ""
@@ -1574,6 +1583,7 @@ msgstr "Beim Hochladen des Bildes ist ein Fehler aufgetreten."
#. js-lingui-id: XyOToQ
#: src/utils/get-error-message-from-apollo-error.util.ts
#: src/utils/get-error-message-from-apollo-error.util.ts
#: src/modules/views/hooks/internal/usePerformViewSortAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
@@ -1664,12 +1674,14 @@ msgstr "API"
#. js-lingui-id: 0RqpZr
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "API & Webhooks"
msgstr "API & Webhooks"
#. js-lingui-id: yRnk5W
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
#: src/modules/settings/playground/components/PlaygroundSetupForm.tsx
msgid "API Key"
msgstr "API-Schlüssel"
@@ -1940,6 +1952,7 @@ msgstr "Aufsteigend"
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/constants/EngineComponentKeyComponentMap.tsx
msgid "Ask AI"
msgstr "AI fragen"
@@ -2078,6 +2091,11 @@ msgstr ""
msgid "Attachments"
msgstr "Anhänge"
#. js-lingui-id: y2W2Hg
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Audit logs"
msgstr ""
#. js-lingui-id: EPEFrH
#: src/pages/settings/security/SettingsSecurity.tsx
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
@@ -2114,6 +2132,11 @@ msgstr "Authentifizierung"
msgid "Authentication failed"
msgstr "Authentifizierung fehlgeschlagen"
#. js-lingui-id: TxT0ER
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Authentication method"
msgstr ""
#. js-lingui-id: H7qgYQ
#: src/pages/settings/SettingsTwoFactorAuthenticationMethod.tsx
msgid "Authenticator app"
@@ -2306,6 +2329,11 @@ msgstr "zwischen dem {startOrdinal} und {endOrdinal} des Monats"
msgid "Billing"
msgstr "Abrechnung"
#. js-lingui-id: dSjFxR
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Billing history"
msgstr ""
#. js-lingui-id: nJGwRf
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
msgid "Billing interval"
@@ -2563,6 +2591,7 @@ msgid "Cancel metered tier switching?"
msgstr "Zählertarifwechsel abbrechen?"
#. js-lingui-id: rRK/Lf
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/SettingsBillingContent.tsx
msgid "Cancel Plan"
msgstr "Plan kündigen"
@@ -2578,10 +2607,26 @@ msgid "Cancel plan switching?"
msgstr "Tarifwechsel abbrechen?"
#. js-lingui-id: N6gPiD
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/SettingsBillingContent.tsx
msgid "Cancel your subscription"
msgstr "Abonnement kündigen"
#. js-lingui-id: GGWsTU
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Canceled"
msgstr ""
#. js-lingui-id: y4uH7j
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Cancelling"
msgstr ""
#. js-lingui-id: WbPx+C
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Cancels on"
msgstr ""
#. js-lingui-id: XDbjjW
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCustomView.tsx
msgid "Cannot delete the only view"
@@ -3077,11 +3122,6 @@ msgstr ""
msgid "Configure fallback login methods for users with SSO bypass permissions"
msgstr "Fallback-Login-Methoden für Benutzer mit SSO-Umgehungsberechtigungen konfigurieren"
#. js-lingui-id: c7wznw
#: src/modules/side-panel/pages/page-layout/utils/getPageLayoutPageTitle.ts
msgid "Configure filters"
msgstr "Filter konfigurieren"
#. js-lingui-id: ghdb7+
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelsGeneral.tsx
msgid "Configure how we should display your events in your calendar"
@@ -3279,6 +3319,7 @@ msgstr ""
#: src/modules/spreadsheet-import/steps/components/SelectHeaderStep/SelectHeaderStep.tsx
#: src/modules/spreadsheet-import/steps/components/MatchColumnsStep/MatchColumnsStep.tsx
#: src/modules/spreadsheet-import/components/StepNavigationButton.tsx
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
#: src/modules/auth/sign-in-up/components/internal/SignInUpWithCredentials.tsx
msgid "Continue"
msgstr "Weiter"
@@ -3438,6 +3479,21 @@ msgstr "Kosten pro 1k zusätzliche Credits"
msgid "Could not delete approved access domain"
msgstr "Genehmigte Zugriffsdomäne konnte nicht gelöscht werden"
#. js-lingui-id: KqYYBp
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Could not open billing portal. Please check your enterprise key is present, or contact support."
msgstr ""
#. js-lingui-id: ZuI4Sl
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Could not open Stripe. Please contact support."
msgstr ""
#. js-lingui-id: wVw4Am
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Could not refresh validity token. Please contact support."
msgstr ""
#. js-lingui-id: s8lFtq
#: src/hooks/useCopyToClipboard.tsx
msgid "Couldn't copy to clipboard"
@@ -3815,6 +3871,7 @@ msgstr "Benutzerdefinierte Domain aktualisiert"
#. js-lingui-id: 8skTDV
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Custom objects"
msgstr "Benutzerdefinierte Objekte"
@@ -4249,7 +4306,6 @@ msgstr "löschen"
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
@@ -4337,7 +4393,6 @@ msgstr "Feld löschen"
#. js-lingui-id: 97QUV6
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItems.tsx
#: src/modules/favorites/components/CurrentWorkspaceMemberFavorites.tsx
msgid "Delete Folder"
msgstr "Ordner löschen"
@@ -4917,6 +4972,8 @@ msgid "Edit own profile information"
msgstr ""
#. js-lingui-id: h2KoTu
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/SettingsBillingContent.tsx
msgid "Edit payment method, see your invoices and more"
msgstr "Zahlungsmethode bearbeiten, Rechnungen einsehen und mehr"
@@ -5216,6 +5273,11 @@ msgstr "Verbessert die Sicherheit, indem zusätzlich zu Ihrem Passwort ein Code
msgid "Enjoy a {withCreditCardTrialPeriodDuration}-days free trial"
msgstr "Genießen Sie eine {withCreditCardTrialPeriodDuration}-tägige kostenlose Testphase"
#. js-lingui-id: 6iUnle
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Enjoy a 30-day free trial"
msgstr ""
#. js-lingui-id: T/N+2Z
#: src/modules/workflow/workflow-trigger/components/WorkflowEditTriggerWebhookForm.tsx
#: src/modules/object-record/record-field/ui/form-types/components/FormRawJsonFieldInput.tsx
@@ -5422,6 +5484,9 @@ msgstr "Geben Sie Ihren API-Schlüssel ein"
#. js-lingui-id: GpB8YV
#: src/pages/settings/security/SettingsSecurity.tsx
#: src/pages/settings/security/SettingsSecurity.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
msgid "Enterprise"
msgstr "Unternehmen"
@@ -5430,6 +5495,22 @@ msgstr "Unternehmen"
msgid "Enterprise Feature"
msgstr ""
#. js-lingui-id: S5c4pl
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Enterprise License"
msgstr ""
#. js-lingui-id: KGE5g0
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Enterprise license activated successfully"
msgstr ""
#. js-lingui-id: SLuq/l
#: src/modules/settings/security/components/SSO/SettingsSSOSAMLForm.tsx
msgid "Entity ID"
@@ -5470,6 +5551,11 @@ msgstr "Löschung weicher gelöschter Datensätze"
msgid "Error"
msgstr "Fehler"
#. js-lingui-id: VouTsQ
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Error activating enterprise license"
msgstr ""
#. js-lingui-id: GHKxvg
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
msgid "Error deleting api key."
@@ -5495,11 +5581,6 @@ msgstr "Fehler beim Löschen des SSO-Identitätsanbieters"
msgid "Error editing SSO Identity Provider"
msgstr "Fehler beim Bearbeiten des SSO-Identitätsanbieters"
#. js-lingui-id: GsIfmO
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkerMetricsGraph.tsx
msgid "Error fetching worker metrics: {errorMessage}"
msgstr "Fehler beim Abrufen der Worker-Metriken: {errorMessage}"
#. js-lingui-id: GdBN5t
#: src/modules/error-handler/components/AppRootErrorFallback.tsx
msgid "Error illustration"
@@ -5530,11 +5611,26 @@ msgstr "Fehler beim Laden der Nachricht"
msgid "Error Message"
msgstr "Fehlermeldung"
#. js-lingui-id: Mox63G
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Error opening billing portal"
msgstr ""
#. js-lingui-id: e/eieW
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Error opening Stripe"
msgstr ""
#. js-lingui-id: bT/0cM
#: src/modules/ui/field/display/components/PhonesDisplay.tsx
msgid "Error parsing additional phones: {error}"
msgstr "Fehler beim Parsen zusätzlicher Telefonnummern: {error}"
#. js-lingui-id: zRXcyv
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Error refreshing validity token. Please contact support."
msgstr ""
#. js-lingui-id: PfAip2
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
msgid "Error regenerating api key."
@@ -5997,6 +6093,11 @@ msgstr ""
msgid "Failed to {translatedOperationType} {translatedMetadataName}. Related {relatedEntityNames} validation failed. Please check your configuration and try again."
msgstr ""
#. js-lingui-id: R1XJV1
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Failed to activate enterprise license. Please check your key or contact support."
msgstr ""
#. js-lingui-id: vJiM7T
#: src/pages/settings/ai/components/SettingsSkillsTable.tsx
msgid "Failed to activate skill"
@@ -6208,7 +6309,6 @@ msgstr ""
#. js-lingui-id: X9kySA
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItemFolders.tsx
#: src/modules/favorites/components/CurrentWorkspaceMemberFavoritesFolders.tsx
msgid "Favorites"
msgstr "Favoriten"
@@ -6374,7 +6474,6 @@ msgstr ""
#: src/modules/views/components/ViewBarFilterDropdownFieldSelectMenu.tsx
#: src/modules/views/components/ViewBarFilterButton.tsx
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
#: src/modules/side-panel/pages/page-layout/components/ChartFiltersSettings.tsx
#: src/modules/settings/roles/components/SettingsRolesList.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectRelationsTable.tsx
#: src/modules/object-record/record-table/record-table-header/components/RecordTableColumnHeadDropdownMenu.tsx
@@ -6397,6 +6496,7 @@ msgid "Filter group rule options"
msgstr "Optionen für Filterregelgruppe"
#. js-lingui-id: cSev+j
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/settings/developers/components/SettingsDevelopersWebhookForm.tsx
msgid "Filters"
msgstr "Filter"
@@ -6467,6 +6567,11 @@ msgstr "Vorname"
msgid "First name can not be empty"
msgstr "Vorname darf nicht leer sein"
#. js-lingui-id: JREYkg
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Fix the payment issue to keep your enterprise features active."
msgstr ""
#. js-lingui-id: ylQd2j
#: src/modules/workflow/workflow-steps/workflow-actions/utils/getActionHeaderTypeOrThrow.ts
#: src/modules/side-panel/pages/workflow/action/components/SidePanelWorkflowSelectAction.tsx
@@ -6486,7 +6591,7 @@ msgid "Folder name"
msgstr ""
#. js-lingui-id: HSh8u/
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubPage.tsx
#: src/modules/settings/accounts/components/message-folders/SettingsAccountsMessageFoldersCard.tsx
msgid "Folders"
msgstr "Ordner"
@@ -6635,6 +6740,22 @@ msgstr "Generierte Dateien"
msgid "German"
msgstr "Deutsch"
#. js-lingui-id: sqtljx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Get Enterprise"
msgstr ""
#. js-lingui-id: o2kSwB
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Get Enterprise Key"
msgstr ""
#. js-lingui-id: NXEW3h
#: src/pages/onboarding/InviteTeam.tsx
msgid "Get the most out of your workspace by inviting your team."
@@ -6655,6 +6776,12 @@ msgstr "Global"
msgid "Go Back"
msgstr ""
#. js-lingui-id: Hb4Cgz
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Go to billing portal"
msgstr ""
#. js-lingui-id: mUbv8L
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
msgid "Go to Companies"
@@ -7240,6 +7367,11 @@ msgstr ""
msgid "Inbox"
msgstr "Posteingang"
#. js-lingui-id: mtGDyy
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Incomplete"
msgstr ""
#. js-lingui-id: O5wNUa
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
msgid "index"
@@ -7882,9 +8014,8 @@ msgid "Launch manually"
msgstr "Manuell auslösen"
#. js-lingui-id: rdU729
#: src/modules/side-panel/pages/page-layout/utils/getPageLayoutPageTitle.ts
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsLayout.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCustomView.tsx
msgid "Layout"
@@ -7957,6 +8088,12 @@ msgstr ""
msgid "Less than or equal"
msgstr "Kleiner als oder gleich"
#. js-lingui-id: 3qg5Ro
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Licensee"
msgstr ""
#. js-lingui-id: 1njn7W
#: src/pages/settings/profile/appearance/components/SettingsExperience.tsx
#: src/modules/ui/navigation/navigation-drawer/components/MultiWorkspaceDropdown/internal/MultiWorkspaceDropdownThemesComponents.tsx
@@ -8260,6 +8397,8 @@ msgid "Manage billing and subscriptions"
msgstr "Abrechnung und Abonnements verwalten"
#. js-lingui-id: nvgUPq
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/SettingsBillingContent.tsx
msgid "Manage billing information"
msgstr "Verwalten Sie die Rechnungsdaten"
@@ -8612,6 +8751,11 @@ msgstr "Monat des Jahres"
msgid "monthly"
msgstr "monatlich"
#. js-lingui-id: Sew/cK
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Monthly subscription"
msgstr ""
#. js-lingui-id: 6jefe3
#: src/modules/side-panel/pages/page-layout/utils/getDateGranularityPluralLabel.ts
#: src/modules/side-panel/pages/page-layout/utils/getDateGranularityPluralLabel.ts
@@ -8673,7 +8817,7 @@ msgid "Move right"
msgstr "Nach rechts verschieben"
#. js-lingui-id: 6qDVmw
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
msgid "Move to a folder"
msgstr ""
@@ -9274,21 +9418,15 @@ msgid "No Files"
msgstr "Keine Dateien"
#. js-lingui-id: pYblOw
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/favorites/favorite-folder-picker/components/FavoriteFolderPickerList.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubPage.tsx
msgid "No folder"
msgstr "Kein Ordner"
#. js-lingui-id: 6XMhqL
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubPage.tsx
msgid "No folders available"
msgstr ""
#. js-lingui-id: aywdyd
#: src/modules/favorites/favorite-folder-picker/components/FavoriteFolderPickerList.tsx
msgid "No folders found"
msgstr "Keine Ordner gefunden"
#. js-lingui-id: 1jgsYC
#: src/modules/settings/accounts/components/message-folders/SettingsMessageFoldersEmptyStateCard.tsx
msgid "No folders found for this account"
@@ -9454,8 +9592,8 @@ msgstr "Keine Ergebnisse"
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewSystemSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewObjectPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubPage.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubPage.tsx
#: src/modules/side-panel/components/SidePanelList.tsx
msgid "No results found"
msgstr "Keine Ergebnisse gefunden"
@@ -9666,6 +9804,7 @@ msgstr ""
#. js-lingui-id: b/j06W
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "OAuth"
msgstr ""
@@ -9674,6 +9813,11 @@ msgstr ""
msgid "OAuth Credentials"
msgstr ""
#. js-lingui-id: LNLTJB
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "OAuth or API Key"
msgstr ""
#. js-lingui-id: pNEViR
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
msgid "object"
@@ -10188,11 +10332,26 @@ msgstr "Der Link zum Zurücksetzen des Passworts wurde an die E-Mail gesendet"
msgid "Paste the code below"
msgstr "Fügen Sie den Code unten ein"
#. js-lingui-id: raz2Pm
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Paste your enterprise key below to activate"
msgstr ""
#. js-lingui-id: dNdgvF
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Paste your enterprise key here"
msgstr ""
#. js-lingui-id: I6gXOa
#: src/modules/settings/logic-functions/components/tabs/SettingsLogicFunctionTriggersTab.tsx
msgid "Path"
msgstr "Pfad"
#. js-lingui-id: QmXBEc
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Payment issue"
msgstr ""
#. js-lingui-id: UbRKMZ
#: src/pages/settings/emailing-domains/utils/getEmailingDomainStatusText.ts
#: src/modules/settings/security/components/approvedAccessDomains/SettingsApprovedAccessDomainsListCard.tsx
@@ -10329,13 +10488,13 @@ msgid "Pick a {objectLabel} record"
msgstr "Wählen Sie einen {objectLabel} Datensatz aus"
#. js-lingui-id: JqqNlC
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewPickerSubView.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
msgid "Pick a view"
msgstr ""
#. js-lingui-id: Wlba2h
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelObjectPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewObjectPickerSubView.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
msgid "Pick an object"
msgstr ""
@@ -10953,6 +11112,16 @@ msgstr "Veröffentlichungen"
msgid "Reload"
msgstr "Neu laden"
#. js-lingui-id: qbM5In
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Reload validity token"
msgstr ""
#. js-lingui-id: MZWnSC
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Reloading..."
msgstr ""
#. js-lingui-id: qlAIQ1
#: src/modules/object-metadata/components/RemoteNavigationDrawerSection.tsx
msgid "Remote"
@@ -10965,16 +11134,6 @@ msgstr "Remote"
msgid "Remove"
msgstr "Entfernen"
#. js-lingui-id: gleHgw
#: src/modules/favorites/components/CurrentWorkspaceMemberFavorites.tsx
msgid "Remove {favoriteCount} favorite?"
msgstr "{favoriteCount} Favorit entfernen?"
#. js-lingui-id: 1VQkMD
#: src/modules/favorites/components/CurrentWorkspaceMemberFavorites.tsx
msgid "Remove {favoriteCount} favorites?"
msgstr "{favoriteCount} Favoriten entfernen?"
#. js-lingui-id: 0Urj9q
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItems.tsx
msgid "Remove {navigationMenuItemCount} navigation menu item?"
@@ -11006,7 +11165,6 @@ msgid "Remove Deleted filter"
msgstr "Gelöschten Filter entfernen"
#. js-lingui-id: T/pF0Z
#: src/modules/favorites/components/PageFavoriteButton.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
msgid "Remove from favorites"
@@ -11061,7 +11219,6 @@ msgstr "Variable entfernen"
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
msgid "Rename"
msgstr "Umbenennen"
@@ -11228,7 +11385,7 @@ msgstr "Ergebnis"
#. js-lingui-id: kx0s+n
#: src/modules/side-panel/pages/search/hooks/useSidePanelSearchRecords.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubPage.tsx
msgid "Results"
msgstr "Ergebnisse"
@@ -11367,6 +11524,11 @@ msgstr ""
msgid "row level permission predicate group"
msgstr ""
#. js-lingui-id: xPaeO2
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Row-level security"
msgstr ""
#. js-lingui-id: 7jTlsu
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectFormOptionRow.tsx
msgid "Ruby"
@@ -11485,6 +11647,8 @@ msgstr ""
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/constants/EngineComponentKeyComponentMap.tsx
#: src/modules/command-menu-item/constants/EngineComponentKeyComponentMap.tsx
msgid "Search"
msgstr "Suche"
@@ -11521,7 +11685,7 @@ msgid "Search a field..."
msgstr "Feld suchen..."
#. js-lingui-id: ITQFzL
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubPage.tsx
msgid "Search a folder..."
msgstr ""
@@ -11689,7 +11853,7 @@ msgid "Search records"
msgstr "Datensätze suchen"
#. js-lingui-id: rRklUH
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubPage.tsx
msgid "Search records..."
msgstr ""
@@ -11724,11 +11888,13 @@ msgid "Searching the web for {query}"
msgstr ""
#. js-lingui-id: 8sgZS9
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
#: src/modules/billing/components/SubscriptionPrice.tsx
msgid "seat / month"
msgstr "Sitzplatz / Monat"
#. js-lingui-id: aQnWwf
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
#: src/modules/billing/components/SubscriptionPrice.tsx
msgid "seat / month - billed yearly"
msgstr "Sitzplatz / Monat - jährlich abgerechnet"
@@ -12556,6 +12722,7 @@ msgstr "SSO"
#. js-lingui-id: vlvAkg
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "SSO (SAML / OIDC)"
msgstr "SSO (SAML / OIDC)"
@@ -12600,6 +12767,16 @@ msgstr ""
msgid "Start"
msgstr "Starten"
#. js-lingui-id: ASqWQi
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Start a new enterprise subscription to re-enable enterprise features."
msgstr ""
#. js-lingui-id: OC6rnK
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Start a new enterprise subscription."
msgstr ""
#. js-lingui-id: D3iCkb
#: src/pages/settings/security/event-logs/components/EventLogFilters.tsx
msgid "Start Date"
@@ -12625,6 +12802,11 @@ msgid "State"
msgstr "Zustand"
#. js-lingui-id: uAQUqI
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/admin-panel/SettingsAdminIndicatorHealthStatus.tsx
#: src/modules/settings/components/SettingsDnsRecordsTable.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
@@ -12920,11 +13102,11 @@ msgstr ""
#. js-lingui-id: 0apULK
#: src/pages/settings/data-model/SettingsObjectTable.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelSystemObjectPickerSubView.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelSystemObjectPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelObjectPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewSystemSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewSystemSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewObjectPickerSubView.tsx
msgid "System objects"
msgstr ""
@@ -13227,6 +13409,11 @@ msgstr "Es gibt erforderliche Spalten, die nicht zugeordnet oder ignoriert wurde
msgid "There are still some rows that contain errors. Rows with errors will be ignored when submitting."
msgstr "Es gibt noch einige Zeilen, die Fehler enthalten. Zeilen mit Fehlern werden beim Absenden ignoriert."
#. js-lingui-id: CA9PTn
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "There is a payment issue with your subscription. Please update your payment method."
msgstr ""
#. js-lingui-id: WQk7Cf
#: src/modules/activities/timeline-activities/components/TimelineCard.tsx
msgid "There is no activity associated with this record."
@@ -13299,16 +13486,6 @@ msgstr "Diese Aktion kann nicht rückgängig gemacht werden. Dadurch wird Ihre M
msgid "This action cannot be undone. This will permanently reset your two factor authentication method. <0/> Please type in your email to confirm."
msgstr "Diese Aktion kann nicht rückgängig gemacht werden. Dadurch wird Ihre Zwei-Faktor-Authentifizierung dauerhaft zurückgesetzt. <0/> Bitte geben Sie zur Bestätigung Ihre E-Mail ein."
#. js-lingui-id: XdFYs2
#: src/modules/favorites/components/CurrentWorkspaceMemberFavorites.tsx
msgid "This action will delete this favorite folder and all {favoriteCount} favorites inside. Do you want to continue?"
msgstr "Diese Aktion löscht diesen Favoritenordner und alle {favoriteCount} enthaltenen Favoriten. Möchten Sie fortfahren?"
#. js-lingui-id: pFXbgz
#: src/modules/favorites/components/CurrentWorkspaceMemberFavorites.tsx
msgid "This action will delete this favorite folder and the favorite inside. Do you want to continue?"
msgstr "Diese Aktion löscht diesen Favoritenordner und den enthaltenen Favoriten. Möchten Sie fortfahren?"
#. js-lingui-id: lAHIY2
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItems.tsx
msgid "This action will delete this folder and all {navigationMenuItemCount} navigation menu items inside. Do you want to continue?"
@@ -13339,9 +13516,9 @@ msgstr ""
msgid "This database value overrides environment settings. "
msgstr "Dieser Datenbankwert überschreibt die Umgebungsanstellungen."
#. js-lingui-id: qHAJQ2
#. js-lingui-id: 8IRnd6
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelSection.tsx
msgid "This feature is part of the Organization Plan"
msgid "This feature is part of the Enterprise Plan"
msgstr ""
#. js-lingui-id: own57K
@@ -13650,6 +13827,8 @@ msgid "Transfer ownership"
msgstr ""
#. js-lingui-id: lhkaAC
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/internal/PlansTags.tsx
msgid "Trial"
msgstr "Testversion"
@@ -13829,7 +14008,7 @@ msgid "Type"
msgstr "Typ"
#. js-lingui-id: SKD2e4
#: src/modules/activities/components/ActivityRichTextEditor.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/RichTextFieldEditor.tsx
msgid "Type '/' for commands, '@' for mentions"
msgstr ""
@@ -13840,7 +14019,7 @@ msgid "Type anything..."
msgstr "Geben Sie irgendetwas ein..."
#. js-lingui-id: UhqKcC
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubPage.tsx
msgid "Type to search records"
msgstr ""
@@ -13998,6 +14177,11 @@ msgstr "Unbegrenzte Kontakte"
msgid "Unlisted"
msgstr "Nicht gelistet"
#. js-lingui-id: Ep1uUU
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Unlock enterprise features like SSO, row-level security, and audit logs."
msgstr ""
#. js-lingui-id: eQMhFX
#: src/modules/advanced-text-editor/extensions/slash-command/DefaultSlashCommands.ts
msgid "unordered"
@@ -14067,6 +14251,11 @@ msgstr "aktualisieren"
msgid "Update"
msgstr "Aktualisieren"
#. js-lingui-id: Y69tSP
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Update payment method"
msgstr ""
#. js-lingui-id: 0KAL3W
#: src/modules/side-panel/hooks/useOpenUpdateMultipleRecordsPageInSidePanel.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
@@ -14305,11 +14494,22 @@ msgstr "Verwendung des standardmäßigen Anwendungswertes. Konfiguration über U
msgid "Using default value. Set a custom value to override."
msgstr "Verwendung des Standardwertes. Setzen Sie einen benutzerdefinierten Wert, um ihn zu überschreiben."
#. js-lingui-id: zzp4XX
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Valid until"
msgstr ""
#. js-lingui-id: Clr4qp
#: src/modules/spreadsheet-import/steps/components/SpreadsheetImportStepperContainer.tsx
msgid "Validate Data"
msgstr "Daten validieren"
#. js-lingui-id: PWZBIT
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Validity token refreshed successfully"
msgstr ""
#. js-lingui-id: wMHvYH
#: src/pages/settings/applications/tabs/SettingsApplicationDetailEnvironmentVariablesTable.tsx
#: src/modules/workflow/workflow-steps/workflow-actions/http-request-action/components/KeyValuePairInput.tsx
@@ -14436,6 +14636,8 @@ msgid "View and filter events, page views, object changes"
msgstr ""
#. js-lingui-id: KANz0G
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/SettingsBillingContent.tsx
msgid "View billing details"
msgstr "Rechnungsdetails anzeigen"
@@ -14485,6 +14687,11 @@ msgstr "ansichtsgruppe"
msgid "View installed app"
msgstr ""
#. js-lingui-id: B02hom
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "View invoices"
msgstr ""
#. js-lingui-id: lh5BED
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkerQueueMetricsSection.tsx
msgid "View Jobs"
@@ -14503,6 +14710,7 @@ msgstr ""
#. js-lingui-id: ecVcAx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/constants/EngineComponentKeyComponentMap.tsx
msgid "View Previous AI Chats"
msgstr "Vorherige KI-Chats anzeigen"
@@ -14852,6 +15060,7 @@ msgstr "Workflows"
#: src/pages/settings/members/SettingsWorkspaceMember.tsx
#: src/pages/settings/logic-functions/SettingsLogicFunctionDetail.tsx
#: src/pages/settings/logic-functions/SettingsLogicFunctionDetail.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/emailing-domains/SettingsNewEmailingDomain.tsx
#: src/pages/settings/emailing-domains/SettingsEmailingDomainDetail.tsx
#: src/pages/settings/domains/SettingsDomains.tsx
@@ -14894,7 +15103,6 @@ msgstr "Workflows"
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownVisibilityContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCustomView.tsx
#: src/modules/navigation-menu-item/components/WorkspaceNavigationMenuItems.tsx
#: src/modules/favorites/components/WorkspaceFavorites.tsx
msgid "Workspace"
msgstr "Arbeitsbereich"
@@ -15018,6 +15226,11 @@ msgstr "Jahr"
msgid "yearly"
msgstr "jährlich"
#. js-lingui-id: Y1GwUe
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Yearly subscription"
msgstr ""
#. js-lingui-id: +BGee5
#: src/modules/side-panel/pages/page-layout/utils/getDateGranularityPluralLabel.ts
msgid "years"
@@ -15150,6 +15363,36 @@ msgstr "Ihre E-Mail-Betreffzeilen und Besprechungstitel werden mit Ihrem Team ge
msgid "Your emails and events content will be shared with your team."
msgstr "Der Inhalt Ihrer E-Mails und Ereignisse wird mit Ihrem Team geteilt."
#. js-lingui-id: ahEwS4
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your enterprise features are active"
msgstr ""
#. js-lingui-id: XMZLU/
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your enterprise features are active but your enterprise key is missing or invalid. This may be expected, but if not, please set a valid signed enterprise key to manage your subscription, or contact support."
msgstr ""
#. js-lingui-id: AxcwNj
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your enterprise features will be disabled"
msgstr ""
#. js-lingui-id: PT137K
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your enterprise features will remain active until {cancelAtDate}."
msgstr ""
#. js-lingui-id: 69Siss
#: src/modules/information-banner/components/enterprise/InformationBannerLegacyEnterpriseKey.tsx
msgid "Your enterprise key format is deprecated. Please activate a new key to keep enterprise features."
msgstr ""
#. js-lingui-id: NTpA4U
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your enterprise subscription has been canceled."
msgstr ""
#. js-lingui-id: 9ivpwk
#: src/pages/settings/SettingsProfile.tsx
msgid "Your name as it will be displayed"
@@ -15160,6 +15403,26 @@ msgstr "Ihr Name, wie er angezeigt wird"
msgid "Your name as it will be displayed on the app"
msgstr "Ihr Name, wie er in der App angezeigt wird"
#. js-lingui-id: 319YPG
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your subscription is active but your validity token is invalid or has expired. Try reloading it or contact support."
msgstr ""
#. js-lingui-id: Fx0axg
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your subscription is scheduled for cancellation"
msgstr ""
#. js-lingui-id: XgIa/8
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your subscription setup was not completed."
msgstr ""
#. js-lingui-id: Z9kbt6
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your subscription status is: {statusLabel}"
msgstr ""
#. js-lingui-id: QOd24n
#: src/modules/billing/hooks/useBillingWording.ts
msgid "Your trial period will end, and "
+343 -80
View File
@@ -663,10 +663,10 @@ msgstr "Σχετικά με αυτό το χώρο εργασίας"
msgid "Access workspace data"
msgstr ""
#. js-lingui-id: c2UA7k
#. js-lingui-id: W5nhmk
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Access your workspace data from your favorite MCP client like Claude Desktop, Windsurf or Cursor."
msgstr "Πρόσβαση στα δεδομένα του χώρου εργασίας σας από τον αγαπημένο σας πελάτη MCP, όπως το Claude Desktop, το Windsurf ή το Cursor."
msgid "Access your workspace data from your favorite MCP client like Claude Desktop, Claude Code, Cursor, or ChatGPT. Once connected, try: \"Show me the 5 most recently created companies\" or \"Create a new person named Jane Doe\"."
msgstr ""
#. js-lingui-id: u2Cycw
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionTabEnvironmentVariablesSection.tsx
@@ -752,23 +752,37 @@ msgid "Actions users can perform on this object"
msgstr "Ενέργειες χρηστών που μπορούν να εκτελέσουν σε αυτό το αντικείμενο"
#. js-lingui-id: FQBaXG
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/data-model/SettingsObjectFieldEdit.tsx
#: src/pages/settings/ai/SettingsSkillForm.tsx
#: src/pages/settings/ai/components/SettingsSkillInactiveMenuDropDown.tsx
#: src/modules/settings/security/components/SSO/SettingsSecuritySSORowDropdownMenu.tsx
#: src/modules/settings/data-model/objects/components/SettingsObjectInactiveMenuDropDown.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectFieldDisabledActionDropdown.tsx
#: src/modules/information-banner/components/enterprise/InformationBannerLegacyEnterpriseKey.tsx
#: src/modules/command-menu-item/record/constants/WorkflowCommandMenuItemsConfig.tsx
msgid "Activate"
msgstr "Ενεργοποίηση"
#. js-lingui-id: eqeFkF
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Activate Enterprise Key"
msgstr ""
#. js-lingui-id: tu8A/k
#: src/modules/command-menu-item/record/constants/WorkflowCommandMenuItemsConfig.tsx
msgid "Activate Workflow"
msgstr "Ενεργοποίηση διεργασιών"
#. js-lingui-id: jSZacs
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Activating..."
msgstr ""
#. js-lingui-id: F6pfE9
#: src/pages/settings/SettingsProfile.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/settings/domains/components/SettingsWorkspaceDomainCard.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobsTable.tsx
msgid "Active"
@@ -806,6 +820,13 @@ msgstr "Προσθήκη \"{trimmedName}\" στις επιλογές"
msgid "Add a {objectLabelSingular}"
msgstr "Προσθήκη {objectLabelSingular}"
#. js-lingui-id: 7W8nJr
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationUngroupedEditor.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
msgid "Add a Group"
msgstr ""
#. js-lingui-id: CZDwqQ
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
@@ -818,16 +839,10 @@ msgid "Add a node"
msgstr "Προσθήκη κόμβου"
#. js-lingui-id: nGv1DN
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubView.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
msgid "Add a record"
msgstr ""
#. js-lingui-id: r8W+9y
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationUngroupedEditor.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
msgid "Add a Section"
msgstr ""
#. js-lingui-id: eMc2xs
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
msgid "Add a step"
@@ -915,11 +930,6 @@ msgstr "Προσθήκη κανόνα φίλτρου"
msgid "Add first filter"
msgstr "Προσθήκη πρώτου φίλτρου"
#. js-lingui-id: //rVZt
#: src/modules/favorites/favorite-folder-picker/components/FavoriteFolderPickerFooter.tsx
msgid "Add folder"
msgstr "Προσθήκη φακέλου"
#. js-lingui-id: 7XzAKI
#: src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowEditActionFormBuilder.tsx
msgid "Add inputs to your form"
@@ -1085,7 +1095,6 @@ msgid "Add to Favorite"
msgstr "Προσθήκη στα Αγαπημένα"
#. js-lingui-id: pBsoKL
#: src/modules/favorites/components/PageFavoriteButton.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/mock/command-menu-items.mock.tsx
@@ -1429,7 +1438,7 @@ msgid "All set!"
msgstr "Όλα έτοιμα!"
#. js-lingui-id: CHvT6e
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemObjectFlow.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemObjectSystemPickerSubPage.tsx
msgid "All system objects are already in the sidebar"
msgstr ""
@@ -1574,6 +1583,7 @@ msgstr "Παρουσιάστηκε σφάλμα κατά τη μεταφόρτω
#. js-lingui-id: XyOToQ
#: src/utils/get-error-message-from-apollo-error.util.ts
#: src/utils/get-error-message-from-apollo-error.util.ts
#: src/modules/views/hooks/internal/usePerformViewSortAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
@@ -1664,12 +1674,14 @@ msgstr "API"
#. js-lingui-id: 0RqpZr
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "API & Webhooks"
msgstr "API & Webhooks"
#. js-lingui-id: yRnk5W
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
#: src/modules/settings/playground/components/PlaygroundSetupForm.tsx
msgid "API Key"
msgstr "API Key"
@@ -1940,6 +1952,7 @@ msgstr "Αύξουσα"
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/constants/EngineComponentKeyComponentMap.tsx
msgid "Ask AI"
msgstr "Ρώτησε την AI"
@@ -2078,6 +2091,11 @@ msgstr ""
msgid "Attachments"
msgstr "Συνημμένα"
#. js-lingui-id: y2W2Hg
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Audit logs"
msgstr ""
#. js-lingui-id: EPEFrH
#: src/pages/settings/security/SettingsSecurity.tsx
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
@@ -2114,6 +2132,11 @@ msgstr "Ταυτοποίηση"
msgid "Authentication failed"
msgstr "Αποτυχία ταυτοποίησης"
#. js-lingui-id: TxT0ER
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Authentication method"
msgstr ""
#. js-lingui-id: H7qgYQ
#: src/pages/settings/SettingsTwoFactorAuthenticationMethod.tsx
msgid "Authenticator app"
@@ -2306,6 +2329,11 @@ msgstr "μεταξύ του {startOrdinal} και {endOrdinal} του μήνα"
msgid "Billing"
msgstr "Χρέωση"
#. js-lingui-id: dSjFxR
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Billing history"
msgstr ""
#. js-lingui-id: nJGwRf
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
msgid "Billing interval"
@@ -2563,6 +2591,7 @@ msgid "Cancel metered tier switching?"
msgstr "Ακύρωση αλλαγής τιμολογιακής βαθμίδας;"
#. js-lingui-id: rRK/Lf
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/SettingsBillingContent.tsx
msgid "Cancel Plan"
msgstr "Ακύρωση σχεδίου"
@@ -2578,10 +2607,26 @@ msgid "Cancel plan switching?"
msgstr "Ακύρωση αλλαγής προγράμματος;"
#. js-lingui-id: N6gPiD
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/SettingsBillingContent.tsx
msgid "Cancel your subscription"
msgstr "Ακύρωση της συνδρομής σας"
#. js-lingui-id: GGWsTU
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Canceled"
msgstr ""
#. js-lingui-id: y4uH7j
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Cancelling"
msgstr ""
#. js-lingui-id: WbPx+C
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Cancels on"
msgstr ""
#. js-lingui-id: XDbjjW
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCustomView.tsx
msgid "Cannot delete the only view"
@@ -3077,11 +3122,6 @@ msgstr ""
msgid "Configure fallback login methods for users with SSO bypass permissions"
msgstr "Διαμόρφωση εναλλακτικών μεθόδων σύνδεσης για χρήστες με δικαιώματα παράκαμψης SSO"
#. js-lingui-id: c7wznw
#: src/modules/side-panel/pages/page-layout/utils/getPageLayoutPageTitle.ts
msgid "Configure filters"
msgstr "Ρύθμιση φίλτρων"
#. js-lingui-id: ghdb7+
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelsGeneral.tsx
msgid "Configure how we should display your events in your calendar"
@@ -3279,6 +3319,7 @@ msgstr ""
#: src/modules/spreadsheet-import/steps/components/SelectHeaderStep/SelectHeaderStep.tsx
#: src/modules/spreadsheet-import/steps/components/MatchColumnsStep/MatchColumnsStep.tsx
#: src/modules/spreadsheet-import/components/StepNavigationButton.tsx
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
#: src/modules/auth/sign-in-up/components/internal/SignInUpWithCredentials.tsx
msgid "Continue"
msgstr "Συνέχεια"
@@ -3438,6 +3479,21 @@ msgstr "Κόστος ανά 1k επιπλέον πιστώσεις"
msgid "Could not delete approved access domain"
msgstr "Δεν ήταν δυνατή η διαγραφή του εγκεκριμένου domain πρόσβασης"
#. js-lingui-id: KqYYBp
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Could not open billing portal. Please check your enterprise key is present, or contact support."
msgstr ""
#. js-lingui-id: ZuI4Sl
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Could not open Stripe. Please contact support."
msgstr ""
#. js-lingui-id: wVw4Am
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Could not refresh validity token. Please contact support."
msgstr ""
#. js-lingui-id: s8lFtq
#: src/hooks/useCopyToClipboard.tsx
msgid "Couldn't copy to clipboard"
@@ -3815,6 +3871,7 @@ msgstr "Προσαρμοσμένος τομέας ενημερώθηκε"
#. js-lingui-id: 8skTDV
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Custom objects"
msgstr "Προσαρμοσμένα αντικείμενα"
@@ -4249,7 +4306,6 @@ msgstr "διαγραφή"
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
@@ -4337,7 +4393,6 @@ msgstr "Διαγραφή πεδίου"
#. js-lingui-id: 97QUV6
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItems.tsx
#: src/modules/favorites/components/CurrentWorkspaceMemberFavorites.tsx
msgid "Delete Folder"
msgstr "Διαγραφή φακέλου"
@@ -4917,6 +4972,8 @@ msgid "Edit own profile information"
msgstr ""
#. js-lingui-id: h2KoTu
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/SettingsBillingContent.tsx
msgid "Edit payment method, see your invoices and more"
msgstr "Επεξεργασία τρόπου πληρωμής, προβολή των τιμολογίων σου και άλλα"
@@ -5216,6 +5273,11 @@ msgstr "Ενισχύει την ασφάλεια απαιτώντας έναν
msgid "Enjoy a {withCreditCardTrialPeriodDuration}-days free trial"
msgstr "Απολαύστε μια δωρεάν δοκιμαστική περίοδο {withCreditCardTrialPeriodDuration} ημερών"
#. js-lingui-id: 6iUnle
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Enjoy a 30-day free trial"
msgstr ""
#. js-lingui-id: T/N+2Z
#: src/modules/workflow/workflow-trigger/components/WorkflowEditTriggerWebhookForm.tsx
#: src/modules/object-record/record-field/ui/form-types/components/FormRawJsonFieldInput.tsx
@@ -5422,6 +5484,9 @@ msgstr "Εισάγετε το κλειδί API σας"
#. js-lingui-id: GpB8YV
#: src/pages/settings/security/SettingsSecurity.tsx
#: src/pages/settings/security/SettingsSecurity.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
msgid "Enterprise"
msgstr "Επιχειρήσεις"
@@ -5430,6 +5495,22 @@ msgstr "Επιχειρήσεις"
msgid "Enterprise Feature"
msgstr ""
#. js-lingui-id: S5c4pl
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Enterprise License"
msgstr ""
#. js-lingui-id: KGE5g0
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Enterprise license activated successfully"
msgstr ""
#. js-lingui-id: SLuq/l
#: src/modules/settings/security/components/SSO/SettingsSSOSAMLForm.tsx
msgid "Entity ID"
@@ -5470,6 +5551,11 @@ msgstr "Διαγραφή εγγραφών που έχουν διαγραφεί
msgid "Error"
msgstr "Σφάλμα"
#. js-lingui-id: VouTsQ
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Error activating enterprise license"
msgstr ""
#. js-lingui-id: GHKxvg
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
msgid "Error deleting api key."
@@ -5495,11 +5581,6 @@ msgstr "Σφάλμα κατά τη διαγραφή του παρόχου ταυ
msgid "Error editing SSO Identity Provider"
msgstr "Σφάλμα κατά την επεξεργασία του παρόχου ταυτότητας SSO"
#. js-lingui-id: GsIfmO
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkerMetricsGraph.tsx
msgid "Error fetching worker metrics: {errorMessage}"
msgstr "Σφάλμα κατά την ανάκτηση μετρικών εργατών: {errorMessage}"
#. js-lingui-id: GdBN5t
#: src/modules/error-handler/components/AppRootErrorFallback.tsx
msgid "Error illustration"
@@ -5530,11 +5611,26 @@ msgstr "Σφάλμα φόρτωσης μηνύματος"
msgid "Error Message"
msgstr "Μήνυμα λάθους"
#. js-lingui-id: Mox63G
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Error opening billing portal"
msgstr ""
#. js-lingui-id: e/eieW
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Error opening Stripe"
msgstr ""
#. js-lingui-id: bT/0cM
#: src/modules/ui/field/display/components/PhonesDisplay.tsx
msgid "Error parsing additional phones: {error}"
msgstr "Σφάλμα ανάλυσης πρόσθετων τηλεφώνων: {error}"
#. js-lingui-id: zRXcyv
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Error refreshing validity token. Please contact support."
msgstr ""
#. js-lingui-id: PfAip2
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
msgid "Error regenerating api key."
@@ -5997,6 +6093,11 @@ msgstr ""
msgid "Failed to {translatedOperationType} {translatedMetadataName}. Related {relatedEntityNames} validation failed. Please check your configuration and try again."
msgstr ""
#. js-lingui-id: R1XJV1
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Failed to activate enterprise license. Please check your key or contact support."
msgstr ""
#. js-lingui-id: vJiM7T
#: src/pages/settings/ai/components/SettingsSkillsTable.tsx
msgid "Failed to activate skill"
@@ -6208,7 +6309,6 @@ msgstr ""
#. js-lingui-id: X9kySA
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItemFolders.tsx
#: src/modules/favorites/components/CurrentWorkspaceMemberFavoritesFolders.tsx
msgid "Favorites"
msgstr "Αγαπημένα"
@@ -6374,7 +6474,6 @@ msgstr ""
#: src/modules/views/components/ViewBarFilterDropdownFieldSelectMenu.tsx
#: src/modules/views/components/ViewBarFilterButton.tsx
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
#: src/modules/side-panel/pages/page-layout/components/ChartFiltersSettings.tsx
#: src/modules/settings/roles/components/SettingsRolesList.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectRelationsTable.tsx
#: src/modules/object-record/record-table/record-table-header/components/RecordTableColumnHeadDropdownMenu.tsx
@@ -6397,6 +6496,7 @@ msgid "Filter group rule options"
msgstr "Επιλογές κανόνα ομάδας φίλτρων"
#. js-lingui-id: cSev+j
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/settings/developers/components/SettingsDevelopersWebhookForm.tsx
msgid "Filters"
msgstr "Φίλτρα"
@@ -6467,6 +6567,11 @@ msgstr "Όνομα"
msgid "First name can not be empty"
msgstr "Το μικρό όνομα δεν μπορεί να είναι κενό"
#. js-lingui-id: JREYkg
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Fix the payment issue to keep your enterprise features active."
msgstr ""
#. js-lingui-id: ylQd2j
#: src/modules/workflow/workflow-steps/workflow-actions/utils/getActionHeaderTypeOrThrow.ts
#: src/modules/side-panel/pages/workflow/action/components/SidePanelWorkflowSelectAction.tsx
@@ -6486,7 +6591,7 @@ msgid "Folder name"
msgstr ""
#. js-lingui-id: HSh8u/
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubPage.tsx
#: src/modules/settings/accounts/components/message-folders/SettingsAccountsMessageFoldersCard.tsx
msgid "Folders"
msgstr "Φάκελοι"
@@ -6635,6 +6740,22 @@ msgstr "Δημιουργημένα αρχεία"
msgid "German"
msgstr "Γερμανικά"
#. js-lingui-id: sqtljx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Get Enterprise"
msgstr ""
#. js-lingui-id: o2kSwB
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Get Enterprise Key"
msgstr ""
#. js-lingui-id: NXEW3h
#: src/pages/onboarding/InviteTeam.tsx
msgid "Get the most out of your workspace by inviting your team."
@@ -6655,6 +6776,12 @@ msgstr "Παγκόσμιο"
msgid "Go Back"
msgstr ""
#. js-lingui-id: Hb4Cgz
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Go to billing portal"
msgstr ""
#. js-lingui-id: mUbv8L
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
msgid "Go to Companies"
@@ -7240,6 +7367,11 @@ msgstr ""
msgid "Inbox"
msgstr "Εισερχόμενα"
#. js-lingui-id: mtGDyy
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Incomplete"
msgstr ""
#. js-lingui-id: O5wNUa
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
msgid "index"
@@ -7882,9 +8014,8 @@ msgid "Launch manually"
msgstr "Εκκίνηση χειροκίνητα"
#. js-lingui-id: rdU729
#: src/modules/side-panel/pages/page-layout/utils/getPageLayoutPageTitle.ts
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsLayout.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCustomView.tsx
msgid "Layout"
@@ -7957,6 +8088,12 @@ msgstr ""
msgid "Less than or equal"
msgstr "Μικρότερο από ή ίσο"
#. js-lingui-id: 3qg5Ro
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Licensee"
msgstr ""
#. js-lingui-id: 1njn7W
#: src/pages/settings/profile/appearance/components/SettingsExperience.tsx
#: src/modules/ui/navigation/navigation-drawer/components/MultiWorkspaceDropdown/internal/MultiWorkspaceDropdownThemesComponents.tsx
@@ -8260,6 +8397,8 @@ msgid "Manage billing and subscriptions"
msgstr "Διαχείριση χρέωσης και συνδρομών"
#. js-lingui-id: nvgUPq
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/SettingsBillingContent.tsx
msgid "Manage billing information"
msgstr "Διαχείριση πληροφοριών χρέωσης"
@@ -8612,6 +8751,11 @@ msgstr "Μήνας του έτους"
msgid "monthly"
msgstr "μηνιαία"
#. js-lingui-id: Sew/cK
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Monthly subscription"
msgstr ""
#. js-lingui-id: 6jefe3
#: src/modules/side-panel/pages/page-layout/utils/getDateGranularityPluralLabel.ts
#: src/modules/side-panel/pages/page-layout/utils/getDateGranularityPluralLabel.ts
@@ -8673,7 +8817,7 @@ msgid "Move right"
msgstr "Μετακίνηση δεξιά"
#. js-lingui-id: 6qDVmw
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
msgid "Move to a folder"
msgstr ""
@@ -9274,21 +9418,15 @@ msgid "No Files"
msgstr "Χωρίς αρχεία"
#. js-lingui-id: pYblOw
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/favorites/favorite-folder-picker/components/FavoriteFolderPickerList.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubPage.tsx
msgid "No folder"
msgstr "Κανένας φάκελος"
#. js-lingui-id: 6XMhqL
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubPage.tsx
msgid "No folders available"
msgstr ""
#. js-lingui-id: aywdyd
#: src/modules/favorites/favorite-folder-picker/components/FavoriteFolderPickerList.tsx
msgid "No folders found"
msgstr "Δεν βρέθηκαν φάκελοι"
#. js-lingui-id: 1jgsYC
#: src/modules/settings/accounts/components/message-folders/SettingsMessageFoldersEmptyStateCard.tsx
msgid "No folders found for this account"
@@ -9454,8 +9592,8 @@ msgstr "Χωρίς αποτελέσματα"
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewSystemSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewObjectPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubPage.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubPage.tsx
#: src/modules/side-panel/components/SidePanelList.tsx
msgid "No results found"
msgstr "Δεν βρέθηκαν αποτελέσματα"
@@ -9666,6 +9804,7 @@ msgstr ""
#. js-lingui-id: b/j06W
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "OAuth"
msgstr ""
@@ -9674,6 +9813,11 @@ msgstr ""
msgid "OAuth Credentials"
msgstr ""
#. js-lingui-id: LNLTJB
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "OAuth or API Key"
msgstr ""
#. js-lingui-id: pNEViR
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
msgid "object"
@@ -10188,11 +10332,26 @@ msgstr "Ο σύνδεσμος για την επαναφορά του κωδικ
msgid "Paste the code below"
msgstr "Επικολλήστε τον παρακάτω κωδικό"
#. js-lingui-id: raz2Pm
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Paste your enterprise key below to activate"
msgstr ""
#. js-lingui-id: dNdgvF
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Paste your enterprise key here"
msgstr ""
#. js-lingui-id: I6gXOa
#: src/modules/settings/logic-functions/components/tabs/SettingsLogicFunctionTriggersTab.tsx
msgid "Path"
msgstr "Διαδρομή"
#. js-lingui-id: QmXBEc
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Payment issue"
msgstr ""
#. js-lingui-id: UbRKMZ
#: src/pages/settings/emailing-domains/utils/getEmailingDomainStatusText.ts
#: src/modules/settings/security/components/approvedAccessDomains/SettingsApprovedAccessDomainsListCard.tsx
@@ -10329,13 +10488,13 @@ msgid "Pick a {objectLabel} record"
msgstr "Επιλέξτε μια καταγραφή {objectLabel}"
#. js-lingui-id: JqqNlC
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewPickerSubView.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
msgid "Pick a view"
msgstr ""
#. js-lingui-id: Wlba2h
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelObjectPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewObjectPickerSubView.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
msgid "Pick an object"
msgstr ""
@@ -10953,6 +11112,16 @@ msgstr "Ενημερώσεις"
msgid "Reload"
msgstr "Ανανέωση"
#. js-lingui-id: qbM5In
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Reload validity token"
msgstr ""
#. js-lingui-id: MZWnSC
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Reloading..."
msgstr ""
#. js-lingui-id: qlAIQ1
#: src/modules/object-metadata/components/RemoteNavigationDrawerSection.tsx
msgid "Remote"
@@ -10965,16 +11134,6 @@ msgstr "Απομακρυσμένα"
msgid "Remove"
msgstr "Αφαίρεση"
#. js-lingui-id: gleHgw
#: src/modules/favorites/components/CurrentWorkspaceMemberFavorites.tsx
msgid "Remove {favoriteCount} favorite?"
msgstr "Αφαίρεση {favoriteCount} αγαπημένου;"
#. js-lingui-id: 1VQkMD
#: src/modules/favorites/components/CurrentWorkspaceMemberFavorites.tsx
msgid "Remove {favoriteCount} favorites?"
msgstr "Αφαίρεση {favoriteCount} αγαπημένων;"
#. js-lingui-id: 0Urj9q
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItems.tsx
msgid "Remove {navigationMenuItemCount} navigation menu item?"
@@ -11006,7 +11165,6 @@ msgid "Remove Deleted filter"
msgstr "Αφαίρεση φίλτρου διαγραμμένων"
#. js-lingui-id: T/pF0Z
#: src/modules/favorites/components/PageFavoriteButton.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
msgid "Remove from favorites"
@@ -11061,7 +11219,6 @@ msgstr "Αφαίρεση μεταβλητής"
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
msgid "Rename"
msgstr "Μετονομασία"
@@ -11228,7 +11385,7 @@ msgstr "Αποτέλεσμα"
#. js-lingui-id: kx0s+n
#: src/modules/side-panel/pages/search/hooks/useSidePanelSearchRecords.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubPage.tsx
msgid "Results"
msgstr "Αποτελέσματα"
@@ -11367,6 +11524,11 @@ msgstr ""
msgid "row level permission predicate group"
msgstr ""
#. js-lingui-id: xPaeO2
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Row-level security"
msgstr ""
#. js-lingui-id: 7jTlsu
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectFormOptionRow.tsx
msgid "Ruby"
@@ -11485,6 +11647,8 @@ msgstr ""
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/constants/EngineComponentKeyComponentMap.tsx
#: src/modules/command-menu-item/constants/EngineComponentKeyComponentMap.tsx
msgid "Search"
msgstr "Αναζήτηση"
@@ -11521,7 +11685,7 @@ msgid "Search a field..."
msgstr "Αναζήτηση πεδίου..."
#. js-lingui-id: ITQFzL
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubPage.tsx
msgid "Search a folder..."
msgstr ""
@@ -11689,7 +11853,7 @@ msgid "Search records"
msgstr "Αναζήτηση εγγραφών"
#. js-lingui-id: rRklUH
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubPage.tsx
msgid "Search records..."
msgstr ""
@@ -11724,11 +11888,13 @@ msgid "Searching the web for {query}"
msgstr ""
#. js-lingui-id: 8sgZS9
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
#: src/modules/billing/components/SubscriptionPrice.tsx
msgid "seat / month"
msgstr "θέση / μήνας"
#. js-lingui-id: aQnWwf
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
#: src/modules/billing/components/SubscriptionPrice.tsx
msgid "seat / month - billed yearly"
msgstr "θέση / μήνας - χρέωση ετησίως"
@@ -12558,6 +12724,7 @@ msgstr "Ενιαίο Σύστημα Εισόδου"
#. js-lingui-id: vlvAkg
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "SSO (SAML / OIDC)"
msgstr "SSO (SAML / OIDC)"
@@ -12602,6 +12769,16 @@ msgstr ""
msgid "Start"
msgstr "Έναρξη"
#. js-lingui-id: ASqWQi
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Start a new enterprise subscription to re-enable enterprise features."
msgstr ""
#. js-lingui-id: OC6rnK
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Start a new enterprise subscription."
msgstr ""
#. js-lingui-id: D3iCkb
#: src/pages/settings/security/event-logs/components/EventLogFilters.tsx
msgid "Start Date"
@@ -12627,6 +12804,11 @@ msgid "State"
msgstr "Κατάσταση"
#. js-lingui-id: uAQUqI
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/admin-panel/SettingsAdminIndicatorHealthStatus.tsx
#: src/modules/settings/components/SettingsDnsRecordsTable.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
@@ -12922,11 +13104,11 @@ msgstr ""
#. js-lingui-id: 0apULK
#: src/pages/settings/data-model/SettingsObjectTable.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelSystemObjectPickerSubView.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelSystemObjectPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelObjectPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewSystemSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewSystemSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewObjectPickerSubView.tsx
msgid "System objects"
msgstr ""
@@ -13229,6 +13411,11 @@ msgstr "Υπάρχουν απαιτούμενες στήλες που δεν α
msgid "There are still some rows that contain errors. Rows with errors will be ignored when submitting."
msgstr "Υπάρχουν ακόμα γραμμές που περιέχουν λάθη. Οι γραμμές με λάθη θα αγνοηθούν κατά την υποβολή."
#. js-lingui-id: CA9PTn
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "There is a payment issue with your subscription. Please update your payment method."
msgstr ""
#. js-lingui-id: WQk7Cf
#: src/modules/activities/timeline-activities/components/TimelineCard.tsx
msgid "There is no activity associated with this record."
@@ -13303,16 +13490,6 @@ msgstr "Αυτή η ενέργεια δεν μπορεί να αναιρεθεί
msgid "This action cannot be undone. This will permanently reset your two factor authentication method. <0/> Please type in your email to confirm."
msgstr "Αυτή η ενέργεια δεν μπορεί να αναιρεθεί. Αυτό θα επαναφέρει μόνιμα τη μέθοδο ελέγχου ταυτότητας δύο παραγόντων σας. <0/> Παρακαλώ πληκτρολογήστε το email σας για επιβεβαίωση."
#. js-lingui-id: XdFYs2
#: src/modules/favorites/components/CurrentWorkspaceMemberFavorites.tsx
msgid "This action will delete this favorite folder and all {favoriteCount} favorites inside. Do you want to continue?"
msgstr "Αυτή η ενέργεια θα διαγράψει αυτόν τον φάκελο αγαπημένων και όλα τα {favoriteCount} αγαπημένα μέσα. Θέλετε να συνεχίσετε;"
#. js-lingui-id: pFXbgz
#: src/modules/favorites/components/CurrentWorkspaceMemberFavorites.tsx
msgid "This action will delete this favorite folder and the favorite inside. Do you want to continue?"
msgstr "Αυτή η ενέργεια θα διαγράψει αυτόν τον φάκελο αγαπημένων και το αγαπημένο μέσα. Θέλετε να συνεχίσετε;"
#. js-lingui-id: lAHIY2
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItems.tsx
msgid "This action will delete this folder and all {navigationMenuItemCount} navigation menu items inside. Do you want to continue?"
@@ -13343,9 +13520,9 @@ msgstr ""
msgid "This database value overrides environment settings. "
msgstr "Αυτή η τιμή βάσης δεδομένων υπερισχύει των ρυθμίσεων περιβάλλοντος."
#. js-lingui-id: qHAJQ2
#. js-lingui-id: 8IRnd6
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelSection.tsx
msgid "This feature is part of the Organization Plan"
msgid "This feature is part of the Enterprise Plan"
msgstr ""
#. js-lingui-id: own57K
@@ -13654,6 +13831,8 @@ msgid "Transfer ownership"
msgstr ""
#. js-lingui-id: lhkaAC
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/internal/PlansTags.tsx
msgid "Trial"
msgstr "Δοκιμή"
@@ -13833,7 +14012,7 @@ msgid "Type"
msgstr "Τύπος"
#. js-lingui-id: SKD2e4
#: src/modules/activities/components/ActivityRichTextEditor.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/RichTextFieldEditor.tsx
msgid "Type '/' for commands, '@' for mentions"
msgstr ""
@@ -13844,7 +14023,7 @@ msgid "Type anything..."
msgstr "Πληκτρολογήστε οτιδήποτε..."
#. js-lingui-id: UhqKcC
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubPage.tsx
msgid "Type to search records"
msgstr ""
@@ -14002,6 +14181,11 @@ msgstr "Απεριόριστες επαφές"
msgid "Unlisted"
msgstr "Μη καταχωρισμένο"
#. js-lingui-id: Ep1uUU
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Unlock enterprise features like SSO, row-level security, and audit logs."
msgstr ""
#. js-lingui-id: eQMhFX
#: src/modules/advanced-text-editor/extensions/slash-command/DefaultSlashCommands.ts
msgid "unordered"
@@ -14071,6 +14255,11 @@ msgstr "ενημέρωση"
msgid "Update"
msgstr "Ενημέρωση"
#. js-lingui-id: Y69tSP
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Update payment method"
msgstr ""
#. js-lingui-id: 0KAL3W
#: src/modules/side-panel/hooks/useOpenUpdateMultipleRecordsPageInSidePanel.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
@@ -14309,11 +14498,22 @@ msgstr "Χρησιμοποιώντας την προεπιλεγμένη τιμ
msgid "Using default value. Set a custom value to override."
msgstr "Χρησιμοποιώντας την προεπιλεγμένη τιμή. Ορίστε μια προσαρμοσμένη τιμή για υπερισχύ."
#. js-lingui-id: zzp4XX
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Valid until"
msgstr ""
#. js-lingui-id: Clr4qp
#: src/modules/spreadsheet-import/steps/components/SpreadsheetImportStepperContainer.tsx
msgid "Validate Data"
msgstr "Επικύρωση δεδομένων"
#. js-lingui-id: PWZBIT
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Validity token refreshed successfully"
msgstr ""
#. js-lingui-id: wMHvYH
#: src/pages/settings/applications/tabs/SettingsApplicationDetailEnvironmentVariablesTable.tsx
#: src/modules/workflow/workflow-steps/workflow-actions/http-request-action/components/KeyValuePairInput.tsx
@@ -14440,6 +14640,8 @@ msgid "View and filter events, page views, object changes"
msgstr ""
#. js-lingui-id: KANz0G
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/SettingsBillingContent.tsx
msgid "View billing details"
msgstr "Προβολή λεπτομερειών χρέωσης"
@@ -14489,6 +14691,11 @@ msgstr "ομάδα προβολής"
msgid "View installed app"
msgstr ""
#. js-lingui-id: B02hom
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "View invoices"
msgstr ""
#. js-lingui-id: lh5BED
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkerQueueMetricsSection.tsx
msgid "View Jobs"
@@ -14507,6 +14714,7 @@ msgstr ""
#. js-lingui-id: ecVcAx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/constants/EngineComponentKeyComponentMap.tsx
msgid "View Previous AI Chats"
msgstr "Εμφάνιση Προηγούμενων Συνομιλιών AI"
@@ -14856,6 +15064,7 @@ msgstr "Ροές Εργασίας"
#: src/pages/settings/members/SettingsWorkspaceMember.tsx
#: src/pages/settings/logic-functions/SettingsLogicFunctionDetail.tsx
#: src/pages/settings/logic-functions/SettingsLogicFunctionDetail.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/emailing-domains/SettingsNewEmailingDomain.tsx
#: src/pages/settings/emailing-domains/SettingsEmailingDomainDetail.tsx
#: src/pages/settings/domains/SettingsDomains.tsx
@@ -14898,7 +15107,6 @@ msgstr "Ροές Εργασίας"
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownVisibilityContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCustomView.tsx
#: src/modules/navigation-menu-item/components/WorkspaceNavigationMenuItems.tsx
#: src/modules/favorites/components/WorkspaceFavorites.tsx
msgid "Workspace"
msgstr "Περιοχή Εργασίας"
@@ -15022,6 +15230,11 @@ msgstr "Έτος"
msgid "yearly"
msgstr "ετήσια"
#. js-lingui-id: Y1GwUe
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Yearly subscription"
msgstr ""
#. js-lingui-id: +BGee5
#: src/modules/side-panel/pages/page-layout/utils/getDateGranularityPluralLabel.ts
msgid "years"
@@ -15154,6 +15367,36 @@ msgstr "Τα θέματα των email σας και οι τίτλοι συνα
msgid "Your emails and events content will be shared with your team."
msgstr "Το περιεχόμενο των email σας και των γεγονότων σας θα μοιραστεί με την ομάδα σας."
#. js-lingui-id: ahEwS4
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your enterprise features are active"
msgstr ""
#. js-lingui-id: XMZLU/
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your enterprise features are active but your enterprise key is missing or invalid. This may be expected, but if not, please set a valid signed enterprise key to manage your subscription, or contact support."
msgstr ""
#. js-lingui-id: AxcwNj
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your enterprise features will be disabled"
msgstr ""
#. js-lingui-id: PT137K
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your enterprise features will remain active until {cancelAtDate}."
msgstr ""
#. js-lingui-id: 69Siss
#: src/modules/information-banner/components/enterprise/InformationBannerLegacyEnterpriseKey.tsx
msgid "Your enterprise key format is deprecated. Please activate a new key to keep enterprise features."
msgstr ""
#. js-lingui-id: NTpA4U
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your enterprise subscription has been canceled."
msgstr ""
#. js-lingui-id: 9ivpwk
#: src/pages/settings/SettingsProfile.tsx
msgid "Your name as it will be displayed"
@@ -15164,6 +15407,26 @@ msgstr "Το όνομά σας όπως θα εμφανίζεται"
msgid "Your name as it will be displayed on the app"
msgstr "Το όνομά σας όπως θα εμφανίζεται στην εφαρμογή"
#. js-lingui-id: 319YPG
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your subscription is active but your validity token is invalid or has expired. Try reloading it or contact support."
msgstr ""
#. js-lingui-id: Fx0axg
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your subscription is scheduled for cancellation"
msgstr ""
#. js-lingui-id: XgIa/8
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your subscription setup was not completed."
msgstr ""
#. js-lingui-id: Z9kbt6
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your subscription status is: {statusLabel}"
msgstr ""
#. js-lingui-id: QOd24n
#: src/modules/billing/hooks/useBillingWording.ts
msgid "Your trial period will end, and "
+344 -81
View File
@@ -658,10 +658,10 @@ msgstr "About this workspace"
msgid "Access workspace data"
msgstr "Access workspace data"
#. js-lingui-id: c2UA7k
#. js-lingui-id: W5nhmk
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Access your workspace data from your favorite MCP client like Claude Desktop, Windsurf or Cursor."
msgstr "Access your workspace data from your favorite MCP client like Claude Desktop, Windsurf or Cursor."
msgid "Access your workspace data from your favorite MCP client like Claude Desktop, Claude Code, Cursor, or ChatGPT. Once connected, try: \"Show me the 5 most recently created companies\" or \"Create a new person named Jane Doe\"."
msgstr "Access your workspace data from your favorite MCP client like Claude Desktop, Claude Code, Cursor, or ChatGPT. Once connected, try: \"Show me the 5 most recently created companies\" or \"Create a new person named Jane Doe\"."
#. js-lingui-id: u2Cycw
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionTabEnvironmentVariablesSection.tsx
@@ -747,23 +747,37 @@ msgid "Actions users can perform on this object"
msgstr "Actions users can perform on this object"
#. js-lingui-id: FQBaXG
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/data-model/SettingsObjectFieldEdit.tsx
#: src/pages/settings/ai/SettingsSkillForm.tsx
#: src/pages/settings/ai/components/SettingsSkillInactiveMenuDropDown.tsx
#: src/modules/settings/security/components/SSO/SettingsSecuritySSORowDropdownMenu.tsx
#: src/modules/settings/data-model/objects/components/SettingsObjectInactiveMenuDropDown.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectFieldDisabledActionDropdown.tsx
#: src/modules/information-banner/components/enterprise/InformationBannerLegacyEnterpriseKey.tsx
#: src/modules/command-menu-item/record/constants/WorkflowCommandMenuItemsConfig.tsx
msgid "Activate"
msgstr "Activate"
#. js-lingui-id: eqeFkF
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Activate Enterprise Key"
msgstr "Activate Enterprise Key"
#. js-lingui-id: tu8A/k
#: src/modules/command-menu-item/record/constants/WorkflowCommandMenuItemsConfig.tsx
msgid "Activate Workflow"
msgstr "Activate Workflow"
#. js-lingui-id: jSZacs
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Activating..."
msgstr "Activating..."
#. js-lingui-id: F6pfE9
#: src/pages/settings/SettingsProfile.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/settings/domains/components/SettingsWorkspaceDomainCard.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobsTable.tsx
msgid "Active"
@@ -801,6 +815,13 @@ msgstr "Add \"{trimmedName}\" to options"
msgid "Add a {objectLabelSingular}"
msgstr "Add a {objectLabelSingular}"
#. js-lingui-id: 7W8nJr
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationUngroupedEditor.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
msgid "Add a Group"
msgstr "Add a Group"
#. js-lingui-id: CZDwqQ
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
@@ -813,16 +834,10 @@ msgid "Add a node"
msgstr "Add a node"
#. js-lingui-id: nGv1DN
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubView.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
msgid "Add a record"
msgstr "Add a record"
#. js-lingui-id: r8W+9y
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationUngroupedEditor.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
msgid "Add a Section"
msgstr "Add a Section"
#. js-lingui-id: eMc2xs
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
msgid "Add a step"
@@ -910,11 +925,6 @@ msgstr "Add filter rule"
msgid "Add first filter"
msgstr "Add first filter"
#. js-lingui-id: //rVZt
#: src/modules/favorites/favorite-folder-picker/components/FavoriteFolderPickerFooter.tsx
msgid "Add folder"
msgstr "Add folder"
#. js-lingui-id: 7XzAKI
#: src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowEditActionFormBuilder.tsx
msgid "Add inputs to your form"
@@ -1080,7 +1090,6 @@ msgid "Add to Favorite"
msgstr "Add to Favorite"
#. js-lingui-id: pBsoKL
#: src/modules/favorites/components/PageFavoriteButton.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/mock/command-menu-items.mock.tsx
@@ -1424,7 +1433,7 @@ msgid "All set!"
msgstr "All set!"
#. js-lingui-id: CHvT6e
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemObjectFlow.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemObjectSystemPickerSubPage.tsx
msgid "All system objects are already in the sidebar"
msgstr "All system objects are already in the sidebar"
@@ -1569,6 +1578,7 @@ msgstr "An error occurred while uploading the picture."
#. js-lingui-id: XyOToQ
#: src/utils/get-error-message-from-apollo-error.util.ts
#: src/utils/get-error-message-from-apollo-error.util.ts
#: src/modules/views/hooks/internal/usePerformViewSortAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
@@ -1659,12 +1669,14 @@ msgstr "API"
#. js-lingui-id: 0RqpZr
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "API & Webhooks"
msgstr "API & Webhooks"
#. js-lingui-id: yRnk5W
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
#: src/modules/settings/playground/components/PlaygroundSetupForm.tsx
msgid "API Key"
msgstr "API Key"
@@ -1935,6 +1947,7 @@ msgstr "Ascending"
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/constants/EngineComponentKeyComponentMap.tsx
msgid "Ask AI"
msgstr "Ask AI"
@@ -2073,6 +2086,11 @@ msgstr "Attach files"
msgid "Attachments"
msgstr "Attachments"
#. js-lingui-id: y2W2Hg
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Audit logs"
msgstr "Audit logs"
#. js-lingui-id: EPEFrH
#: src/pages/settings/security/SettingsSecurity.tsx
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
@@ -2109,6 +2127,11 @@ msgstr "Authentication"
msgid "Authentication failed"
msgstr "Authentication failed"
#. js-lingui-id: TxT0ER
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Authentication method"
msgstr "Authentication method"
#. js-lingui-id: H7qgYQ
#: src/pages/settings/SettingsTwoFactorAuthenticationMethod.tsx
msgid "Authenticator app"
@@ -2301,6 +2324,11 @@ msgstr "between the {startOrdinal} and {endOrdinal} of the month"
msgid "Billing"
msgstr "Billing"
#. js-lingui-id: dSjFxR
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Billing history"
msgstr "Billing history"
#. js-lingui-id: nJGwRf
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
msgid "Billing interval"
@@ -2558,6 +2586,7 @@ msgid "Cancel metered tier switching?"
msgstr "Cancel metered tier switching?"
#. js-lingui-id: rRK/Lf
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/SettingsBillingContent.tsx
msgid "Cancel Plan"
msgstr "Cancel Plan"
@@ -2573,10 +2602,26 @@ msgid "Cancel plan switching?"
msgstr "Cancel plan switching?"
#. js-lingui-id: N6gPiD
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/SettingsBillingContent.tsx
msgid "Cancel your subscription"
msgstr "Cancel your subscription"
#. js-lingui-id: GGWsTU
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Canceled"
msgstr "Canceled"
#. js-lingui-id: y4uH7j
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Cancelling"
msgstr "Cancelling"
#. js-lingui-id: WbPx+C
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Cancels on"
msgstr "Cancels on"
#. js-lingui-id: XDbjjW
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCustomView.tsx
msgid "Cannot delete the only view"
@@ -3072,11 +3117,6 @@ msgstr "Configure default AI models and availability"
msgid "Configure fallback login methods for users with SSO bypass permissions"
msgstr "Configure fallback login methods for users with SSO bypass permissions"
#. js-lingui-id: c7wznw
#: src/modules/side-panel/pages/page-layout/utils/getPageLayoutPageTitle.ts
msgid "Configure filters"
msgstr "Configure filters"
#. js-lingui-id: ghdb7+
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelsGeneral.tsx
msgid "Configure how we should display your events in your calendar"
@@ -3274,6 +3314,7 @@ msgstr "Context window"
#: src/modules/spreadsheet-import/steps/components/SelectHeaderStep/SelectHeaderStep.tsx
#: src/modules/spreadsheet-import/steps/components/MatchColumnsStep/MatchColumnsStep.tsx
#: src/modules/spreadsheet-import/components/StepNavigationButton.tsx
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
#: src/modules/auth/sign-in-up/components/internal/SignInUpWithCredentials.tsx
msgid "Continue"
msgstr "Continue"
@@ -3433,6 +3474,21 @@ msgstr "Cost per 1k Extra Credits"
msgid "Could not delete approved access domain"
msgstr "Could not delete approved access domain"
#. js-lingui-id: KqYYBp
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Could not open billing portal. Please check your enterprise key is present, or contact support."
msgstr "Could not open billing portal. Please check your enterprise key is present, or contact support."
#. js-lingui-id: ZuI4Sl
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Could not open Stripe. Please contact support."
msgstr "Could not open Stripe. Please contact support."
#. js-lingui-id: wVw4Am
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Could not refresh validity token. Please contact support."
msgstr "Could not refresh validity token. Please contact support."
#. js-lingui-id: s8lFtq
#: src/hooks/useCopyToClipboard.tsx
msgid "Couldn't copy to clipboard"
@@ -3810,6 +3866,7 @@ msgstr "Custom domain updated"
#. js-lingui-id: 8skTDV
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Custom objects"
msgstr "Custom objects"
@@ -4244,7 +4301,6 @@ msgstr "delete"
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
@@ -4332,7 +4388,6 @@ msgstr "Delete field"
#. js-lingui-id: 97QUV6
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItems.tsx
#: src/modules/favorites/components/CurrentWorkspaceMemberFavorites.tsx
msgid "Delete Folder"
msgstr "Delete Folder"
@@ -4912,6 +4967,8 @@ msgid "Edit own profile information"
msgstr "Edit own profile information"
#. js-lingui-id: h2KoTu
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/SettingsBillingContent.tsx
msgid "Edit payment method, see your invoices and more"
msgstr "Edit payment method, see your invoices and more"
@@ -5211,6 +5268,11 @@ msgstr "Enhances security by requiring a code along with your password"
msgid "Enjoy a {withCreditCardTrialPeriodDuration}-days free trial"
msgstr "Enjoy a {withCreditCardTrialPeriodDuration}-days free trial"
#. js-lingui-id: 6iUnle
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Enjoy a 30-day free trial"
msgstr "Enjoy a 30-day free trial"
#. js-lingui-id: T/N+2Z
#: src/modules/workflow/workflow-trigger/components/WorkflowEditTriggerWebhookForm.tsx
#: src/modules/object-record/record-field/ui/form-types/components/FormRawJsonFieldInput.tsx
@@ -5417,6 +5479,9 @@ msgstr "Enter your API key"
#. js-lingui-id: GpB8YV
#: src/pages/settings/security/SettingsSecurity.tsx
#: src/pages/settings/security/SettingsSecurity.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
msgid "Enterprise"
msgstr "Enterprise"
@@ -5425,6 +5490,22 @@ msgstr "Enterprise"
msgid "Enterprise Feature"
msgstr "Enterprise Feature"
#. js-lingui-id: S5c4pl
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Enterprise License"
msgstr "Enterprise License"
#. js-lingui-id: KGE5g0
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Enterprise license activated successfully"
msgstr "Enterprise license activated successfully"
#. js-lingui-id: SLuq/l
#: src/modules/settings/security/components/SSO/SettingsSSOSAMLForm.tsx
msgid "Entity ID"
@@ -5465,6 +5546,11 @@ msgstr "Erasure of soft-deleted records"
msgid "Error"
msgstr "Error"
#. js-lingui-id: VouTsQ
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Error activating enterprise license"
msgstr "Error activating enterprise license"
#. js-lingui-id: GHKxvg
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
msgid "Error deleting api key."
@@ -5490,11 +5576,6 @@ msgstr "Error deleting SSO Identity Provider"
msgid "Error editing SSO Identity Provider"
msgstr "Error editing SSO Identity Provider"
#. js-lingui-id: GsIfmO
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkerMetricsGraph.tsx
msgid "Error fetching worker metrics: {errorMessage}"
msgstr "Error fetching worker metrics: {errorMessage}"
#. js-lingui-id: GdBN5t
#: src/modules/error-handler/components/AppRootErrorFallback.tsx
msgid "Error illustration"
@@ -5525,11 +5606,26 @@ msgstr "Error loading message"
msgid "Error Message"
msgstr "Error Message"
#. js-lingui-id: Mox63G
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Error opening billing portal"
msgstr "Error opening billing portal"
#. js-lingui-id: e/eieW
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Error opening Stripe"
msgstr "Error opening Stripe"
#. js-lingui-id: bT/0cM
#: src/modules/ui/field/display/components/PhonesDisplay.tsx
msgid "Error parsing additional phones: {error}"
msgstr "Error parsing additional phones: {error}"
#. js-lingui-id: zRXcyv
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Error refreshing validity token. Please contact support."
msgstr "Error refreshing validity token. Please contact support."
#. js-lingui-id: PfAip2
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
msgid "Error regenerating api key."
@@ -5992,6 +6088,11 @@ msgstr "Failed to {translatedOperationType} {translatedMetadataName}. Please try
msgid "Failed to {translatedOperationType} {translatedMetadataName}. Related {relatedEntityNames} validation failed. Please check your configuration and try again."
msgstr "Failed to {translatedOperationType} {translatedMetadataName}. Related {relatedEntityNames} validation failed. Please check your configuration and try again."
#. js-lingui-id: R1XJV1
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Failed to activate enterprise license. Please check your key or contact support."
msgstr "Failed to activate enterprise license. Please check your key or contact support."
#. js-lingui-id: vJiM7T
#: src/pages/settings/ai/components/SettingsSkillsTable.tsx
msgid "Failed to activate skill"
@@ -6203,7 +6304,6 @@ msgstr "Fast Model"
#. js-lingui-id: X9kySA
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItemFolders.tsx
#: src/modules/favorites/components/CurrentWorkspaceMemberFavoritesFolders.tsx
msgid "Favorites"
msgstr "Favorites"
@@ -6369,7 +6469,6 @@ msgstr "Files"
#: src/modules/views/components/ViewBarFilterDropdownFieldSelectMenu.tsx
#: src/modules/views/components/ViewBarFilterButton.tsx
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
#: src/modules/side-panel/pages/page-layout/components/ChartFiltersSettings.tsx
#: src/modules/settings/roles/components/SettingsRolesList.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectRelationsTable.tsx
#: src/modules/object-record/record-table/record-table-header/components/RecordTableColumnHeadDropdownMenu.tsx
@@ -6392,6 +6491,7 @@ msgid "Filter group rule options"
msgstr "Filter group rule options"
#. js-lingui-id: cSev+j
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/settings/developers/components/SettingsDevelopersWebhookForm.tsx
msgid "Filters"
msgstr "Filters"
@@ -6462,6 +6562,11 @@ msgstr "First Name"
msgid "First name can not be empty"
msgstr "First name can not be empty"
#. js-lingui-id: JREYkg
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Fix the payment issue to keep your enterprise features active."
msgstr "Fix the payment issue to keep your enterprise features active."
#. js-lingui-id: ylQd2j
#: src/modules/workflow/workflow-steps/workflow-actions/utils/getActionHeaderTypeOrThrow.ts
#: src/modules/side-panel/pages/workflow/action/components/SidePanelWorkflowSelectAction.tsx
@@ -6481,7 +6586,7 @@ msgid "Folder name"
msgstr "Folder name"
#. js-lingui-id: HSh8u/
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubPage.tsx
#: src/modules/settings/accounts/components/message-folders/SettingsAccountsMessageFoldersCard.tsx
msgid "Folders"
msgstr "Folders"
@@ -6630,6 +6735,22 @@ msgstr "Generated Files"
msgid "German"
msgstr "German"
#. js-lingui-id: sqtljx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Get Enterprise"
msgstr "Get Enterprise"
#. js-lingui-id: o2kSwB
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Get Enterprise Key"
msgstr "Get Enterprise Key"
#. js-lingui-id: NXEW3h
#: src/pages/onboarding/InviteTeam.tsx
msgid "Get the most out of your workspace by inviting your team."
@@ -6650,6 +6771,12 @@ msgstr "Global"
msgid "Go Back"
msgstr "Go Back"
#. js-lingui-id: Hb4Cgz
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Go to billing portal"
msgstr "Go to billing portal"
#. js-lingui-id: mUbv8L
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
msgid "Go to Companies"
@@ -7235,6 +7362,11 @@ msgstr "Inactive Skill Options"
msgid "Inbox"
msgstr "Inbox"
#. js-lingui-id: mtGDyy
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Incomplete"
msgstr "Incomplete"
#. js-lingui-id: O5wNUa
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
msgid "index"
@@ -7877,9 +8009,8 @@ msgid "Launch manually"
msgstr "Launch manually"
#. js-lingui-id: rdU729
#: src/modules/side-panel/pages/page-layout/utils/getPageLayoutPageTitle.ts
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsLayout.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCustomView.tsx
msgid "Layout"
@@ -7952,6 +8083,12 @@ msgstr "Legend"
msgid "Less than or equal"
msgstr "Less than or equal"
#. js-lingui-id: 3qg5Ro
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Licensee"
msgstr "Licensee"
#. js-lingui-id: 1njn7W
#: src/pages/settings/profile/appearance/components/SettingsExperience.tsx
#: src/modules/ui/navigation/navigation-drawer/components/MultiWorkspaceDropdown/internal/MultiWorkspaceDropdownThemesComponents.tsx
@@ -8255,6 +8392,8 @@ msgid "Manage billing and subscriptions"
msgstr "Manage billing and subscriptions"
#. js-lingui-id: nvgUPq
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/SettingsBillingContent.tsx
msgid "Manage billing information"
msgstr "Manage billing information"
@@ -8607,6 +8746,11 @@ msgstr "Month of the year"
msgid "monthly"
msgstr "monthly"
#. js-lingui-id: Sew/cK
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Monthly subscription"
msgstr "Monthly subscription"
#. js-lingui-id: 6jefe3
#: src/modules/side-panel/pages/page-layout/utils/getDateGranularityPluralLabel.ts
#: src/modules/side-panel/pages/page-layout/utils/getDateGranularityPluralLabel.ts
@@ -8668,7 +8812,7 @@ msgid "Move right"
msgstr "Move right"
#. js-lingui-id: 6qDVmw
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
msgid "Move to a folder"
msgstr "Move to a folder"
@@ -9269,21 +9413,15 @@ msgid "No Files"
msgstr "No Files"
#. js-lingui-id: pYblOw
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/favorites/favorite-folder-picker/components/FavoriteFolderPickerList.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubPage.tsx
msgid "No folder"
msgstr "No folder"
#. js-lingui-id: 6XMhqL
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubPage.tsx
msgid "No folders available"
msgstr "No folders available"
#. js-lingui-id: aywdyd
#: src/modules/favorites/favorite-folder-picker/components/FavoriteFolderPickerList.tsx
msgid "No folders found"
msgstr "No folders found"
#. js-lingui-id: 1jgsYC
#: src/modules/settings/accounts/components/message-folders/SettingsMessageFoldersEmptyStateCard.tsx
msgid "No folders found for this account"
@@ -9449,8 +9587,8 @@ msgstr "No Results"
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewSystemSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewObjectPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubPage.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubPage.tsx
#: src/modules/side-panel/components/SidePanelList.tsx
msgid "No results found"
msgstr "No results found"
@@ -9661,6 +9799,7 @@ msgstr "Numbered list"
#. js-lingui-id: b/j06W
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "OAuth"
msgstr "OAuth"
@@ -9669,6 +9808,11 @@ msgstr "OAuth"
msgid "OAuth Credentials"
msgstr "OAuth Credentials"
#. js-lingui-id: LNLTJB
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "OAuth or API Key"
msgstr "OAuth or API Key"
#. js-lingui-id: pNEViR
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
msgid "object"
@@ -10183,11 +10327,26 @@ msgstr "Password reset link has been sent to the email"
msgid "Paste the code below"
msgstr "Paste the code below"
#. js-lingui-id: raz2Pm
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Paste your enterprise key below to activate"
msgstr "Paste your enterprise key below to activate"
#. js-lingui-id: dNdgvF
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Paste your enterprise key here"
msgstr "Paste your enterprise key here"
#. js-lingui-id: I6gXOa
#: src/modules/settings/logic-functions/components/tabs/SettingsLogicFunctionTriggersTab.tsx
msgid "Path"
msgstr "Path"
#. js-lingui-id: QmXBEc
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Payment issue"
msgstr "Payment issue"
#. js-lingui-id: UbRKMZ
#: src/pages/settings/emailing-domains/utils/getEmailingDomainStatusText.ts
#: src/modules/settings/security/components/approvedAccessDomains/SettingsApprovedAccessDomainsListCard.tsx
@@ -10324,13 +10483,13 @@ msgid "Pick a {objectLabel} record"
msgstr "Pick a {objectLabel} record"
#. js-lingui-id: JqqNlC
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewPickerSubView.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
msgid "Pick a view"
msgstr "Pick a view"
#. js-lingui-id: Wlba2h
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelObjectPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewObjectPickerSubView.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
msgid "Pick an object"
msgstr "Pick an object"
@@ -10948,6 +11107,16 @@ msgstr "Releases"
msgid "Reload"
msgstr "Reload"
#. js-lingui-id: qbM5In
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Reload validity token"
msgstr "Reload validity token"
#. js-lingui-id: MZWnSC
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Reloading..."
msgstr "Reloading..."
#. js-lingui-id: qlAIQ1
#: src/modules/object-metadata/components/RemoteNavigationDrawerSection.tsx
msgid "Remote"
@@ -10960,16 +11129,6 @@ msgstr "Remote"
msgid "Remove"
msgstr "Remove"
#. js-lingui-id: gleHgw
#: src/modules/favorites/components/CurrentWorkspaceMemberFavorites.tsx
msgid "Remove {favoriteCount} favorite?"
msgstr "Remove {favoriteCount} favorite?"
#. js-lingui-id: 1VQkMD
#: src/modules/favorites/components/CurrentWorkspaceMemberFavorites.tsx
msgid "Remove {favoriteCount} favorites?"
msgstr "Remove {favoriteCount} favorites?"
#. js-lingui-id: 0Urj9q
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItems.tsx
msgid "Remove {navigationMenuItemCount} navigation menu item?"
@@ -11001,7 +11160,6 @@ msgid "Remove Deleted filter"
msgstr "Remove Deleted filter"
#. js-lingui-id: T/pF0Z
#: src/modules/favorites/components/PageFavoriteButton.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
msgid "Remove from favorites"
@@ -11056,7 +11214,6 @@ msgstr "Remove variable"
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
msgid "Rename"
msgstr "Rename"
@@ -11223,7 +11380,7 @@ msgstr "Result"
#. js-lingui-id: kx0s+n
#: src/modules/side-panel/pages/search/hooks/useSidePanelSearchRecords.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubPage.tsx
msgid "Results"
msgstr "Results"
@@ -11362,6 +11519,11 @@ msgstr "row level permission predicate"
msgid "row level permission predicate group"
msgstr "row level permission predicate group"
#. js-lingui-id: xPaeO2
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Row-level security"
msgstr "Row-level security"
#. js-lingui-id: 7jTlsu
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectFormOptionRow.tsx
msgid "Ruby"
@@ -11480,6 +11642,8 @@ msgstr "Score"
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/constants/EngineComponentKeyComponentMap.tsx
#: src/modules/command-menu-item/constants/EngineComponentKeyComponentMap.tsx
msgid "Search"
msgstr "Search"
@@ -11516,7 +11680,7 @@ msgid "Search a field..."
msgstr "Search a field..."
#. js-lingui-id: ITQFzL
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubPage.tsx
msgid "Search a folder..."
msgstr "Search a folder..."
@@ -11684,7 +11848,7 @@ msgid "Search records"
msgstr "Search records"
#. js-lingui-id: rRklUH
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubPage.tsx
msgid "Search records..."
msgstr "Search records..."
@@ -11719,11 +11883,13 @@ msgid "Searching the web for {query}"
msgstr "Searching the web for {query}"
#. js-lingui-id: 8sgZS9
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
#: src/modules/billing/components/SubscriptionPrice.tsx
msgid "seat / month"
msgstr "seat / month"
#. js-lingui-id: aQnWwf
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
#: src/modules/billing/components/SubscriptionPrice.tsx
msgid "seat / month - billed yearly"
msgstr "seat / month - billed yearly"
@@ -12551,6 +12717,7 @@ msgstr "SSO"
#. js-lingui-id: vlvAkg
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "SSO (SAML / OIDC)"
msgstr "SSO (SAML / OIDC)"
@@ -12595,6 +12762,16 @@ msgstr "Standard tools available to AI agents"
msgid "Start"
msgstr "Start"
#. js-lingui-id: ASqWQi
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Start a new enterprise subscription to re-enable enterprise features."
msgstr "Start a new enterprise subscription to re-enable enterprise features."
#. js-lingui-id: OC6rnK
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Start a new enterprise subscription."
msgstr "Start a new enterprise subscription."
#. js-lingui-id: D3iCkb
#: src/pages/settings/security/event-logs/components/EventLogFilters.tsx
msgid "Start Date"
@@ -12620,6 +12797,11 @@ msgid "State"
msgstr "State"
#. js-lingui-id: uAQUqI
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/admin-panel/SettingsAdminIndicatorHealthStatus.tsx
#: src/modules/settings/components/SettingsDnsRecordsTable.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
@@ -12915,11 +13097,11 @@ msgstr "System fields"
#. js-lingui-id: 0apULK
#: src/pages/settings/data-model/SettingsObjectTable.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelSystemObjectPickerSubView.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelSystemObjectPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelObjectPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewSystemSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewSystemSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewObjectPickerSubView.tsx
msgid "System objects"
msgstr "System objects"
@@ -13222,6 +13404,11 @@ msgstr "There are required columns that are not matched or ignored. Do you want
msgid "There are still some rows that contain errors. Rows with errors will be ignored when submitting."
msgstr "There are still some rows that contain errors. Rows with errors will be ignored when submitting."
#. js-lingui-id: CA9PTn
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "There is a payment issue with your subscription. Please update your payment method."
msgstr "There is a payment issue with your subscription. Please update your payment method."
#. js-lingui-id: WQk7Cf
#: src/modules/activities/timeline-activities/components/TimelineCard.tsx
msgid "There is no activity associated with this record."
@@ -13296,16 +13483,6 @@ msgstr "This action cannot be undone. This will permanently remove your membersh
msgid "This action cannot be undone. This will permanently reset your two factor authentication method. <0/> Please type in your email to confirm."
msgstr "This action cannot be undone. This will permanently reset your two factor authentication method. <0/> Please type in your email to confirm."
#. js-lingui-id: XdFYs2
#: src/modules/favorites/components/CurrentWorkspaceMemberFavorites.tsx
msgid "This action will delete this favorite folder and all {favoriteCount} favorites inside. Do you want to continue?"
msgstr "This action will delete this favorite folder and all {favoriteCount} favorites inside. Do you want to continue?"
#. js-lingui-id: pFXbgz
#: src/modules/favorites/components/CurrentWorkspaceMemberFavorites.tsx
msgid "This action will delete this favorite folder and the favorite inside. Do you want to continue?"
msgstr "This action will delete this favorite folder and the favorite inside. Do you want to continue?"
#. js-lingui-id: lAHIY2
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItems.tsx
msgid "This action will delete this folder and all {navigationMenuItemCount} navigation menu items inside. Do you want to continue?"
@@ -13336,10 +13513,10 @@ msgstr "This application is not listed on the marketplace. It was shared via a d
msgid "This database value overrides environment settings. "
msgstr "This database value overrides environment settings. "
#. js-lingui-id: qHAJQ2
#. js-lingui-id: 8IRnd6
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelSection.tsx
msgid "This feature is part of the Organization Plan"
msgstr "This feature is part of the Organization Plan"
msgid "This feature is part of the Enterprise Plan"
msgstr "This feature is part of the Enterprise Plan"
#. js-lingui-id: own57K
#: src/modules/activities/files/components/DocumentViewer.tsx
@@ -13647,6 +13824,8 @@ msgid "Transfer ownership"
msgstr "Transfer ownership"
#. js-lingui-id: lhkaAC
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/internal/PlansTags.tsx
msgid "Trial"
msgstr "Trial"
@@ -13826,7 +14005,7 @@ msgid "Type"
msgstr "Type"
#. js-lingui-id: SKD2e4
#: src/modules/activities/components/ActivityRichTextEditor.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/RichTextFieldEditor.tsx
msgid "Type '/' for commands, '@' for mentions"
msgstr "Type '/' for commands, '@' for mentions"
@@ -13837,7 +14016,7 @@ msgid "Type anything..."
msgstr "Type anything..."
#. js-lingui-id: UhqKcC
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubPage.tsx
msgid "Type to search records"
msgstr "Type to search records"
@@ -13995,6 +14174,11 @@ msgstr "Unlimited contacts"
msgid "Unlisted"
msgstr "Unlisted"
#. js-lingui-id: Ep1uUU
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Unlock enterprise features like SSO, row-level security, and audit logs."
msgstr "Unlock enterprise features like SSO, row-level security, and audit logs."
#. js-lingui-id: eQMhFX
#: src/modules/advanced-text-editor/extensions/slash-command/DefaultSlashCommands.ts
msgid "unordered"
@@ -14064,6 +14248,11 @@ msgstr "update"
msgid "Update"
msgstr "Update"
#. js-lingui-id: Y69tSP
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Update payment method"
msgstr "Update payment method"
#. js-lingui-id: 0KAL3W
#: src/modules/side-panel/hooks/useOpenUpdateMultipleRecordsPageInSidePanel.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
@@ -14302,11 +14491,22 @@ msgstr "Using default application value. Configure via environment variables."
msgid "Using default value. Set a custom value to override."
msgstr "Using default value. Set a custom value to override."
#. js-lingui-id: zzp4XX
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Valid until"
msgstr "Valid until"
#. js-lingui-id: Clr4qp
#: src/modules/spreadsheet-import/steps/components/SpreadsheetImportStepperContainer.tsx
msgid "Validate Data"
msgstr "Validate Data"
#. js-lingui-id: PWZBIT
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Validity token refreshed successfully"
msgstr "Validity token refreshed successfully"
#. js-lingui-id: wMHvYH
#: src/pages/settings/applications/tabs/SettingsApplicationDetailEnvironmentVariablesTable.tsx
#: src/modules/workflow/workflow-steps/workflow-actions/http-request-action/components/KeyValuePairInput.tsx
@@ -14433,6 +14633,8 @@ msgid "View and filter events, page views, object changes"
msgstr "View and filter events, page views, object changes"
#. js-lingui-id: KANz0G
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/SettingsBillingContent.tsx
msgid "View billing details"
msgstr "View billing details"
@@ -14482,6 +14684,11 @@ msgstr "view group"
msgid "View installed app"
msgstr "View installed app"
#. js-lingui-id: B02hom
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "View invoices"
msgstr "View invoices"
#. js-lingui-id: lh5BED
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkerQueueMetricsSection.tsx
msgid "View Jobs"
@@ -14500,6 +14707,7 @@ msgstr "View marketplace page"
#. js-lingui-id: ecVcAx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/constants/EngineComponentKeyComponentMap.tsx
msgid "View Previous AI Chats"
msgstr "View Previous AI Chats"
@@ -14849,6 +15057,7 @@ msgstr "Workflows"
#: src/pages/settings/members/SettingsWorkspaceMember.tsx
#: src/pages/settings/logic-functions/SettingsLogicFunctionDetail.tsx
#: src/pages/settings/logic-functions/SettingsLogicFunctionDetail.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/emailing-domains/SettingsNewEmailingDomain.tsx
#: src/pages/settings/emailing-domains/SettingsEmailingDomainDetail.tsx
#: src/pages/settings/domains/SettingsDomains.tsx
@@ -14891,7 +15100,6 @@ msgstr "Workflows"
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownVisibilityContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCustomView.tsx
#: src/modules/navigation-menu-item/components/WorkspaceNavigationMenuItems.tsx
#: src/modules/favorites/components/WorkspaceFavorites.tsx
msgid "Workspace"
msgstr "Workspace"
@@ -15015,6 +15223,11 @@ msgstr "Year"
msgid "yearly"
msgstr "yearly"
#. js-lingui-id: Y1GwUe
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Yearly subscription"
msgstr "Yearly subscription"
#. js-lingui-id: +BGee5
#: src/modules/side-panel/pages/page-layout/utils/getDateGranularityPluralLabel.ts
msgid "years"
@@ -15147,6 +15360,36 @@ msgstr "Your email subjects and meeting titles will be shared with your team."
msgid "Your emails and events content will be shared with your team."
msgstr "Your emails and events content will be shared with your team."
#. js-lingui-id: ahEwS4
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your enterprise features are active"
msgstr "Your enterprise features are active"
#. js-lingui-id: XMZLU/
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your enterprise features are active but your enterprise key is missing or invalid. This may be expected, but if not, please set a valid signed enterprise key to manage your subscription, or contact support."
msgstr "Your enterprise features are active but your enterprise key is missing or invalid. This may be expected, but if not, please set a valid signed enterprise key to manage your subscription, or contact support."
#. js-lingui-id: AxcwNj
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your enterprise features will be disabled"
msgstr "Your enterprise features will be disabled"
#. js-lingui-id: PT137K
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your enterprise features will remain active until {cancelAtDate}."
msgstr "Your enterprise features will remain active until {cancelAtDate}."
#. js-lingui-id: 69Siss
#: src/modules/information-banner/components/enterprise/InformationBannerLegacyEnterpriseKey.tsx
msgid "Your enterprise key format is deprecated. Please activate a new key to keep enterprise features."
msgstr "Your enterprise key format is deprecated. Please activate a new key to keep enterprise features."
#. js-lingui-id: NTpA4U
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your enterprise subscription has been canceled."
msgstr "Your enterprise subscription has been canceled."
#. js-lingui-id: 9ivpwk
#: src/pages/settings/SettingsProfile.tsx
msgid "Your name as it will be displayed"
@@ -15157,6 +15400,26 @@ msgstr "Your name as it will be displayed"
msgid "Your name as it will be displayed on the app"
msgstr "Your name as it will be displayed on the app"
#. js-lingui-id: 319YPG
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your subscription is active but your validity token is invalid or has expired. Try reloading it or contact support."
msgstr "Your subscription is active but your validity token is invalid or has expired. Try reloading it or contact support."
#. js-lingui-id: Fx0axg
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your subscription is scheduled for cancellation"
msgstr "Your subscription is scheduled for cancellation"
#. js-lingui-id: XgIa/8
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your subscription setup was not completed."
msgstr "Your subscription setup was not completed."
#. js-lingui-id: Z9kbt6
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your subscription status is: {statusLabel}"
msgstr "Your subscription status is: {statusLabel}"
#. js-lingui-id: QOd24n
#: src/modules/billing/hooks/useBillingWording.ts
msgid "Your trial period will end, and "
+343 -80
View File
@@ -663,10 +663,10 @@ msgstr "Sobre este espacio de trabajo"
msgid "Access workspace data"
msgstr ""
#. js-lingui-id: c2UA7k
#. js-lingui-id: W5nhmk
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Access your workspace data from your favorite MCP client like Claude Desktop, Windsurf or Cursor."
msgstr "Accede a los datos de tu espacio de trabajo desde tu cliente MCP favorito, como Claude Desktop, Windsurf o Cursor."
msgid "Access your workspace data from your favorite MCP client like Claude Desktop, Claude Code, Cursor, or ChatGPT. Once connected, try: \"Show me the 5 most recently created companies\" or \"Create a new person named Jane Doe\"."
msgstr ""
#. js-lingui-id: u2Cycw
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionTabEnvironmentVariablesSection.tsx
@@ -752,23 +752,37 @@ msgid "Actions users can perform on this object"
msgstr "Acciones que los usuarios pueden realizar en este objeto"
#. js-lingui-id: FQBaXG
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/data-model/SettingsObjectFieldEdit.tsx
#: src/pages/settings/ai/SettingsSkillForm.tsx
#: src/pages/settings/ai/components/SettingsSkillInactiveMenuDropDown.tsx
#: src/modules/settings/security/components/SSO/SettingsSecuritySSORowDropdownMenu.tsx
#: src/modules/settings/data-model/objects/components/SettingsObjectInactiveMenuDropDown.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectFieldDisabledActionDropdown.tsx
#: src/modules/information-banner/components/enterprise/InformationBannerLegacyEnterpriseKey.tsx
#: src/modules/command-menu-item/record/constants/WorkflowCommandMenuItemsConfig.tsx
msgid "Activate"
msgstr "Activar"
#. js-lingui-id: eqeFkF
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Activate Enterprise Key"
msgstr ""
#. js-lingui-id: tu8A/k
#: src/modules/command-menu-item/record/constants/WorkflowCommandMenuItemsConfig.tsx
msgid "Activate Workflow"
msgstr "Activar workflow"
#. js-lingui-id: jSZacs
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Activating..."
msgstr ""
#. js-lingui-id: F6pfE9
#: src/pages/settings/SettingsProfile.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/settings/domains/components/SettingsWorkspaceDomainCard.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobsTable.tsx
msgid "Active"
@@ -806,6 +820,13 @@ msgstr "Agregar \"{trimmedName}\" a las opciones"
msgid "Add a {objectLabelSingular}"
msgstr "Agregar un {objectLabelSingular}"
#. js-lingui-id: 7W8nJr
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationUngroupedEditor.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
msgid "Add a Group"
msgstr ""
#. js-lingui-id: CZDwqQ
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
@@ -818,16 +839,10 @@ msgid "Add a node"
msgstr "Añadir un nodo"
#. js-lingui-id: nGv1DN
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubView.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
msgid "Add a record"
msgstr ""
#. js-lingui-id: r8W+9y
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationUngroupedEditor.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
msgid "Add a Section"
msgstr ""
#. js-lingui-id: eMc2xs
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
msgid "Add a step"
@@ -915,11 +930,6 @@ msgstr "Agregar regla de filtro"
msgid "Add first filter"
msgstr "Añadir primer filtro"
#. js-lingui-id: //rVZt
#: src/modules/favorites/favorite-folder-picker/components/FavoriteFolderPickerFooter.tsx
msgid "Add folder"
msgstr "Agregar carpeta"
#. js-lingui-id: 7XzAKI
#: src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowEditActionFormBuilder.tsx
msgid "Add inputs to your form"
@@ -1085,7 +1095,6 @@ msgid "Add to Favorite"
msgstr "Añadir a favoritos"
#. js-lingui-id: pBsoKL
#: src/modules/favorites/components/PageFavoriteButton.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/mock/command-menu-items.mock.tsx
@@ -1429,7 +1438,7 @@ msgid "All set!"
msgstr "¡Todo listo!"
#. js-lingui-id: CHvT6e
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemObjectFlow.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemObjectSystemPickerSubPage.tsx
msgid "All system objects are already in the sidebar"
msgstr ""
@@ -1574,6 +1583,7 @@ msgstr "Se produjo un error al subir la imagen."
#. js-lingui-id: XyOToQ
#: src/utils/get-error-message-from-apollo-error.util.ts
#: src/utils/get-error-message-from-apollo-error.util.ts
#: src/modules/views/hooks/internal/usePerformViewSortAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
@@ -1664,12 +1674,14 @@ msgstr "API"
#. js-lingui-id: 0RqpZr
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "API & Webhooks"
msgstr "API y Webhooks"
#. js-lingui-id: yRnk5W
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
#: src/modules/settings/playground/components/PlaygroundSetupForm.tsx
msgid "API Key"
msgstr "Clave API"
@@ -1940,6 +1952,7 @@ msgstr "Ascendente"
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/constants/EngineComponentKeyComponentMap.tsx
msgid "Ask AI"
msgstr "Preguntar a IA"
@@ -2078,6 +2091,11 @@ msgstr ""
msgid "Attachments"
msgstr "Adjuntos"
#. js-lingui-id: y2W2Hg
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Audit logs"
msgstr ""
#. js-lingui-id: EPEFrH
#: src/pages/settings/security/SettingsSecurity.tsx
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
@@ -2114,6 +2132,11 @@ msgstr "Autenticación"
msgid "Authentication failed"
msgstr "Autenticación fallida"
#. js-lingui-id: TxT0ER
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Authentication method"
msgstr ""
#. js-lingui-id: H7qgYQ
#: src/pages/settings/SettingsTwoFactorAuthenticationMethod.tsx
msgid "Authenticator app"
@@ -2306,6 +2329,11 @@ msgstr "entre el {startOrdinal} y {endOrdinal} del mes"
msgid "Billing"
msgstr "Facturación"
#. js-lingui-id: dSjFxR
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Billing history"
msgstr ""
#. js-lingui-id: nJGwRf
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
msgid "Billing interval"
@@ -2563,6 +2591,7 @@ msgid "Cancel metered tier switching?"
msgstr "¿Cancelar cambio de nivel medido?"
#. js-lingui-id: rRK/Lf
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/SettingsBillingContent.tsx
msgid "Cancel Plan"
msgstr "Cancelar plan"
@@ -2578,10 +2607,26 @@ msgid "Cancel plan switching?"
msgstr "¿Cancelar cambio de plan?"
#. js-lingui-id: N6gPiD
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/SettingsBillingContent.tsx
msgid "Cancel your subscription"
msgstr "Cancelar su suscripción"
#. js-lingui-id: GGWsTU
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Canceled"
msgstr ""
#. js-lingui-id: y4uH7j
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Cancelling"
msgstr ""
#. js-lingui-id: WbPx+C
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Cancels on"
msgstr ""
#. js-lingui-id: XDbjjW
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCustomView.tsx
msgid "Cannot delete the only view"
@@ -3077,11 +3122,6 @@ msgstr ""
msgid "Configure fallback login methods for users with SSO bypass permissions"
msgstr "Configurar métodos de inicio de sesión de respaldo para usuarios con permisos para omitir SSO"
#. js-lingui-id: c7wznw
#: src/modules/side-panel/pages/page-layout/utils/getPageLayoutPageTitle.ts
msgid "Configure filters"
msgstr "Configurar filtros"
#. js-lingui-id: ghdb7+
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelsGeneral.tsx
msgid "Configure how we should display your events in your calendar"
@@ -3279,6 +3319,7 @@ msgstr ""
#: src/modules/spreadsheet-import/steps/components/SelectHeaderStep/SelectHeaderStep.tsx
#: src/modules/spreadsheet-import/steps/components/MatchColumnsStep/MatchColumnsStep.tsx
#: src/modules/spreadsheet-import/components/StepNavigationButton.tsx
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
#: src/modules/auth/sign-in-up/components/internal/SignInUpWithCredentials.tsx
msgid "Continue"
msgstr "Continuar"
@@ -3438,6 +3479,21 @@ msgstr "Costo por cada 1k Créditos Extra"
msgid "Could not delete approved access domain"
msgstr "No se pudo eliminar el dominio de acceso aprobado"
#. js-lingui-id: KqYYBp
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Could not open billing portal. Please check your enterprise key is present, or contact support."
msgstr ""
#. js-lingui-id: ZuI4Sl
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Could not open Stripe. Please contact support."
msgstr ""
#. js-lingui-id: wVw4Am
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Could not refresh validity token. Please contact support."
msgstr ""
#. js-lingui-id: s8lFtq
#: src/hooks/useCopyToClipboard.tsx
msgid "Couldn't copy to clipboard"
@@ -3815,6 +3871,7 @@ msgstr "Dominio personalizado actualizado"
#. js-lingui-id: 8skTDV
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Custom objects"
msgstr "Objetos personalizados"
@@ -4249,7 +4306,6 @@ msgstr "eliminar"
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
@@ -4337,7 +4393,6 @@ msgstr "Eliminar campo"
#. js-lingui-id: 97QUV6
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItems.tsx
#: src/modules/favorites/components/CurrentWorkspaceMemberFavorites.tsx
msgid "Delete Folder"
msgstr "Eliminar carpeta"
@@ -4917,6 +4972,8 @@ msgid "Edit own profile information"
msgstr "Edita tu información del perfil"
#. js-lingui-id: h2KoTu
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/SettingsBillingContent.tsx
msgid "Edit payment method, see your invoices and more"
msgstr "Editar la forma de pago, ver sus facturas y más"
@@ -5216,6 +5273,11 @@ msgstr "Mejora la seguridad al requerir un código junto con tu contraseña"
msgid "Enjoy a {withCreditCardTrialPeriodDuration}-days free trial"
msgstr "Disfrute de {withCreditCardTrialPeriodDuration} días de prueba gratis"
#. js-lingui-id: 6iUnle
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Enjoy a 30-day free trial"
msgstr ""
#. js-lingui-id: T/N+2Z
#: src/modules/workflow/workflow-trigger/components/WorkflowEditTriggerWebhookForm.tsx
#: src/modules/object-record/record-field/ui/form-types/components/FormRawJsonFieldInput.tsx
@@ -5422,6 +5484,9 @@ msgstr "Introduce tu clave de API"
#. js-lingui-id: GpB8YV
#: src/pages/settings/security/SettingsSecurity.tsx
#: src/pages/settings/security/SettingsSecurity.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
msgid "Enterprise"
msgstr "Empresa"
@@ -5430,6 +5495,22 @@ msgstr "Empresa"
msgid "Enterprise Feature"
msgstr ""
#. js-lingui-id: S5c4pl
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Enterprise License"
msgstr ""
#. js-lingui-id: KGE5g0
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Enterprise license activated successfully"
msgstr ""
#. js-lingui-id: SLuq/l
#: src/modules/settings/security/components/SSO/SettingsSSOSAMLForm.tsx
msgid "Entity ID"
@@ -5470,6 +5551,11 @@ msgstr "Borrado de registros eliminados suavemente"
msgid "Error"
msgstr "Error"
#. js-lingui-id: VouTsQ
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Error activating enterprise license"
msgstr ""
#. js-lingui-id: GHKxvg
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
msgid "Error deleting api key."
@@ -5495,11 +5581,6 @@ msgstr "Error al eliminar el Proveedor de Identidad SSO"
msgid "Error editing SSO Identity Provider"
msgstr "Error al editar el Proveedor de Identidad SSO"
#. js-lingui-id: GsIfmO
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkerMetricsGraph.tsx
msgid "Error fetching worker metrics: {errorMessage}"
msgstr "Error al obtener métricas del trabajador: {errorMessage}"
#. js-lingui-id: GdBN5t
#: src/modules/error-handler/components/AppRootErrorFallback.tsx
msgid "Error illustration"
@@ -5530,11 +5611,26 @@ msgstr "Error al cargar el mensaje"
msgid "Error Message"
msgstr "Mensaje de error"
#. js-lingui-id: Mox63G
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Error opening billing portal"
msgstr ""
#. js-lingui-id: e/eieW
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Error opening Stripe"
msgstr ""
#. js-lingui-id: bT/0cM
#: src/modules/ui/field/display/components/PhonesDisplay.tsx
msgid "Error parsing additional phones: {error}"
msgstr "Error al analizar teléfonos adicionales: {error}"
#. js-lingui-id: zRXcyv
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Error refreshing validity token. Please contact support."
msgstr ""
#. js-lingui-id: PfAip2
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
msgid "Error regenerating api key."
@@ -5997,6 +6093,11 @@ msgstr ""
msgid "Failed to {translatedOperationType} {translatedMetadataName}. Related {relatedEntityNames} validation failed. Please check your configuration and try again."
msgstr ""
#. js-lingui-id: R1XJV1
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Failed to activate enterprise license. Please check your key or contact support."
msgstr ""
#. js-lingui-id: vJiM7T
#: src/pages/settings/ai/components/SettingsSkillsTable.tsx
msgid "Failed to activate skill"
@@ -6208,7 +6309,6 @@ msgstr ""
#. js-lingui-id: X9kySA
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItemFolders.tsx
#: src/modules/favorites/components/CurrentWorkspaceMemberFavoritesFolders.tsx
msgid "Favorites"
msgstr "Favoritos"
@@ -6374,7 +6474,6 @@ msgstr ""
#: src/modules/views/components/ViewBarFilterDropdownFieldSelectMenu.tsx
#: src/modules/views/components/ViewBarFilterButton.tsx
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
#: src/modules/side-panel/pages/page-layout/components/ChartFiltersSettings.tsx
#: src/modules/settings/roles/components/SettingsRolesList.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectRelationsTable.tsx
#: src/modules/object-record/record-table/record-table-header/components/RecordTableColumnHeadDropdownMenu.tsx
@@ -6397,6 +6496,7 @@ msgid "Filter group rule options"
msgstr "Opciones de reglas del grupo de filtros"
#. js-lingui-id: cSev+j
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/settings/developers/components/SettingsDevelopersWebhookForm.tsx
msgid "Filters"
msgstr "Filtros"
@@ -6467,6 +6567,11 @@ msgstr "Nombre"
msgid "First name can not be empty"
msgstr "El nombre no puede estar vacío"
#. js-lingui-id: JREYkg
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Fix the payment issue to keep your enterprise features active."
msgstr ""
#. js-lingui-id: ylQd2j
#: src/modules/workflow/workflow-steps/workflow-actions/utils/getActionHeaderTypeOrThrow.ts
#: src/modules/side-panel/pages/workflow/action/components/SidePanelWorkflowSelectAction.tsx
@@ -6486,7 +6591,7 @@ msgid "Folder name"
msgstr ""
#. js-lingui-id: HSh8u/
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubPage.tsx
#: src/modules/settings/accounts/components/message-folders/SettingsAccountsMessageFoldersCard.tsx
msgid "Folders"
msgstr "Carpetas"
@@ -6635,6 +6740,22 @@ msgstr "Archivos generados"
msgid "German"
msgstr "Alemán"
#. js-lingui-id: sqtljx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Get Enterprise"
msgstr ""
#. js-lingui-id: o2kSwB
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Get Enterprise Key"
msgstr ""
#. js-lingui-id: NXEW3h
#: src/pages/onboarding/InviteTeam.tsx
msgid "Get the most out of your workspace by inviting your team."
@@ -6655,6 +6776,12 @@ msgstr "Global"
msgid "Go Back"
msgstr ""
#. js-lingui-id: Hb4Cgz
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Go to billing portal"
msgstr ""
#. js-lingui-id: mUbv8L
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
msgid "Go to Companies"
@@ -7240,6 +7367,11 @@ msgstr ""
msgid "Inbox"
msgstr "Bandeja de entrada"
#. js-lingui-id: mtGDyy
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Incomplete"
msgstr ""
#. js-lingui-id: O5wNUa
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
msgid "index"
@@ -7882,9 +8014,8 @@ msgid "Launch manually"
msgstr "Lanzar manualmente"
#. js-lingui-id: rdU729
#: src/modules/side-panel/pages/page-layout/utils/getPageLayoutPageTitle.ts
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsLayout.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCustomView.tsx
msgid "Layout"
@@ -7957,6 +8088,12 @@ msgstr ""
msgid "Less than or equal"
msgstr "Menor o igual"
#. js-lingui-id: 3qg5Ro
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Licensee"
msgstr ""
#. js-lingui-id: 1njn7W
#: src/pages/settings/profile/appearance/components/SettingsExperience.tsx
#: src/modules/ui/navigation/navigation-drawer/components/MultiWorkspaceDropdown/internal/MultiWorkspaceDropdownThemesComponents.tsx
@@ -8260,6 +8397,8 @@ msgid "Manage billing and subscriptions"
msgstr "Administrar a facturación y suscripciones"
#. js-lingui-id: nvgUPq
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/SettingsBillingContent.tsx
msgid "Manage billing information"
msgstr "Administrar la información de facturación"
@@ -8612,6 +8751,11 @@ msgstr "Mes del año"
msgid "monthly"
msgstr "mensual"
#. js-lingui-id: Sew/cK
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Monthly subscription"
msgstr ""
#. js-lingui-id: 6jefe3
#: src/modules/side-panel/pages/page-layout/utils/getDateGranularityPluralLabel.ts
#: src/modules/side-panel/pages/page-layout/utils/getDateGranularityPluralLabel.ts
@@ -8673,7 +8817,7 @@ msgid "Move right"
msgstr "Mover a la derecha"
#. js-lingui-id: 6qDVmw
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
msgid "Move to a folder"
msgstr ""
@@ -9274,21 +9418,15 @@ msgid "No Files"
msgstr "Sin archivos"
#. js-lingui-id: pYblOw
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/favorites/favorite-folder-picker/components/FavoriteFolderPickerList.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubPage.tsx
msgid "No folder"
msgstr "Sin carpeta"
#. js-lingui-id: 6XMhqL
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubPage.tsx
msgid "No folders available"
msgstr ""
#. js-lingui-id: aywdyd
#: src/modules/favorites/favorite-folder-picker/components/FavoriteFolderPickerList.tsx
msgid "No folders found"
msgstr "No se encontraron carpetas"
#. js-lingui-id: 1jgsYC
#: src/modules/settings/accounts/components/message-folders/SettingsMessageFoldersEmptyStateCard.tsx
msgid "No folders found for this account"
@@ -9454,8 +9592,8 @@ msgstr "Sin resultados"
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewSystemSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewObjectPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubPage.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubPage.tsx
#: src/modules/side-panel/components/SidePanelList.tsx
msgid "No results found"
msgstr "No se encontraron resultados"
@@ -9666,6 +9804,7 @@ msgstr "Lista numerada"
#. js-lingui-id: b/j06W
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "OAuth"
msgstr ""
@@ -9674,6 +9813,11 @@ msgstr ""
msgid "OAuth Credentials"
msgstr ""
#. js-lingui-id: LNLTJB
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "OAuth or API Key"
msgstr ""
#. js-lingui-id: pNEViR
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
msgid "object"
@@ -10188,11 +10332,26 @@ msgstr "El enlace de restablecimiento de contraseña ha sido enviado al correo e
msgid "Paste the code below"
msgstr "Pega el código a continuación"
#. js-lingui-id: raz2Pm
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Paste your enterprise key below to activate"
msgstr ""
#. js-lingui-id: dNdgvF
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Paste your enterprise key here"
msgstr ""
#. js-lingui-id: I6gXOa
#: src/modules/settings/logic-functions/components/tabs/SettingsLogicFunctionTriggersTab.tsx
msgid "Path"
msgstr "Ruta"
#. js-lingui-id: QmXBEc
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Payment issue"
msgstr ""
#. js-lingui-id: UbRKMZ
#: src/pages/settings/emailing-domains/utils/getEmailingDomainStatusText.ts
#: src/modules/settings/security/components/approvedAccessDomains/SettingsApprovedAccessDomainsListCard.tsx
@@ -10329,13 +10488,13 @@ msgid "Pick a {objectLabel} record"
msgstr "Selecciona un registro de {objectLabel}"
#. js-lingui-id: JqqNlC
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewPickerSubView.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
msgid "Pick a view"
msgstr ""
#. js-lingui-id: Wlba2h
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelObjectPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewObjectPickerSubView.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
msgid "Pick an object"
msgstr ""
@@ -10953,6 +11112,16 @@ msgstr "Lanzamientos"
msgid "Reload"
msgstr "Recargar"
#. js-lingui-id: qbM5In
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Reload validity token"
msgstr ""
#. js-lingui-id: MZWnSC
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Reloading..."
msgstr ""
#. js-lingui-id: qlAIQ1
#: src/modules/object-metadata/components/RemoteNavigationDrawerSection.tsx
msgid "Remote"
@@ -10965,16 +11134,6 @@ msgstr "Remoto"
msgid "Remove"
msgstr "Eliminar"
#. js-lingui-id: gleHgw
#: src/modules/favorites/components/CurrentWorkspaceMemberFavorites.tsx
msgid "Remove {favoriteCount} favorite?"
msgstr "¿Eliminar {favoriteCount} favorito?"
#. js-lingui-id: 1VQkMD
#: src/modules/favorites/components/CurrentWorkspaceMemberFavorites.tsx
msgid "Remove {favoriteCount} favorites?"
msgstr "¿Eliminar {favoriteCount} favoritos?"
#. js-lingui-id: 0Urj9q
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItems.tsx
msgid "Remove {navigationMenuItemCount} navigation menu item?"
@@ -11006,7 +11165,6 @@ msgid "Remove Deleted filter"
msgstr "Eliminar filtro Eliminado"
#. js-lingui-id: T/pF0Z
#: src/modules/favorites/components/PageFavoriteButton.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
msgid "Remove from favorites"
@@ -11061,7 +11219,6 @@ msgstr "Eliminar variable"
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
msgid "Rename"
msgstr "Renombrar"
@@ -11228,7 +11385,7 @@ msgstr "Resultado"
#. js-lingui-id: kx0s+n
#: src/modules/side-panel/pages/search/hooks/useSidePanelSearchRecords.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubPage.tsx
msgid "Results"
msgstr "Resultados"
@@ -11367,6 +11524,11 @@ msgstr ""
msgid "row level permission predicate group"
msgstr ""
#. js-lingui-id: xPaeO2
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Row-level security"
msgstr ""
#. js-lingui-id: 7jTlsu
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectFormOptionRow.tsx
msgid "Ruby"
@@ -11485,6 +11647,8 @@ msgstr ""
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/constants/EngineComponentKeyComponentMap.tsx
#: src/modules/command-menu-item/constants/EngineComponentKeyComponentMap.tsx
msgid "Search"
msgstr "Buscar"
@@ -11521,7 +11685,7 @@ msgid "Search a field..."
msgstr "Buscar un campo..."
#. js-lingui-id: ITQFzL
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubPage.tsx
msgid "Search a folder..."
msgstr ""
@@ -11689,7 +11853,7 @@ msgid "Search records"
msgstr "Buscar registros"
#. js-lingui-id: rRklUH
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubPage.tsx
msgid "Search records..."
msgstr ""
@@ -11724,11 +11888,13 @@ msgid "Searching the web for {query}"
msgstr ""
#. js-lingui-id: 8sgZS9
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
#: src/modules/billing/components/SubscriptionPrice.tsx
msgid "seat / month"
msgstr "asiento / mes"
#. js-lingui-id: aQnWwf
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
#: src/modules/billing/components/SubscriptionPrice.tsx
msgid "seat / month - billed yearly"
msgstr "asiento / mes - facturado anualmente"
@@ -12556,6 +12722,7 @@ msgstr "SSO"
#. js-lingui-id: vlvAkg
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "SSO (SAML / OIDC)"
msgstr "SSO (SAML / OIDC)"
@@ -12600,6 +12767,16 @@ msgstr ""
msgid "Start"
msgstr "Comenzar"
#. js-lingui-id: ASqWQi
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Start a new enterprise subscription to re-enable enterprise features."
msgstr ""
#. js-lingui-id: OC6rnK
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Start a new enterprise subscription."
msgstr ""
#. js-lingui-id: D3iCkb
#: src/pages/settings/security/event-logs/components/EventLogFilters.tsx
msgid "Start Date"
@@ -12625,6 +12802,11 @@ msgid "State"
msgstr "Estado"
#. js-lingui-id: uAQUqI
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/admin-panel/SettingsAdminIndicatorHealthStatus.tsx
#: src/modules/settings/components/SettingsDnsRecordsTable.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
@@ -12920,11 +13102,11 @@ msgstr ""
#. js-lingui-id: 0apULK
#: src/pages/settings/data-model/SettingsObjectTable.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelSystemObjectPickerSubView.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelSystemObjectPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelObjectPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewSystemSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewSystemSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewObjectPickerSubView.tsx
msgid "System objects"
msgstr "Objetos del sistema"
@@ -13227,6 +13409,11 @@ msgstr "Hay columnas requeridas que no están asignadas o ignoradas. ¿Quieres c
msgid "There are still some rows that contain errors. Rows with errors will be ignored when submitting."
msgstr "Todavía hay algunas filas que contienen errores. Las filas con errores serán ignoradas al enviar."
#. js-lingui-id: CA9PTn
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "There is a payment issue with your subscription. Please update your payment method."
msgstr ""
#. js-lingui-id: WQk7Cf
#: src/modules/activities/timeline-activities/components/TimelineCard.tsx
msgid "There is no activity associated with this record."
@@ -13301,16 +13488,6 @@ msgstr "Esta acción no se puede deshacer. Esto eliminará permanentemente su me
msgid "This action cannot be undone. This will permanently reset your two factor authentication method. <0/> Please type in your email to confirm."
msgstr "Esta acción no se puede deshacer. Esto restablecerá permanentemente tu método de autenticación de dos factores. <0/> Escribe tu correo electrónico para confirmar."
#. js-lingui-id: XdFYs2
#: src/modules/favorites/components/CurrentWorkspaceMemberFavorites.tsx
msgid "This action will delete this favorite folder and all {favoriteCount} favorites inside. Do you want to continue?"
msgstr "Esta acción eliminará esta carpeta de favoritos y los {favoriteCount} favoritos que contiene. ¿Deseas continuar?"
#. js-lingui-id: pFXbgz
#: src/modules/favorites/components/CurrentWorkspaceMemberFavorites.tsx
msgid "This action will delete this favorite folder and the favorite inside. Do you want to continue?"
msgstr "Esta acción eliminará esta carpeta de favoritos y el favorito que contiene. ¿Deseas continuar?"
#. js-lingui-id: lAHIY2
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItems.tsx
msgid "This action will delete this folder and all {navigationMenuItemCount} navigation menu items inside. Do you want to continue?"
@@ -13341,9 +13518,9 @@ msgstr ""
msgid "This database value overrides environment settings. "
msgstr "Este valor de base de datos anula la configuración del entorno."
#. js-lingui-id: qHAJQ2
#. js-lingui-id: 8IRnd6
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelSection.tsx
msgid "This feature is part of the Organization Plan"
msgid "This feature is part of the Enterprise Plan"
msgstr ""
#. js-lingui-id: own57K
@@ -13652,6 +13829,8 @@ msgid "Transfer ownership"
msgstr ""
#. js-lingui-id: lhkaAC
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/internal/PlansTags.tsx
msgid "Trial"
msgstr "Prueba"
@@ -13831,7 +14010,7 @@ msgid "Type"
msgstr "Tipo"
#. js-lingui-id: SKD2e4
#: src/modules/activities/components/ActivityRichTextEditor.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/RichTextFieldEditor.tsx
msgid "Type '/' for commands, '@' for mentions"
msgstr ""
@@ -13842,7 +14021,7 @@ msgid "Type anything..."
msgstr "Escribe cualquier cosa..."
#. js-lingui-id: UhqKcC
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubPage.tsx
msgid "Type to search records"
msgstr ""
@@ -14000,6 +14179,11 @@ msgstr "Contactos ilimitados"
msgid "Unlisted"
msgstr "No listadas"
#. js-lingui-id: Ep1uUU
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Unlock enterprise features like SSO, row-level security, and audit logs."
msgstr ""
#. js-lingui-id: eQMhFX
#: src/modules/advanced-text-editor/extensions/slash-command/DefaultSlashCommands.ts
msgid "unordered"
@@ -14069,6 +14253,11 @@ msgstr "actualizar"
msgid "Update"
msgstr "Actualizar"
#. js-lingui-id: Y69tSP
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Update payment method"
msgstr ""
#. js-lingui-id: 0KAL3W
#: src/modules/side-panel/hooks/useOpenUpdateMultipleRecordsPageInSidePanel.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
@@ -14307,11 +14496,22 @@ msgstr "Usando el valor de aplicación predeterminado. Configurar a través de v
msgid "Using default value. Set a custom value to override."
msgstr "Usando el valor predeterminado. Establece un valor personalizado para anular."
#. js-lingui-id: zzp4XX
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Valid until"
msgstr ""
#. js-lingui-id: Clr4qp
#: src/modules/spreadsheet-import/steps/components/SpreadsheetImportStepperContainer.tsx
msgid "Validate Data"
msgstr "Validar datos"
#. js-lingui-id: PWZBIT
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Validity token refreshed successfully"
msgstr ""
#. js-lingui-id: wMHvYH
#: src/pages/settings/applications/tabs/SettingsApplicationDetailEnvironmentVariablesTable.tsx
#: src/modules/workflow/workflow-steps/workflow-actions/http-request-action/components/KeyValuePairInput.tsx
@@ -14438,6 +14638,8 @@ msgid "View and filter events, page views, object changes"
msgstr ""
#. js-lingui-id: KANz0G
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/SettingsBillingContent.tsx
msgid "View billing details"
msgstr "Ver detalles de facturación"
@@ -14487,6 +14689,11 @@ msgstr "grupo de vista"
msgid "View installed app"
msgstr ""
#. js-lingui-id: B02hom
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "View invoices"
msgstr ""
#. js-lingui-id: lh5BED
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkerQueueMetricsSection.tsx
msgid "View Jobs"
@@ -14505,6 +14712,7 @@ msgstr ""
#. js-lingui-id: ecVcAx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/constants/EngineComponentKeyComponentMap.tsx
msgid "View Previous AI Chats"
msgstr "Ver chats previos de IA"
@@ -14854,6 +15062,7 @@ msgstr "Workflows"
#: src/pages/settings/members/SettingsWorkspaceMember.tsx
#: src/pages/settings/logic-functions/SettingsLogicFunctionDetail.tsx
#: src/pages/settings/logic-functions/SettingsLogicFunctionDetail.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/emailing-domains/SettingsNewEmailingDomain.tsx
#: src/pages/settings/emailing-domains/SettingsEmailingDomainDetail.tsx
#: src/pages/settings/domains/SettingsDomains.tsx
@@ -14896,7 +15105,6 @@ msgstr "Workflows"
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownVisibilityContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCustomView.tsx
#: src/modules/navigation-menu-item/components/WorkspaceNavigationMenuItems.tsx
#: src/modules/favorites/components/WorkspaceFavorites.tsx
msgid "Workspace"
msgstr "Espacio de trabajo"
@@ -15020,6 +15228,11 @@ msgstr "Año"
msgid "yearly"
msgstr "anual"
#. js-lingui-id: Y1GwUe
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Yearly subscription"
msgstr ""
#. js-lingui-id: +BGee5
#: src/modules/side-panel/pages/page-layout/utils/getDateGranularityPluralLabel.ts
msgid "years"
@@ -15152,6 +15365,36 @@ msgstr "Los asuntos de tus correos electrónicos y los títulos de las reuniones
msgid "Your emails and events content will be shared with your team."
msgstr "El contenido de tus correos electrónicos y eventos se compartirá con tu equipo."
#. js-lingui-id: ahEwS4
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your enterprise features are active"
msgstr ""
#. js-lingui-id: XMZLU/
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your enterprise features are active but your enterprise key is missing or invalid. This may be expected, but if not, please set a valid signed enterprise key to manage your subscription, or contact support."
msgstr ""
#. js-lingui-id: AxcwNj
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your enterprise features will be disabled"
msgstr ""
#. js-lingui-id: PT137K
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your enterprise features will remain active until {cancelAtDate}."
msgstr ""
#. js-lingui-id: 69Siss
#: src/modules/information-banner/components/enterprise/InformationBannerLegacyEnterpriseKey.tsx
msgid "Your enterprise key format is deprecated. Please activate a new key to keep enterprise features."
msgstr ""
#. js-lingui-id: NTpA4U
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your enterprise subscription has been canceled."
msgstr ""
#. js-lingui-id: 9ivpwk
#: src/pages/settings/SettingsProfile.tsx
msgid "Your name as it will be displayed"
@@ -15162,6 +15405,26 @@ msgstr "Tu nombre tal y como se mostrará"
msgid "Your name as it will be displayed on the app"
msgstr "Tu nombre tal y como será mostrado en la aplicación"
#. js-lingui-id: 319YPG
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your subscription is active but your validity token is invalid or has expired. Try reloading it or contact support."
msgstr ""
#. js-lingui-id: Fx0axg
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your subscription is scheduled for cancellation"
msgstr ""
#. js-lingui-id: XgIa/8
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your subscription setup was not completed."
msgstr ""
#. js-lingui-id: Z9kbt6
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your subscription status is: {statusLabel}"
msgstr ""
#. js-lingui-id: QOd24n
#: src/modules/billing/hooks/useBillingWording.ts
msgid "Your trial period will end, and "
+343 -80
View File
@@ -663,10 +663,10 @@ msgstr "Tietoa tästä työtilasta"
msgid "Access workspace data"
msgstr ""
#. js-lingui-id: c2UA7k
#. js-lingui-id: W5nhmk
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Access your workspace data from your favorite MCP client like Claude Desktop, Windsurf or Cursor."
msgstr "Käytä työtilan tietoja suosikki MCP-asiakkaasi, kuten Claude Desktop, Windsurf tai Cursor, kautta."
msgid "Access your workspace data from your favorite MCP client like Claude Desktop, Claude Code, Cursor, or ChatGPT. Once connected, try: \"Show me the 5 most recently created companies\" or \"Create a new person named Jane Doe\"."
msgstr ""
#. js-lingui-id: u2Cycw
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionTabEnvironmentVariablesSection.tsx
@@ -752,23 +752,37 @@ msgid "Actions users can perform on this object"
msgstr "Toiminnot, joita käyttäjät voivat suorittaa tällä kohteella"
#. js-lingui-id: FQBaXG
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/data-model/SettingsObjectFieldEdit.tsx
#: src/pages/settings/ai/SettingsSkillForm.tsx
#: src/pages/settings/ai/components/SettingsSkillInactiveMenuDropDown.tsx
#: src/modules/settings/security/components/SSO/SettingsSecuritySSORowDropdownMenu.tsx
#: src/modules/settings/data-model/objects/components/SettingsObjectInactiveMenuDropDown.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectFieldDisabledActionDropdown.tsx
#: src/modules/information-banner/components/enterprise/InformationBannerLegacyEnterpriseKey.tsx
#: src/modules/command-menu-item/record/constants/WorkflowCommandMenuItemsConfig.tsx
msgid "Activate"
msgstr "Aktivoi"
#. js-lingui-id: eqeFkF
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Activate Enterprise Key"
msgstr ""
#. js-lingui-id: tu8A/k
#: src/modules/command-menu-item/record/constants/WorkflowCommandMenuItemsConfig.tsx
msgid "Activate Workflow"
msgstr "Aktivoi työnkulku"
#. js-lingui-id: jSZacs
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Activating..."
msgstr ""
#. js-lingui-id: F6pfE9
#: src/pages/settings/SettingsProfile.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/settings/domains/components/SettingsWorkspaceDomainCard.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobsTable.tsx
msgid "Active"
@@ -806,6 +820,13 @@ msgstr "Lisää \"{trimmedName}\" valintoihin"
msgid "Add a {objectLabelSingular}"
msgstr "Lisää {objectLabelSingular}"
#. js-lingui-id: 7W8nJr
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationUngroupedEditor.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
msgid "Add a Group"
msgstr ""
#. js-lingui-id: CZDwqQ
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
@@ -818,16 +839,10 @@ msgid "Add a node"
msgstr "Lisää solmu"
#. js-lingui-id: nGv1DN
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubView.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
msgid "Add a record"
msgstr ""
#. js-lingui-id: r8W+9y
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationUngroupedEditor.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
msgid "Add a Section"
msgstr ""
#. js-lingui-id: eMc2xs
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
msgid "Add a step"
@@ -915,11 +930,6 @@ msgstr "Lisää suodatinsääntö"
msgid "Add first filter"
msgstr "Lisää ensimmäinen suodatin"
#. js-lingui-id: //rVZt
#: src/modules/favorites/favorite-folder-picker/components/FavoriteFolderPickerFooter.tsx
msgid "Add folder"
msgstr "Lisää kansio"
#. js-lingui-id: 7XzAKI
#: src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowEditActionFormBuilder.tsx
msgid "Add inputs to your form"
@@ -1085,7 +1095,6 @@ msgid "Add to Favorite"
msgstr "Lisää suosikkilistalle"
#. js-lingui-id: pBsoKL
#: src/modules/favorites/components/PageFavoriteButton.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/mock/command-menu-items.mock.tsx
@@ -1429,7 +1438,7 @@ msgid "All set!"
msgstr "Valmista!"
#. js-lingui-id: CHvT6e
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemObjectFlow.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemObjectSystemPickerSubPage.tsx
msgid "All system objects are already in the sidebar"
msgstr ""
@@ -1574,6 +1583,7 @@ msgstr "Kuvaa ladattaessa tapahtui virhe."
#. js-lingui-id: XyOToQ
#: src/utils/get-error-message-from-apollo-error.util.ts
#: src/utils/get-error-message-from-apollo-error.util.ts
#: src/modules/views/hooks/internal/usePerformViewSortAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
@@ -1664,12 +1674,14 @@ msgstr "Rajapinta"
#. js-lingui-id: 0RqpZr
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "API & Webhooks"
msgstr "API & Webhooks"
#. js-lingui-id: yRnk5W
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
#: src/modules/settings/playground/components/PlaygroundSetupForm.tsx
msgid "API Key"
msgstr "API-avain"
@@ -1940,6 +1952,7 @@ msgstr "Nouseva"
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/constants/EngineComponentKeyComponentMap.tsx
msgid "Ask AI"
msgstr "Kysy AI:lta"
@@ -2078,6 +2091,11 @@ msgstr ""
msgid "Attachments"
msgstr "Liitteet"
#. js-lingui-id: y2W2Hg
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Audit logs"
msgstr ""
#. js-lingui-id: EPEFrH
#: src/pages/settings/security/SettingsSecurity.tsx
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
@@ -2114,6 +2132,11 @@ msgstr "Todennus"
msgid "Authentication failed"
msgstr "Todennus epäonnistui"
#. js-lingui-id: TxT0ER
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Authentication method"
msgstr ""
#. js-lingui-id: H7qgYQ
#: src/pages/settings/SettingsTwoFactorAuthenticationMethod.tsx
msgid "Authenticator app"
@@ -2306,6 +2329,11 @@ msgstr "kuukauden {startOrdinal} ja {endOrdinal} päivän välillä"
msgid "Billing"
msgstr "Laskutus"
#. js-lingui-id: dSjFxR
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Billing history"
msgstr ""
#. js-lingui-id: nJGwRf
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
msgid "Billing interval"
@@ -2563,6 +2591,7 @@ msgid "Cancel metered tier switching?"
msgstr "Peruuta mitatun tason vaihtaminen?"
#. js-lingui-id: rRK/Lf
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/SettingsBillingContent.tsx
msgid "Cancel Plan"
msgstr "Peruuta suunnitelma"
@@ -2578,10 +2607,26 @@ msgid "Cancel plan switching?"
msgstr "Peruuta suunnitelman vaihtaminen?"
#. js-lingui-id: N6gPiD
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/SettingsBillingContent.tsx
msgid "Cancel your subscription"
msgstr "Peruuta tilauksesi"
#. js-lingui-id: GGWsTU
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Canceled"
msgstr ""
#. js-lingui-id: y4uH7j
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Cancelling"
msgstr ""
#. js-lingui-id: WbPx+C
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Cancels on"
msgstr ""
#. js-lingui-id: XDbjjW
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCustomView.tsx
msgid "Cannot delete the only view"
@@ -3077,11 +3122,6 @@ msgstr ""
msgid "Configure fallback login methods for users with SSO bypass permissions"
msgstr "Määritä varasijaiset kirjautumismenetelmät käyttäjille, joilla on SSO-ohituksen käyttöoikeudet"
#. js-lingui-id: c7wznw
#: src/modules/side-panel/pages/page-layout/utils/getPageLayoutPageTitle.ts
msgid "Configure filters"
msgstr "Määritä suodattimet"
#. js-lingui-id: ghdb7+
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelsGeneral.tsx
msgid "Configure how we should display your events in your calendar"
@@ -3279,6 +3319,7 @@ msgstr ""
#: src/modules/spreadsheet-import/steps/components/SelectHeaderStep/SelectHeaderStep.tsx
#: src/modules/spreadsheet-import/steps/components/MatchColumnsStep/MatchColumnsStep.tsx
#: src/modules/spreadsheet-import/components/StepNavigationButton.tsx
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
#: src/modules/auth/sign-in-up/components/internal/SignInUpWithCredentials.tsx
msgid "Continue"
msgstr "Jatka"
@@ -3438,6 +3479,21 @@ msgstr "Kustannus per 1k ylimääräiset hyvitykset"
msgid "Could not delete approved access domain"
msgstr "Hyväksyttyä pääsyoikeutta ei voitu poistaa"
#. js-lingui-id: KqYYBp
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Could not open billing portal. Please check your enterprise key is present, or contact support."
msgstr ""
#. js-lingui-id: ZuI4Sl
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Could not open Stripe. Please contact support."
msgstr ""
#. js-lingui-id: wVw4Am
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Could not refresh validity token. Please contact support."
msgstr ""
#. js-lingui-id: s8lFtq
#: src/hooks/useCopyToClipboard.tsx
msgid "Couldn't copy to clipboard"
@@ -3815,6 +3871,7 @@ msgstr "Mukautettu verkkotunnus päivitetty"
#. js-lingui-id: 8skTDV
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Custom objects"
msgstr "Mukautetut objektit"
@@ -4249,7 +4306,6 @@ msgstr "poista"
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
@@ -4337,7 +4393,6 @@ msgstr "Poista kenttä"
#. js-lingui-id: 97QUV6
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItems.tsx
#: src/modules/favorites/components/CurrentWorkspaceMemberFavorites.tsx
msgid "Delete Folder"
msgstr "Poista kansio"
@@ -4917,6 +4972,8 @@ msgid "Edit own profile information"
msgstr ""
#. js-lingui-id: h2KoTu
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/SettingsBillingContent.tsx
msgid "Edit payment method, see your invoices and more"
msgstr "Muokkaa maksutapaa, näe laskusi ja paljon muuta"
@@ -5216,6 +5273,11 @@ msgstr "Parantaa turvallisuutta vaatimalla koodin salasanasi lisäksi"
msgid "Enjoy a {withCreditCardTrialPeriodDuration}-days free trial"
msgstr "Nauti {withCreditCardTrialPeriodDuration}-päiväisen ilmaisen kokeilun"
#. js-lingui-id: 6iUnle
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Enjoy a 30-day free trial"
msgstr ""
#. js-lingui-id: T/N+2Z
#: src/modules/workflow/workflow-trigger/components/WorkflowEditTriggerWebhookForm.tsx
#: src/modules/object-record/record-field/ui/form-types/components/FormRawJsonFieldInput.tsx
@@ -5422,6 +5484,9 @@ msgstr "Anna API-avaimesi"
#. js-lingui-id: GpB8YV
#: src/pages/settings/security/SettingsSecurity.tsx
#: src/pages/settings/security/SettingsSecurity.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
msgid "Enterprise"
msgstr "Yritys"
@@ -5430,6 +5495,22 @@ msgstr "Yritys"
msgid "Enterprise Feature"
msgstr ""
#. js-lingui-id: S5c4pl
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Enterprise License"
msgstr ""
#. js-lingui-id: KGE5g0
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Enterprise license activated successfully"
msgstr ""
#. js-lingui-id: SLuq/l
#: src/modules/settings/security/components/SSO/SettingsSSOSAMLForm.tsx
msgid "Entity ID"
@@ -5470,6 +5551,11 @@ msgstr "Pehmeästi poistettujen tietueiden poistaminen"
msgid "Error"
msgstr "Virhe"
#. js-lingui-id: VouTsQ
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Error activating enterprise license"
msgstr ""
#. js-lingui-id: GHKxvg
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
msgid "Error deleting api key."
@@ -5495,11 +5581,6 @@ msgstr "Virhe SSO-identiteetintarjoajan poistamisessa"
msgid "Error editing SSO Identity Provider"
msgstr "Virhe SSO-identiteetintarjoajan muokkaamisessa"
#. js-lingui-id: GsIfmO
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkerMetricsGraph.tsx
msgid "Error fetching worker metrics: {errorMessage}"
msgstr "Virhe noudettaessa työntekijän mittareita: {errorMessage}"
#. js-lingui-id: GdBN5t
#: src/modules/error-handler/components/AppRootErrorFallback.tsx
msgid "Error illustration"
@@ -5530,11 +5611,26 @@ msgstr "Virhe ladattaessa viestiä"
msgid "Error Message"
msgstr "Virheilmoitus"
#. js-lingui-id: Mox63G
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Error opening billing portal"
msgstr ""
#. js-lingui-id: e/eieW
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Error opening Stripe"
msgstr ""
#. js-lingui-id: bT/0cM
#: src/modules/ui/field/display/components/PhonesDisplay.tsx
msgid "Error parsing additional phones: {error}"
msgstr "Virhe jäsennettäessä lisäpuhelinnumeroita: {error}"
#. js-lingui-id: zRXcyv
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Error refreshing validity token. Please contact support."
msgstr ""
#. js-lingui-id: PfAip2
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
msgid "Error regenerating api key."
@@ -5997,6 +6093,11 @@ msgstr ""
msgid "Failed to {translatedOperationType} {translatedMetadataName}. Related {relatedEntityNames} validation failed. Please check your configuration and try again."
msgstr ""
#. js-lingui-id: R1XJV1
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Failed to activate enterprise license. Please check your key or contact support."
msgstr ""
#. js-lingui-id: vJiM7T
#: src/pages/settings/ai/components/SettingsSkillsTable.tsx
msgid "Failed to activate skill"
@@ -6208,7 +6309,6 @@ msgstr ""
#. js-lingui-id: X9kySA
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItemFolders.tsx
#: src/modules/favorites/components/CurrentWorkspaceMemberFavoritesFolders.tsx
msgid "Favorites"
msgstr "Suosikit"
@@ -6374,7 +6474,6 @@ msgstr ""
#: src/modules/views/components/ViewBarFilterDropdownFieldSelectMenu.tsx
#: src/modules/views/components/ViewBarFilterButton.tsx
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
#: src/modules/side-panel/pages/page-layout/components/ChartFiltersSettings.tsx
#: src/modules/settings/roles/components/SettingsRolesList.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectRelationsTable.tsx
#: src/modules/object-record/record-table/record-table-header/components/RecordTableColumnHeadDropdownMenu.tsx
@@ -6397,6 +6496,7 @@ msgid "Filter group rule options"
msgstr "Suodatinryhmän säännön valinnat"
#. js-lingui-id: cSev+j
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/settings/developers/components/SettingsDevelopersWebhookForm.tsx
msgid "Filters"
msgstr "Suodattimet"
@@ -6467,6 +6567,11 @@ msgstr "Etunimi"
msgid "First name can not be empty"
msgstr "Etunimi ei saa olla tyhjä"
#. js-lingui-id: JREYkg
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Fix the payment issue to keep your enterprise features active."
msgstr ""
#. js-lingui-id: ylQd2j
#: src/modules/workflow/workflow-steps/workflow-actions/utils/getActionHeaderTypeOrThrow.ts
#: src/modules/side-panel/pages/workflow/action/components/SidePanelWorkflowSelectAction.tsx
@@ -6486,7 +6591,7 @@ msgid "Folder name"
msgstr ""
#. js-lingui-id: HSh8u/
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubPage.tsx
#: src/modules/settings/accounts/components/message-folders/SettingsAccountsMessageFoldersCard.tsx
msgid "Folders"
msgstr "Kansiot"
@@ -6635,6 +6740,22 @@ msgstr "Luodut tiedostot"
msgid "German"
msgstr "Saksa"
#. js-lingui-id: sqtljx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Get Enterprise"
msgstr ""
#. js-lingui-id: o2kSwB
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Get Enterprise Key"
msgstr ""
#. js-lingui-id: NXEW3h
#: src/pages/onboarding/InviteTeam.tsx
msgid "Get the most out of your workspace by inviting your team."
@@ -6655,6 +6776,12 @@ msgstr "Globaali"
msgid "Go Back"
msgstr ""
#. js-lingui-id: Hb4Cgz
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Go to billing portal"
msgstr ""
#. js-lingui-id: mUbv8L
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
msgid "Go to Companies"
@@ -7240,6 +7367,11 @@ msgstr ""
msgid "Inbox"
msgstr "Saapuneet"
#. js-lingui-id: mtGDyy
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Incomplete"
msgstr ""
#. js-lingui-id: O5wNUa
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
msgid "index"
@@ -7882,9 +8014,8 @@ msgid "Launch manually"
msgstr "Käynnistä manuaalisesti"
#. js-lingui-id: rdU729
#: src/modules/side-panel/pages/page-layout/utils/getPageLayoutPageTitle.ts
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsLayout.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCustomView.tsx
msgid "Layout"
@@ -7957,6 +8088,12 @@ msgstr ""
msgid "Less than or equal"
msgstr "Pienempi tai yhtä suuri"
#. js-lingui-id: 3qg5Ro
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Licensee"
msgstr ""
#. js-lingui-id: 1njn7W
#: src/pages/settings/profile/appearance/components/SettingsExperience.tsx
#: src/modules/ui/navigation/navigation-drawer/components/MultiWorkspaceDropdown/internal/MultiWorkspaceDropdownThemesComponents.tsx
@@ -8260,6 +8397,8 @@ msgid "Manage billing and subscriptions"
msgstr "Hallinnoi laskutusta ja tilauksia"
#. js-lingui-id: nvgUPq
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/SettingsBillingContent.tsx
msgid "Manage billing information"
msgstr "Hallinnoi laskutustietoja"
@@ -8612,6 +8751,11 @@ msgstr "Vuoden kuukausi"
msgid "monthly"
msgstr "kuukausittain"
#. js-lingui-id: Sew/cK
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Monthly subscription"
msgstr ""
#. js-lingui-id: 6jefe3
#: src/modules/side-panel/pages/page-layout/utils/getDateGranularityPluralLabel.ts
#: src/modules/side-panel/pages/page-layout/utils/getDateGranularityPluralLabel.ts
@@ -8673,7 +8817,7 @@ msgid "Move right"
msgstr "Siirrä oikealle"
#. js-lingui-id: 6qDVmw
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
msgid "Move to a folder"
msgstr ""
@@ -9274,21 +9418,15 @@ msgid "No Files"
msgstr "Ei tiedostoja"
#. js-lingui-id: pYblOw
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/favorites/favorite-folder-picker/components/FavoriteFolderPickerList.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubPage.tsx
msgid "No folder"
msgstr "Ei kansiota"
#. js-lingui-id: 6XMhqL
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubPage.tsx
msgid "No folders available"
msgstr ""
#. js-lingui-id: aywdyd
#: src/modules/favorites/favorite-folder-picker/components/FavoriteFolderPickerList.tsx
msgid "No folders found"
msgstr "Kansioita ei löytynyt"
#. js-lingui-id: 1jgsYC
#: src/modules/settings/accounts/components/message-folders/SettingsMessageFoldersEmptyStateCard.tsx
msgid "No folders found for this account"
@@ -9454,8 +9592,8 @@ msgstr "Ei tuloksia"
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewSystemSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewObjectPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubPage.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubPage.tsx
#: src/modules/side-panel/components/SidePanelList.tsx
msgid "No results found"
msgstr "Tuloksia ei löytynyt"
@@ -9666,6 +9804,7 @@ msgstr ""
#. js-lingui-id: b/j06W
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "OAuth"
msgstr ""
@@ -9674,6 +9813,11 @@ msgstr ""
msgid "OAuth Credentials"
msgstr ""
#. js-lingui-id: LNLTJB
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "OAuth or API Key"
msgstr ""
#. js-lingui-id: pNEViR
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
msgid "object"
@@ -10188,11 +10332,26 @@ msgstr "Salasanan palautuslinkki on lähetetty sähköpostiin"
msgid "Paste the code below"
msgstr "Liitä alla oleva koodi"
#. js-lingui-id: raz2Pm
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Paste your enterprise key below to activate"
msgstr ""
#. js-lingui-id: dNdgvF
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Paste your enterprise key here"
msgstr ""
#. js-lingui-id: I6gXOa
#: src/modules/settings/logic-functions/components/tabs/SettingsLogicFunctionTriggersTab.tsx
msgid "Path"
msgstr "Polku"
#. js-lingui-id: QmXBEc
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Payment issue"
msgstr ""
#. js-lingui-id: UbRKMZ
#: src/pages/settings/emailing-domains/utils/getEmailingDomainStatusText.ts
#: src/modules/settings/security/components/approvedAccessDomains/SettingsApprovedAccessDomainsListCard.tsx
@@ -10329,13 +10488,13 @@ msgid "Pick a {objectLabel} record"
msgstr "Valitse {objectLabel} tietue"
#. js-lingui-id: JqqNlC
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewPickerSubView.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
msgid "Pick a view"
msgstr ""
#. js-lingui-id: Wlba2h
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelObjectPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewObjectPickerSubView.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
msgid "Pick an object"
msgstr ""
@@ -10953,6 +11112,16 @@ msgstr "Julkaisut"
msgid "Reload"
msgstr "Lataa uudelleen"
#. js-lingui-id: qbM5In
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Reload validity token"
msgstr ""
#. js-lingui-id: MZWnSC
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Reloading..."
msgstr ""
#. js-lingui-id: qlAIQ1
#: src/modules/object-metadata/components/RemoteNavigationDrawerSection.tsx
msgid "Remote"
@@ -10965,16 +11134,6 @@ msgstr "Etä"
msgid "Remove"
msgstr "Poista"
#. js-lingui-id: gleHgw
#: src/modules/favorites/components/CurrentWorkspaceMemberFavorites.tsx
msgid "Remove {favoriteCount} favorite?"
msgstr "Poistetaanko {favoriteCount} suosikki?"
#. js-lingui-id: 1VQkMD
#: src/modules/favorites/components/CurrentWorkspaceMemberFavorites.tsx
msgid "Remove {favoriteCount} favorites?"
msgstr "Poistetaanko {favoriteCount} suosikkia?"
#. js-lingui-id: 0Urj9q
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItems.tsx
msgid "Remove {navigationMenuItemCount} navigation menu item?"
@@ -11006,7 +11165,6 @@ msgid "Remove Deleted filter"
msgstr "Poista Poistetut-suodatin"
#. js-lingui-id: T/pF0Z
#: src/modules/favorites/components/PageFavoriteButton.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
msgid "Remove from favorites"
@@ -11061,7 +11219,6 @@ msgstr "Poista muuttuja"
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
msgid "Rename"
msgstr "Nimeä uudelleen"
@@ -11228,7 +11385,7 @@ msgstr "Tulos"
#. js-lingui-id: kx0s+n
#: src/modules/side-panel/pages/search/hooks/useSidePanelSearchRecords.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubPage.tsx
msgid "Results"
msgstr "Tulokset"
@@ -11367,6 +11524,11 @@ msgstr ""
msgid "row level permission predicate group"
msgstr ""
#. js-lingui-id: xPaeO2
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Row-level security"
msgstr ""
#. js-lingui-id: 7jTlsu
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectFormOptionRow.tsx
msgid "Ruby"
@@ -11485,6 +11647,8 @@ msgstr ""
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/constants/EngineComponentKeyComponentMap.tsx
#: src/modules/command-menu-item/constants/EngineComponentKeyComponentMap.tsx
msgid "Search"
msgstr "Hae"
@@ -11521,7 +11685,7 @@ msgid "Search a field..."
msgstr "Etsi kenttää..."
#. js-lingui-id: ITQFzL
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubPage.tsx
msgid "Search a folder..."
msgstr ""
@@ -11689,7 +11853,7 @@ msgid "Search records"
msgstr "Hae tietueita"
#. js-lingui-id: rRklUH
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubPage.tsx
msgid "Search records..."
msgstr ""
@@ -11724,11 +11888,13 @@ msgid "Searching the web for {query}"
msgstr ""
#. js-lingui-id: 8sgZS9
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
#: src/modules/billing/components/SubscriptionPrice.tsx
msgid "seat / month"
msgstr "paikka / kuukausi"
#. js-lingui-id: aQnWwf
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
#: src/modules/billing/components/SubscriptionPrice.tsx
msgid "seat / month - billed yearly"
msgstr "paikka / kuukausi - laskutetaan vuosittain"
@@ -12556,6 +12722,7 @@ msgstr "Kertakirjautuminen"
#. js-lingui-id: vlvAkg
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "SSO (SAML / OIDC)"
msgstr "SSO (SAML / OIDC)"
@@ -12600,6 +12767,16 @@ msgstr ""
msgid "Start"
msgstr "Aloita"
#. js-lingui-id: ASqWQi
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Start a new enterprise subscription to re-enable enterprise features."
msgstr ""
#. js-lingui-id: OC6rnK
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Start a new enterprise subscription."
msgstr ""
#. js-lingui-id: D3iCkb
#: src/pages/settings/security/event-logs/components/EventLogFilters.tsx
msgid "Start Date"
@@ -12625,6 +12802,11 @@ msgid "State"
msgstr "Tila"
#. js-lingui-id: uAQUqI
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/admin-panel/SettingsAdminIndicatorHealthStatus.tsx
#: src/modules/settings/components/SettingsDnsRecordsTable.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
@@ -12920,11 +13102,11 @@ msgstr ""
#. js-lingui-id: 0apULK
#: src/pages/settings/data-model/SettingsObjectTable.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelSystemObjectPickerSubView.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelSystemObjectPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelObjectPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewSystemSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewSystemSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewObjectPickerSubView.tsx
msgid "System objects"
msgstr ""
@@ -13227,6 +13409,11 @@ msgstr "On sarakkeita, joita ei ole yhdistetty tai ohitettu. Haluatko jatkaa?"
msgid "There are still some rows that contain errors. Rows with errors will be ignored when submitting."
msgstr "Joitakin rivejä, jotka sisältävät virheitä, on edelleen. Virheelliset rivit ohitetaan lähetettäessä."
#. js-lingui-id: CA9PTn
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "There is a payment issue with your subscription. Please update your payment method."
msgstr ""
#. js-lingui-id: WQk7Cf
#: src/modules/activities/timeline-activities/components/TimelineCard.tsx
msgid "There is no activity associated with this record."
@@ -13299,16 +13486,6 @@ msgstr "Tätä toimintoa ei voi peruuttaa. Tämä poistaa jäsenyytesi pysyväst
msgid "This action cannot be undone. This will permanently reset your two factor authentication method. <0/> Please type in your email to confirm."
msgstr "Tätä toimintoa ei voi peruuttaa. Tämä nollaa pysyvästi kaksivaiheisen todennustapasi. <0/> Vahvista kirjoittamalla sähköpostiosoitteesi."
#. js-lingui-id: XdFYs2
#: src/modules/favorites/components/CurrentWorkspaceMemberFavorites.tsx
msgid "This action will delete this favorite folder and all {favoriteCount} favorites inside. Do you want to continue?"
msgstr "Tämä toiminto poistaa tämän suosikkikansion ja kaikki sen sisällä olevat {favoriteCount} suosikkia. Haluatko jatkaa?"
#. js-lingui-id: pFXbgz
#: src/modules/favorites/components/CurrentWorkspaceMemberFavorites.tsx
msgid "This action will delete this favorite folder and the favorite inside. Do you want to continue?"
msgstr "Tämä toiminto poistaa tämän suosikkikansion ja sen sisällä olevan suosikin. Haluatko jatkaa?"
#. js-lingui-id: lAHIY2
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItems.tsx
msgid "This action will delete this folder and all {navigationMenuItemCount} navigation menu items inside. Do you want to continue?"
@@ -13339,9 +13516,9 @@ msgstr ""
msgid "This database value overrides environment settings. "
msgstr "Tämä tietokanta-arvo ohittaa ympäristöasetukset."
#. js-lingui-id: qHAJQ2
#. js-lingui-id: 8IRnd6
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelSection.tsx
msgid "This feature is part of the Organization Plan"
msgid "This feature is part of the Enterprise Plan"
msgstr ""
#. js-lingui-id: own57K
@@ -13650,6 +13827,8 @@ msgid "Transfer ownership"
msgstr ""
#. js-lingui-id: lhkaAC
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/internal/PlansTags.tsx
msgid "Trial"
msgstr "Koe"
@@ -13829,7 +14008,7 @@ msgid "Type"
msgstr "Tyyppi"
#. js-lingui-id: SKD2e4
#: src/modules/activities/components/ActivityRichTextEditor.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/RichTextFieldEditor.tsx
msgid "Type '/' for commands, '@' for mentions"
msgstr ""
@@ -13840,7 +14019,7 @@ msgid "Type anything..."
msgstr "Kirjoita jotain..."
#. js-lingui-id: UhqKcC
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubPage.tsx
msgid "Type to search records"
msgstr ""
@@ -13998,6 +14177,11 @@ msgstr "Rajattomat yhteystiedot"
msgid "Unlisted"
msgstr "Listaamattomat"
#. js-lingui-id: Ep1uUU
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Unlock enterprise features like SSO, row-level security, and audit logs."
msgstr ""
#. js-lingui-id: eQMhFX
#: src/modules/advanced-text-editor/extensions/slash-command/DefaultSlashCommands.ts
msgid "unordered"
@@ -14067,6 +14251,11 @@ msgstr "päivitä"
msgid "Update"
msgstr "Päivitä"
#. js-lingui-id: Y69tSP
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Update payment method"
msgstr ""
#. js-lingui-id: 0KAL3W
#: src/modules/side-panel/hooks/useOpenUpdateMultipleRecordsPageInSidePanel.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
@@ -14305,11 +14494,22 @@ msgstr "Käytetään sovelluksen oletusarvoa. Määritä ympäristömuuttujien k
msgid "Using default value. Set a custom value to override."
msgstr "Käytetään oletusarvoa. Aseta mukautettu arvo ohittaaksesi."
#. js-lingui-id: zzp4XX
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Valid until"
msgstr ""
#. js-lingui-id: Clr4qp
#: src/modules/spreadsheet-import/steps/components/SpreadsheetImportStepperContainer.tsx
msgid "Validate Data"
msgstr "Vahvista tiedot"
#. js-lingui-id: PWZBIT
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Validity token refreshed successfully"
msgstr ""
#. js-lingui-id: wMHvYH
#: src/pages/settings/applications/tabs/SettingsApplicationDetailEnvironmentVariablesTable.tsx
#: src/modules/workflow/workflow-steps/workflow-actions/http-request-action/components/KeyValuePairInput.tsx
@@ -14436,6 +14636,8 @@ msgid "View and filter events, page views, object changes"
msgstr ""
#. js-lingui-id: KANz0G
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/SettingsBillingContent.tsx
msgid "View billing details"
msgstr "Näytä laskutustiedot"
@@ -14485,6 +14687,11 @@ msgstr "näkymäryhmä"
msgid "View installed app"
msgstr ""
#. js-lingui-id: B02hom
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "View invoices"
msgstr ""
#. js-lingui-id: lh5BED
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkerQueueMetricsSection.tsx
msgid "View Jobs"
@@ -14503,6 +14710,7 @@ msgstr ""
#. js-lingui-id: ecVcAx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/constants/EngineComponentKeyComponentMap.tsx
msgid "View Previous AI Chats"
msgstr "Näytä edelliset AI Keskustelut"
@@ -14852,6 +15060,7 @@ msgstr "Työnkulut"
#: src/pages/settings/members/SettingsWorkspaceMember.tsx
#: src/pages/settings/logic-functions/SettingsLogicFunctionDetail.tsx
#: src/pages/settings/logic-functions/SettingsLogicFunctionDetail.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/emailing-domains/SettingsNewEmailingDomain.tsx
#: src/pages/settings/emailing-domains/SettingsEmailingDomainDetail.tsx
#: src/pages/settings/domains/SettingsDomains.tsx
@@ -14894,7 +15103,6 @@ msgstr "Työnkulut"
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownVisibilityContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCustomView.tsx
#: src/modules/navigation-menu-item/components/WorkspaceNavigationMenuItems.tsx
#: src/modules/favorites/components/WorkspaceFavorites.tsx
msgid "Workspace"
msgstr "Työtila"
@@ -15018,6 +15226,11 @@ msgstr "Vuosi"
msgid "yearly"
msgstr "vuosittain"
#. js-lingui-id: Y1GwUe
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Yearly subscription"
msgstr ""
#. js-lingui-id: +BGee5
#: src/modules/side-panel/pages/page-layout/utils/getDateGranularityPluralLabel.ts
msgid "years"
@@ -15150,6 +15363,36 @@ msgstr "Sähköpostiesi aiheet ja tapaamisen otsikot jaetaan tiimisi kanssa."
msgid "Your emails and events content will be shared with your team."
msgstr "Sähköpostiesi ja tapahtumien sisältö jaetaan tiimisi kanssa."
#. js-lingui-id: ahEwS4
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your enterprise features are active"
msgstr ""
#. js-lingui-id: XMZLU/
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your enterprise features are active but your enterprise key is missing or invalid. This may be expected, but if not, please set a valid signed enterprise key to manage your subscription, or contact support."
msgstr ""
#. js-lingui-id: AxcwNj
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your enterprise features will be disabled"
msgstr ""
#. js-lingui-id: PT137K
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your enterprise features will remain active until {cancelAtDate}."
msgstr ""
#. js-lingui-id: 69Siss
#: src/modules/information-banner/components/enterprise/InformationBannerLegacyEnterpriseKey.tsx
msgid "Your enterprise key format is deprecated. Please activate a new key to keep enterprise features."
msgstr ""
#. js-lingui-id: NTpA4U
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your enterprise subscription has been canceled."
msgstr ""
#. js-lingui-id: 9ivpwk
#: src/pages/settings/SettingsProfile.tsx
msgid "Your name as it will be displayed"
@@ -15160,6 +15403,26 @@ msgstr "Nimesi, niin kuin se näytetään"
msgid "Your name as it will be displayed on the app"
msgstr "Nimesi, niin kuin se näytetään sovelluksessa"
#. js-lingui-id: 319YPG
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your subscription is active but your validity token is invalid or has expired. Try reloading it or contact support."
msgstr ""
#. js-lingui-id: Fx0axg
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your subscription is scheduled for cancellation"
msgstr ""
#. js-lingui-id: XgIa/8
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your subscription setup was not completed."
msgstr ""
#. js-lingui-id: Z9kbt6
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your subscription status is: {statusLabel}"
msgstr ""
#. js-lingui-id: QOd24n
#: src/modules/billing/hooks/useBillingWording.ts
msgid "Your trial period will end, and "
+343 -80
View File
@@ -663,10 +663,10 @@ msgstr "À propos de cet espace de travail"
msgid "Access workspace data"
msgstr ""
#. js-lingui-id: c2UA7k
#. js-lingui-id: W5nhmk
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Access your workspace data from your favorite MCP client like Claude Desktop, Windsurf or Cursor."
msgstr "Accédez à vos données de l'espace de travail depuis votre client MCP préféré comme Claude Desktop, Windsurf ou Cursor."
msgid "Access your workspace data from your favorite MCP client like Claude Desktop, Claude Code, Cursor, or ChatGPT. Once connected, try: \"Show me the 5 most recently created companies\" or \"Create a new person named Jane Doe\"."
msgstr ""
#. js-lingui-id: u2Cycw
#: src/modules/settings/logic-functions/components/SettingsLogicFunctionTabEnvironmentVariablesSection.tsx
@@ -752,23 +752,37 @@ msgid "Actions users can perform on this object"
msgstr "Actions que les utilisateurs peuvent effectuer sur cet objet"
#. js-lingui-id: FQBaXG
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/data-model/SettingsObjectFieldEdit.tsx
#: src/pages/settings/ai/SettingsSkillForm.tsx
#: src/pages/settings/ai/components/SettingsSkillInactiveMenuDropDown.tsx
#: src/modules/settings/security/components/SSO/SettingsSecuritySSORowDropdownMenu.tsx
#: src/modules/settings/data-model/objects/components/SettingsObjectInactiveMenuDropDown.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectFieldDisabledActionDropdown.tsx
#: src/modules/information-banner/components/enterprise/InformationBannerLegacyEnterpriseKey.tsx
#: src/modules/command-menu-item/record/constants/WorkflowCommandMenuItemsConfig.tsx
msgid "Activate"
msgstr "Activer"
#. js-lingui-id: eqeFkF
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Activate Enterprise Key"
msgstr ""
#. js-lingui-id: tu8A/k
#: src/modules/command-menu-item/record/constants/WorkflowCommandMenuItemsConfig.tsx
msgid "Activate Workflow"
msgstr "Activer le workflow"
#. js-lingui-id: jSZacs
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Activating..."
msgstr ""
#. js-lingui-id: F6pfE9
#: src/pages/settings/SettingsProfile.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/settings/domains/components/SettingsWorkspaceDomainCard.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobsTable.tsx
msgid "Active"
@@ -806,6 +820,13 @@ msgstr "Ajouter \"{trimmedName}\" aux options"
msgid "Add a {objectLabelSingular}"
msgstr "Ajouter un {objectLabelSingular}"
#. js-lingui-id: 7W8nJr
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationUngroupedEditor.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationEditor.tsx
msgid "Add a Group"
msgstr ""
#. js-lingui-id: CZDwqQ
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
msgid "Add a new company we're in touch with (e.g. name, website, industry). Details: "
@@ -818,16 +839,10 @@ msgid "Add a node"
msgstr "Ajouter un nœud"
#. js-lingui-id: nGv1DN
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubView.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
msgid "Add a record"
msgstr ""
#. js-lingui-id: r8W+9y
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationUngroupedEditor.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx
msgid "Add a Section"
msgstr ""
#. js-lingui-id: eMc2xs
#: src/modules/workflow/workflow-diagram/components/WorkflowDiagramCreateStepElement.tsx
msgid "Add a step"
@@ -915,11 +930,6 @@ msgstr "Ajouter une règle de filtre"
msgid "Add first filter"
msgstr "Ajouter le premier filtre"
#. js-lingui-id: //rVZt
#: src/modules/favorites/favorite-folder-picker/components/FavoriteFolderPickerFooter.tsx
msgid "Add folder"
msgstr "Ajouter un dossier"
#. js-lingui-id: 7XzAKI
#: src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowEditActionFormBuilder.tsx
msgid "Add inputs to your form"
@@ -1085,7 +1095,6 @@ msgid "Add to Favorite"
msgstr "Ajouter aux favoris"
#. js-lingui-id: pBsoKL
#: src/modules/favorites/components/PageFavoriteButton.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/mock/command-menu-items.mock.tsx
@@ -1429,7 +1438,7 @@ msgid "All set!"
msgstr "Tout est prêt !"
#. js-lingui-id: CHvT6e
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemObjectFlow.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemObjectSystemPickerSubPage.tsx
msgid "All system objects are already in the sidebar"
msgstr ""
@@ -1574,6 +1583,7 @@ msgstr "Une erreur s'est produite lors du téléversement de l'image."
#. js-lingui-id: XyOToQ
#: src/utils/get-error-message-from-apollo-error.util.ts
#: src/utils/get-error-message-from-apollo-error.util.ts
#: src/modules/views/hooks/internal/usePerformViewSortAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewGroupAPIPersist.ts
#: src/modules/views/hooks/internal/usePerformViewFilterAPIPersist.ts
@@ -1664,12 +1674,14 @@ msgstr "API"
#. js-lingui-id: 0RqpZr
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "API & Webhooks"
msgstr "API & Webhooks"
#. js-lingui-id: yRnk5W
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
#: src/modules/settings/playground/components/PlaygroundSetupForm.tsx
msgid "API Key"
msgstr "Clé API"
@@ -1940,6 +1952,7 @@ msgstr "Ascendant"
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/constants/EngineComponentKeyComponentMap.tsx
msgid "Ask AI"
msgstr "Demander à l'IA"
@@ -2078,6 +2091,11 @@ msgstr ""
msgid "Attachments"
msgstr "Pièces jointes"
#. js-lingui-id: y2W2Hg
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Audit logs"
msgstr ""
#. js-lingui-id: EPEFrH
#: src/pages/settings/security/SettingsSecurity.tsx
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
@@ -2114,6 +2132,11 @@ msgstr "Authentification"
msgid "Authentication failed"
msgstr "Authentification échouée"
#. js-lingui-id: TxT0ER
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "Authentication method"
msgstr ""
#. js-lingui-id: H7qgYQ
#: src/pages/settings/SettingsTwoFactorAuthenticationMethod.tsx
msgid "Authenticator app"
@@ -2306,6 +2329,11 @@ msgstr "entre le {startOrdinal} et le {endOrdinal} du mois"
msgid "Billing"
msgstr "Facturation"
#. js-lingui-id: dSjFxR
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Billing history"
msgstr ""
#. js-lingui-id: nJGwRf
#: src/modules/billing/components/SettingsBillingSubscriptionInfo.tsx
msgid "Billing interval"
@@ -2563,6 +2591,7 @@ msgid "Cancel metered tier switching?"
msgstr "Annuler le changement de niveau mesuré ?"
#. js-lingui-id: rRK/Lf
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/SettingsBillingContent.tsx
msgid "Cancel Plan"
msgstr "Annuler le plan"
@@ -2578,10 +2607,26 @@ msgid "Cancel plan switching?"
msgstr "Annuler le changement de plan ?"
#. js-lingui-id: N6gPiD
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/SettingsBillingContent.tsx
msgid "Cancel your subscription"
msgstr "Annuler votre abonnement"
#. js-lingui-id: GGWsTU
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Canceled"
msgstr ""
#. js-lingui-id: y4uH7j
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Cancelling"
msgstr ""
#. js-lingui-id: WbPx+C
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Cancels on"
msgstr ""
#. js-lingui-id: XDbjjW
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCustomView.tsx
msgid "Cannot delete the only view"
@@ -3077,11 +3122,6 @@ msgstr ""
msgid "Configure fallback login methods for users with SSO bypass permissions"
msgstr "Configurer les méthodes de connexion de secours pour les utilisateurs avec des permissions de contournement du SSO"
#. js-lingui-id: c7wznw
#: src/modules/side-panel/pages/page-layout/utils/getPageLayoutPageTitle.ts
msgid "Configure filters"
msgstr "Configurer les filtres"
#. js-lingui-id: ghdb7+
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelsGeneral.tsx
msgid "Configure how we should display your events in your calendar"
@@ -3279,6 +3319,7 @@ msgstr ""
#: src/modules/spreadsheet-import/steps/components/SelectHeaderStep/SelectHeaderStep.tsx
#: src/modules/spreadsheet-import/steps/components/MatchColumnsStep/MatchColumnsStep.tsx
#: src/modules/spreadsheet-import/components/StepNavigationButton.tsx
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
#: src/modules/auth/sign-in-up/components/internal/SignInUpWithCredentials.tsx
msgid "Continue"
msgstr "Continuer"
@@ -3438,6 +3479,21 @@ msgstr "Coût pour 1k de crédits supplémentaires"
msgid "Could not delete approved access domain"
msgstr "Impossible de supprimer le domaine d'accès approuvé"
#. js-lingui-id: KqYYBp
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Could not open billing portal. Please check your enterprise key is present, or contact support."
msgstr ""
#. js-lingui-id: ZuI4Sl
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Could not open Stripe. Please contact support."
msgstr ""
#. js-lingui-id: wVw4Am
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Could not refresh validity token. Please contact support."
msgstr ""
#. js-lingui-id: s8lFtq
#: src/hooks/useCopyToClipboard.tsx
msgid "Couldn't copy to clipboard"
@@ -3815,6 +3871,7 @@ msgstr "Domaine personnalisé mis à jour"
#. js-lingui-id: 8skTDV
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Custom objects"
msgstr "Objets personnalisés"
@@ -4249,7 +4306,6 @@ msgstr "supprimer"
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
@@ -4337,7 +4393,6 @@ msgstr "Supprimer le champ"
#. js-lingui-id: 97QUV6
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItems.tsx
#: src/modules/favorites/components/CurrentWorkspaceMemberFavorites.tsx
msgid "Delete Folder"
msgstr "Supprimer le dossier"
@@ -4917,6 +4972,8 @@ msgid "Edit own profile information"
msgstr ""
#. js-lingui-id: h2KoTu
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/SettingsBillingContent.tsx
msgid "Edit payment method, see your invoices and more"
msgstr "Modifier le mode de paiement, consulter vos factures et plus encore"
@@ -5216,6 +5273,11 @@ msgstr "Améliore la sécurité en exigeant un code en plus de votre mot de pass
msgid "Enjoy a {withCreditCardTrialPeriodDuration}-days free trial"
msgstr "Profitez d'un essai gratuit de {withCreditCardTrialPeriodDuration} jours"
#. js-lingui-id: 6iUnle
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Enjoy a 30-day free trial"
msgstr ""
#. js-lingui-id: T/N+2Z
#: src/modules/workflow/workflow-trigger/components/WorkflowEditTriggerWebhookForm.tsx
#: src/modules/object-record/record-field/ui/form-types/components/FormRawJsonFieldInput.tsx
@@ -5422,6 +5484,9 @@ msgstr "Saisissez votre clé API"
#. js-lingui-id: GpB8YV
#: src/pages/settings/security/SettingsSecurity.tsx
#: src/pages/settings/security/SettingsSecurity.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminContent.tsx
msgid "Enterprise"
msgstr "Entreprise"
@@ -5430,6 +5495,22 @@ msgstr "Entreprise"
msgid "Enterprise Feature"
msgstr ""
#. js-lingui-id: S5c4pl
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Enterprise License"
msgstr ""
#. js-lingui-id: KGE5g0
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Enterprise license activated successfully"
msgstr ""
#. js-lingui-id: SLuq/l
#: src/modules/settings/security/components/SSO/SettingsSSOSAMLForm.tsx
msgid "Entity ID"
@@ -5470,6 +5551,11 @@ msgstr "Effacement des enregistrements supprimés en douceur"
msgid "Error"
msgstr "Erreur"
#. js-lingui-id: VouTsQ
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Error activating enterprise license"
msgstr ""
#. js-lingui-id: GHKxvg
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
msgid "Error deleting api key."
@@ -5495,11 +5581,6 @@ msgstr "Erreur lors de la suppression du fournisseur d'identité SSO"
msgid "Error editing SSO Identity Provider"
msgstr "Erreur lors de la modification du fournisseur d'identité SSO"
#. js-lingui-id: GsIfmO
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkerMetricsGraph.tsx
msgid "Error fetching worker metrics: {errorMessage}"
msgstr "Erreur lors de la récupération des métriques du worker : {errorMessage}"
#. js-lingui-id: GdBN5t
#: src/modules/error-handler/components/AppRootErrorFallback.tsx
msgid "Error illustration"
@@ -5530,11 +5611,26 @@ msgstr "Erreur de chargement du message"
msgid "Error Message"
msgstr "Message d'erreur"
#. js-lingui-id: Mox63G
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Error opening billing portal"
msgstr ""
#. js-lingui-id: e/eieW
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Error opening Stripe"
msgstr ""
#. js-lingui-id: bT/0cM
#: src/modules/ui/field/display/components/PhonesDisplay.tsx
msgid "Error parsing additional phones: {error}"
msgstr "Erreur lors de l'analyse des numéros supplémentaires : {error}"
#. js-lingui-id: zRXcyv
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Error refreshing validity token. Please contact support."
msgstr ""
#. js-lingui-id: PfAip2
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
msgid "Error regenerating api key."
@@ -5997,6 +6093,11 @@ msgstr ""
msgid "Failed to {translatedOperationType} {translatedMetadataName}. Related {relatedEntityNames} validation failed. Please check your configuration and try again."
msgstr ""
#. js-lingui-id: R1XJV1
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Failed to activate enterprise license. Please check your key or contact support."
msgstr ""
#. js-lingui-id: vJiM7T
#: src/pages/settings/ai/components/SettingsSkillsTable.tsx
msgid "Failed to activate skill"
@@ -6208,7 +6309,6 @@ msgstr ""
#. js-lingui-id: X9kySA
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItemFolders.tsx
#: src/modules/favorites/components/CurrentWorkspaceMemberFavoritesFolders.tsx
msgid "Favorites"
msgstr "Favoris"
@@ -6374,7 +6474,6 @@ msgstr ""
#: src/modules/views/components/ViewBarFilterDropdownFieldSelectMenu.tsx
#: src/modules/views/components/ViewBarFilterButton.tsx
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
#: src/modules/side-panel/pages/page-layout/components/ChartFiltersSettings.tsx
#: src/modules/settings/roles/components/SettingsRolesList.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectRelationsTable.tsx
#: src/modules/object-record/record-table/record-table-header/components/RecordTableColumnHeadDropdownMenu.tsx
@@ -6397,6 +6496,7 @@ msgid "Filter group rule options"
msgstr "Options des règles du groupe de filtres"
#. js-lingui-id: cSev+j
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/settings/developers/components/SettingsDevelopersWebhookForm.tsx
msgid "Filters"
msgstr "Filtres"
@@ -6467,6 +6567,11 @@ msgstr "Prénom"
msgid "First name can not be empty"
msgstr "Le prénom ne peut pas être vide"
#. js-lingui-id: JREYkg
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Fix the payment issue to keep your enterprise features active."
msgstr ""
#. js-lingui-id: ylQd2j
#: src/modules/workflow/workflow-steps/workflow-actions/utils/getActionHeaderTypeOrThrow.ts
#: src/modules/side-panel/pages/workflow/action/components/SidePanelWorkflowSelectAction.tsx
@@ -6486,7 +6591,7 @@ msgid "Folder name"
msgstr ""
#. js-lingui-id: HSh8u/
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubPage.tsx
#: src/modules/settings/accounts/components/message-folders/SettingsAccountsMessageFoldersCard.tsx
msgid "Folders"
msgstr "Dossiers"
@@ -6635,6 +6740,22 @@ msgstr "Fichiers générés"
msgid "German"
msgstr "Allemand"
#. js-lingui-id: sqtljx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Get Enterprise"
msgstr ""
#. js-lingui-id: o2kSwB
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Get Enterprise Key"
msgstr ""
#. js-lingui-id: NXEW3h
#: src/pages/onboarding/InviteTeam.tsx
msgid "Get the most out of your workspace by inviting your team."
@@ -6655,6 +6776,12 @@ msgstr "Global"
msgid "Go Back"
msgstr ""
#. js-lingui-id: Hb4Cgz
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Go to billing portal"
msgstr ""
#. js-lingui-id: mUbv8L
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
msgid "Go to Companies"
@@ -7240,6 +7367,11 @@ msgstr ""
msgid "Inbox"
msgstr "Boîte de réception"
#. js-lingui-id: mtGDyy
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Incomplete"
msgstr ""
#. js-lingui-id: O5wNUa
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
msgid "index"
@@ -7882,9 +8014,8 @@ msgid "Launch manually"
msgstr "Lancer manuellement"
#. js-lingui-id: rdU729
#: src/modules/side-panel/pages/page-layout/utils/getPageLayoutPageTitle.ts
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsLayout.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCustomView.tsx
msgid "Layout"
@@ -7957,6 +8088,12 @@ msgstr ""
msgid "Less than or equal"
msgstr "Inférieur ou égal à"
#. js-lingui-id: 3qg5Ro
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Licensee"
msgstr ""
#. js-lingui-id: 1njn7W
#: src/pages/settings/profile/appearance/components/SettingsExperience.tsx
#: src/modules/ui/navigation/navigation-drawer/components/MultiWorkspaceDropdown/internal/MultiWorkspaceDropdownThemesComponents.tsx
@@ -8260,6 +8397,8 @@ msgid "Manage billing and subscriptions"
msgstr "Gérer les facturations et les abonnements"
#. js-lingui-id: nvgUPq
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/SettingsBillingContent.tsx
msgid "Manage billing information"
msgstr "Gérer les informations de facturation"
@@ -8612,6 +8751,11 @@ msgstr "Mois de l'année"
msgid "monthly"
msgstr "mensuel"
#. js-lingui-id: Sew/cK
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Monthly subscription"
msgstr ""
#. js-lingui-id: 6jefe3
#: src/modules/side-panel/pages/page-layout/utils/getDateGranularityPluralLabel.ts
#: src/modules/side-panel/pages/page-layout/utils/getDateGranularityPluralLabel.ts
@@ -8673,7 +8817,7 @@ msgid "Move right"
msgstr "Déplacer à droite"
#. js-lingui-id: 6qDVmw
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
msgid "Move to a folder"
msgstr ""
@@ -9274,21 +9418,15 @@ msgid "No Files"
msgstr "Aucun fichier"
#. js-lingui-id: pYblOw
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/favorites/favorite-folder-picker/components/FavoriteFolderPickerList.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubPage.tsx
msgid "No folder"
msgstr "Aucun dossier"
#. js-lingui-id: 6XMhqL
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubPage.tsx
msgid "No folders available"
msgstr ""
#. js-lingui-id: aywdyd
#: src/modules/favorites/favorite-folder-picker/components/FavoriteFolderPickerList.tsx
msgid "No folders found"
msgstr "Aucun dossier trouvé"
#. js-lingui-id: 1jgsYC
#: src/modules/settings/accounts/components/message-folders/SettingsMessageFoldersEmptyStateCard.tsx
msgid "No folders found for this account"
@@ -9454,8 +9592,8 @@ msgstr "Aucun résultat"
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewSystemSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewObjectPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubPage.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubPage.tsx
#: src/modules/side-panel/components/SidePanelList.tsx
msgid "No results found"
msgstr "Aucun résultat trouvé"
@@ -9666,6 +9804,7 @@ msgstr ""
#. js-lingui-id: b/j06W
#: src/pages/settings/applications/SettingsApplicationRegistrationDetails.tsx
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "OAuth"
msgstr ""
@@ -9674,6 +9813,11 @@ msgstr ""
msgid "OAuth Credentials"
msgstr ""
#. js-lingui-id: LNLTJB
#: src/pages/settings/ai/components/SettingsAIMCP.tsx
msgid "OAuth or API Key"
msgstr ""
#. js-lingui-id: pNEViR
#: src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts
msgid "object"
@@ -10188,11 +10332,26 @@ msgstr "Le lien de réinitialisation du mot de passe a été envoyé à l'email"
msgid "Paste the code below"
msgstr "Collez le code ci-dessous"
#. js-lingui-id: raz2Pm
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Paste your enterprise key below to activate"
msgstr ""
#. js-lingui-id: dNdgvF
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Paste your enterprise key here"
msgstr ""
#. js-lingui-id: I6gXOa
#: src/modules/settings/logic-functions/components/tabs/SettingsLogicFunctionTriggersTab.tsx
msgid "Path"
msgstr "Chemin"
#. js-lingui-id: QmXBEc
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Payment issue"
msgstr ""
#. js-lingui-id: UbRKMZ
#: src/pages/settings/emailing-domains/utils/getEmailingDomainStatusText.ts
#: src/modules/settings/security/components/approvedAccessDomains/SettingsApprovedAccessDomainsListCard.tsx
@@ -10329,13 +10488,13 @@ msgid "Pick a {objectLabel} record"
msgstr "Choisissez un enregistrement de {objectLabel}"
#. js-lingui-id: JqqNlC
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewPickerSubView.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
msgid "Pick a view"
msgstr ""
#. js-lingui-id: Wlba2h
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelObjectPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewObjectPickerSubView.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
msgid "Pick an object"
msgstr ""
@@ -10953,6 +11112,16 @@ msgstr "Communiqués"
msgid "Reload"
msgstr "Recharger"
#. js-lingui-id: qbM5In
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Reload validity token"
msgstr ""
#. js-lingui-id: MZWnSC
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Reloading..."
msgstr ""
#. js-lingui-id: qlAIQ1
#: src/modules/object-metadata/components/RemoteNavigationDrawerSection.tsx
msgid "Remote"
@@ -10965,16 +11134,6 @@ msgstr "À distance"
msgid "Remove"
msgstr "Retirer"
#. js-lingui-id: gleHgw
#: src/modules/favorites/components/CurrentWorkspaceMemberFavorites.tsx
msgid "Remove {favoriteCount} favorite?"
msgstr "Supprimer {favoriteCount} favori ?"
#. js-lingui-id: 1VQkMD
#: src/modules/favorites/components/CurrentWorkspaceMemberFavorites.tsx
msgid "Remove {favoriteCount} favorites?"
msgstr "Supprimer {favoriteCount} favoris ?"
#. js-lingui-id: 0Urj9q
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItems.tsx
msgid "Remove {navigationMenuItemCount} navigation menu item?"
@@ -11006,7 +11165,6 @@ msgid "Remove Deleted filter"
msgstr "Supprimer le filtre supprimé"
#. js-lingui-id: T/pF0Z
#: src/modules/favorites/components/PageFavoriteButton.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
msgid "Remove from favorites"
@@ -11061,7 +11219,6 @@ msgstr "Supprimer la variable"
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
msgid "Rename"
msgstr "Renommer"
@@ -11228,7 +11385,7 @@ msgstr "Résultat"
#. js-lingui-id: kx0s+n
#: src/modules/side-panel/pages/search/hooks/useSidePanelSearchRecords.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubPage.tsx
msgid "Results"
msgstr "Résultats"
@@ -11367,6 +11524,11 @@ msgstr ""
msgid "row level permission predicate group"
msgstr ""
#. js-lingui-id: xPaeO2
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Row-level security"
msgstr ""
#. js-lingui-id: 7jTlsu
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectFormOptionRow.tsx
msgid "Ruby"
@@ -11485,6 +11647,8 @@ msgstr ""
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/constants/EngineComponentKeyComponentMap.tsx
#: src/modules/command-menu-item/constants/EngineComponentKeyComponentMap.tsx
msgid "Search"
msgstr "Recherche"
@@ -11521,7 +11685,7 @@ msgid "Search a field..."
msgstr "Rechercher un champ..."
#. js-lingui-id: ITQFzL
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubPage.tsx
msgid "Search a folder..."
msgstr ""
@@ -11689,7 +11853,7 @@ msgid "Search records"
msgstr "Rechercher des enregistrements"
#. js-lingui-id: rRklUH
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubPage.tsx
msgid "Search records..."
msgstr ""
@@ -11724,11 +11888,13 @@ msgid "Searching the web for {query}"
msgstr ""
#. js-lingui-id: 8sgZS9
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
#: src/modules/billing/components/SubscriptionPrice.tsx
msgid "seat / month"
msgstr "siège / mois"
#. js-lingui-id: aQnWwf
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
#: src/modules/billing/components/SubscriptionPrice.tsx
msgid "seat / month - billed yearly"
msgstr "siège / mois - facturé annuellement"
@@ -12556,6 +12722,7 @@ msgstr "SSO"
#. js-lingui-id: vlvAkg
#: src/pages/onboarding/internal/ChooseYourPlanContent.tsx
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "SSO (SAML / OIDC)"
msgstr "SSO (SAML / OIDC)"
@@ -12600,6 +12767,16 @@ msgstr ""
msgid "Start"
msgstr "Démarrer"
#. js-lingui-id: ASqWQi
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Start a new enterprise subscription to re-enable enterprise features."
msgstr ""
#. js-lingui-id: OC6rnK
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Start a new enterprise subscription."
msgstr ""
#. js-lingui-id: D3iCkb
#: src/pages/settings/security/event-logs/components/EventLogFilters.tsx
msgid "Start Date"
@@ -12625,6 +12802,11 @@ msgid "State"
msgstr "État"
#. js-lingui-id: uAQUqI
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/admin-panel/SettingsAdminIndicatorHealthStatus.tsx
#: src/modules/settings/components/SettingsDnsRecordsTable.tsx
#: src/modules/settings/admin-panel/components/SettingsAdminWorkspaceContent.tsx
@@ -12920,11 +13102,11 @@ msgstr ""
#. js-lingui-id: 0apULK
#: src/pages/settings/data-model/SettingsObjectTable.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelSystemObjectPickerSubView.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelSystemObjectPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelObjectPickerSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewSystemSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewSystemSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewObjectPickerSubView.tsx
msgid "System objects"
msgstr ""
@@ -13227,6 +13409,11 @@ msgstr "Il y a des colonnes requises qui ne sont pas appariées ou ignorées. Vo
msgid "There are still some rows that contain errors. Rows with errors will be ignored when submitting."
msgstr "Il y a encore des lignes qui contiennent des erreurs. Les lignes présentant des erreurs seront ignorées lors de l'envoi."
#. js-lingui-id: CA9PTn
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "There is a payment issue with your subscription. Please update your payment method."
msgstr ""
#. js-lingui-id: WQk7Cf
#: src/modules/activities/timeline-activities/components/TimelineCard.tsx
msgid "There is no activity associated with this record."
@@ -13301,16 +13488,6 @@ msgstr "Cette action est irréversible. Cela supprimera définitivement votre ap
msgid "This action cannot be undone. This will permanently reset your two factor authentication method. <0/> Please type in your email to confirm."
msgstr "Cette action est irréversible. Elle réinitialisera définitivement votre méthode d'authentification à deux facteurs. <0/> Veuillez saisir votre adresse e-mail pour confirmer."
#. js-lingui-id: XdFYs2
#: src/modules/favorites/components/CurrentWorkspaceMemberFavorites.tsx
msgid "This action will delete this favorite folder and all {favoriteCount} favorites inside. Do you want to continue?"
msgstr "Cette action supprimera ce dossier de favoris et les {favoriteCount} favoris qu'il contient. Voulez-vous continuer ?"
#. js-lingui-id: pFXbgz
#: src/modules/favorites/components/CurrentWorkspaceMemberFavorites.tsx
msgid "This action will delete this favorite folder and the favorite inside. Do you want to continue?"
msgstr "Cette action supprimera ce dossier de favoris ainsi que le favori qu'il contient. Voulez-vous continuer ?"
#. js-lingui-id: lAHIY2
#: src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItems.tsx
msgid "This action will delete this folder and all {navigationMenuItemCount} navigation menu items inside. Do you want to continue?"
@@ -13341,9 +13518,9 @@ msgstr ""
msgid "This database value overrides environment settings. "
msgstr "Cette valeur de base de données remplace les paramètres d'environnement."
#. js-lingui-id: qHAJQ2
#. js-lingui-id: 8IRnd6
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelSection.tsx
msgid "This feature is part of the Organization Plan"
msgid "This feature is part of the Enterprise Plan"
msgstr ""
#. js-lingui-id: own57K
@@ -13652,6 +13829,8 @@ msgid "Transfer ownership"
msgstr ""
#. js-lingui-id: lhkaAC
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/internal/PlansTags.tsx
msgid "Trial"
msgstr "Essai"
@@ -13831,7 +14010,7 @@ msgid "Type"
msgstr "Type"
#. js-lingui-id: SKD2e4
#: src/modules/activities/components/ActivityRichTextEditor.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/RichTextFieldEditor.tsx
msgid "Type '/' for commands, '@' for mentions"
msgstr ""
@@ -13842,7 +14021,7 @@ msgid "Type anything..."
msgstr "Tapez n'importe quoi..."
#. js-lingui-id: UhqKcC
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubView.tsx
#: src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubPage.tsx
msgid "Type to search records"
msgstr ""
@@ -14000,6 +14179,11 @@ msgstr "Contacts illimités"
msgid "Unlisted"
msgstr "Non répertorié"
#. js-lingui-id: Ep1uUU
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Unlock enterprise features like SSO, row-level security, and audit logs."
msgstr ""
#. js-lingui-id: eQMhFX
#: src/modules/advanced-text-editor/extensions/slash-command/DefaultSlashCommands.ts
msgid "unordered"
@@ -14069,6 +14253,11 @@ msgstr "mettre à jour"
msgid "Update"
msgstr "Mettre à jour"
#. js-lingui-id: Y69tSP
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Update payment method"
msgstr ""
#. js-lingui-id: 0KAL3W
#: src/modules/side-panel/hooks/useOpenUpdateMultipleRecordsPageInSidePanel.tsx
#: src/modules/command-menu-item/record/constants/DefaultRecordCommandMenuItemsConfig.tsx
@@ -14307,11 +14496,22 @@ msgstr "Valeur de l'application par défaut utilisée. Configurez via les variab
msgid "Using default value. Set a custom value to override."
msgstr "Utilisation de la valeur par défaut. Définissez une valeur personnalisée pour surcharger."
#. js-lingui-id: zzp4XX
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Valid until"
msgstr ""
#. js-lingui-id: Clr4qp
#: src/modules/spreadsheet-import/steps/components/SpreadsheetImportStepperContainer.tsx
msgid "Validate Data"
msgstr "Valider les données"
#. js-lingui-id: PWZBIT
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Validity token refreshed successfully"
msgstr ""
#. js-lingui-id: wMHvYH
#: src/pages/settings/applications/tabs/SettingsApplicationDetailEnvironmentVariablesTable.tsx
#: src/modules/workflow/workflow-steps/workflow-actions/http-request-action/components/KeyValuePairInput.tsx
@@ -14438,6 +14638,8 @@ msgid "View and filter events, page views, object changes"
msgstr ""
#. js-lingui-id: KANz0G
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/modules/billing/components/SettingsBillingContent.tsx
msgid "View billing details"
msgstr "Voir les détails de facturation"
@@ -14487,6 +14689,11 @@ msgstr "groupe de vue"
msgid "View installed app"
msgstr ""
#. js-lingui-id: B02hom
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "View invoices"
msgstr ""
#. js-lingui-id: lh5BED
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkerQueueMetricsSection.tsx
msgid "View Jobs"
@@ -14505,6 +14712,7 @@ msgstr ""
#. js-lingui-id: ecVcAx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/record-agnostic/constants/RecordAgnosticCommandMenuItemsConfig.tsx
#: src/modules/command-menu-item/constants/EngineComponentKeyComponentMap.tsx
msgid "View Previous AI Chats"
msgstr "Voir les Discussions AI Précédentes"
@@ -14854,6 +15062,7 @@ msgstr "Workflows"
#: src/pages/settings/members/SettingsWorkspaceMember.tsx
#: src/pages/settings/logic-functions/SettingsLogicFunctionDetail.tsx
#: src/pages/settings/logic-functions/SettingsLogicFunctionDetail.tsx
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
#: src/pages/settings/emailing-domains/SettingsNewEmailingDomain.tsx
#: src/pages/settings/emailing-domains/SettingsEmailingDomainDetail.tsx
#: src/pages/settings/domains/SettingsDomains.tsx
@@ -14896,7 +15105,6 @@ msgstr "Workflows"
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownVisibilityContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCustomView.tsx
#: src/modules/navigation-menu-item/components/WorkspaceNavigationMenuItems.tsx
#: src/modules/favorites/components/WorkspaceFavorites.tsx
msgid "Workspace"
msgstr "Espace de travail"
@@ -15020,6 +15228,11 @@ msgstr "Année"
msgid "yearly"
msgstr "annuel"
#. js-lingui-id: Y1GwUe
#: src/modules/settings/enterprise/components/EnterprisePlanModal.tsx
msgid "Yearly subscription"
msgstr ""
#. js-lingui-id: +BGee5
#: src/modules/side-panel/pages/page-layout/utils/getDateGranularityPluralLabel.ts
msgid "years"
@@ -15152,6 +15365,36 @@ msgstr "Les sujets de vos emails et les titres de réunion seront partagés avec
msgid "Your emails and events content will be shared with your team."
msgstr "Le contenu de vos emails et événements sera partagé avec votre équipe."
#. js-lingui-id: ahEwS4
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your enterprise features are active"
msgstr ""
#. js-lingui-id: XMZLU/
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your enterprise features are active but your enterprise key is missing or invalid. This may be expected, but if not, please set a valid signed enterprise key to manage your subscription, or contact support."
msgstr ""
#. js-lingui-id: AxcwNj
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your enterprise features will be disabled"
msgstr ""
#. js-lingui-id: PT137K
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your enterprise features will remain active until {cancelAtDate}."
msgstr ""
#. js-lingui-id: 69Siss
#: src/modules/information-banner/components/enterprise/InformationBannerLegacyEnterpriseKey.tsx
msgid "Your enterprise key format is deprecated. Please activate a new key to keep enterprise features."
msgstr ""
#. js-lingui-id: NTpA4U
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your enterprise subscription has been canceled."
msgstr ""
#. js-lingui-id: 9ivpwk
#: src/pages/settings/SettingsProfile.tsx
msgid "Your name as it will be displayed"
@@ -15162,6 +15405,26 @@ msgstr "Votre nom tel qu'il sera affiché"
msgid "Your name as it will be displayed on the app"
msgstr "Votre nom tel qu'il sera affiché sur l'application"
#. js-lingui-id: 319YPG
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your subscription is active but your validity token is invalid or has expired. Try reloading it or contact support."
msgstr ""
#. js-lingui-id: Fx0axg
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your subscription is scheduled for cancellation"
msgstr ""
#. js-lingui-id: XgIa/8
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your subscription setup was not completed."
msgstr ""
#. js-lingui-id: Z9kbt6
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Your subscription status is: {statusLabel}"
msgstr ""
#. js-lingui-id: QOd24n
#: src/modules/billing/hooks/useBillingWording.ts
msgid "Your trial period will end, and "
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

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